2. ¿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.
3. Arquitectura del Software
Los 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.
4. ¿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.
5. ¿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.
6. 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”.
7. ¿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”.
8. 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.
9. 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.
10. 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.
12. 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.
14. 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.
16. 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.
18. 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?
19. 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.
20. 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.
22. Definición de arquetipos
Un arquetipo es una clase o un patrón que representa
una abstracción fundamental de importancia
crí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.
23. Arquitectura hacia los
Componentes
Conforme 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.
24. Descripción de las
instancias del sistema
El 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.
25. 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 representaciones
de datos que manipula éste.
Por tanto, el diseño de los datos es parte integral de la
generación de la arquitectura del software.
26. Resumen y Conclusiones.
Dentro de un género arquitectónico dado, hay varios
estilos y patrones diferentes disponibles
para 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ánticos
que permiten que un diseñador entienda las
propiedades generales del sistema.