Está en la página 1de 38

ARQUITECTURA DE SOFTWARE

2011

CONTENIDO
Que es Arquitectura de Software? Rol y Responsabilidades del Arquitecto Arquitectura Vs. Diseo Estrategias de Definicin de Arquitectura Ejemplo de Definicin de Arquitecturas Calidades Sistmicas y Calidad de Servicio Consejos

ARQUITECTURA DE SOFTWARE
Que es una arquitectura?
No estamos seguros, pero la reconocemos cuando vemos una IEEE-1471-FAQ

ARQUITECTURA DE SOFTWARE
+ Software Architecture in IEEE 1471 Practice - Kazman El nivel conceptual ms alto de un sistema en su ambiente. La estructura de

Arquitectura es la organizacin fundamental de un sistema descrita en:


Sus componentes. Relacin entre ellos y con el ambiente. Principios que guan su diseo y evolucin.

estructuras de un sistema, la cual abarca componentes de software, propiedades externas visibles de estos componentes y sus relaciones.

ARQUITECTURA DE SOFTWARE
Estructura de los componentes de un sistema, sus interrelaciones, y principios y directivas que gobiernan su diseo y evolucin en el tiempo.
David Garlan and Dewayne Perry, 1995

DILEMA ..
Discusin
+ Definir la arquitectura en los proyectos actuales es

crtico...

EVOLUCIN DE ARQUITECTURAS
Dos factores primarios en la ingeniera de software que han incrementado la importancia de la arquitectura:

EVOLUCIN DE ARQUITECTURAS
Aplicaciones Monolticas
Interfaces grficas de usuario (GUI). Servicios de presentacin, negocios y persistencia en la misma mquina. No hay concurrencia de usuarios. Alto acoplamiento entre tiers.

Arquitectura Cliente-Servidor
+ Clientes pesados, no estndar + Conexiones dedicadas a BD + Protocolos pesados + Ejecucin remota de SQLs + Alta administracin

+ Bajo rendimiento
+ Alto trfico de red + Baja accesibilidad

EVOLUCIN DE ARQUITECTURAS
Arquitectura Cliente-Servidor Mejorada Lgica de negocios en BD Clientes pesados, no estndar. Conexiones dedicadas a la BD. Mejora en rendimiento Alta administracin Baja escalabilidad Baja flexibilidad Baja portabilidad Arquitectura de 3 niveles
+ Reutilizacin de lgica de negocio

para diferentes clientes o sistemas. + Mejora la escalabilidad. + Mejora la flexibilidad. + Independencia de la base de datos.

EVOLUCIN DE ARQUITECTURAS
Arquitectura de N-niveles
100.000+

+ Bajo costo de administracin de clientes. + Alta accesibilidad. + Alta flexibilidad. + Alta disponibilidad y tolerancia a fallos. + Alta escalabilidad. + Independencia de DB

EVOLUCIN DE ARQUITECTURAS
Visin de Arquitectura Orientada a Servicios (SOA)
Sistema Batch
Portal de Servicios Integrados Cluster de Servidores de Aplicaciones

+ Requerimientos

Arquitectnicos
+ Heterogeneidad
+ Escalabilidad + Disponibilidad
Base de Datos

Servidor de Procesos + Distribucin (BPM) Aplicaciones + Manejabilidad de Procesos Legadas + Administracin y monitoreo de procesos,

servicios e infraestructura

QUE ES UN ARQUITECTO DE SOFTWARE?


Rational Unified Process Arquitecto es un rol en un proyecto de desarrollo de software el cual es responsable de: SUN SL-425: El arquitecto: Visualiza el comportamiento del sistema. Crea los planos del sistema. Define la forma en la cual los elementos del sistema trabajan en conjunto. Responsable de integrar los requerimientos no-funcionales (NRFs) en el sistema.

Liderar el proceso de arquitectura. Producir los artefactos necesarios: Documento de descripcin de arquitectura Modelos y prototipos de arquitectura.

DILEMA ..
Discusin
+ Existe alguna diferencia entre arquitectura y diseo

de software?

ARQUITECTURA VS. DISEO


+ La arquitectura y el diseo difieren en tres reas:
Arquitectura Nivel de Abstraccin Entregables Alto nivel Planear subsistemas, interfaces con sistemas externos, servicios horizontales, frameworks, componentes reutilizables, prototipo arquitectnico Seleccin de tecnologas, Requerimientos no funcionales (QoS), Manejo de riesgos Diseo Bajo nivel. Enfoque especfico en detalles Diseo detallado componentes. Especificaciones de codificacin Requerimientos funcionales

reas de Enfoque

ARQUITECTURA VS. DISEO


La arquitectura envuelve un conjunto de decisiones estratgicas de diseo, lineamientos, reglas y patrones que restringen el diseo y la implementacin de un software.
Las decisiones de arquitectura causan un alto impacto en los proyectos de IT

Cdigo Implementacin Diseo

Arquitectura

ARQUITECTURA Y PROCESOS DE DESARROLLO


Principios Fundamentales de Procesos Modernos
+ Desarrollo iterativo e incremental. + Conducido por las calidades sistmicas. + Centrado en la arquitectura. + Dirigido por los casos de uso.

+ Basada en Modelos.
+ Mejores prcticas de diseo.

ARQUITECTURA Y PROCESOS DE DESARROLLO


Que es un Proceso de Arquitectura?
Rational Unified Process: Secuencia de actividades que conllevan a la produccin de artefactos arquitectnicos: Descripcin de arquitectura Prototipo arquitectnico

