Está en la página 1de 44

Fundamentos de Definición

de Arquitectura de Software
Mauricio Naranjo
Chief Architect
mnaranjo@lucasian.com

Lucasian Labs Ltda.

Septiembre 27 a Octubre 01 de 2005


Bogotá, Colombia
Agenda Conferencia

+ Que es Arquitectura de Software?


+ Rol y Responsabilidades del Arquitecto
+ Arquitectura Vs. Diseño
+ Estrategias de Definición de Arquitectura
+ Ejemplo de Definición de Arquitecturas
+ Calidades Sistémicas y Calidad de Servicio
+ Lecciones Aprendidas en Consultoría

2 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Arquitectura de Software

+ Que es una arquitectura?

+ “No estamos seguros, pero la reconocemos cuando


vemos una”
+ IEEE-1471-FAQ

3 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Arquitectura de Software
+ IEEE 1471 + Software Architecture in
El nivel conceptual más alto de un
Practice - Kazman
sistema en su ambiente. “La estructura de
estructuras de un sistema,
+ Arquitectura es la organización la cual abarca
fundamental de un sistema componentes de software,
descrita en: propiedades externas
– Sus componentes. visibles de estos
– Relación entre ellos y con el ambiente. componentes y sus
– Principios que guían su diseño y relaciones”.
evolución.

4 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Discusión

+ Definir la arquitectura en los proyectos actuales es


crítico...

5 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Evolución de Arquitecturas

+ Dos factores primarios en la ingeniería de software


que han incrementado la importancia de la
arquitectura:

6 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Evolución de Arquitecturas
+ Aplicaciones Monolíticas Arquitectura Cliente-Servidor

+ Clientes pesados, no estándar

+ Interfaces gráficas de usuario (GUI). + Conexiones dedicadas a BD


+ Protocolos pesados
+ Servicios de presentación, negocios + Ejecución remota de SQLs
y persistencia en la misma máquina.
+ Alta administración
+ Bajo rendimiento
+ No hay concurrencia de usuarios. + Alto tráfico de red
+ Alto acoplamiento entre tiers. + Baja accesibilidad

7 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Evolución de Arquitecturas
+ Arquitectura Cliente-Servidor Arquitectura de 3 niveles
Mejorada
+ Reutilización de lógica de negocio para
+ Lógica de negocios en BD diferentes clientes o sistemas.
+ Clientes pesados, no estándar. + Mejora la escalabilidad.
+ Conexiones dedicadas a la BD. + Mejora la flexibilidad.
+ Mejora en rendimiento + Independencia de la base de datos.
+ Alta administración
+ Baja escalabilidad
+ Baja flexibilidad
+ Baja portabilidad

8 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Evolución de Arquitecturas
+ Arquitectura de N-niveles

100.000+

+ Bajo costo de administración de clientes.


+ Alta accesibilidad.
+ Alta flexibilidad.
+ Alta disponibilidad y tolerancia a fallos.
+ Alta escalabilidad.
+ Independencia de DB

9 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Evolución de Arquitecturas
+ Visión de Arquitectura Orientada a Servicios (SOA)

Portal de
Servicios Integrados
Sistema
+ Requerimientos Batch Cluster de
Servidores de
Arquitectónicos
Aplicaciones

+ Heterogeneidad Base de
+ Escalabilidad Datos
+ Disponibilidad Servidor de
+ Distribución Procesos
(BPM) Aplicaciones
+ Manejabilidad de Procesos
Legadas
+ Administración y monitoreo de procesos,
servicios e infraestructura

10 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Que es un Arquitecto de Software?

• Rational Unified Process • SUN SL-425:

Arquitecto es un rol en un proyecto de El arquitecto:


desarrollo de software el cual es – Visualiza el comportamiento
responsable de: del sistema.
– Crea los planos del sistema.
– Liderar el proceso de arquitectura. –
Define la forma en la cual los
– Producir los artefactos necesarios: elementos del sistema
Documento de descripción de trabajan en conjunto.
arquitectura – Responsable de integrar los
– Modelos y prototipos de requerimientos no-funcionales
arquitectura. (NRFs) en el sistema.

11 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Discusión

+ Existe alguna diferencia entre arquitectura y diseño


de software?

12 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Arquitectura Vs. Diseño
+ La arquitectura y el diseño difieren en tres áreas:
Arquitectura Diseño
Nivel de Alto nivel Bajo nivel. Enfoque
Abstracción específico en detalles

Entregables Planear subsistemas, interfaces con Diseño detallado


