Está en la página 1de 24

Ingeniería de Software.

Disciplina de Arquitectura.

El rol del Arquitecto de Software.


Conceptos Generales y Principios
de Arquitectura.

Ingeniería de Software. Conceptos de Arquitectura Página 0


Mapa del Proceso.

Ingeniería de Software. Conceptos de Arquitectura Página 1


Justificación del Rol del Arquitecto.

• Durante años, el software se desarrolló sin contar con el rol del


Arquitecto.

• ¿Por qué existe actualmente?

• Por dos cambios cruciales en los sistemas que han ocurrido en el


pasado reciente.

• Tamaño.
• Distribución.

• También es importante la función del arquitecto por el grado de


seguridad que requieren los sistemas empresariales actuales.

Ingeniería de Software. Conceptos de Arquitectura Página 2


Sistemas con Distribución Mínima y Pocos Usuarios.

• En Sistemas no distribuidos no se justifica un rol de Arquitecto.

• En sistemas cliente-servidor, el rol del arquitecto comienza a


aparecer de forma muy primitiva: "Compute near the data, validate
near the user".

Ingeniería de Software. Conceptos de Arquitectura Página 3


Sistemas de Alta Distribución y Muchos Usuarios.

• El rol crítico del arquitecto es llevar a cabo la planeación de


alto nivel para la localización de componentes de software y
su intercomunicación.
• Este rol distingue al arquitecto del diseñador, desarrollador,
programador, integrador, etc.

Ingeniería de Software. Conceptos de Arquitectura Página 4


Justificación del Rol del Arquitecto.

• Se requiere el arquitecto para asegurar que el sistema:

– Continúe trabajando si ocurren fallas parciales


(robustez).

– Maneje la carga total.

– Pueda crecer si la demanda excede los parámetros


originales de diseño.

Ingeniería de Software. Conceptos de Arquitectura Página 5


Responsabilidades del Arquitecto (1).

• Garantizar el éxito del Proyecto.

• Asegurar la Calidad del Servicio.

• Analizar los Requerimientos no funcionales:

– Características de calidad del sistema como escalabilidad,


rendimiento, disponibilidad, etc.

• Tomar las decisiones que se pueden requerir


durante el diseño.

Ingeniería de Software. Conceptos de Arquitectura Página 6


Responsabilidades del Arquitecto (2).
• Evaluar y mitigar riesgos.
– Evaluar los riesgos y las estrategias de mitigación.
– Asumir riesgos basados en costo y probabilidad de ocurrencia.

• Analizar costos vs. riesgos.


– Algunas opciones pueden costar poco, pero dejar riesgos
latentes.

– Otras opciones pueden ser caras, pero controlan el riesgo casi


completamente.

– Opción de no hacer nada. Asumir que el riesgo ocurre y


examinar el impacto en costo.

Ingeniería de Software. Conceptos de Arquitectura Página 7


Actividades del Arquitecto.

• Técnicas.

– Determinar componentes de software y su distribución.


– Describir el ambiente de "deployment".
– Construir diagramas de interacción de componentes.
– Identificar riesgos y construir planes de mitigación.

• 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 tecnologías a utilizar.

Ingeniería de Software. Conceptos de Arquitectura Página 8


Diferencias entre Arquitecto y Diseñador.

Arquitecto Diseñador
Nivel de • Alto y amplio. • Bajo y estrecho.
abstracción. • Pocos detalles. • Enfocado a muchos
detalles.
Entregables. • Planes de sistema y • Diseño de
subsistemas. componentes.
• Prototipo arquitectónico • Especificaciones de
(“Baseline”). codificación.
Énfasis. • Requerimientos NO • Requerimientos
funcionales. funcionales.
• Manejo de riesgos.

Ingeniería de Software. Conceptos de Arquitectura Página 9


Principios de Arquitectura.

• Sugieren las mejores prácticas para la construcción de un


sistema.

• Forman la base para la mayoría 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.

Ingeniería de Software. Conceptos de Arquitectura Página 10


Algunos Principios de Arquitectura.
1. Separación de Responsabilidades. (Separation of Concerns.)

