You are on page 1of 8

UNIDAD I Introducción Arquitecturas de SW

1.1 Desarrollo de software basado en arquitecturas Estereotipos          1.1.1  Arquitectura como normativa madura. Herramientas de diseño arquitectónico. Lenguajes arquitectónicos iguales en la academia y la industria. UML como lenguaje formal de modelado. Arquitectura vinculada con ingeniería y ciclo de vida. Arquitectura vinculada a metodología (RUP). Proceso unificado de rational. La AS tiene que ver con el modelado OO. Hay un vínculo “natural” entre requerimientos (casos de uso) y clases. Las herramientas arquitectónicas generan el código de la aplicación. Historia Edsger Dijkstra, 1968

--Ciencias de la computación como rama aplicada de las matemáticas. --Niveles de abstracción.  Nato, 1969

--P.I. Sharp, “Arquitectura de software”  Fred Brooks, 1975 – MMM

--Arquitectura como interfaz de usuario.  Davis Parnas

--1972: Módulos- Ocultamiento de información. --1974: Estructuras de software. --1976: Familias de programas (Árbol de decisión).  Dewayne Perry, Alexander Wolf-1992

--“Foundations for the study of software architecture” --“La década de 1990, creemos, será la década de la arquitectura de sw. Usamos el término “arquitectura” en contraste con “diseño”, para evocar nociones de codificación, de abstracción, de estándares, de entrenamiento formal (de los arquitectos de sw) y de estilo. … Es tiempo de re-

examinar el papel de la arquitectura de software en el contexto más amplio del proceso de software y de su administración, así como señala las nuevas técnicas que han sido adoptadas”.  Escuela de Carnegie Mellon (CMU-SEI)

--Mary Shaw, David Garlan, Paul Clements, Robert Allen. Definición de arquitectura de SW http://www.sei.cmu.edu/architecture/start/glossary/community.cfm  Clements, 1996:

--La AS es, a grandes rasgos, una vista del sistema que incluye los componentes principales del mismo, la conducta de esos componentes según se la percibe desde el resto del sistema y las formas en que los componentes interactúan y se coordinan para alcanzar la misión del sistema. La vista arquitectónica es una vista abstracta, aportando el más alto nivel de comprensión y la supresión o diferimiento del detalle inherente a la mayor parte de las abstracciones. --*Vista-* Componente 1.1.2 ESTILOS

Buschmann et al. (1996) define estilo arquitectónico como una familia de sistemas de software en términos de su familia organización estructural. Expresa componentes y las relaciones entre estos, con las restricciones de su aplicación y la composición asociada, así como también las reglas para su construcción. Afirmaciones: 1. 2. 3. 4. Describen una clase de arquitecturas, o piezas significantes de una arquitectura. Son muy usados en la práctica Es un paquete coherente de decisiones de diseño. Tienen propiedades identificadas que permiten el re-uso.

Principales estilos arquitectónicos Estilos Descripción Atributos asociados Integralidad Escalabilidad Modificalidad Atributos en conflicto Desempeño

Datos Centralizados Sistemas en los cuales cierto número de clientes accede y actualiza datos compartidos de un repositorio de manera frecuente. El sistema es visto Flujo de Datos

Reusabilidad

Desempeño

Máquinas Virtuales

Llamada y retorno

Componentes independientes

como una serie de transformaciones sobre piezas sucesivas de datos de entrada. El dato ingresa en el sistema, y fluye entre los componentes, de uno en uno, hasta que se le asigne un destino final (salida o repositorio). Simulan alguna funcionalidad que no es nativa al hardware o software sobre el que esta implementado. El sistema se constituye de un programa principal que tiene el control del sistema y varios subprogramas que se comunican con este mediante el uso de llamadas. Consiste en un número de procesos u objetos independientes que se comunican a través de mensajes.

Modificalidad Mantenibilidad

Portabilidad

Desempeño

Modificalidad Escalabilidad Desempeño

Mantenibilidad Desempeño

Modificalidad Escalabilidad

Desempeño Integralidad

Tipos de Estilos Arquitectónicos    Estilos de flujo de datos --Tuberia y filtros. Estilos centrados en datos --Arquitecturas de pizarra o repositorio. Estilos de llamada y retorno --Model-vew-controller (MVC) --Arquitecturas en capas --Arquitecturas orientadas a objetos --Arquitecturas basadas en componentes Estilos de código móvil