sistemas externos, servicios componentes.
horizontales, frameworks,
componentes reutilizables,
Especificaciones de
prototipo arquitectónico
codificación

Áreas de Enfoque Selección de tecnologías, Requerimientos


Requerimientos no funcionales funcionales
(QoS),
Manejo de riesgos
13 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005
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
Código causan un alto
Implementación impacto en los
proyectos de IT
Diseño

Arquitectura

14 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Discusión

+ Cuales son los principios fundamentales en los


métodos de desarrollo de software modernos?

15 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


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.

16 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


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

17 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Arquitectura y Procesos de Desarrollo
Rational Unified Process: SunTone AM:
En el proceso de definición de Adicionalmente se producen:
arquitectura se producen:
+ Matriz Tecnológica de Layers
+ Arquitectura Inicial. y Tiers
+ Arquitectura de Referencia. + Template de Arquitectura
+ Documento de Descripción de
arquitectura (SAD):
– Subsistemas
– Componentes
– Arquitectura Runtime.

+ Guías para el proyecto y


estándares de Diseño.
18 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005
Definición de Arquitectura en RUP
Fase de Inicio
+ Con respecto a la arquitectura, en la
fase de inicio de los proyectos se
establece:

– Requerimientos no-funcionales
– Lista de riesgos y restricciones
– Arquitectura inicial

19 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Definición de Arquitectura en RUP
Fase de Elaboración
+ Con respecto a la arquitectura, en la
fase de elaboración se establece:
– Arquitectura línea base.

+ Entregables:
– Documento de Definición de
Arquitectura.
– Prototipo evolutivo de arquitectura.
– Guías y Estándares de Diseño.

20 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Definición de Arquitectura en RUP
+ Modelo de Vista 4+1
+ Framework para Descripción de Arquitectura, basado en vistas
lógicas y físicas UML y una vista funcional de casos de uso.

Logical View Implementation View

Analysts/Designers End-user Programmers


Structure Functionality Software management

Use-Case View

Process View Deployment View


System integrators System engineering
Performance System topology
Scalability Delivery, installation
Throughput communication

21 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Definición de Arquitectura en RUP
Definir arquitectura
candidata

Evaluar Req.
No Funcionales (NFR)

Refinar y Seleccionar
la Arquitectura

Prototipar la
Arquitectura

Valorar Calidades Ajustar


Sistémicas Arquitectura

22 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Definición de Arquitectura en SunTone AM
+ Metodología de desarrollo de software análoga al Unified
Process (UP) con un fuerte énfasis en Calidad de Servicio y
Patrones de diseño.

+ El cubo: framework conceptual, el cual provee una vista


tridimensional:
– Tiers lógicos
– Layers tecnológicos
– Calidades sistémicas

23 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Definición de Arquitectura en SunTone AM

24 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Definición de Arquitectura en SunTone
Principios Arquitectónicos
+ La arquitectura es primariamente necesaria para crear
un framework para el desarrollo basado en patrones y
para la entrega de calidades sistémicas predecibles.

Presentation Business Business Database Integration


Integration
Action Factory

DAO
Factory
Business Oracle DAO
Delegate Factory
Action
Session Facade Composite Entity
Front Controller
View DAO
Service Value OracleDAO
JSF Components
Locator Object

25 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Definición de Arquitectura en IFM
Principios Arquitectónicos
+ El proceso de creación de arquitectura debe ser un
proceso de creación de valor.

+ La arquitectura se descompone en elementos


arquitectónicos (AEs).

+ La arquitectura se crea incrementalmente acorde a un


proceso secuencial dirigido por el ROI.

26 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Definición de Arquitectura en IFM
Principios Arquitectónicos
+ La instanciación de los elementos arquitectónicos
(AEs) se realiza incrementalmente acorde a la
secuencia de MMFs, determinada por el ROI.
AE 1

AE 3

AE 7 AE 7

AE 8 AE 2 AE 8

MMF A MMF B MMF C

27 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Ejemplo de Definición de Arquitectura

eBank Trusted Hosting


+ Workshop de Arquitectura y Diseño de Aplicaciones J2EE
+ Curso WS50I - Lucasian Labs Ltda.

+ Entidad que presta el hosting


de los servicios de banca
personal en Internet
para un grupo de bancos.

28 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Ejemplo de Definición de Arquitectura

+ Dado un conjunto de requerimientos primarios

29 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Ejemplo de Definición de Arquitectura

+ Identificación de requerimientos funcionales y de


calidad de servicio (QoS)

30 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Ejemplo de Definición de Arquitectura

+ Identificación de supuestos, riesgos y restricciones

