Está en la página 1de 37

dlilian@pol.una.py Prof. Lic.

Lilian Demattei
Introduccin a las arquitecturas de software.
Estilos arquitectnicos

Banco
File System de Google
Marcapasos
Mozilla
Robot Experimental
Netflix (sobre Amazon Web Services)
Azure
LinkedIn
LinkedIn
LinkedIn
InstaVoIP
Microsofts Windows 8
Sistema SUBITE
Visin general del sistema
Vista Componente y
Conector
Diagrama en el lenguaje
utilizado en la prctica de
la materia, pero con
simplificaciones (sobre
todo en conectores y
puertos) para dar una
visin de alto nivel
Algunas Analogas
Fuente: Virginia McAlester. A Field Guide to American Houses.
El gran problema
Una respuesta posible
Arquitectura de Sistemas de Software

La arquitectura de un sistema de software:


Define el sistema en trminos de elementos e interaccin
entre ellos
Muestra correspondencia entre requerimientos y elementos
del sistema construido
Resuelve atributos de calidad en el nivel del sistema, como
escalabilidad, flexibilidad, confiabilidad y performance
Un paso clave para poder lograr el reuso a gran escala y
ayudar a que la ingeniera de software empiece a
asemejarse a otras disciplinas de la ingeniera
Analogas con la Ingeniera Civil
(slo edificios)
Estilos arquitectnicos: colonial, victoriano, griego
Paradigmas de organizacin de sistemas de software:
pipes, layers, events, repositories
Conocimientos especficos para un estilo en particular:
crceles, fbricas automotrices, hospitales, hoteles 5
estrellas.
Arquitecturas para un dominio especfico
La estructura de los Sistemas
La arquitectura trata sobre la estructura de los sistemas
Cmo el sistema se descompone en partes
Cmo esas partes interactan
Pero esto lleva a la pregunta: Qu tipos de estructuras?
Del cdigo
Run-time
De deployment
Del entorno de desarrollo
Work breakdown structures
Cada una de estas estructuras puede ser la base para
una vista arquitectnica (architectural view)
Histricamente el foco estuvo en vistas de cdigo
Las definiciones mas aceptadas (Bass,
Clements)
Arquitectura

La arquitectura de software de un sistema de computacin es el


conjunto de estructuras necesarias para razonar sobre el
sistema, y comprende elementos de software, relaciones entre
ellos y propiedades de ambos

Estilo o patrn arquitectnico


Una descripcin de tipos de relaciones y elementos, junto con
restricciones sobre cmo deben usarse (ej. client server).
Arquitectura de referencia
Una divisin comn de funcionalidad mapeada a elementos que
cooperativamente implementan esa funcionalidad y flujos de
datos entre ellos.
Tres Principios Fundamentales
La arquitectura es el conjunto de decisiones
principales de diseo de un sistema de software
Tres principios a no olvidar:
Toda aplicacin tiene una arquitectura
Cada aplicacin tiene al menos un arquitecto
La Arquitectura no es una fase del desarrollo
Relacin entre Arquitectura y Diseo?
Por qu es importante una arquitectura?
Comunicacin entre stakeholders
Decisiones tempranas de diseo
Define restricciones de implementacin
Afecta la estructura organizativa
Posibilita o inhibe atributos de calidad de un sistema
Facilita el razonamiento sobre cambios y su implementacin
Permite estimaciones ms precisas

Abstraccin transferible de un sistema


Los sistemas pueden ser construidos a partir de elementos
externos
Menos es ms: es bueno restringir
Permite el desarrollo basado en templates
Qu hace que una arquitectura sea buena?
Producto de un nico arquitecto o un pequeo grupo de arquitectos
con un claro lder (Brooks, Mills y otros). Integridad conceptual
El equipo de arquitectura debe contar con requerimientos
funcionales y atributos de calidad requeridos que sean claros
La arquitectura debe estar documentada
La arquitectura debe ser revisada por los stakeholders
Debe ser evaluada cuantitativamente antes de que sea tarde
Debe permitir una implementacin incremental
Mdulos bien definidos basados en el ocultamiento de la
informacin
Interfaces claramente definidas
No dependiente de un nico producto comercial
Usa un grupo pequeo y claro de patrones de interaccin
Arquitecturas en contexto
Arquitecturas en Contexto Requerimientos

Hasta hace unos aos, la Ingeniera de


Requerimientos intentaba tratar el tema de
requerimientos sin pensar en un diseo especfico
(modelo esencial)
Sin embargo, sin referencia a arquitecturas es difcil
hablar de temas concretos (cronogramas, costos,
funcionalidad provista).
En la ingeniera, los nuevos productos vienen de la
observacin de productos actuales y sus limitaciones
El Modelo Twin Peaks
Cunta arquitectura?
Fuente: Using Risk to Balance Agility and Discipline:
A Quantitative Analysis, Barry Boehm.
Propiedades de los estilos arquitectnicos
Un vocabulario para los elementos de diseo
Tipos de componentes y conectores
Por ejemplo: clases, invocaciones, pipes, clientes
Reglas de composicin
Un estilo tiene restricciones topolgicas que determinan cmo se
puede hacer la composicin de los elementos
Por ejemplo: los elementos de un layer se pueden comunicar slo con
los del layer inferior
Semntica para esos elementos
Idealmente, criterios para la evaluacin de una arquitectura o
formas de analizarla; generacin de cdigo
Importante: un estilo arquitectnico no define la funcionalidad
de un sistema. Desde ese punto de vista es algo abstracto.
Taxonoma de estilos arquitectnicos
Taxonoma de estilos arquitectnicos
Beneficios de los estilos arquitectnicos

Reuso de diseos
Soluciones maduras aplicadas a problemas nuevos
Reuso de cdigo
Una parte importante del cdigo que implementa la
arquitectura puede pasarse de un sistema a otro
Comunicacin
Portabilidad
Arquitecturas Heterogneas
Resultan de la combinacin de distintos estilos
Por ejemplo:
Los componentes de un sistema layered pueden tener una
estructura interna que use otro estilo
Una arquitectura hecha con J2EE probablemente resulte en una
arquitectura heterognea que incluya:
Layered
Repository
Independent components
Information hiding Objects

En sistemas medianos / grandes, es ms probable que un


estilo arquitectnico describa una parte de un sistema
que al sistema completo.
Bibliografa

También podría gustarte