Ing. Pablo Almeida Haro Msc.

ARQUITECTURAS DE SOTWARE

 

CONCEPTOS

 

*Son formas, guías generales para resolver problemas

*Conjunto de decisiones significativas las cuales implicarían un impacto

*Indican estructura e interacción entre las partes del software

*Es una definición de la estructura global sin considerar  algoritmos o detalles de programación

*Es  una definición amplia

*Es el diseño de la estructura del software desde el más alto nivel

*Son un conjunto de abstracciones

*Son un conjunto de patrones

*Arquitectura es ensamblar algunos elementos

*Se diseña en base a los objetivos:

Funcionalidad

Mantenibilidad

Auditabilidad

Flexibilidad

Interacción con otros sistemas

Confiabilidad

Escalabilidad

Portabilidad

Disponibilidad

*Se diseña en base a las restricciones

Limitaciones en cuanto a la tecnología disponible

*La arquitectura define:

                Componentes

                Interfaces entre componentes

                Comunicación entre componentes

*Toda arquitectura se implementará de forma física en uno o varios equipos

 

MODELOS O VISTAS

 

*Permiten describir los sistemas  de una manera comprensible

*Puede existir varias vistas

*Cada modelo o vista puede describir una parte o todo el sistema

*Existen 3 vistas fundamentales para cualquier arquitectura:

                Visión estática:  describe los componentes de la arquitectura

                Visión funcional:  describe que hace cada componente

                Visión dinámica:  Como se comportan los componentes en el tiempo y su interacción

*Los modelos o vista se expresan con lenguajes:

                Natural

                Diagramas de estado

                Diagramas de flujo de datos

 

ARQUITECTURAS

 

*Normalmente se escoge solo una arquitectura para un sistema de información

*Las arquitecturas más comunes son:

Monolítica.-  Se estructura en grupos funcionales muy acoplados Cliente -  servidor

Arquitectura de 3 niveles.- La carga de trabajo se divide en 3 capas.

Arquitectura n capas.- Se crean más dándoles especialización

Arquitectura orientada a servicios.- expone servicios e integra plataformas

*Otras arquitecturas:

Pipe line.- Línea de comandos

Entre pares.- Peer to peer

Pizarra.- Sistemas expertos

Dirigida por eventos.- Producción, detección, reacción y consumo de eventos

Máquinas virtuales.-  Especialización de equipos

 

PATRONES DE DISEÑO

 

*Base para la búsqueda de problemas comunes en el diseño o desarrollo de software

*Es la solución a un problema de diseño

*Solo es un patrón cuando se ha probado su efectividad y su reutilización

*Es el conocimiento o experiencia

 

OBJETIVOS DE LOS PATRONES

 

*Proporcionar los catálogos de elementos reusables

*Evitar la pérdida de tiempo en la búsqueda de soluciones ya establecidas

*Estandarizar el vocabulario entre diseñadores

*Condensar el conocimiento para las nuevas generaciones

*No debe inhibir la creatividad

CATEGORIAS DE PATRONES SEGUN ABSTRACCION

 

*Patrones de arquitectura.-  Representan esquema y estructura de los sistemas de software

*Patrones de diseño.-  Define esquemas para estructuras de diseño y sus relaciones

*Dialectos.-  Patrones de bajo nivel para lenguajes de programación

*Interacción.- Patrones para el diseño de interfaces tipo web

 

ANTIPATRONES

 

*Previene errores comunes en el diseño de software

 

PLANTILLAS DE PATRONES

 

Es un medio para describir un patrón de una forma estandarizada

Una plantilla poseerá:

 

* Nombre del patrón: nombre estándar

* Clasificación del patrón: creacional, estructural o de comportamiento.

* Intención: Problema a resolver

*También conocido como: Otros nombres

*Motivación: Escenario de ejemplo para la aplicación del patrón.

*Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.

*Estructura: Diagramas de clases con las clases que intervienen

*Participantes: Entidades abstractas que participan en el patrón.

*Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes.

*Consecuencias: Consecuencias positivas y negativas en el diseño

*Implementación: Técnicas o comentarios oportunos

*Código de ejemplo: Código fuente ejemplo de implementación del patrón.

*Usos conocidos: Ejemplos de sistemas reales que usan el patrón.

*Patrones relacionados: Referencias cruzadas con otros patrones.

 

PATRONES CREACIONALES

 

Object Pool.- Cuando hay objetos complejos se los puede clonar para reducir costos

Buider.- Abstrae el proceso de creación del objeto

Factory method.- Centraliza la creación de sub tipo de objeto

Prototype.- Crea nuevos objetos clonándolos de uno existente

Singleton.- Garantiza la creación de una única instancia para el objeto

Abstract factory.- Permite trabajar con objetos de distintas familias sin mezclarse

 

PATRONES ESTRUCTURALES

 

Adapter.- Adapta una interfaz para que pueda ser usada por una clase