ARQUITECTURA Y PROCESOS DE DESARROLLO


Rational Unified Process:
En el proceso de definicin de arquitectura se producen: Arquitectura Inicial. + Arquitectura de Referencia. + Documento de Descripcin de arquitectura (SAD):
+

SunTone AM:
Adicionalmente se producen: Matriz Tecnolgica de Layers y Tiers + Template de Arquitectura
+

Subsistemas Componentes Arquitectura Runtime.

Guas para el proyecto y estndares de Diseo.

DEFINICIN DE ARQUITECTURA EN UP
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

DEFINICIN DE ARQUITECTURA EN UP
Fase de Elaboracin
+

Con respecto a la arquitectura, en la fase de elaboracin se establece: Arquitectura lnea base. Entregables: Documento de Definicin de Arquitectura. Prototipo evolutivo de arquitectura. Guas y Estndares de Diseo.

DEFINICIN DE ARQUITECTURA EN RUP


Modelo de Vista 4+1 Framework para Descripcin de Arquitectura, basado en vistas lgicas y fsicas UML y una vista funcional de casos de uso.

Logical View

Implementation View

Analysts/Designers Structure

End-user Functionality

Programmers Software management

Use-Case View Process View


System integrators Performance Scalability Throughput

Deployment View
System engineering System topology Delivery, installation communication

DEFINICIN DE ARQUITECTURA EN UP
Definir arquitectura candidata

Evaluar Req. No Funcionales (NFR)


Refinar y Seleccionar la Arquitectura Prototipar la Arquitectura Valorar Calidades Sistmicas Ajustar Arquitectura

EJEMPLO DE DEFINICIN DE ARQUITECTURA


eBank Trusted Hosting
Workshop de Arquitectura y Diseo de Aplicaciones J2EE

Entidad que presta el hosting de los servicios de banca personal en Internet para un grupo de bancos.

EJEMPLO DE DEFINICIN DE ARQUITECTURA


Dado un conjunto de requerimientos primarios

EJEMPLO DE DEFINICIN DE ARQUITECTURA


Identificacin de requerimientos funcionales y de calidad de servicio (QoS)

EJEMPLO DE DEFINICIN DE ARQUITECTURA


Identificacin de supuestos, riesgos y restricciones

EJEMPLO DE DEFINICIN DE ARQUITECTURA


Identificacin de Actores y Casos de Uso primarios

EJEMPLO DE DEFINICIN DE ARQUITECTURA


Arquitectura Lgica. Identificacin de tiers lgicos, subsistemas y paquetes

EJEMPLO DE DEFINICIN DE ARQUITECTURA


Diseo de Arquitectura Runtime. Diagrama de Despliegue.

EJEMPLO DE DEFINICIN DE ARQUITECTURA


Plataforma Tecnolgica. Definicin de la matriz tecnolgica de layers y tiers

DILEMA ..
Discusin
+ Los requerimientos no funcionales son fuentes comunes

de riesgo

CALIDADES SISTMICAS
+ El manejo inadecuado de los requerimientos no

funcionales, es una de las fuentes ms importante de riesgo en los proyectos:

Reglas de negocio de alta complejidad. Calidades sistmicas


Seguridad Rendimiento Escalabilidad Disponibilidad Extensibilidad

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

riesgo primario relacionado con la arquitectura.

CALIDADES SISTMICAS
Definicin
Propiedades que establecen la calidad de servicio (QoS) que un sistema expone. Son globales a toda la arquitectura Influencian el diseo.

+ Familias de

Calidades Sistmicas
+ Manifiestas
+ Operacionales + Desarrollo + Evolutivas

Son no-funcionales pero observables.

CALIDADES SISTMICAS - 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.

CALIDADES SISTMICAS OPERACIONALES


Observables cuando el sistema est operando en produccin. Throughput. Solicitudes atendidas por unidad de tiempo. Manageability. Cantidad inversa de esfuerzo para realizar labores administrativas.
+ Security. Prevencin de uso

indeseado, por abuso o uso inapropiado:


Identidad Autoridad Confidencialidad Auditabilidad Integridad

Serviceability. Esfuerzo para actualizar el sistema para reparar errores.

+ Testability. Esfuerzo

invertido para detectar y aislar errores.

CALIDADES SISTMICAS - EVOLUTIVAS


Relacionadas con el comportamiento del sistema cuando sufre algn cambio.
+ Escalability. La habilidad para

+ Reusability. Esfuerzo ganado

soportar la calidad de servicio requerida conforme la carga aumenta.


+ Flexibility. Esfuerzo ahorrado cuando

en la utilizacin de componentes existentes.


+ Extensibility. Esfuerzo ahorrado

se hace un cambio de configuracin.


+ Portability. Esfuerzo ahorrado

para adicionar nuevas funcionalidades.

cuando se migra a una infraestructura + Mantainability. Esfuerzo diferente. ahorrado para revisar y corregir errores.

CONSEJOS
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 definicin de arquitectura. Documente y comunique la arquitectura y lineamientos de diseo y logre aceptacin. No la imponga. Sea firme con las decisiones, valore impactos e identifique riesgos.

CONSEJOS
Valore alternativas de arquitectura y diseo tomando en cuenta las calidades sistmicas y relacin costo-beneficio.
Instancie los mecanismos arquitectnicos definidos incrementalmente. No los instancie en bloque. Reutilice frameworks, patrones de diseo y mejores prcticas. Sea racional en el uso de tecnologas.

Tenga siempre presente que requerimientos de seguridad, integracin 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.

También podría gustarte