Logo Studenta

Desarrollo_de_Arquitectura_ de_ software

¡Este material tiene más páginas!

Vista previa del material en texto

Arquitectura de Software
Juan Bernardo Quintero
Término usado para referirse a los componentes de software que
actúan como intermediarios entre otros componentes de software,
generalmente, en el marco de la interacción cliente/servidor.
Ejemplos típicos son los programas desarrollados para ejecutar las
consultas que diferentes usuarios de la red hacen a una base de
datos central que está ubicada en el servidor.
Middleware
Middleware
Proceso Cliente
Servicios del Sistema
Hardware
Proceso Servidor
Servicios del Sistema
Hardware
Petición
Respuesta
Servidor (Back-end)
Cliente (Front-end)
Usuario
Cliente/Servidor a dos capas
Middleware
Proceso Cliente
Servicios del Sistema
Hardware
Proceso Servidor
Servicios del Sistema
Hardware
Servidor (Back-end)
Cliente (Front-end)
Usuario
Cliente/Servidor a 3 o N capas
Petición
Respuesta
Middleware
A distintos sistemas con diferentes arquitecturas les ha
denominado Cliente/Servidor. Sin embargo se clasifican
basándose en su funcionalidad:
Servidores de Ficheros
Servidores de Bases de Datos
Servidores de Transacciones
Servidores de Objetos
Servidores de Web
...
Clasificación de servidores:
Middleware
Extraído de: R. Orfali, D.Harkey, J. Edwards. Cliente/Servidor y objetos: Guía de Supervivencia 3ra Edición 
McGraw-Hill Interamericana México, D.F. 2002.
Se distinguen 2 niveles:
Middleware de Bajo Nivel (Servicios Tecnológico)
Se encargan del transito de servicios básicos hacia el
cliente.
Middleware de Alto Nivel (Servicios de Aplicación)
Se encargan del manejo de servicios de infraestructura y de
aplicación.
Propuesta de Clasificación de Middleware
Clasificación de Middleware
Clasificación de Middleware
Middleware de Base
Middleware de Comunicación
Middleware de Base de Datos
Middleware de Aplicación
Middleware de Bajo Nivel
Clasificación de Middleware
Middleware de base:
Estándares y servicios asociados, que sirven de soporte
para la construcción del resto del middleware.
 CORBA
 COM/COM+/DCOM
 EJB/J2EE
 .NET
 …
Clasificación de Middleware
Middleware de Bajo Nivel
Middleware de comunicaciones:
Proporciona el medio de comunicación para que las
aplicaciones puedan conversar entre sí.
 HTTP
 RMI-IIOP
 SOAP
 RPC
 …
Clasificación de Middleware
Middleware de Bajo Nivel
Middleware de base de datos:
Enmascara las complejidades de acceso a la base de datos,
escondiendo los detalles de implementación de cada uno.
 ODBC
 JDBC
 OCI
 …
Clasificación de Middleware
Middleware de Bajo Nivel
Middleware de aplicación:
Permite el arranque, extensión, e integración de otras
aplicaciones.
 CGI
 Servlets/JSP
 PHP
 ASP
 ISAPI/NSAPI
 …
Clasificación de Middleware
Middleware de Bajo Nivel
Servidor Web
Servidor de Componentes
Servidor de Transacciones
Servidor de Aplicaciones
Middleware de Alto Nivel
Clasificación de Middleware
Servidores Web:
Servicios de publicación de contenidos
 Apache
 Netscape Server
 IIS
 OmmiHTTPD
 Sun Server
 Sambar Server
 Xitami
 iPlanet Server
 …
Middleware de Alto Nivel
Clasificación de Middleware
Servidores de transacciones:
Garantiza transacciones ACID (Atomicidad, Consistencia,
Aislamiento y Durabilidad) en el procesamiento distribuido.
 BEA’s Tuxedo
 IBM – CICS
 Transarc’s Encima
 MTS
 …
Clasificación de Middleware
Middleware de Alto Nivel
Servidores de componentes:
Contenedores de objetos que prestas servicios a través de
una interface definida.
 Tomcat
 Microsoft
 Servidor de 
componentes COM
 .NET Remoting
 …
Clasificación de Middleware
Middleware de Alto Nivel
Servidores de aplicaciones:
Servicios de infraestructura y aplicación. Responden a una
arquitectura lógica definida, por lo general J2EE.
 OAS (IAS)
 Websphere
 Jboss
 BEA-Weblogic
 Jonas
 Iplanet…
Clasificación de Middleware
Middleware de Alto Nivel
Los servicios de infraestructura típicos incluyen:
 Messaging (Mensajería y Notificaciones).
 Pooling.
 Caching.
 Clustering.
 Naming.
 Logging.
 etc.
¿Cuáles son los servicios de infraestructura?
Servicios que debe permiten:
 Gestión de transacciones.
 Modelo de interoperabilidad para componentes.
 Intercambio de datos.
 Colas de mensajes.
 Servidor HTTP para clientes Web y clientes móviles.
 Almacenamiento temporal de base de datos y web.
 Herramientas de administración.