Bridge.- Desacopla una abstracción de su implementación

Composite.- Permite tratar varios objetos como si fuera uno

Decorator.- Añade funcionalidad a una clase dinámicamente

Facade.-  Provee una interfaz simple para acceder a varias interfaces

Flyweight.- Reduce la redundancia en objetos que poseen la misma información

Proxi.-  Mantiene un representante de un objeto

Modulo.-  Agrupa varios elementos (Clases, métodos, etc)

 

PATRONES DE COMPORTAMIENTO

Chain of responsability.- Establece la línea que deben  llevar los mensajes

Command.- Encapsula y permite la ejecución de una operación

Interpreter.- Define una gramática para el lenguaje

Iterator.- Permite realizar recorridos sobre los objetos

Mediator.- Coordina la comunicación entre objetos

Mement .-  Permite volver a estados anteriores del sistema

Observer.- Define la relación de uno a muchos. Cuando hay una actualización se actualizarán todos los que dependan del uno

State.- Modifica su comportamiento cada vez que cambie el estado

Strategy.- Permite seleccionar en tiempo de ejecución el objeto mas adecuado a usar

Template Method: Define el esqueleto de un algoritmo

Visitor: Permite definir nuevas operaciones sin modificar las clases

 

PATRONES DE PROGRAMACION

 

*Consiste en reutilizar programas

*Se debe identificar patrones de instrucciones repetitivas

Patrones de acumulación:

*Hay que utilizar el concepto de programación genérica

*Estas estrategias de programación ayudan cuando hay grupos de trabajo

*Utilizar los conceptos de herencia, polimorfismo, sobrecarga

*Centralizar funciones, métodos, módulos, paquetes comunes a todo el sistema

*Todo caso repetitivo de programación solo se elabora una sola vez

*En lectura de datos, acumulación, se puede utilizar sentencias de repetición

*No se debe quemar datos en código en su lugar se debe usar tablas

*Utilizar variables de configuración

*Desarrollar programas parametrizables

*El uso de de programación genérica

 

 EJEMPLO DE PATRON

 

Encapsulación (ocultación de datos)

Problema: Los atributos pueden ser manipulados desde el exterior

Solución: esconda algunos componentes, permitiendo sólo accesos estilizados al objeto.

Desventajas: la interfaz no puede, eficientemente, facilitar todas las operaciones deseadas. El acceso indirecto puede reducir el rendimiento.

 

PATRONES DE ARQUITECTURA

 

MODELO DE CAPAS

 

*Consiste en la división de la aplicación en capas

*Cada capa posee una especialidad

*La evolución del modelo de capas es:

                Cliente servidor 2 capas

                Aplicación distribuida de 3 capas

                Aplicación distribuida de n capas

*Layering son los patrones para dividir en capas

 

PATRONES DE LOGICA DE NEGOCIO

 

*Procedimental

                Organización del código en funciones

                Utilización de estructuras de datos simples

                Paso de parámetros a funciones

                Uso de librerías

                Fácil de usar

                No hace falta conocer de diseño

                Usado por programadores si experiencia

                Utilizado en lógica de negocio simple

 

*Orientado a objetos

                Organización del código en objetos

                Los objetos poseen atributos y métodos

                Utilización de herencia

                Utilizado en sistemas más complejos

                El modelo del dominio es conocido al conjunto de clases con estado y funcionamiento

 

PATRONES DE PRESENTACION WEB

PATRONES DE DISTRIBUCION

PATRONES DE ESTADO DE SESION

 

EJEMPLO PATRON DISEÑO JEE

 

figure06_02

 

 

FRAMEWORKS

 

*Es un marco de trabajo

*Es una estructura de soporte para desarrollo de software

*Posee programas, librerías, scripts, lenguajes, herramientas para unificación, etc.

*Facilita el desarrollo de software

*Provee estructura y metodología

*Los Frameworks inician con el aparecimiento de:

                CGI

                Jsp

*Algunos frameworks pueden convertirse en estándares

 

TIPOS DE FRAMEWORKS

*Frameworks de persistencia

                EJB

                Hibernate

                Toplink

                JDO

                JPA

*Frameworks  de aplicación: Algunos son Orientados a interface

                Tapertry

*Frameworks para propósito general: poseen un conjunto de herramientas para interfase, persistencia, seguridades, componentes, etc

 

EJEMPLOS DE FRAMEWORKS

 

JSF

STRUTS,TAPESTRY,JSF,(sirven para aplicaciones web).

MAVEN(se enfocan para la Aplicacion de proyectos).

SPRING(inyeccion de dependencias)

HIBERNATE(Para dar soporte a los ORM(object relational mapping), enfocado a bases de datos)

.NET

FRAMEWORKS para php (Symfony, Zend, cakePHP, etc)

Frameworks para Ajax (Dojo, Script.aculo.us, Prototype, AJAX Engine, ATLAS, ConfortASP .NET, MagicAJAX .NET, etc)