--Arquitectura de máquinas virtuales Estilos heterogéneos --Sistemas de control de procesos --Arquitecturas basadas en atributos Estilos peer-to-peer --Arquitecturas basadas en eventos --Arquitecturas orientadas en servicios --Arquitecturas basadas en recursos

Características de estilos:
--Sirven para sintetizar estructuras de soluciones --Pocos estilos abstractos encapsulan una enorme variedad de configuraciones concretas. --Definen los patrones posibles de las aplicaciones --Permiten evaluar arquitecturas alternativas con ventajas y desventajas conocidas ante diferentes conjuntos de requerimientos no funcionales. --Los estilos arquitectónicos incluyen: • Componentes • Conectores • Estructuras (topologías) • Restricciones (constraints)

1.1.3 Patrones (Patterns) Christopher Alexander, 1977 -Un patrón es una solución a un problema en un contexto. -Un patrón codifica conocimiento específico acumulado por la experiencia en un dominio. -Un sistema bien estructurado está lleno de patrones. “Cada patrón describe un problema que ocurre una y otra vez en nuestro ambiente, y luego describe el núcleo de la solución a ese problema, de tal manera que puedes usar esa solución un millón de veces más, sin hacer jamás la misma cosa dos veces”. Elementos de un patrón:  Nombre --Define un vocabulario de diseño. --Facilita abstracción. Problema --Describe cuando aplicar el patrón. --Conjunto de fuerzas: objetivos y restricciones. --Prerrequisitos. Solución

--Elementos que constituyen el diseño (template) --Forma canónica para resolver fuerzas. Consecuencias --Resultados, extensiones y tradeoffs. Patrón arquitectónico Descripción Atributos asociados Layers Consiste en Reusabilidad, estructurar portabilidad, facilidad aplicaciones que de prueba pueden ser descompuestas en grupos de subtareas, las cuales se clasifican de acuerdo a un nivel particular de abstracción. Pipes and filters Provee una estructura Reusabilidad, para los sistemas que Mantenibilidad procesan un flujo de datos. Cada paso de procesamiento esta encapsulado en un componente filtro. El dato pasa a través de conexiones (pipes), entre filtros adyacentes. Blackboard Aplica para problemas Modificalidad, cuya solución utiliza Mantenibilidad, estrategias no reusabilidad, determinísticas. integridad Varios subsistemas ensamblan su conocimiento para construir una posible solución parcial aproximada. Broker Puede ser usado para Modificalidad, estructurar sistemas portabilidad, de software reusabilidad, distribuido con escalabilidad, componentes interoperabilidad desacoplados que interactúan por invocaciones a servicios remotos. Un componente bróker es responsable de

Desempeño, Mantenibilidad

Desempeño

Desempeño, facilidad de prueba

Desempeño

Model- viewcontroler

coordinar la comunicación, como el reenvío de solicitudes, así como también la transmisión de resultados y excepciones. Divide una aplicación interactiva en tres componentes. El modelo (model) contiene la información central y los datos. Las vistas (view) despliegan información al usuario. Los controladores (controlers) capturan la entrada del usuario. Las vistas y los controladores constituyen la interfaz del usuario.

Funcionalidad, Mantenibilidad

Desempeño, portabilidad

1.2 Atributos no funcionales: Los atributos de calidad, no funcionales, son los aspectos del sistema, que en general, no afectan directamente a la funcinalidad necesitada, sino que definen la calidad y las características que el sistema debe soportar. Pueden ser determinísticos o probabilísticos, generalmente poseen números. Estos son:       Performance (Rendimiento) Disponibilidad Seguridad Testeabilidad Modificabilidad Usabilidad

1.3 Atributos de calidad ISO Std.9126       Funcionalidad Confiabilidad Usabilidad Eficiencia Mantenibilidad Portabilidad

MITRE Guide to total SW Quality Control              Eficiencia Cnfiabilidad Usabilidad Mantenibilidad Expandibilidad Interoperabilidad Reusabilidad Integridad Supervivenciabilidad Correctitud Verificabilidad Flexibilidad Portabilidad

IEEE Std. 1061 Subfactores  Eficiencia -Economía de tiempo -Economía de recursos Funcionalidad -Lo completo -Exactitud -Seguridad -Compatibilidad -Interoperabilidad Mantenibilidad -Capacidad de corregirse -Capacidad de ampliación -Capacidad de prueba  Probabilidad -Independencia de Ww -Independencia de sw -Capacidad de instalación -Reutilización Confiabilidad -No deficiencia -Tolerancia de errores -Disponibilidad Usabilidad -Comprensibilidad -Facilidad de aprendizaje -Operabilidad -Comunicatividad