Servicios de un servidor de aplicaciones
Conjunto de programas y tecnologías que permiten:
 Creación de páginas Web dinámicas
 (ASP en Microsoft o JSP en Java)
 Componentes que pueden encapsular la lógica del negocio
 (COM en Microsoft o EJB en Java)
 Soporte de transacciones
 Acceso a la aplicación desde clientes HTTP
 Soporte para invocar métodos remotos
 Manejo de seguridad
 Uso de SSL y conexión con Bases de Datos
 (ODBC en Microsoft o JDBC en Java)
¿Qué es un servidor de aplicaciones?
Todos estos servicios simplificarían el desarrollo de software
que, en configuraciones distribuidas, se sitúa en la capa
intermedia, entre los clientes o usuarios finales y el servidor
de datos. Es lo que se conoce corrientemente como
Middleware.
¿Qué es un servidor de aplicaciones?
La mayoría de servidores de aplicaciones te permiten hacer
algunas de las siguientes tareas.
Presentar Contenido Dinámico
Administrar Tu Sitio Web
Construir un Sistema de Manejo de Contenidos
Seguridad y Manejo Correcto
Brindar Servicios de Red
Integración de diversos sistemas
Proveen Escalabilidad
Características
Matriz de Servidores de Aplicación
http://www.theserverside.com/matrix
http://www.theserverside.com/matrix
A continuación se analizan las más representativas de esas 
perspectivas:
Aplicación Web (Web Application)
Aplicaciones con Clientes Ricos (Rich Client Application)
Aplicaciones Enriquecidas en Internet (Rich Internet Application)
Aplicaciones de Servicios (Service Application)
Aplicaciones Móviles (Mobile Application)
Perspectivas de la Arquitectura de Referencia
 Definición: 
Su núcleo reside en lógica del lado del servidor, que se suele estructurar en varias
capas; por ejemplo la arquitectura a tres capas: presentación, negocio y datos.
Generalmente accede una base de datos remota y consume servicios expuestos
por otras aplicaciones.
 Beneficios: 
• Amplio alcance UI basada en estándares para múltiples plataformas.
• Facilidad de despliegue y gestión de cambios.
 Consideraciones: 
• Dependencia de conectividad continua en la red.
• Dificultad para proveer una UI enriquecida.
Web Application
Basado en: http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
Web Application
Extraído de: http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
 Definición:
Puede proporcionar una experiencia de usuario altamente sensible, interactiva, y
rica para las aplicaciones que deben funcionar en escenarios stand-alone,
conectados, a veces conectado y desconectado. Una aplicación de cliente
enriquecido normalmente se estructurará como una aplicación de varias capas:
experiencia del usuario (la presentación), negocios y de datos.
 Beneficios:
• Potencian los recursos de los clientes.
• Provee mejor tiempo de respuesta y experiencia de usuario mejorada.
• Altamente dinámica.
 Consideraciones:
• Complejidad de despliegue.
• Desarrollos especifico de para la plataforma.
• El control de versiones puede ser complejo.
Basado en: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Rich Client Application
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspxRich Client Application
Extraído de: http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
 Definición:
Las aplicaciones de este tipo se pueden desarrollar para múltiples plataformas y
múltiples navegadores, multimedia o mostrar contenido gráfico. Las aplicaciones
dinámicas de Internet se ejecutan en un navegador lo que restringe el acceso a
algunas de las características del cliente.
 Beneficios:
• Proveen las mismas características en la IU que los clientes enriquecidos.
• Soporte para la visualización de contenidos enriquecidos, streaming y gráfica.
• Actualización y control de versiones simple.
• Soporte multi-plataforma y multi-navegador.
 Consideraciones:
• Tiempo de carga mas lago comparado con las aplicaciones web.
• Mayor uso de recursos del cliente comparado con las aplicaciones web.
• Requiere compatibilidad de los motores de script en los clientes.
Basado en: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Rich Internet Application
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
Rich Internet Application
Extraído de: http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
 Definición:
Expone en servicios compartidos, las funcionalidades del negocio y permiten a los
clientes acceder a ellas desde un sistema local o remoto. Las operaciones de
servicio se invocan usando mensajes, basados en esquemas XML, pasa sobre un
canal de transporte. El objetivo de este tipo de aplicación es lograr acoplamiento
flexible entre el cliente y el servidor.
 Beneficios:
• Provee bajo acoplamiento.
• Independencia de los consumidores.
• Soporta interoperabilidad.
 Consideraciones:
• No hay soporte de UI.
• Los clientes dependen de la conectividad de la red.
Basado en: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Service Application
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
Service Application
Extraído de: http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
 Definición:
Pueden ser desarrolladas como cliente ligero o aplicaciones de cliente
enriquecido. Las aplicaciones de cliente móvil enriquecido pueden apoyar
escenarios desconectados o que se conectan ocasionalmente. Las aplicaciones de
cliente ligero o web soportan solo escenarios conectados. Los recursos de los
dispositivos puede llegar a ser una restricción al diseñar aplicaciones móviles.
 Beneficios:
• Soporta dispositivos portátiles (hand-held).
• Provee disponibilidad y facilidad de uso para usuarios por fuera de la oficina.
• Soporta escenarios desconectados y semiconectados.
 Consideraciones:
• Limitantes de entrada y navegación.
• Área de Pantalla limitada.
Basado en: http://msdn.microsoft.com/en-us/library/ee658104.aspx
Mobile Application
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
Mobile Application
Extraído de: http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
http://msdn.microsoft.com/en-us/library/ee658104.aspx
Según Microsoft
http://msdn.microsoft.com/en-us/library/ee658084.aspx
Ejemplo actividad 3: Crear visión de la arquitectura
Ejemplo actividad 4: Identificar asuntos claves (Seguridad)
Proceso de Desarrollo Arquitectónico
http://msdn.microsoft.com/en-us/library/ee658084.aspx
http://msdn.microsoft.com/en-us/library/ee658084.aspx
http://msdn.microsoft.com/en-us/library/ee658084.aspx
Según SUN (Suntone) – IBM (RUP)
Tomado de: Suntone Architecture Methodology: a 3-dimensional approach to architectural design
Proceso de Desarrollo Arquitectónico
Según el SEI (Software Engineering Institute)
Tomado de: Bass, Len and Kazman, Rick. (1999). Architecture-Based Development. CMU/SEI-99-TR-007.
Proceso de Desarrollo Arquitectónico
 QAW: Quality Attribute Workshop.
 ATAM: Architecture Tradeoff Analysis Method.
 ADD: Attribute-Driven Design.
 ARID: Active Reviews for Intermediate Designs.
 CBAM: Cost-Benefit Analysis Method.
Métodos de Apoyo Arquitectónico (SEI)
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
Métodos de Apoyo Arquitectónico (SEI)
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
http://www.sei.cmu.edu/library/abstracts/news-at-sei/architect4q03.cfm?DCSext.abstractsource=RelatedLinks
En el Análisis de la Arquitectura:
Drivers Arquitectónicos.
Principios Arquitectónicos.
En el Diseño de la Arquitectura:
Patrones Arquitectónicos.
Estilos Arquitectónicos.
Factores Claves del Desarrollo Arquitectónico
El proceso de obtención de requisitos se lleva a cabo por un
equipo de recogida de requisitos, pero es trabajo del arquitecto
evaluar el valor empresarial de los requisitos, para identificar los
requisitos que son los más críticos para el éxito de un sistema.
Estos requisitos críticos han sido etiquetados como los Drivers
Arquitectónicos (Conductores de la Arquitectura), ya que definen
la forma del diseño del sistema.
¿Que son los Drivers Arquitectónicos?
http://www.softwarearchitectures.com/go/Discipline/Introduction/ArchitectureinSDLC/tabid/60/Default.aspx
http://www.softwarearchitectures.com/go/Discipline/Introduction/ArchitectureinSDLC/tabid/60/Default.aspx
Una estructuración correcta del sistema permitirá satisfacer la
mayoría de estos drivers.
Los Drivers Arquitectónicos incluyen principalmente:
Atributos de calidad.
Un subconjunto de los casos de uso que se consideran como primarios.
Los casos de uso primarios son aquellos de mayor importancia o de
mayor complejidad para el negocio.
Restricciones.
El hecho de que los Drivers sean un subconjunto de todos los
requerimientos del sistema puede verse como una ventaja, pues
es posible comenzar a realizar el diseño de la arquitectura antes
de haber terminado de documentar todos los requerimientos.
Basado en: Requerimientos y Arquitectura, en http://www.sg.com.mx/content/view/1049
¿Que incluyen los Drivers Arquitectónicos?
http://www.sg.com.mx/content/view/1049
Los Driver de Negocio son los objetivos de negocio que están
motivando el esfuerzo de desarrollo y por lo tanto lo que serán la
fuerza motriz principal de arquitectura (por ejemplo: altadisponibilidad, tiempo de salida al mercado o seguridad alta).
Típicamente describen:
Sus requisitos funcionales más importantes.
Sus limitaciones técnicas, administrativas, económicas o políticas.
Sus objetivos de negocio y el contexto.
Los stakeholders principales.
Los Drivers Arquitectónicos (los principales objetivos de los atributo de
calidad que dan forma a la arquitectura).
Basado en: ATAM (Architecture Tradeoff Analysis Method)
¿Que son los Drivers de Negocio?
El proceso de diferenciar entre los Drivers Arquitectónicos y otros
requisitos no es sencillo, ya que requiere una comprensión
completa de los objetivos de solución.
Un árbol de utilidad, que forma parte ATAM (Architecture Tradeoff
Analysis Method), ayuda con la creación de los Drivers
Arquitectónicos a partir de los Drivers del Negocio.
Según ATAM, un árbol de utilidad proporciona un mecanismo
descendente para que de forma directa y eficaz se trasladen los
driver de negocio de un sistema en escenarios concretos de los
atributo de calidad.
http://www.softwarearchitectures.com/go/Discipline/Introduction/ArchitectureinSDLC/tabid/60/Default.aspx
¿Cómo definir los Drivers?
http://www.softwarearchitectures.com/go/Discipline/Introduction/ArchitectureinSDLC/tabid/60/Default.aspx
Extraido de: ATAM (Architecture Tradeoff Analysis Method)
Ejemplo de un Árbol de Utilidad
1. Por ejemplo, la decisión de utilizar una interfaz de usuario basada
en AJAX dependerá de la necesidad de apoyar las conexiones de
bajo ancho de banda (el desarrollador de aplicaciones de
negocios, está menos interesado en la riqueza de AJAX y más en
el hecho de como los datos se transportan por la red).
2. Por ejemplo, un caso de uso primario podría ser el realizar
consultas del catálogo de productos. El criterio para elegir este
caso de uso como primario es su importancia relativa a la
satisfacción del objetivo de negocio y el hecho de que la consulta
de catálogos involucra realizar conexiones hacia los sistemas de
los fabricantes.
3. Una restricción para un sistema específico, podría ser que se
usen librerías y herramientas open source.
2 y 3 basados en: Requerimientos y Arquitectura, en http://www.sg.com.mx/content/view/1049
Ejemplo de decisiones basadas en Drivers
http://www.sg.com.mx/content/view/1049
Los principios son normas y directrices generales, destinados a
ser duradera y rara vez modificado, que informan y apoyan la
forma en que una organización se propone a cumplir su misión.
A su vez, los principios pueden ser sólo un elemento en un
conjunto estructurado de ideas que definen y orientan a la
organización, a partir de valores a través de acciones y
resultados.
¿Que son los Principios Arquitectónicos?
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
 Principios Empresariales:
Ofrecen una base para la toma de decisiones en toda una empresa, e informar a
cómo la organización se propone a cumplir su misión.
 Principios de TI:
Proporcionar orientación sobre el uso y despliegue de todos los recursos de TI y
sus activos en toda la empresa. Se desarrollan con el fin de hacer el entorno de la
información lo más productiva y rentable como sea posible.
 Principios Arquitectónicos:
Son un subconjunto de los principios de TI que corresponden a trabajos de
arquitectura. Reflejan un nivel de consenso en toda la empresa, y encarnan el
espíritu y el pensamiento de la arquitectura empresarial. Se dividen en:
• Principios que rigen el proceso de la arquitectura.
• Principios que rigen la aplicación de la arquitectura.
Tipo de Principios Arquitectónicos
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
 Ejemplos de Principios Empresariales:
• Madurez tecnológica.
• Soluciones a la medida vs genéricas.
• Grado de autonomía del proveedor.
 Ejemplos de Principios de TI:
• Un solo proveedor o varios.
• Soluciones Open vs Closed.
• Políticas de outsourcing.
 Ejemplos de Principios Arquitectónicos:
• Principios que rigen el proceso de la arquitectura:
 Todos los servicios y soluciones deben proveer una capa de seguridad.
• Principios que rigen la aplicación de la arquitectura:
 Autorización de uso de los servicios y aplicaciones.