2. Inversión de la Dependencia. ("Depend upon abstracions. Do


not depend upon concretions.")

3. Separación de componentes estables y volátiles.

4. Uso de contenedores ("frameworks") de componentes.

5. Mantenimiento de interfaces simples y claras.

6. Mantenimiento de interfaces remotas de grano grueso


("coarse-grained interfaces")

Ingeniería de Software. Conceptos de Arquitectura Página 11


1. Separación de Responsabilidades.

• Es la base del patrón de diseño MVC, Model-View-Controller.


• Sugiere el diseño en base a capas.

Model
• Expone la funcionalidad de la aplicación.
• Encapsula el estado de la aplicación
• Responde a consultas del estado.
• Notifica a la vista de cambios en el
estado.

View Controller
• Expone el modelo. • Encapsula el flujo y comportamiento de la
• Solicita actualizaciones del modelo aplicación.
• Acepta acciones del usuario. • Mapea acciones del usuario al modelo.
• Permite al controlador seleccionar la • Responde a consultas del estado.
vista. • Selecciona la vista.

Ingeniería de Software. Conceptos de Arquitectura Página 12


2. Principio de Inversión de Dependencia.

Ingeniería de Software. Conceptos de Arquitectura Página 13


3. Separación de Componentes Estables y Volátiles.

• Reducir los cambios a un pequeño número de


paquetes.

• Los componentes estables se deben poner en


paquetes separados de los componentes que pueden
cambiar con facilidad.

• Su utilidad se presenta en el mantenimiento.

Ingeniería de Software. Conceptos de Arquitectura Página 14


4. 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
especificación (e.g. un web server que maneja
servlets HTTP).

• Son herramientas muy poderosas para el arquitecto;


permiten adquirir software que maneje la
infraestructura del sistema y permita a los diseñadores
concentrarse en la lógica de la aplicación.
Ingeniería de Software. Conceptos de Arquitectura Página 15
5. Mantenimiento de Interfaces Simples y Claras.

• Entre más compleja sea la interfaz entre componentes,


más difícil es para el desarrollador usar los
componentes.

• Las interfaces deben ser altamente cohesivas.

Ingeniería de Software. Conceptos de Arquitectura Página 16


6. Mantenimiento de Interfaces Remotas
“De Grano Grueso”.

• Los componentes remotos requieren tráfico en la red.

• Hay que mantener el número de requests remotos al


mínimo.

• “Coarse-grained” significa que se envíe en cada


request remoto el mayor número posible de
información

Ingeniería de Software. Conceptos de Arquitectura Página 17


Patrones de Arquitectura y de Diseño.
• El arquitecto planea sistemas usando razonamiento basado
en patrones que se definen como: “soluciones standard a
problemas standard”.

• El arquitecto debe estar familiarizado con una variedad de


patrones conocidos para ser efectivo.

• El arquitecto utiliza dos tipos de patrones:

– Patrones de diseño 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.
Ingeniería de Software. Conceptos de Arquitectura Página 18
Dimensiones de Arquitectura.

• Capas (Tiers), que separan las funciones lógicas de la


aplicación.

• Estratos (Layers), que organizan las relaciones entre


componentes y contenedores.

• Características de Calidad del Sistema (Systemic Qualities),


que identifican estrategias y patrones entre capas y estratos.

Ingeniería de Software. Conceptos de Arquitectura Página 19


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.

Presentación Proporciona las páginas y formas HTML que se envían al


navegador Web y procesa los requerimientos del usuario.
Negocio Proporciona los componentes de servicio que implementan
las reglas de negocio, así como las entidades que
representan las abstracciones clave.
Integración Proporciona componentes que integran la capa de Negocio
con la capa de Recursos.
Recursos Contiene los recursos reales del Sistema como el
Manejador de Base de Datos o el Sistema de Información
Empresarial.

Ingeniería de Software. Conceptos de Arquitectura Página 20


Estratos (Layers).

“The hardware and software stack that hosts services


within a given tier”
Application Proporciona una implementación concreta de los
componentes quecumplen los requerimientos funcionales.
Virtual Proporciona las APIs que implementan los componentes de
Platform la aplicación.
Application Consiste de productos como contenedores de componentes
Infrastructure (middleware).
Enterprise Consiste principalmente del Sistema Operativo y programas
Services de control asociados a éste.
Compute & Incluye los componentes de hardware como servidores y
Storage dispositivos de almacenamiento
Network Incluye los dispositivos de la red, como ruteadores,
Infrastructure switcheadores, puentes, etc.

Ingeniería de Software. Conceptos de Arquitectura Página 21


Características de Calidad del Sistema (Systemic
Qualities)

“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 fina, e.g.


rendimiento, confiabilidad, disponibilidad, accesabilidad.
Operacionales Reflejadas en el momento de la ejecución del sistema,
e.g. seguridad, "throughput", mantenibilidad.
Evolutivas Reflejadas a futuro, e.g.escalabilidad, extensibilidad,
flexibilidad.
De desarrollo Reflejadas durante el desarrollo, e.g.planeabilidad,
factibilidad. costo.

Ingeniería de Software. Conceptos de Arquitectura Página 22


Vista Tridimensional.

La arquitectura es un proceso de balanceo entre los


diferentes elementos para satisfacer a los involucrados.

Ingeniería de Software. Conceptos de Arquitectura Página 23

También podría gustarte