9.diseño de la arquitectura

26
9.Diseño de la Arquitectura Ramiro Estigarribia Canese

Upload: ramiro-estigarribia-canese

Post on 25-Jul-2015

97 views

Category:

Technology


1 download

TRANSCRIPT

9.Diseño de la Arquitectura

Ramiro Estigarribia Canese

¿Qué es el Diseño Arquitectónico?➔ El diseño arquitectónico representa la estructura de

los datos y de los componentes del programa que se requieren para construir un sistema.

➔ Considera el estilo de arquitectura que adoptará el sistema, la estructura y las propiedades de los componentes que lo constituyen y las interrelaciones que ocurren entre sus componentes arquitectónicos.

Arquitectura del SoftwareLos autores Shaw y Garlan expresan:

➔ Desde el primer programa que se dividió en módulos, los sistemas han tenido arquitecturas y los programadores han sido los responsables de las interacciones entre los módulos y las propiedades globales del ensamble.

➔ Históricamente, las arquitecturas han estado implícitas: accidentes de implementación o sistemas heredados del pasado.

¿Qué es la Arquitectura en una Construcción?➔ Es la manera en la que los distintos componentes

del edificio se integran para formar un todo cohesivo.

➔ Es la forma en la que la construcción se adapta a su ambiente y se integra a los demás edificios en la vecindad.

➔ Es la sensación estética de la estructura —el efecto visual de la edificación— y el modo en el que se combinan texturas, colores y materiales para crear la fachada en el exterior.

¿Qué es una Arquitectura de Software?Es una representación que permite: 1. Analizar la efectividad del diseño.2. Considerar alternativas arquitectónicas.3. Reducir los riesgos asociados con la construcción

del software.La arquitectura del software comprende a los componentes del software, sus propiedades externas visibles y las relaciones entre ellos.La arquitectura no es el software operativo.

Arquitectura vs Diseño.➔ Hay una diferencia entre los términos: ➔ Un diseño es una instancia de una arquitectura,

similar a un objeto que es una instancia de una clase.

➔ Por ejemplo, considere la arquitectura de cliente-servidor: es posible diseñar de muchas formas un sistema basado en red, con el uso de una plataforma Java o .NET.

➔ Entonces, hay una arquitectura, pero con base en ella pueden crearse muchos diseños. Así, no es válido mezclar “arquitectura” y “diseño”.

¿Por qué es importante la Arquitectura?1. Las representaciones de la arquitectura permiten la

comunicación entre todas las partes interesadas.2. La arquitectura resalta las primeras decisiones que

tendrán un efecto profundo en el éxito o fracaso del sistema.

3. La arquitectura “constituye un modelo relativamente pequeño y asequible por la vía intelectual sobre cómo está estructurado el sistema y la forma en la que sus componentes trabajan juntos”.

Descripciones Arquitectónicas➔ Cada uno de nosotros tiene una imagen mental de

lo que significa la palabra arquitectura. ➔ Sin embargo, la realidad es que tiene significados

diferentes para distintas personas. ➔ Cada perspectiva desarrollada se aboca a una

preocupación de un participante específico. ➔ Las decisiones arquitectónicas en sí mismas se

consideran una perspectiva de la arquitectura. ➔ Las razones por las que se tomaron las decisiones

dan una visión de un sistema y su concordancia con las preocupaciones del participante.

Géneros Arquitectónicos.Algunos de los más conocidos son:1. Inteligencia artificial: Sistemas que simulan o

incrementan la cognición humana.2. Comerciales: Sistemas que son fundamentales

para la operación de una empresa de negocios.3. Comunicaciones: Sistemas que proveen la

infraestructura para transferir y manejar datos.4. Gobierno: Sistemas que dan apoyo a la conducción

y operaciones de una institución política local.5. Industrial: Sistemas que simulan o controlan

procesos físicos.

Estilos Arquitectónicos.Aunque en los últimos 60 años se han creado millones de sistemas, la gran mayoría se clasifica en un número pequeño de estilos:Arquitectura centrada en los datos. En el centro de esta arquitectura se halla un almacenamiento de datos al que acceden con frecuencia otros componentes que actualizan, agregan, eliminan o modifican los datos de cierto modo dentro del almacenamiento.

Arquitectura centrada en los datos

Arquitectura de flujo de datos.➔ Los datos de entrada van a transformarse en datos

de salida a través de una serie de componentes.➔ Tiene un conjunto de componentes, llamados

filtros, conectados por tubos que transmiten datos de un componente al siguiente.

