You are on page 1of 24

Conceptos de Arquitectura.

Ingeniera de Software.
Ingeniera de Software. Conceptos de Arquitectura Pgina 0
El rol del Arquitecto de Software.
Mapa del Proceso.
Ingeniera de Software. Conceptos de Arquitectura Pgina 1
Justificacin del Rol del Arquitecto.
Durante aos, el software se desarroll sin contar con el
rol del Arquitecto.
Por qu existe actualmente?
Ingeniera de Software. Conceptos de Arquitectura Pgina 2
Por dos cambios cruciales en los sistemas que han
ocurrido en el pasado reciente.
Tamao.
Distribucin.
Sistemas con Distribucin Mnima y pocos Usuarios.
En Sistemas no distribuidos no se justifica un rol de Arquitecto.
En sistemas cliente-servidor, el rol del arquitecto se reduce a la
premisa conocida como: "Compute near the data, validate near the
user".
Ingeniera de Software. Conceptos de Arquitectura Pgina 3
Sistemas de Alta Distribucin y muchos Usuarios.
El rol crtico del arquitecto es llevar a cabo la planeacin de
alto nivel para la localizacin de componentes de software y
su intercomunicacin.
Este rol distingue al arquitecto del diseador, desarrollador,
programador, integrador, etc.
Ingeniera de Software. Conceptos de Arquitectura Pgina 4
Justificacin del Rol del Arquitecto.
Se requiere el arquitecto para asegurar que el sistema:
Contine trabajando si ocurren fallas parciales (robustez).
Maneje la carga total.
Ingeniera de Software. Conceptos de Arquitectura Pgina 5
Maneje la carga total.
Pueda crecer si la demanda excede los parmetros originales
de diseo.
Responsabilidades del Arquitecto (1).
Garantizar el xito del Proyecto.
Asegurar la Calidad del Servicio.
Analizar los Requerimientos no funcionales:
Ingeniera de Software. Conceptos de Arquitectura Pgina 6
Analizar los Requerimientos no funcionales:
Cualidades del sistema como escalabilidad, rendimiento,
disponibilidad, etc.
Lmites a las decisiones que se pueden tomar durante el diseo.
Responsabilidades del Arquitecto (2).
Evaluar y controlar riesgos.
Evaluar los riesgos y las estrategias de mitigacin.
Comparar riesgos basados en costo y probabilidad de
ocurrencia.
Analizar costos.
Ingeniera de Software. Conceptos de Arquitectura Pgina 7
Analizar costos.
Algunas opciones pueden costar poco, pero dejar riesgos
latentes.
Otras opciones pueden ser caras, pero controlan el riesgo
completamente.
Opcin de no hacer nada. Asumir que el riesgo ocurre y
examinar el impacto en costo.
Actividades del Arquitecto.
Tcnicas.
Determinar componentes de software y su distribucin.
Describir el ambiente de "deployment".
Construir diagramas de interaccin de componentes.
Ingeniera de Software. Conceptos de Arquitectura Pgina 8
Construir diagramas de interaccin de componentes.
Identificar riesgos y construir planes de mitigacin.
Gerenciales.
Convencer a los involucrados en cuanto a la validez de las
decisiones.
Asesorar a otros miembros del equipo de desarrollo en el uso
adecuado de las tecnologas a utilizar.
Diferencias entre Arquitecto y Diseador.
Arquitecto Diseador
Nivel de
abstraccin.
Alto y amplio.
Pocos detalles.
Bajo y estrecho.
Enfocado a muchos
detalles.
Entregables. Planes de sistema y Diseo de
Ingeniera de Software. Conceptos de Arquitectura Pgina 9
Entregables. Planes de sistema y
subsistemas.
Prototipo arquitectnico
(Baseline).
Diseo de
componentes.
Especificaciones de
codificacin.
nfasis. Requerimientos no
funcionales.
Manejo de riesgos.
Requerimientos
funcionales.
Principios de Arquitectura.
Axiomas o asunciones que sugieren buenas prcticas para la
construccin de un sistema.
Forman la base para la mayora de los patrones de
Ingeniera de Software. Conceptos de Arquitectura Pgina 10
Forman la base para la mayora de los patrones de
arquitectura.
Contribuyen a las decisiones que debe hacer el arquitecto
para satisfacer los requerimientos no funcionales y la calidad
del servicio.
Algunos Principios de Arquitectura.
Separacin de Propsitos Funcionales. (Separation of
Concerns.)
Inversin de Dependencia. ("Depend upon abstracions. Do not
depend upon concretions.")
Separacin de componentes estables y voltiles.
Ingeniera de Software. Conceptos de Arquitectura Pgina 11
Separacin de componentes estables y voltiles.
Uso de contenedores ("frameworks") de componentes.
Mantenimiento de interfaces simples y claras.
Mantenimientos de interfaces remotas gruesas ("coarse-
grained interfaces")
Separacin de Propsitos Funcionales.
Conduce al patrn de diseo: Model-View-
Controller.
Model
Expone la funcionalidad de la aplicacin.
Encapsula el estado de la aplicacin
Responde a consultas del estado.
Ingeniera de Software. Conceptos de Arquitectura Pgina 12
Responde a consultas del estado.
Notifica a la vista de cambios en el
estado.
View
Expone el modelo.
Solicita actualizaciones del modelo
Acepta acciones del usuario.
Permite al controlador seleccionar la
vista.
Controller
Encapsula el flujo y comportamiento de la
aplicacin.
Mapea acciones del usuario al modelo.
Responde a consultas del estado.
Selecciona la vista.
Principio de Inversin de Dependencia.
Ingeniera de Software. Conceptos de Arquitectura Pgina 13
Separacin de componentes estables y voltiles.
Reducir los cambios a un pequeo nmero de
paquetes.
Los componentes estables se deben poner en
Ingeniera de Software. Conceptos de Arquitectura Pgina 14
Los componentes estables se deben poner en
paquetes separados de los componentes que pueden
cambiar con facilidad.
Su utilidad se presenta en el mantenimiento.
Uso de contenedores ("frameworks") de
componentes.
Un componente es un elemento de software manejado
por un contenedor. (e.g. un servlet)
Un contenedor es un framework de software que
maneja componentes construidos para cierta
Ingeniera de Software. Conceptos de Arquitectura Pgina 15
maneja componentes construidos para cierta
especificacin. (e.g. un web server que maneja HTTP
y servlets)
Son herramientas muy poderosas para el arquitecto.
Permiten adquirir software que maneje la
infraestructura del sistema y permita a los diseadores
concentrarse en la lgica de la aplicacin.
Mantenimiento de interfaces simples y claras.
Entre ms compleja sea la interfaz entre componentes,
ms difcil es para el desarrollador usar los
componentes.
Ingeniera de Software. Conceptos de Arquitectura Pgina 16
Las interfaces deben ser altamente cohesivas.
Mantenimientos de interfaces remotas gruesas.
Los componentes remotos requieren trfico en la red.
Hay que mantener el nmero de requests remotos al
Ingeniera de Software. Conceptos de Arquitectura Pgina 17
Hay que mantener el nmero de requests remotos al
mnimo.
Coarse-grained significa que se enve en cada
request remoto el mayor nmero posible de
informacin
Patrones de Arquitectura y de Diseo.
El arquitecto planea sistemas usando razonamiento basado
en patrones.
El arquitecto debe estar familiarizado con una variedad de
patrones conocidos para ser efectivo.
El arquitecto utiliza dos tipos de patrones:
Ingeniera de Software. Conceptos de Arquitectura Pgina 18
El arquitecto utiliza dos tipos de patrones:
Patrones de diseo que definen estructura y comportamiento
para construir componentes de software efectivos y reusables
que soporten requerimientos funcionales.
Patrones de arquitectura que definen estructura y
comportamiento de sistemas y subsistemas que soporten los
requerimientos no funcionales.
Dimensiones de Arquitectura.
Capas (Tiers), que separan las funciones lgicas de la
aplicacin.
Estratos (Layers), que organizan las relaciones entre
componentes y contenedores.
Ingeniera de Software. Conceptos de Arquitectura Pgina 19
componentes y contenedores.
Cualidades Sistmicas (Systemic Qualities), que identifican
estrategias y patrones entre capas y estratos.
Capas (Tiers).
A logical or physical organization of components into an ordered chain
of service providers and consumers.
Cliente. Consiste de un cliente delgado como un
navegador web.
Presentacin. Proporciona las pginas y formas HTML que
se envan al navegador Web y procesa los
Ingeniera de Software. Conceptos de Arquitectura Pgina 20
se envan al navegador Web y procesa los
requerimientos del usuario.
Negocio. Proporciona los servicios de negocio y las
entidades.
Integracin. Proporciona componentes que integran la
capa de Negocio con la capa de Recursos.
Recursos. Contiene los recursos de "backend" como el
Manejador de Base de Datos o el Sistema de
Informacin Empresarial.
Estratos (Layers).
The hardware and software stack that hosts services within a given
tier. (layers represent component/container relationships)
Aplicacin Proporciona una implementacin
Application (App) concreta de componentes que
cumplen los requerimientos
funcionales.
Plataforma Virtual Proporciona las APIs que
Virtual Platform (VP) implementan los componentes de la
Ingeniera de Software. Conceptos de Arquitectura Pgina 21
Plataforma Virtual Proporciona las APIs que
Virtual Platform (VP) implementan los componentes de la
aplicacin.
Plataforma Superior Consiste de productos como
Upper Platform (UP) contenedores de componentes
(middleware).
Plataforma Inferior Consiste principalmente del Sistema
Lower Platform (LP) Operativo.
Plataforma de Hardware Incluye los componentes de hardware,
Hardware Platform (HP) como servidores, dispositivos de
almacenamiento y dispositivos de red.
Cualidades Sistmicas.
The strategies, tools, and practices that will deliver the requisite
quality of service across the tiers and layers.
Manifiestas. Reflejadas en la experiencia
del usuario final: confiabilidad,
disponibilidad, accesabilidad.
Ingeniera de Software. Conceptos de Arquitectura Pgina 22
disponibilidad, accesabilidad.
Operacionales. Reflejadas en la ejecucin del sistema:
seguridad, "throughput", mantenibilidad.
Evolucionales. Reflejadas a futuro: escalabilidad,
extensibilidad, flexibilidad.
De desarrollo. Reflejadas durante el desarrollo:
planeacin, costo, factibilidad.
Vista Tridimensional
Ingeniera de Software. Conceptos de Arquitectura Pgina 23
La arquitectura es un proceso de balanceo entre los
diferentes elementos para satisfacer a los involucrados.

You might also like