Ejemplos de Principios Arquitectónicos
Se desarrollan por el arquitecto principal, junto con el CIO, Junta
de Arquitectura, y los Stakeholders claves del negocio.
Deben estar alineados con los principios de IT y de negocio.
Deben estar influenciados por:
Planes y misión organizacional.
Iniciativas estratégicas organizacionales.
Restricciones externas.
Sistemas y tecnologías actuales.
Tendencias tecnológicas.
Consideraciones para definir los Principios
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
Nombre:
Debe representa la esencia de la norma, y ser fácil de recordar. plataformas
específicas de la tecnología no debe ser mencionado en el nombre o la
declaración.
Declaración:
Debe comunicar de manera sucinta y sin ambigüedades lo fundamental de la
norma. En su mayor parte, las declaraciones de principios para la gestión de la
información son similares de una organización a otra.
Justificación:
Se enfoca en mostrar los beneficios al negocio usando terminología del negocio.
Describe la relación con otros principios y situaciones donde el principio tiene
mas prevalencia sobre otros.
Implicaciones:
Recursos, costos, y las actividades o tareas
Plantilla para definir los Principios
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
Nombre: Cambios basados en requisitos
Declaración: Se realizan cambios a aplicaciones y tecnología en respuesta a necesidades del negocio.
Justificación: Este principio alentará un ambiente en el cual los cambios en IT se realizan con base a las
necesidades del negocio y no permite que el negocio tenga que cambiar en respuesta a los cambios
tecnológicos.
Implicaciones:
• Cambios en implementación seguirán un examen detallado de los cambios propuestos usando la
arquitectura empresarial.
• No se establece una mejora tecnológica a menos que exista una necesidad de negocio documentada.
• Se desarrollará e implementará un proceso de gestión de cambios acorde a este principio.
Nombre: Facilidad de Uso
Declaración: Las aplicaciones son fáciles de usar. La tecnologías sobre las cuales están soportadas son
transparentes para el usuario, de esta manera ellos se concentran en su trabajo.
Justificación: Entre mas tenga un usuario que entender la tecnología con la que trabaja, menos
productivo será. La facilidad de uso es un incentivo positivo para el uso de aplicaciones. Alienta a los
usuarios a trabajar con la información integrada en vez de desarrollar sistemas por fuera del entorno de TI
de la organización. El entrenamiento se mantiene al mínimo y el riesgo de usar el sistema indebidamente
es bajo.
Implicaciones:
• Tener un “look and feel” común y soportar requisitos ergonómicos.
• Los lineamientos de UI no deben restringir los diferentes supuestos sobre ubicación, lenguaje o
capacidades físicas.
Ejemplo de definición de Principios
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.htmlhttp://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
http://www.opengroup.org/architecture/togaf8-doc/arch/chap29.html
Un patrón es una solución probada que se puede aplicar con éxito a un
determinado tipo de problemas que aparece con frecuencia en un
contexto específico.
Esqueleto de aplicación básica que el diseñador ha de adaptar a sus
necesidades.
Un patrón de diseño en software es una colección de objetos que
incluye:
Relaciones entre estos objetos
Desarrollados para resolver un problema concreto
Se ha comprobado que funcionan bien (han sido testados).
Definición de Patrón
Catalogo Nombre Uso Referencia
POSA Pattern Oriented Software 
Architecture
Definición de la 
arquitectura
Buschmann, 1996
PEEA Pattern of Enterprise 
Application Architecture
Definición de la 
arquitectura
Fowler, 2003
GRASP General Responsability 
Assignment Software Patterns
Paso del análisis
al diseño
Larman, 2004
GoF Design Patterns (Gang of 
Four)
Diseño Gamma, 1995
J2EE J2EE Patterns 2° Edition. Diseño Alur, 2003
Idioms Patrones de Código Codificación Buschmann, 1996
Catálogos de Patrones
Propósito Patrones
Del fango a la estructura • Layers (Capas)
• Pipes and Filters (Tubería y Filtros)
• Blackboard (Pizarra)
Sistemas distribuidos • Broker (por ejemplo: CORBA, DCOM, Web 
Services, WWW)
Sistemas interactivos • Model-View-Controller
• Presentation-Abstraction-Control
Sistemas adaptables • Reflection: meta-nivel que hace al software 
consciente de sí mismo.
• Microkernel: núcleo de funcionalidad mínima.
POSA (Pattern-Oriented Software Architecture )
Patrones POSA: 1. Layers
“Layers ayuda a estructurar las aplicaciones que se pueden descomponer en grupos
de subtareas en la que cada grupo de subtareas se encuentra en un nivel particular
de abstracción.”
[Buschmann, et al. 1996]
http://www.vico.org/pages/PatronsDisseny/
Diagrama de Clases
Esquemas de Funcionamiento
http://www.vico.org/pages/PatronsDisseny/
Patrones POSA: 2. Pipes and Filters
“Pipes and Filters proporciona una estructura para sistemas que procesan un flujo de
datos. Cada paso del proceso se encapsula en un componente de filtro. Los datos se
pasan a través de tubos entre filtros adyacentes. Recombinación de filtros permite
crear familias de sistemas relacionados.”
[Buschmann, et al. 1996]
http://www.vico.org/pages/PatronsDisseny/
Diagrama de Clases
Esquemas de Funcionamiento
http://www.vico.org/pages/PatronsDisseny/
“Blackboard es útil para los problemas en los que las estrategias de solución
determinista no se conocen. En la Pizarra varios subsistemas especializados reúnen
sus conocimientos para construir una posibilidad de solución parcial o aproximada.”
[Buschmann, et al. 1996]
Patrones POSA: 3. Blackboard
http://www.vico.org/pages/PatronsDisseny/
Diagrama de Clases
Esquemas de Funcionamiento
http://www.vico.org/pages/PatronsDisseny/
Patrones POSA: 4. Broker
“Broker puede ser usado para estructurar sistemas de software distribuidos con
componentes desacoplados que interactúan por invocaciones de servicios
remotos. Un componente corredor es responsable de coordinar la comunicación,
tales como solicitudes de expedición, así como para la transmisión de resultados y
excepciones.”
[Buschmann, et al. 1996]
http://www.vico.org/pages/PatronsDisseny/
Diagrama de Clases
Esquemas de Funcionamiento
http://www.vico.org/pages/PatronsDisseny/
Patrones POSA: 5. MVC (Model-View-Controller )
“MVC divide una aplicación interactiva en tres componentes. El modelo contiene la
funcionalidad básica y los datos. Las vistas muestran la información al usuario. Los
controladores manejan las entradas del usuario. Las vista y los controladores en
conjunto constituyen la interfaz de usuario. Un mecanismo de propagación de
cambios puede garantizar la coherencia entre la interfaz de usuario y el modelo.”
[Buschmann, et al. 1996]
http://www.vico.org/pages/PatronsDisseny/
Diagrama de Clases
Esquemas de Funcionamiento
http://www.vico.org/pages/PatronsDisseny/
Patrones POSA: 6. PAC (Presentation-Abstraction-Control)
“PAC define una estructura para los sistemas interactivos en forma de una jerarquía
de agentes cooperantes. Cada agente es responsable de un aspecto específico de
la funcionalidad de las aplicaciones y consta de presentación, abstracción y
control. Esta subdivisión separa los aspectos de la interacción humano-computadora
del agente de su núcleo funcional y su comunicación con otros agentes.”
[Buschmann, et al. 1996]
http://www.vico.org/pages/PatronsDisseny/
D
ia
g
ra
m
a
 d
