Sei sulla pagina 1di 38

Arquitectura de Software

Diseo de Sistemas

Temas a Tratar
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 Lecciones Aprendidas en Consultora

Arquitectura de Software
Que es una arquitectura? No estamos seguros, pero la reconocemos cuando vemos una IEEE-1471-FAQ

Arquitectura de Software
IEEE 1471 El nivel conceptual ms alto de un sistema en su ambiente. 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.
+ 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.

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 ClienteServidor 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)
Portal de Servicios Integrados Cluster de Servidores de Aplicaciones

+ Requerimientos

Sistema Batch

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: Liderar el proceso de arquitectura. Producir los artefactos necesarios: Documento de descripcin de arquitectura Modelos y prototipos de arquitectura. 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.

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.
Cdigo Implementacin Diseo

Las decisiones de arquitectura causan un alto impacto en los proyectos de IT

Arquitectura

Discusin
+ Cuales son los principios fundamentales en los

mtodos de desarrollo de software modernos?

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 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

Definicin de Arquitectura en RUP


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 RUP


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 Curso WS50I - Lucasian Labs Ltda. 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

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. Son no-funcionales pero observables.

+ Familias de

Calidades Sistmicas
+ Manifiestas + Operacionales + Desarrollo + Evolutivas

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.
+ Security. Prevencin de uso Throughput. Solicitudes indeseado, por abuso o uso atendidas por unidad de tiempo. inapropiado:

Manageability. Cantidad inversa de esfuerzo para realizar labores administrativas.

Identidad Autoridad Confidencialidad Auditabilidad Integridad

Serviceability. Esfuerzo para actualizar el sistema para reparar + Testability. Esfuerzo invertido para detectar y errores. 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.

Lecciones Aprendidas
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.

Lecciones Aprendidas
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.

Potrebbero piacerti anche