2. Arquitectura de Software
• IEEE 1471
El nivel conceptual más alto
de un sistema en su
ambiente.
• Arquitectura es la
organización fundamental de
un sistema descrita en:
– Sus componentes.
– Relación entre ellos y con el
ambiente.
– Principios que guían su diseño
y evolución.
+ Software Architecture in Practice
- Kazman
“La estructura de estructuras de un
sistema, la cual abarca
componentes de software,
propiedades externas visibles de
estos componentes y sus
relaciones”.
3. Discusión
+ Definir la arquitectura en los proyectos actuales es crítico...
+ Es el “puente” entre los requerimientos del sistema y la
implementación.
+ Las actividades que culminan en la definición de la arquitectura
pueden ubicarse en las fases tempranas del ciclo de desarrollo del
sistema: luego del análisis de los requerimientos y el análisis de
riesgos, y justo antes del diseño detallado.
+ Sirve de MEDIO DE COMUNICACIÓN entre los miembros del equipo
de desarrollo, los clientes y usuarios finales, dado que contempla los
aspectos que interesan a cada uno.
5. Arquitectura Vs. Diseño
Arquitectura Diseño
Nivel de
Abstracción
Alto nivel Bajo nivel. Enfoque
específico en detalles
Entregables Planear subsistemas, interfaces
con sistemas externos,
servicios horizontales,
frameworks, componentes
reutilizables, prototipo
arquitectónico
Diseño detallado
componentes.
Especificaciones de
codificación
Áreas de
Enfoque
Selección de tecnologías,
Requerimientos no funcionales
(QoS),
Manejo de riesgos
Requerimientos
funcionales
+ La arquitectura y el diseño difieren en tres áreas:
6. Arquitectura Vs. Diseño
• La arquitectura envuelve un conjunto de
decisiones estratégicas de diseño,
lineamientos, reglas y patrones que
restringen el diseño y la implementación
de un software.
Las decisiones
de arquitectura
causan un alto
impacto en los
proyectos de IT
Arquitectura
Diseño
Implementación
Código
7. Discusión
+ Cuales son los principios fundamentales en los métodos de desarrollo
de software modernos?
8. Arquitectura y Procesos de Desarrollo
Principios Fundamentales de Procesos Modernos
+ Desarrollo iterativo e incremental.
+ Conducido por las calidades sistémicas.
+ Centrado en la arquitectura.
+ Dirigido por los casos de uso.
+ Basada en Modelos.
+ Mejores prácticas de diseño.
9. Arquitectura y Procesos de
Desarrollo
• Que es un Proceso de Arquitectura?
• Rational Unified Process:
• Secuencia de actividades
que conllevan a la
producción de artefactos
arquitectónicos:
– Descripción de arquitectura
– Prototipo arquitectónico
10. Arquitectura y Procesos de
Desarrollo
Rational Unified Process:
En el proceso de definición de
arquitectura se producen:
+ Arquitectura Inicial.
+ Arquitectura de Referencia.
+ Documento de Descripción de
arquitectura (SAD):
– Subsistemas
– Componentes
– Arquitectura Runtime.
+ Guías para el proyecto y
estándares de Diseño.
SunTone AM:
Adicionalmente se producen:
+ Matriz Tecnológica de Layers
y Tiers
+ Template de Arquitectura
11. Arquitectura de Software -
Introducción
11
Distribución del Costo del Software
Mantenimiento
Diseño
Programación
Test
12. Costos de Mantenimiento del
Software
Arquitectura de Software -
Introducción
Test y
depuración
Implementar
cambios
Rastrear
lógica
Definir
cambios
Analizar
documentos
Actualizar
documentos
Más del 50% del
tiempo del
programador
encargado de
mantenimiento está
dedicado a
comprender el código
y la documentación
del sistema.
13. Arquitectura en el proceso de
desarrollo
Arquitectura de Software -
Introducción
Requisitos
Arquitectura
Diseño
Detallado
Programación
Test
Mantenimiento
– Aclarar intenciones.
– Hacer explícitas las decisiones.
– Permitir análisis a nivel de sistemas.
Reducir los costos de
mantenimiento directa e
indirectamente.
Diseño
14. ¿Para qué la Arquitectura de
Software?
Las personas necesitan pensar, diseñar, codificar,
y comunicarse en términos de grandes bloques
conceptuales.
– Abstracción
Es necesario escapar de los desarrollos
excesivamente personalizados y estandarizar el
diseño.
– Reutilización de patrones de arquitectura
Es necesario diseñar sistemas de larga vida.
– Reutilización de componentes particulares
Arquitectura de Software -
Introducción
15. ¿Para qué más?
Productividad en el desarrollo:
actualmente solamente se reutiliza el código y las
estructuras de datos.
Atacar otros problemas del ciclo de vida del
software:
Modificabilidad, portabilidad, escalabilidad,
seguridad.
A medida que el tamaño del sistema crece, las
soluciones a estos problemas radican más en la
arquitectura.
Tener un lenguaje común para diseñadores,
desarrolladores y usuarios.
Arquitectura de Software -
Introducción
16. Ciclo de Vida de la Arquitectura
• Los objetivos de la organización influencian los
requisitos.
• Los requisitos nos llevan a un diseño de
arquitectura.
• La arquitectura da como resultado un sistema.
• Los sistemas construidos sugieren nuevas
oportunidades para la organización y nuevos
requisitos.
Arquitectura de Software -
Introducción
17. Influencias sobre el Arquitecto de
Software
Arquitectura de Software -
Introducción
Arquitecto
Administrador
de la
organización
desarrolladora
Bajos costos,
mantener a la
gente ocupada
Encargado
de
Marketing
Elementos
atractivos, corto
tiempo para poner
en el mercado,
bajos costos,
comparable con
productos de la
competencia
Usuario Final
Comportamiento
apropiado,
performance,
seguridad,
confiabilidad
Organización
encargada del
mantenimiento
Mantenibilidad
Cliente
Bajos costos,
entrega a tiempo,
sin cambios
frecuentes
18. Influencias sobre la Arquitectura
Arquitectura de Software - Introducción
Arquitecto
Arquitectura
Sistema
•Cliente y
usuario final
•Organización
desarrolladora
•Ambiente
técnico
•Experiencia
del arquitecto
Requisitos
(cualidades)
Influencias del Arquitecto
19. Etapas de Desarrollo Basado en
Arquitectura
1. Hacer un caso de negocio para el sistema
2. Comprender los requisitos
3. Crear o seleccionar una arquitectura
4. Representar y comunicar la arquitectura
5. Analizar o evaluar la arquitectura
6. Implementar el sistema basado en la
arquitectura
7. Asegurar que la implementación se ajusta a la
arquitectura Arquitectura de Software -
Introducción
20. ¿Cómo se hace una buena
arquitectura?
• La arquitectura debe ser producida por un solo arquitecto o un
grupo pequeño.
• El arquitecto debe disponer de los requisitos técnicos del sistema
y una lista priorizada de propiedades cualitativas que se espera
que el software satisfaga.
• La arquitectura debe estar bien documentada usando una
notación acordada que todos los interesados puedan comprender
con poco esfuerzo.
• Se debe facilitar la arquitectura a los interesados, los cuales
deben estar involucrados activamente en su revisión.
Arquitectura de Software -
Introducción
21. ¿Cómo se hace una buena
arquitectura?
La arquitectura debe analizarse para comprobar sus
medidas cuantitativas y propiedades cualitativas antes
de que sea muy tarde para cambiarla.
La arquitectura debe permitir crear un esqueleto de
sistema donde se reflejen todas las vías de
comunicación pero con mínima funcionalidad.
El diseño de la arquitectura debe dar como resultado
un conjunto específico de áreas críticas de consumo de
recursos, cuya resolución estará claramente
documentada y mantenida.
Arquitectura de Software -
Introducción
22. ¿Cómo es una buena arquitectura?
• Los módulos deben diseñarse con el principio de separación de
intereses
– distintos grupos de trabajo pueden desarrollarlos
independientemente
• La información oculta incluirá todo aquello dependiente de la
infraestructura tecnológica.
• Cada módulo tendrá una interfaz definida que oculta a los otros
módulos los aspectos cambiables.
• La arquitectura no debe depender de una versión particular de
un producto comercial. De ser así, éste debe estar estructurado
de modo que sea fácil y barato cambiarlo.
Arquitectura de Software -
Introducción
23. ¿Cómo es una buena
arquitectura?
• Los módulos que producen y los que consumen
datos deben estar separados:
– esto tiende a aumentar la mantenibilidad porque en
general sólo una parte cambia.
• Cada tarea o proceso debe describirse de modo que
su asignación a un procesador específico pueda ser
fácilmente cambiada, aún durante su ejecución.
• La arquitectura debe seguir uno o unos pocos
patrones de interacción:
– mayor comprensión, menor tiempo de desarrollo, mayor
confiabilidad, mayor modificabilidad.
Arquitectura de Software -
Introducción
24. Importancia de la Arquitectura
• comunicación entre las
personas involucradas,
• documentación temprana de
las decisiones de diseño,
• restricción de la
implementación,
• la arquitectura dicta la
estructura organizacional,
• facilita o inhibe propiedades
del sistema,
• permite predecir cualidades del
sistema,
• facilita la administración de la
evolución,
• una abstracción transferible del
sistema,
• las líneas de productos comparten
arquitectura,
• puede usarse COTS (componentes
software ya desarrollados y de índole
comercial),
• base para el entrenamiento de nuevo
personal.
Arquitectura de Software -
Introducción
25. Ejemplo - Grabadora IP
Una empresa desea desarrollar un software de grabación
de conversaciones sobre telefonía IP para un centro de
llamados.
Existen soluciones comerciales para esta funcionalidad,
pero tienen altos costos de licencias.
La empresa quiere hacer este desarrollo para
– usarlo en sus instalaciones
– venderlo a otras empresas
Se desea que la aplicación tenga un módulo adicional
para oír las conversaciones en tiempo real, eligiendo la
operadora a través de una interfaz web.
Arquitectura de Software -
Introducción
26. Grabadora IP: Stakeholders y Cualidades
• Usuarios: operadoras
– Desean que la grabadora no
entorpezca su labor
– Debe consumir pocos recursos
para no constituir un cuello de
botella
• Cliente: dueño del centro de
llamadas
– Bajo costo y rápido desarrollo
– Flexible para adaptarse a distintos
centros de llamados
– Escalable, portable
• Marketing: encargado de
venderlo
– Fácil de instalar
• Desarrolladores
– Desarrollo en plataforma y
tecnología conocida
• Mantenedores
– Desarrollo en plataforma y
tecnología estándar
Arquitectura de Software -
Introducción
27. Grabadora IP
Arquitectura de Software -
Introducción
Operadoras
Central IP
Red telefónica
exteriorCentro de
Llamadas
guardar
sniffer