e
 C
la
s
e
s
Esquemas de Funcionamiento
http://www.vico.org/pages/PatronsDisseny/
Patrones POSA: 7. Reflection
“Reflection provee un mecanismo para cambiar la estructura y el comportamiento de
los sistemas de software de forma dinámica. Es compatible con la modificación de
los aspectos fundamentales, tales como las estructuras y mecanismos de tipo de
llamada a función. En este modelo, una aplicación se divide en dos partes: Un nivel
meta proporciona información sobre las propiedades del sistema seleccionado y
hace que el software auto-conocido. Un Nivel de base incluye la lógica de la
aplicación. Su aplicación se basa en el nivel meta. Los cambios en la información
guardada en el nivel meta influyen en el comportamiento posterior de nivel base.”
[Buschmann, et al. 1996]
http://www.vico.org/pages/PatronsDisseny/
Diagrama de Clases Ejemplo de Funcionamiento (Patrón ActiveRecord)
http://www.vico.org/pages/PatronsDisseny/
Patrones POSA: 8. Microkernel
“Microkernel se aplica a los sistemas de software que debe ser capaz de adaptarse a
los cambio en los requisitos del sistema. Separa un núcleo funcional mínimo de la
funcionalidad extendida y partes específicas del cliente. El micronúcleo también sirve
como un socket para conectar estas extensiones y coordinar su colaboración.”
[Buschmann, et al. 1996]
http://msdn.microsoft.com/en-us/library/ee658117.aspx
Diagrama de Clases
Esquema de Funcionamiento con un Bus
Esquema de Funcionamiento Básico
http://msdn.microsoft.com/en-us/library/ee658117.aspx
http://msdn.microsoft.com/en-us/library/ee658117.aspx
http://msdn.microsoft.com/en-us/library/ee658117.aspx
Desarrollo de software Arquitectura Gestión
 The Blob
 Lava Flow
 Functional Decomposition
 Poltergeists
 Golden Hammer
 Spaghetti Code
 Cut and Paste Programming
Mini Anti-Patrones
 Continuous Obsolescence
 Ambiguous Viewpoint
 Boat Anchor
 Dead End
 Input Kludge
 Walking through a Minefield
 Mushroom Management
 Stovepipe Enterprise
 Vendor Lock-in
 Architecture by Implication
 Design by Committee
 Reinvent the Wheel
Mini Anti-Patrones
 Autogenerated Stovepipe
 Jumble
 Cover your Assets
 Wolf Ticket
 Warm Bodies
 Swiss Army Knife
 The Grand Old Duke of York
 Analysis Paralysis
 Death by Planning
 Corncob
 Irrational Management
 Project Missmanagement
Mini Anti-Patrones
 Blowhard Jamboree
 Viewgraph Engineering
 Fear of Success
 Intellectual Violence
 Smoke and Mirrors
 Throw it over the wall
 Fire Drill
 The Feud
• E-Mail is Dangerous
Anti-Patrones
http://msdn.microsoft.com/es-es/library/bb972251.aspx
http://msdn.microsoft.com/es-es/library/bb972251.aspx
http://msdn.microsoft.com/es-es/library/bb972251.aspx
http://msdn.microsoft.com/es-es/library/bb972251.aspx
“Una familia de sistemas en términos de un patrón de organización
estructural. Más específicamente, un estilo arquitectónico determina el
vocabulario de los componentes y conectores que se pueden utilizar en
instancias de ese estilo, junto con un conjunto de restricciones sobre cómo
pueden ser combinados. Estos pueden incluir restricciones topológicas en
las descripciones arquitectónicas (por ejemplo, sin ciclos). Restricciones que
tienen que ver con la semántica de la ejecución, también podría ser parte de
la definición de estilo.”
[Garlan y Shaw, 1994]
¿Que es un Estilo Arquitectónico?
CategoríaEstilos Arquitectónicos
Comunicación
 Service-Oriented Architecture (SOA)
 Message Bus