➔ Cada filtro trabaja en forma independiente de aquellos componentes que se localizan arriba o abajo del flujo; se diseña para esperar una entrada de datos de cierta forma y produce datos de salida (al filtro siguiente) en una forma especificada.

Arquitectura de flujo de datos.

Arquitectura en capas.➔ Se define un número de capas diferentes; cada una

ejecuta operaciones que se aproximan progresivamente al conjunto de instrucciones de máquina.

➔ En la capa externa, los componentes atienden las operaciones de la interfaz de usuario.

➔ En la interna, los componentes realizan la interfaz con el sistema operativo.

➔ Las capas intermedias proveen servicios de utilerías y funciones de software de aplicación.

Arquitectura en capas.

Arquitectura de programa principal/subprograma.➔ Esta estructura clásica de programa descompone

una función en una jerarquía de control en la que un programa “principal” invoca cierto número de componentes de programa que a su vez invocan a otros.

Arquitecturas de programa principal/subprograma.

Patrones arquitectónicos➔ A medida que se desarrolle el modelo de

requerimientos, se observará que el software debe enfrentar cierto número de problemas.

➔ Por ejemplo, el modelo de requerimientos para virtualmente cualquier aplicación de comercio electrónico se enfrenta con el siguiente problema:¿Cómo ofrecer una amplia variedad de bienes a un grupo extenso de consumidores y permitir que los adquieran en línea?

Diseño Arquitectónico.➔ Cuando comienza el diseño arquitectónico, el

software que se va a desarrollar debe situarse en➔ contexto, es decir, el diseño debe definir las

entidades externas (otros sistemas, dispositivos, personas, etc.).

➔ Este proceso sigue en forma iterativa hasta que se obtiene una estructura arquitectónica completa.

Representación del sistema en contexto.En el nivel de diseño arquitectónico, el arquitecto del software usa un diagrama de contexto arquitectónico (DCA) para modelar la manera en la que el software interactúa con entidades más allá de sus fronteras:1. Sistemas superiores: aquellos que utilizan al

sistema para obtener datos.2. Sistemas subordinados: los que son usados por el

sistema objetivo y proveen datos o procesamiento.3. Sistemas entre iguales: son los que interactúan

sobre una base de igualdad.4. Actores: entidades (personas, dispositivos, etc.)

que interactúan con el sistema objetivo.

Representación del sistema en contexto.

Definición de arquetiposUn arquetipo es una clase o un patrón que representa una abstracción fundamental de importanciacrítica para el diseño de una arquitectura para el sistema objetivo. En general, se requiere de un conjunto relativamente pequeño de arquetipos a fin de diseñar sistemas incluso algo complejos. La arquitectura del sistema objetivo está compuesta de estos arquetipos, que representan elementos estables de la arquitectura, pero que son implementadas en muchos modos diferentes con base en el comportamiento del sistema.

Refinamiento de la Arquitectura hacia los ComponentesConforme la arquitectura se refina hacia los componentes, comienza a emerger la estructura del sistema. Pero, ¿cómo se eligen estos componentes? Estas clases de análisis representan entidades dentro del dominio de aplicación (negocio) que deben enfrentarse dentro de la arquitectura del software. Entonces, el dominio de aplicación es una fuente para la obtención y refinamiento de los componentes. Otra fuente es el dominio de la infraestructura. La arquitectura debe albergar muchas componentes de la infraestructura que hagan posible los componentes de la aplicación, pero que no tengan conexión con el dominio de ésta.

Descripción de las instancias del sistemaEl diseño arquitectónico modelado hasta este momento todavía es de nivel relativamente alto. (con pocos de detalles del sistema).Es necesario más refinamiento (recuerde que todo el diseño es iterativo).Para lograr esto, se desarrollan instancias de la arquitectura. La arquitectura se aplica a un problema específico con objeto de demostrar que tanto ella como sus componentes son apropiados.

Resumen y Conclusiones.La arquitectura del software proporciona una visión holística del sistema que se va a construir.Ilustra la estructura y organización de los componentes del software, sus propiedades y conexiones.Los componentes del software incluyen módulos de programa y las distintas representacionesde datos que manipula éste. Por tanto, el diseño de los datos es parte integral de la generación de la arquitectura del software.

Resumen y Conclusiones.Dentro de un género arquitectónico dado, hay varios estilos y patrones diferentes disponiblespara el ingeniero de software. Cada estilo describe una categoría de sistemas que agrupa un conjunto de componentes que realizan una función requerida por el sistema; un grupo de conectores que permiten comunicación, coordinación y cooperación entre los componentes;restricciones que definen cómo pueden integrarse éstos para formar el sistema y modelos semánticosque permiten que un diseñador entienda las propiedades generales del sistema.