31 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Ejemplo de Definición de Arquitectura

+ Identificación de Actores y Casos de Uso primarios

32 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Ejemplo de Definición de Arquitectura

+ Arquitectura Lógica. Identificación de tiers lógicos,


subsistemas y paquetes

33 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Ejemplo de Definición de Arquitectura

+ Diseño de Arquitectura Runtime. Diagrama de


Despliegue.

34 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Ejemplo de Definición de Arquitectura

+ Plataforma Tecnológica. Definición de la matriz


tecnológica de layers y tiers

35 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Discusión

+ Los requerimientos no funcionales son fuentes


comunes de riesgo…

36 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Calidades Sistémicas
+ El manejo inadecuado de los requerimientos no
funcionales, es una de las fuentes más importante
de riesgo en los proyectos:
– Reglas de negocio de alta complejidad.
– Calidades sistémicas
 Seguridad
 Rendimiento
 Escalabilidad
 Disponibilidad
 Extensibilidad

+ La calidad de servicio (QoS = Quality Of Service) es


un riesgo primario relacionado con la arquitectura.
37 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005
Calidades Sistémicas
+ Definición + Familias de
Calidades
+ Propiedades que establecen la
calidad de servicio (QoS) que un Sistémicas
sistema expone.
+ Manifiestas
+ Son globales a toda la arquitectura
+ Operacionales
+ Influencian el diseño. + Desarrollo
+ Evolutivas
+ Son no-funcionales pero
observables.

38 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Calidades Sistémicas - Manifiestas
Observables por los usuarios del sistema.

+ Performance. Tiempo de respuesta desde el punto de vista del


usuario.

+ Reliability. Grado de probabilidad de realizar operaciones


correctamente.

+ Availability. Porcentaje de tiempo que un sistema puede


procesar solicitudes.

39 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Calidades Sistémicas - Operacionales
Observables cuando el sistema está operando en producción.

+ Throughput. Solicitudes atendidas + Security. Prevención de uso


por unidad de tiempo. indeseado, por abuso o uso
inapropiado:

+ Manageability. Cantidad inversa de – Identidad


– Autoridad
esfuerzo para realizar labores – Confidencialidad
– Auditabilidad
administrativas. – Integridad

+ Serviceability. Esfuerzo para + Testability. Esfuerzo


actualizar el sistema para reparar invertido para detectar y
aislar errores.
errores.

40 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Calidades Sistémicas - Evolutivas
+ Relacionadas con el comportamiento del sistema
cuando sufre algún cambio.

+ Escalability. La habilidad para + Reusability. Esfuerzo ganado en


soportar la calidad de servicio la utilización de componentes
requerida conforme la carga aumenta.
existentes.

+ Flexibility. Esfuerzo ahorrado cuando


+ Extensibility. Esfuerzo ahorrado
se hace un cambio de configuración.
para adicionar nuevas
funcionalidades.
+ Portability. Esfuerzo ahorrado
cuando se migra a una infraestructura +
Mantainability. Esfuerzo
diferente.
ahorrado para revisar y corregir
errores.
41 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005
Lecciones Aprendidas en Consultoría
+ Defina una persona o un grupo de personas experimentadas,
encargadas de definir y validar arquitectura de sus proyectos.

+ Establezca los requerimientos de calidad de servicio con los


expertos del dominio y con los usuarios finales.

+ Involucre al equipo de trabajo en el proceso de definición de


arquitectura.

+ Documente y comunique la arquitectura y


lineamientos de diseño y logre aceptación.
No la imponga.

+ Sea firme con las decisiones, valore impactos


e identifique riesgos.
42 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005
Lecciones Aprendidas en Consultoría
+ Valore alternativas de arquitectura y diseño tomando en cuenta las
calidades sistémicas y relación costo-beneficio.

+ Instancie los mecanismos arquitectónicos definidos incrementalmente.


No los instancie en bloque.

+ Reutilice frameworks, patrones de diseño y mejores prácticas. Sea


racional en el uso de tecnologías.

+ Tenga siempre presente que requerimientos


de seguridad, integración con sistemas
externos, canales de comunicaciones
con poco ancho de banda,
crecimiento del volumen de
usuario, expectativas de cambios de
requerimientos son fuentes comunes de riesgo.

43 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005


Fundamentos de Definición de
Arquitectura de Software
Mauricio Naranjo
Chief Architect
mnaranjo@lucasian.com

Lucasian Labs Ltda.


www.lucasian.com

44 XXV Salón de Informática “Arquitecturas Empresariales de Software” Septiembre 28-Octubre 01 de 2005

También podría gustarte