Implementación
 Client/Server
 3-Tier / N-Tier
Dominio  Domain Driven Design
Estructura
 Object-Oriented
 Component-Based
 Layered
Tipos de Estilos Arquitectónicos
http://msdn.microsoft.com/en-us/library/ee658117.aspx
http://msdn.microsoft.com/en-us/library/ee658117.aspx
http://msdn.microsoft.com/en-us/library/ee658117.aspx
http://msdn.microsoft.com/en-us/library/ee658117.aspx
Estilo Descripción
SOA
(Comunicación)
Se refiere a las aplicaciones que exponen y consumen funcionalidad como un 
servicio a través de contratos y mensajes.
Message Bus
(Comunicación)
Prescribe el uso de un sistema de software que puede recibir y enviar mensajes 
usando uno o más canales de comunicación, de modo que las aplicaciones puedan 
interactuar sin necesidad de conocer los detalles específicos de cada uno.
Client/Server
(Implementación)
Segrega el sistema en dos aplicaciones, donde el cliente realiza peticiones al 
servidor. En muchos casos, el servidor es una base de datos con la lógica de la 
aplicación representada en procedimientos almacenados.
3-Tiers / N-Tiers
(Implementación)
Segrega funcionalidad en segmentos separados en gran parte de la misma manera 
como el estilo de capa, pero con cada segmento que es un nivel situado en un 
equipo separado físicamente.
Domain Driven
Design
(Dominio)
Un estilo orientado a objetos que se centra en el modelado del dominio de negocio y 
en la definición de objetos de negocio basado en las entidades en el ámbito 
empresarial
Object-Oriented
(Estructura)
Basado en la división de responsabilidades para una aplicación o sistema en cada 
objetos reutilizables y autosuficientes, cada uno con los datos y el comportamiento 
de los relevantes para el objeto.
Component-Based
(Estructura)
Se descompone en el diseño de aplicaciones en funcionalidad reutilizable o 
componentes lógicos que expongan interfaces de comunicación bien definida.
Layered
(Estructura)
Partición de los asuntos de la aplicación en grupos apilados (capas).
Descripción de los Estilos Arquitectónicos
http://msdn.microsoft.com/en-us/library/ee658117.aspx
http://msdn.microsoft.com/en-us/library/ee658117.aspx
http://msdn.microsoft.com/en-us/library/ee658117.aspx
http://msdn.microsoft.com/en-us/library/ee658117.aspx
Un vehículo para comunicar el diseño del sistema a los
stakeholders en cada etapa de su evolución.
Una base para la realización del análisis por adelantado, para
validar (o descubrir las deficiencias en) las decisiones de diseño
arquitectónico y perfeccionar o modificar las decisiones cuando
sea necesario.
El primer artefacto utilizado para lograr la comprensión del
sistema.
Documento de Arquitectura (Definiciones)
Basado en: Bachmann, Felix et al.: Software Architecture Documentation in Practice: Documenting Architectural 
Layers. CMU/SEI-2000-SR-004. 2000.
Documento de Arquitectura (Objetivos)
Registrar las decisiones de los arquitectos. Para cumplir con este
objetivo, la documentación debe ser completa y sin ambigüedades.
Comunicar la arquitectura. Para cada una los stakeholders,
considere:
¿Que necesitan saber?
¿Cual es la mejor forma de transmitirle lo que necesitan saber?
Un documento único y exhaustivo de la especificación de
arquitectura, probablemente va a convertirse en un costoso
artefacto y no servirá al objetivo de la comunicación.
Basado en: Bachmann, Felix et al.: Software Architecture Documentation in Practice: Documenting Architectural 
Layers. CMU/SEI-2000-SR-004. 2000.
La documentación debe ser escrita desde el punto de vista del
lector, no el escritor.
Evite la repetición.
Evite la ambigüedad.
Utilice una esquema de organización estándar.
Registre las justificaciones.
Manténgala actualizada.
Revisión de la documentación para el ajuste de su propósito.
Documento de Arquitectura (Características)
Basado en: Bachmann, Felix et al.: Software Architecture Documentation in Practice: Documenting Architectural 
Layers. CMU/SEI-2000-SR-004. 2000.
Stakeholder Uso del Documento de Arquitectura
Diseñadores de bajo nivel e 
implementadores
"Órdenes de marcha“, restricciones inviolables (más
libertades explotables) en actividades de desarrollo.
Probadores e integradores Para especificar el correcto comportamiento de caja
negra de las piezas que se deben ajustar.
Gerentes técnicos Para armar los equipos de desarrollo acorde a las
tareas identificadas.
Gerentes de proyecto Base para una dividir el trabajo, planear, asignar
recursos al proyecto y seguir progresos de los equipos.
Diseñadores de sistemas con 
los que se debe interoperar
Para definir el conjunto de operaciones que son
requeridas y provistas.
Arquitectos y diseñadores por 
parte del cliente
Para negociar y hacer acuerdos entre requisitos que
compiten.
Soporte y mantenimiento Para revelar áreas con cambios a futuro.
Los nuevos miembros del 
proyecto
Primer artefacto para familiarizarse con el diseño de un
sistema.
Documento de Arquitectura (Stakeholders)
Basado en: Bachmann, Felix et al.: Software Architecture Documentation in Practice: Documenting Architectural 
Layers. CMU/SEI-2000-SR-004. 2000.
Vistas del Documento de Arquitectura
Tomado de: Carlos Billy Reynoso. Introducción a la Arquitectura de Software. Universidad de Buenos Aires 
http://www.willydev.net/descargas/prev/IntroArq.pdf
Vistas en los marcos de referencia
Las Vistas Arquitectónicas son representaciones de la arquitectura general que son
significativos para uno o más stakeholders del sistema. El arquitecto elige y
desarrolla un conjunto de vista que permita a la arquitectura ser comunicada y
entendida por todos los stakeholders , y les posibilite verificar que el sistema se
ocupará de sus preocupaciones.
[TOGAF]
http://www.willydev.net/descargas/prev/IntroArq.pdf
Vistas vs Niveles Arquitectónicos
http://www.bredemeyer.com/architecture_documentation_action_guides.htm
http://www.bredemeyer.com/architecture_documentation_action_guides.htm
CRC Cards (Class Responsibility Collaboration Cards)
CRC-R Cards (Component Responsibilities Collaborators - Rationale Cards)
Especificación de Clases vs Componentes
Nombre de la Clase: 
Responsabilidades: Colaboraciones:
Nombre del Componente Darle un nombre fácil de recordar
Responsabilidades Lista de responsabilidades asignadas
Colaboradores Lista de otros componentes externos de los que depende
para los servicios (delega servicios)
Justificación Justificación para la asignación de responsabilidades a este
componente. Proporcionar trazabilidad a los requerimientos
funcionales y las cualidades o meta-arquitectura.
Cuestiones y Notas Lista de los supuestos, limitaciones, desconocimientos, etc.
Basado en: http://www.bredemeyer.com/pdf_files/CRCR_Template.PDF
http://www.bredemeyer.com/pdf_files/CRCR_Template.PDF
 1. Introducción
 2. Representación Arquitectónica
 3. Objetivos Arquitectónicos y Restricciones
 4. Vista de Caso de Uso Primarios
