Arquitectura

655 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
655
En SlideShare
0
De insertados
0
Número de insertados
2
Acciones
Compartido
0
Descargas
22
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Arquitectura

  1. 1. Arquitectura de SoftwareArquitectura y Calidad del Software Prof. Maria A. Perez de Ovalles www.lisi.usb.ve
  2. 2. Contenido• Definición• Cualidades de las Arquitecturas• Arquitectura y Atributos de Calidad de los Sistemas• Estilos Arquitectónico• Patrones Arquitectónicos• Framework• Patrones de Diseño• Vistas Arquitectónicas
  3. 3. ARQUITECTURA DEL SISTEMA DE SOFTWARESe obtiene mediante un proceso de partición que relaciona los ele-mentos de una solución de software con partes de un problema deldel mundo real definido implícitamente durante el análisis de losrequisitos. La solución aparece cuando cada parte del problema estáresuelta mediante uno o más elementos de software.• El diseño y la especificación completa de la estructura de los sistemas de software, según Shaw y Garlan (Shaw y Garlan, 1996), se está transformando en un aspecto de más importancia que la escogencia de los algoritmos y las estructuras de datos, en virtud del tamaño y la complejidad de estos es la actualidad• Diseñar la arquitectura del software, según estos mismos autores, es definir los aspectos estructurales como una composición de componentes, las estructuras globales de control, los protocolos de comunicación, la sincronización y acceso a los datos, la asignación de la funcionalidad a los elementos del diseño, la composición de estos elementos, su distribución física, su escalabilidad y su desempeño.
  4. 4. ARQUITECTURA DEL SISTEMA DE SOFTWARE•  Define al sistema en tér minos de elementos computacionales y de las interacciones entre ellos.•  La arquitectura muestra la correspondencia entre los requerimientos de sistemas y los elementos del sistema construido, proveyendo así una exposición racional para las decisiones de diseño.•  ELEMENTOS COMPUTACIONALES. Son entidades tales como clientes, servidores, bases de datos, filtros y capas de un sistema jerárquico. Son además, una parte encapsulada del sistema de software, donde cada uno tiene una interfaz.•  INTERACCIONES. Ocurren entre los elementos a nivel de diseño, pudiendo ser tan simples como las llamadas a procedimientos o variables de acceso, o tan complejas y semánticamente ricas como los protocolos del modelo cliente/ servidor, los protocolos de acceso a las bases de datos, la difusión de ls eventos asincrónicos y las ráfagas (stream) de los pipes. (Shaw y Garlan, 1996).
  5. 5. ARQUITECTURA DEL SISTEMA DE SOFTWARE• Una relación, además denota una conexión entre los componentes. Una relación puede ser estática o dinámica. – Relaciones estáticas. Se muestran en el código fuente, ellas reflejan la colocación de los componentes dentro de la arquitectura. – Relaciones dinámicas. tratan con las conexiones temporales y las interacciones dinámicas entre los componentes. Ellas no son fácilmente visibles a partir del código fuente.• PROPIEDAD FUNCIONAL. Tiene que ver con un aspecto de la funcionalidad del sistema, como su nombre lo indica. Está usualmente relacionada con un requerimiento.• PROPIEDAD NO FUNCIONAL. Trata de una característica del sistema que no está cubierta en la descripción funcional del mismo. Típicamente se refiere a aspectos tales como confiabilidad, compatibilidad, costo, facilidad de uso , etc.
  6. 6. NIVELES DE DISEÑO DE LOS SISTEMAS DE SOFTWARE• ARQUITECTURA. Los aspectos de diseño involucran la asociación de la capacidad de todo el sistema con componentes. Los componentes son módulos y la interconexión entre los módulos se maneja de maneras diferentes. La composición está orienta hacia subsistemas.• CÓDIGO. El diseño involucra algoritmos y estructuras de datos. Los componentes son primitivas de lenguajes de programación, tales como números, caracteres, etc. Los mecanismos de composición son arreglos, registros, procedimientos, etc.• EJECUTABLE. El diseño involucra mapas de memoria, arreglos de datos, asignaciones de registros, etc. Los componentes son patrones de bits soportados por el hardware y las composiciones se escriben en lenguaje de máquina.
  7. 7. CUALIDADES DE LAS ARQUITECTURAS• CONFORMIDAD FUNCIONAL. Según Pressman (Pressman, 1998) una arquitectura de calidad debe implementar todos los requisitos explícitos contenidos en el modelo de análisis y debe acomodar todos los requisitos implícitos que desea el cliente. Además, debe proporcionar una idea completa de que es el software, enfocando los dominios de los datos, las funciones y los comportamientos. Según Lawrence (Lawrence, 1998) la arquitectura del software le dice a los usuarios exactamente lo que el sistema de software hará.• ADAPTABILIDAD. Esta característica la propone Sommerville (Sommerville, 1998) al señalar que ella mide cuan fácil es hacer cambios en una arquitectura; de seguro, esto implica componentes poco acoplados. En su opinión, un sistema de software adaptable tiene una alta trazabilidad; esto quiere decir, que hay una relación clara entre los diferentes niveles de abstracción.
  8. 8. CUALIDADES DE LAS ARQUITECTURAS• MODULARIDAD. Sin considerar el enfoque de diseño utilizado (estilo arquitectural) (Pfleeger, 1998), el proceso de descomposición separa el diseño en partes que lo componen, llamadas módulos o componentes. Se dice que un sistema es modular cuando cada actividad del sistema de software es ejecutada exactamente por un componente y cuando las entradas y las salidas de los componentes están bien definidas. Los módulos se organizan jerárquicamente como resultado de la descomposición. En la opinión de Pressman (Pressman, 1998), estos módulos se integrarán para satisfacer los requisitos del sistema. Para este autor modularidad es el atributo del software que permite a un sistema ser manejable intelectualmente. Pfleeger (Pfleeger, 1998) además agrega que los módulos encapsulan información; la ventaja de esta característica es que el diseño interno de cada componente está oculto para el resto de los otros componentes.
  9. 9. CUALIDADES DE LAS ARQUITECTURAS• NIVELES DE ABSTRACCIÓN. Según Pfleeger (Pfleeger, 1998), estos módulos se estructuran según niveles de abstracción. Estos niveles de abstracción ayudan a entender el problema a ser resuelto por el sistema y la solución propuesta. Según Pressman (Pressman, 1998), cuando se plantea una solución modular se pueden presentar muchos niveles de abstracción. Cada fase del proceso de diseño es un refinamiento en el nivel de abstracción. Pressman (Pressman, 1998) propone tres (3) niveles de abstracción: – Abstracción procedimental. Es una secuencia dada de instrucciones que tiene una función específica y limitada. – Abstracción de datos. Es una colección determinada de datos que describen un objeto de datos. – Abstracción de control. Implica un mecanismo de control del programa sin especificar detalles internos.
  10. 10. CUALIDADES DE LAS ARQUITECTURAS• ENTENDIBLE. Sommerville (Sommerville, 1998) señala que un sistema antes de hacerle un cambio debe ser entendido. En su opinión este entendimiento estará afectado por: La cohesión, el acoplamiento, la nominación, la documentación y la complejidad; inclusive, señala que la complejidad tiene una relación directa con su fácil entendimiento.• COHESIÓN. Es una consecuencia del ocultamiento de la informa- ción. Un módulo con cohesión (Pressman, 1998) realiza solamente una tarea, requiriendo poca interacción con el resto de los procedimientos que se realizan en el resto del sistema de software. Según Sommerville (Sommerville, 1998) la cohesión es deseable debido a que una unidad (componente) representa una parte simple de solución. Si es necesario cambiar el sistema, la parte correspondiente está en un solo lugar y lo que se desee hacer con él estará encapsulado en él. Según Lawrence (Pfleeger, 1998) la meta es hacer que los componentes sean lo más cohesivos posible.
  11. 11. CUALIDADES DE LAS ARQUITECTURAS• ACOPLAMIENTO. Está relacionado con la cohesión. Es un indicador de la fuerza de interconexión entre los componentes o elementos de la arquitectura (Sommerville, 1998). Sistemas altamente acoplados tienen una fuerte interconexión, lo que se refleja en una gran dependencia entre los componentes. Los sistemas poco acoplados, por otro lado, tienen poca relación entre sus componentes o elementos. La meta (Lawrence, 1998) es mantener el acoplamiento en el nivel más bajo posible; la conectividad sencilla entre módulos da como resultado un software que es más fácil de comprender y menos propenso al “efecto onda” (Stevens et al., 1975) producido cuando los errores aparecen en una posición y se propagan a lo largo del sistema. Pressman (Pressman, 1998) agrega que el acoplamiento depende de la complejidad de las interfaces entre los módulos, del punto en el que se hace una entrada o referencia a un módulo y de los datos pasan a través de esa interfaz.
  12. 12. Arquitectura y Atributos de Calidad de los Sistemas• Bass et al. (2000) establecen que para alcanzar un atributo específico, es necesario tomar decisiones de diseño arquitectónico que requieren un pequeño conocimiento de funcionalidad• Bass et al. (2000) afirman que cada decisión incorporada en una arquitectura de software puede afectar potencialmente los atributos de calidad.• Sin embargo, esto no es evidente, porque: – Existen atributos de calidad que, luego de ser estudiados durante años, poseen definiciones generalmente aceptadas – Los atributos no están aislados ni son independientes entre sí. – El análisis de atributos no se presta a estandarizaciones. – Las técnicas de análisis son específicas para un atributo en particular.• La arquitectura es un artefacto que determina atributos de calidad del sistema.
  13. 13. Arquitectura y Atributos de Calidad de los Sistemas
  14. 14. Estilos y Patrones• Bosch (2000) establece que la imposición de ciertos estilos arquitectónicos mejora o disminuye las posibilidades de satisfacción de ciertos atributos de calidad del sistema• Cada estilo propicia atributos de calidad, y la decisión de implementar alguno de los existentes depende de los requerimientos de calidad del sistema.• Buschmann et al. (1996) afirman que un criterio importante del éxito de los patrones es la forma en que estos alcanzan de manera satisfactoria los objetivos de la ingeniería de software.
  15. 15. ESTILOS ARQUITECTÓNICOSUn estilo arquitectural define una familia de sistemas desoftware en términos de su organización estructural. Unestilo arquitectural representa los componentes y lasrelaciones entre ellos con las restricciones de su aplicacióny las asociaciones y reglas de diseño para su construcción.Shaw y Garlan (Shaw y Garlan, 1996) precisan además,que un estilo arquitectural define un vocabulario decomponentes y tipos de conectores.
  16. 16. ESTILOS ARQUITECTÓNICOS PIPES and FILTERS (Tuberías y filtros)Cada componente tiene un conjunto de entradas y un conjuntode salidas. Filters (Filtros) Pipes (Tuberías)• Un componente lee la ráfaga (stream) de datos en sus entradas y produce una ráfaga de datos en sus salidas.• Los componentes se conocen como filtros y son independientes.• Los conectores se comportan como conductores de las ráfagas, transmitiendo salidas de un componente hacia entradas de otro.• El mejor ejemplo de este estilo son los programas escritos en el Shell de Unix (Bach, 1986). Otros ejemplos se observan en el área de procesamiento de señales, programación paralela y sistemas distribuidos.
  17. 17. ESTILOS ARQUITECTÓNICOS ORGANIZACIONES POR TIPOS DE DATOS ABSTRACTOS Y O-OLa representación de los datos y sus operaciones primitivas seencapsulan en Tipos de Datos Abstractos (TDA) u objetos. Manejador obj op op (TDA) op obj op op obj op obj op op Llamada de Nota: obj es un manejador op obj op es una invocación un proceso op•  Los componentes son objetos (o instancias de tipos de datos abstractos). Los objetos son ejemplos de un tipo de componente llamado manejador porque es el responsable de preservar la integridad de un recurso•  Los objetos interactúan a través de invocaciones a funciones y procedimientos.•  La implementación de las funciones y procedimientos está oculta para el objeto cliente, lo cual permite hacer las modificaciones fácilmente.•  Para hacer uso de un servicio se hace necesario conocer la identidad del objeto; al hacer un cambio en un objeto es necesario modificar todos los objetos que lo invocan.
  18. 18. ESTILOS ARQUITECTÓNICOS BASADOS EN EVENTOS, INVOCACIÓN IMPLÍCITAEn el estilo anterior, la interfaz de los componentes (objetos)cuentan con una colección de procedimientos y funciones, y laintegración entre ellos se logra a través de la invocación explícitade éstos. En este estilo, se considera una técnica de integraciónconocida como invocación implícita.• Los componentes son módulos cuyas interfaces proveen una colección de procedimientos y un conjunto de eventos. Los procedimientos se llaman de la manera usual pero el componente también puede activar algunos de sus procedimientos con los eventos del sistema. Esto hará que estos procedimientos sean invocados cuando los eventos ocurren en tiempo de ejecución.• Los generadores de eventos no saben cuales componentes se afectarán por el evento. Ejemplos de este estilo son los sistemas de gestión de bases de datos cuando aseguran la consistencia de los datos, las aplicaciones con interfaces de usuarios al separar la representación de los datos de las aplicaciones que las gerencian.
  19. 19. ESTILOS ARQUITECTÓNICOS SISTEMAS EN CAPASEstán organizados jerárquicamente; cada capa le presta serviciosa la capa superior y es cliente de la capa inferior. Sistemas útiles Llamadas usuales de procedimientos Servicio base Nivel central Composición de varios elementos Usuarios• Los componentes implementan un máquina virtual en alguna capa de la jerarquía.• Los conectores están definidos en los protocolos que determinan cómo las capas interactúan.• Los ejemplos más conocidos de este estilo arquitectural son los protocolos de comunicación.
  20. 20. ESTILOS ARQUITECTÓNICOS REPOSITORIOSConsta de dos (2) tipos de componentes: una estructura central de datosque refleja el estado actual y una colección independiente de compo-nentes que operan sobre el almacén central. Computación fc1 fc2 fc8 fc3 Blackboard Acceso (datos directo Memoria fc7 compartidos) fc4 Nota: fc es una fuente de conocimiento fc6 fc5•  Las interacciones entre los componentes pueden variar significativamente. El tipo de control seleccionado puede llevar a dos categorías: –  Si el tipo de transacción es una entrada que dispara la selección del proceso a ejecutarse, se está hablando de las tradicionales bases de datos. –  Si el estado actual de la estructura central de datos es el principal activador de los procesos a ejecutarse, se habla de un estilo de repositorio tipo pizarrón (blackboard). Son muy utilizados para aplicaciones que requieren interpretaciones complejas de procesamiento de señales, tales como reconocimiento del habla y de patrones.
  21. 21. ESTILOS ARQUITECTÓNICOS INTÉRPRETESEn una organización intérprete,una maquina virtual es produci-da en software. Un intérprete incluye el pseudoprograma inter-pretado y la máquina de interpretación misma. Memoria Programa a ser Entradas Datos interpretado (programa) Computación (máquina) Motor de Estado Salidas Instrucción seleccionada interpretación interno del Datos seleccionados simulado interpretador Acceso a datos (búsqueda/almacenamiento)• Los intérpretes son a menudo usados para construir maquinas virtuales que enlazan la máquina de computación esperada por la semántica y la máquina de computación disponible en el hardware.
  22. 22. Patrón Arquitectónico•  Buschmann et al. (1996) define patrón como una regla que consta de tres partes, la cual expresa una relación entre un contexto, un problema y una solución•  Estas son: –  Contexto. Es una situación de diseño en la que aparece un problema de diseño. –  Problema. Es un conjunto de fuerzas que aparecen repetidamente en el contexto. –  Solución. Es una configuración que equilibra estas fuerzas.•  ParaBuschmann et al son plantillas para arquitecturas de software concretas, que especifican las propiedades estructurales de una aplicación y tienen un impacto en la arquitectura de subsistemas .•  La selección de un patrón arquitectónico es, por lo tanto, una decisión fundamental de diseño en el desarrollo de un sistema de software.
  23. 23. Patrón Arquitectónico
  24. 24. Patrón Arquitectónico
  25. 25. Estilos y Patrones Arquitectónicos
  26. 26. Framework•  Un framework es más que una jerarquía de clases. Es una jerarquía de clases más un modelo de iteracción entre los objetos instanciados a partir del framework. [Levis, Rosenstein, Pree, Weinand, Gamma, Calder, Andert, Vlissides and Schmucker, 95]•  Un framework es una técnica de reuso [Johnson, 97]•  Un framework es un diseño reusable de todo o partes del sistema que esta representado por un conjunto de clases abstractas y la forma como sus instancias interactúan. Un framework es un esqueleto de una aplicación que puede ser personalizado por un desarrollador de aplicaciones [Johnson, 97]
  27. 27. Framework•  Los framework son componentes en el sentido que los vendedores los venden como productos y porque una aplicación puede usar varios framework. Pero los framework son mas personalizables que los componentes y tiene interfaces más complejas [Johnson, 97]•  Un componente representa reuso de código. Los framework son una forma de reuso de diseño [Johnson, 97].•  Los framework son una clase de arquitectura de dominio específico. La diferencia principal es que un framework es un diseño orientado a objeto mientras que una arquitectura de un dominio específico puede no serlo [Johnson, 97].
  28. 28. Framework•  Un framework es reusable, una aplicación semi completa que puede ser especializada para producir aplicaciones personalizadas [Johnson y Foote, 98] [Fayad, Schmith y Johnson, 97]•  En contraste con las técnicas de reuso OO iniciales basadas en librerías, los framework están orientados a unidades del negocio particulares y a dominios de aplicación. [Fayad y Schmith, 97]•  El desarrollo de aplicaciones estará fuertemente basado en la integración de múltiples framework.
  29. 29. FrameworkClasificando los framework por su alcance, tenemos:•  Infraestructura de Sistemas: simplifican el desarrollo de infraestructuras de sistemas eficientes y portables tales como sistemas operativos, de comunicación y herramientas de interfaces de usuarios y procesamiento de lenguajes•  Integración de midleware: Se usan comúnmente para integrar aplicaciones distribuidas y componentes. Se usan para mejorar la habilidad del desarrollador en modularidad, reuso y extensiones de software trabajando en un ambiente distribuido•  Aplicaciones de empresas: Dirigidos a dominios de aplicación amplios, tales como comunicaciones, manufactura, financieros, etc.
  30. 30. Design Patterns•  Un pattern describe un problema a ser resuelto, una solución y el contexto en el cual la solución trabaja. Nomina una técnica y describe su costo y su beneficio•  Estos pattern fueron descubiertos al examinar varios framework y fueron seleccionados como representativos de software reusable.•  Un simple framework puede contener muchos pattern, es decir, estos pattern son más pequeños que los framework. Por lo tanto, los pattern son mas abstractos que los framework•  Los design pattern son elementos microarquitecturales de los framewrok
  31. 31. Design Patterns•  Aunque el término design pattern no es usado explícitamente, los novatos obtienen ganancia de sus experiencias en el desarrollo de software OO al extraer design pattern a partir de varios framework específicos [Pree, 95]•  De acuerdo a Coad, los design pattern son identificados al observar los bloques de construcción de más bajo nivel; esto es sus clases y objetos y las relaciones entre ellos [Pree, 95].
  32. 32. Design PatternsClasificación
  33. 33. Design PatternsDocumentación:•  Nombre del Pattern y su clasificación•  Intención: ¿Qué hace? ¿Qué problema resuelve?•  Alias o conocido también como•  Motivación•  Aplicabilidad•  Estructura: representación gráfica de la jerarquía de clases y el diagrama de iteracción•  Participantes: las clases que lo componen y sus responsabilidades•  Consecuencias: trade-off de usar el pattern•  Implementación: sugernecias y ayudas sobre la implementación, fallas más comunes•  Usos conocidos: ejemplos donde ha sido usado•  Patrones relacionados: ¿Qué pattern se relacionan con él? ¿En qué se diferencia de otros?
  34. 34. Estilos y Patrones Arquitectónicos y de Diseño
  35. 35. VISTAS ARQUITECTÓNICAS 4+1 Usuarios finales Programadores • funcionalidad • gerencia del software Vista Lógica Vista de Desarrollo Escenarios Vista de Proceso Vista Física Integradores de sistemas Ingenieros de sistemas • desempeño • topología del sistema • escalabilidad • entregas • rendimiento • instalación • telecomunicaciónEl Modelo Vista 4+1 organiza la descripción de la arquitectura deun software usando cinco (5) vistas concurrentes, cada una delas cuales está dirigida a un conjunto específico de conceptos.Los arquitectos exponen sus decisiones de diseño en cuatro (4)vistas y usan la quinta vista para ilustrar y validar dichasdecisiones.
  36. 36. VISTAS ARQUITECTÓNICAS 4+1• VISTA LÓGICA. Describe el modelo objeto del diseño cuando un método de diseño O-O es usado;se puede usar un enfoque alterno para desarrollar alguna otra forma de vista lógica• VISTA DE PROCESO. Describe los aspectos de diseño relacionados con la concurrencia y la sincronización.• VISTA FÍSICA. Describe el mapa del SW dentro del HW refleja los aspectos de distribución.• VISTA DE DESARROLLO. Describe la organización estática del software en el ambiente de desarrollo.• ESCENARIOS. Los diseñadores de software organizan la descripción de sus decisiones arquitecturales alrededor de estas cuatro (4) vistas, y las ilustran con una pequeña selección de casos de uso o escenarios, constituyendo así la quinta vista. La arquitectura está parcialmente producida por esos escenarios.
  37. 37. Interdependencia entre VistasLógica Procesos Se identifican características tales como: Autonomía, quien invoca a quien. Persitencia. Distribución: desde donde son accesibles las operaciones. Lógica Desarrollo Una clase se puede implementar en un módulo, paquete, etc.
  38. 38. Ejercicio• Elaborar una tabla con las siguientes columnas: nombre del estilo/patrón arquitectónico, cualidad que propicia

×