1. Definiciones
1.1. Del Instituto de Ingenieros Eléctricos y electrónicos. IEEE 1471-2000 La arquitectura del Software es la organización fundamental del sistema que incluye a sus componentes, sus relaciones entre ellos y el ambiente y los principios que dictan su diseño y evolución, es decir el ambiente donde será implementado. Involucra un conjunto de decisiones significativas acerca de la organización del sistema Selección de sus elementos estructurales y sus interfaces Comportamiento, especifico en función de la colaboración de los elementos Composición de sub-sistemas mas grandes a partir de elementos estructurales y elementos con comportamiento. Planificación, gestión y ejecución de las actividades de desarrollo del sistema. Booch, Kruchten, Reitman, Bittner, and Shaw
1.2. En el libro "An introduction to Software Architecture", David Garlan y Mary Shaw definen que la Arquitectura es un nivel de diseño que hace foco en aspectos "más allá de los algoritmos y estructuras de datos de la computación; el diseño y especificación de la estructura global del sistema es un nuevo tipo de problema"..
2. Estilos y tipos de arquitectura de sistemas de la información
2.1. Estilos de flujos de datos enfatiza la reutilización y modificabilidad de datos. utilizada en sistemas que implementan transformaciones de datos en pasos sucesivos.
2.1.1. Tuberías (pipeline) y filtros
2.1.1.1. Conecta componentes computacionales que se describen como filtros a través de conectores llamados tubieras. Los datos se transportan a través de las tuberías entre los filtros, transformando gradualmente las entradas de datos en salidas.
2.2. Estilos Centrado de datos. Se enfatiza en la integradad de los datos, fundad en el acceso y modificación de datos
2.2.1. Arquitecturas de pizarra o repositorio
2.2.1.1. Contiene dos componentes principales. Una estructura que representa al estado actual y el otro una colección de componentes independientes que operan sobre el. Las transacciones definen el proceso a ejecutar y los repositorios representa a los datos almacenados en una base de datos tradicional.
2.3. Estilos de llamada y retorno. Se enfatiza en la modificabilidad y escalabilidad, utilizados en sistemas a gran escala
2.3.1. Model-View-Controller
2.3.1.1. Usado comúnmente tomar datos almacenados y mostrárselos a los usuarios
2.3.2. Arquitectura en Capas
2.3.2.1. Definida como relación jerárquica que proporciona servicios a la capa superior y se sirve de las prestaciones de las capas inferiores
2.3.3. Arquitectura orientada a objetos
2.3.3.1. Conocida por la aplicación abstracta de los objetos. Contiene Herencia, Polimorfismo y Encapsulado da datos, permite heredar propiedades de un objeto, puede encapsular metodos y solo utilizar las propiedades y puede hacer utilizar varias propiedades en varios objetos.
2.3.4. Arquitecturas basadas en componentes
2.3.4.1. Esta arquitectura se basa en utilizar componentes ya hechos, puede reducir tiempos de desarrollo e implementacion
2.4. Estilos de código Móvil. se enfatiza en la portabilidad de datos. Basado en reglas e interpretes de lenguajes de comandos.
2.4.1. Arquitecturas de Máquinas virtuales
2.4.1.1. Conocido como interpretes basados en tablas. Utilizado para mejorar la implementación de sistemas en cualquier plataforma o dispositivo a través de estas maquinas virtuales.
2.5. Estilos Hetereogéneos. Utilizados en sistemas de control de procesos industriales, sistemas de transiciones de estados, arquitecturas específicas de dominio.
2.5.1. Sistemas de control de proceso
2.5.1.1. Basados en algoritmos de control ya que prevalecen con ciertos valores de calibración, se utilizan como mecanismo de res troloalimentación Feedback y de post alimentación Feedfordward
2.5.2. Arquitecturas basadas en atributos
2.5.2.1. Asociada como un Framework de razonamiento cuantitativo o cualitativo basado en modelos de atributos especiíicos. proporciona la bases del estilo arquitectónico, tornando el diseño en un procesos predicible, antes de que una metodologí AD HOC
2.6. Estilos Peer to Peer. Tambien llamada como componentes individuales, se enfatizan por la modificabilidad por medio de la separación de partes que intervienen en la computación
2.6.1. Arquitecturas basadas en Eventos
2.6.1.1. También llamados de invocación implícita. Son basados en elementos interfaz de usuario a través de modelos de objetos y componentes. Un ejemplo sería como la programación para dispositivos moviles
2.6.2. Arquitecturas orientadas a Servicios
2.6.2.1. Utilzados en servicios Web basados en XML. Servicios transportados por HTTP, FTP, SMTP IIOP y MQ
2.6.3. Arquitecturas basadas en Recursos
2.6.3.1. Representada por la metodología REST Transferencia del estado representacional., define recursos identificables, métodos para acceder y manipular el estado de los recursos, como ejemplo, tenemos la World Wide Web WWW. donde los URLs identifican los recursos y los HTTTP es el protocolo de acceso