4.1. Realización de Caso de Uso Primarios
 5. Vista Lógica
5.1. Perspectiva General
5.2. Paquetes de Diseño Importantes Arquitectónicamente
 6. Vista de Procesos
 7. Vista de Despliegue
 8. Vista de Implementación
8.1. Perspectiva General
8.2. Capas
 9. Vista de Datos (opcional)
 10. Tamaño y Rendimiento
 11. Calidad
Contenido del Documento de Arquitectura
Barbacci, M., Klein, M., Longstaff, T., & Weinstock, C. (1995). Quality
Attributes. Carnegie Mellon University. Technical Report.
http://www.sei.cmu.edu/publications/documents/95.reports/95.tr.021.html
Kazman, R., Clements, P., Klein, M. (2001). Evaluating Software
Architectures. Methods and case studies. Addison Wesley.
Booch, G., Rumbaugh, J., & Jacobson, I. (1999). The UML Modeling
LanguageUser Guide. Adisson-Wesley
Bass, L., Clements, P., & Kazman, R. (1998). Software Architecture in
practice.Addison-Wesley.
Pressman R. (2002) Ingeniería de Software. Un Enfoque Práctico.Quinta
Edición. Mc Graw Hill.
Garlan, David and Shaw, Mary. (1994). An Introduction to Software
Architecture. CMU-CS-94-166.
Bass, Len and Kazman, Rick. (1999). Architecture-Based Development.
CMU/SEI-99-TR-007..
Referencias
Buschmann, Frank et al.: Pattern Oriented Software Architecture, Volume
1: A System of Patterns, Willey & Sons, 1996.
Fowler, Martin: Enterprise Application Architecture Patterns, Addison
Wesley, 2003.
Larman, C. “UML y Patrones. Introducción al Análisis y Diseño Orientado a
Objetos y al Proceso Unificado”. Prentice Hall, 2004.
Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John. Design
Patterns: Elements of Reusable Object-Oriented Software. Reading,
Massachusetts: Addison Wesley Longman, Inc, 1995.
Alur, Deepak. Crupi, John and Malks, Dan. Core J2EE Patterns: Best
Practices and Design Strategies (2nd Edition). Publisher: Prentice Hall /
Sun Microsystems Press. 2st edition. 2003.
Bachmann, Felix et al.: Software Architecture Documentation in Practice:
Documenting Architectural Layers. CMU/SEI-2000-SR-004. 2000.
Referencias

Continuar navegando

Materiales relacionados