SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Arquitectura de Software
Arquitectura y Calidad del Software

  Prof. Maria A. Perez de Ovalles
         www.lisi.usb.ve
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
ARQUITECTURA DEL SISTEMA DE
              SOFTWARE
Se obtiene mediante un proceso de partición que relaciona los ele-
mentos de una solución de software con partes de un problema del
del mundo real definido implícitamente durante el análisis de los
requisitos. 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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
Arquitectura y Atributos de Calidad de los
                 Sistemas
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.
ESTILOS ARQUITECTÓNICOS

Un estilo arquitectural define una familia de sistemas de
software en términos de su organización estructural. Un
estilo arquitectural representa los componentes y las
relaciones entre ellos con las restricciones de su aplicación
y 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 de
componentes y tipos de conectores.
ESTILOS ARQUITECTÓNICOS
                   PIPES and FILTERS (Tuberías y filtros)

Cada componente tiene un conjunto de entradas y un conjunto
de 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.
ESTILOS ARQUITECTÓNICOS
   ORGANIZACIONES POR TIPOS DE DATOS ABSTRACTOS Y O-O
La representación de los datos y sus operaciones primitivas se
encapsulan 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.
ESTILOS ARQUITECTÓNICOS
          BASADOS EN EVENTOS, INVOCACIÓN IMPLÍCITA
En el estilo anterior, la interfaz de los componentes (objetos)
cuentan con una colección de procedimientos y funciones, y la
integración entre ellos se logra a través de la invocación explícita
de éstos. En este estilo, se considera una técnica de integración
conocida 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.
ESTILOS ARQUITECTÓNICOS
                            SISTEMAS EN CAPAS

Están organizados jerárquicamente; cada capa le presta servicios
a 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.
ESTILOS ARQUITECTÓNICOS
                                             REPOSITORIOS
Consta de dos (2) tipos de componentes: una estructura central de datos
que 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.
ESTILOS ARQUITECTÓNICOS
                                 INTÉRPRETES
En 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.
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.
Patrón Arquitectónico
Patrón Arquitectónico
Estilos y Patrones Arquitectónicos
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]
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].
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.
Framework

Clasificando 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.
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
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].
Design Patterns
Clasificación
Design Patterns
Documentació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?
Estilos y Patrones Arquitectónicos y de Diseño
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ón

El Modelo Vista 4+1 organiza la descripción de la arquitectura de
un software usando cinco (5) vistas concurrentes, cada una de
las 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 dichas
decisiones.
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.
Interdependencia entre Vistas
Ló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.
Ejercicio
• Elaborar una tabla con las siguientes
  columnas: nombre del estilo/patrón
  arquitectónico, cualidad que propicia

Weitere ähnliche Inhalte

Was ist angesagt?

Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwareJose Patricio Bovet Derpich
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Marta Silvia Tabares
 
Arquitectura software capitulo i
Arquitectura software capitulo iArquitectura software capitulo i
Arquitectura software capitulo iCathy Guevara
 
Fundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareFundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareRoger Villegas
 
DiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del SoftwareDiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del Softwarelcastillo110
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de softwareLiliana Pacheco
 
2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónicolandeta_p
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Softwarealfmuny
 
Estilos de Software
Estilos de SoftwareEstilos de Software
Estilos de Softwarebjjuarez
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del softwareJohns Chacon
 
Diseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-softwareDiseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-softwareAndresRealp1
 
Diseño de Software
Diseño de SoftwareDiseño de Software
Diseño de SoftwareUPT
 
Fundamentos de la arquitectura del software
Fundamentos de la arquitectura del softwareFundamentos de la arquitectura del software
Fundamentos de la arquitectura del softwareEnder Christense
 
Diseño arquitectonico
Diseño arquitectonicoDiseño arquitectonico
Diseño arquitectonicoWilson Gomez
 

Was ist angesagt? (20)

Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del software
 
Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1Arquitecturas de software - Parte 1
Arquitecturas de software - Parte 1
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Arquitectura software capitulo i
Arquitectura software capitulo iArquitectura software capitulo i
Arquitectura software capitulo i
 
Fundamentos de la arquitectura de software
Fundamentos de la arquitectura de softwareFundamentos de la arquitectura de software
Fundamentos de la arquitectura de software
 
DiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del SoftwareDiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del Software
 
Arquitectura de software
Arquitectura de softwareArquitectura de software
Arquitectura de software
 
2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico2 1 1_diseño arquitectónico
2 1 1_diseño arquitectónico
 
Estilos arquitectónicos
Estilos arquitectónicosEstilos arquitectónicos
Estilos arquitectónicos
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Is.1p.5 arquitectura de software
Is.1p.5 arquitectura de softwareIs.1p.5 arquitectura de software
Is.1p.5 arquitectura de software
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Software
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Estilos de Software
Estilos de SoftwareEstilos de Software
Estilos de Software
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Diseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-softwareDiseño de-la-arquitectura-de-software
Diseño de-la-arquitectura-de-software
 
Diseño de Software
Diseño de SoftwareDiseño de Software
Diseño de Software
 
Fundamentos de la arquitectura del software
Fundamentos de la arquitectura del softwareFundamentos de la arquitectura del software
Fundamentos de la arquitectura del software
 
Diseño arquitectonico
Diseño arquitectonicoDiseño arquitectonico
Diseño arquitectonico
 

Andere mochten auch (20)

Presentación
PresentaciónPresentación
Presentación
 
GRAMATICA ESPAÑOLA Preterito vs antepresente I
GRAMATICA ESPAÑOLA Preterito vs antepresente IGRAMATICA ESPAÑOLA Preterito vs antepresente I
GRAMATICA ESPAÑOLA Preterito vs antepresente I
 
Ode 4,5,11 y 12
Ode 4,5,11 y 12Ode 4,5,11 y 12
Ode 4,5,11 y 12
 
El poder de las palabras ...con fotos (1)
El poder de las palabras ...con fotos (1)El poder de las palabras ...con fotos (1)
El poder de las palabras ...con fotos (1)
 
Trabajo en clase
Trabajo en claseTrabajo en clase
Trabajo en clase
 
P 09. alvaro buenvaron
P 09. alvaro buenvaronP 09. alvaro buenvaron
P 09. alvaro buenvaron
 
Solución de conflictos
Solución de conflictosSolución de conflictos
Solución de conflictos
 
Problematica (reparado) 2
Problematica (reparado) 2Problematica (reparado) 2
Problematica (reparado) 2
 
Prehistoria
PrehistoriaPrehistoria
Prehistoria
 
Tutorial basico picasa
Tutorial basico picasaTutorial basico picasa
Tutorial basico picasa
 
Dani y paloma
Dani y palomaDani y paloma
Dani y paloma
 
Validacion y adopcion de sistemas agricolas promisorios pw
Validacion y adopcion de sistemas agricolas promisorios pwValidacion y adopcion de sistemas agricolas promisorios pw
Validacion y adopcion de sistemas agricolas promisorios pw
 
Un gran hombre
Un gran hombreUn gran hombre
Un gran hombre
 
Presentación telefonia movil
Presentación telefonia movil Presentación telefonia movil
Presentación telefonia movil
 
que econometra
que econometra que econometra
que econometra
 
Museo vivo
Museo vivoMuseo vivo
Museo vivo
 
Presentacion de multimedios
Presentacion de multimediosPresentacion de multimedios
Presentacion de multimedios
 
Diploma de mejor disfraz
Diploma de mejor disfrazDiploma de mejor disfraz
Diploma de mejor disfraz
 
Marketing proyecto-1
Marketing proyecto-1Marketing proyecto-1
Marketing proyecto-1
 
Taller certificacion word
Taller certificacion wordTaller certificacion word
Taller certificacion word
 

Ähnlich wie Arquitectura

Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docxKeiberOrtiz1
 
Fundamentos del software
Fundamentos del softwareFundamentos del software
Fundamentos del softwaremrquaife
 
Fundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas IIFundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas IIJimmyWilfredMassVerd
 
Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx AlvareL
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturasenlinea70
 
Fundamentos Básicos del Diseño de Software
Fundamentos Básicos del Diseño de SoftwareFundamentos Básicos del Diseño de Software
Fundamentos Básicos del Diseño de SoftwareJoseCaira2
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...negroues
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...negroues
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradoangelan00
 
Conceptosdemodelado.pdf
Conceptosdemodelado.pdfConceptosdemodelado.pdf
Conceptosdemodelado.pdfssuser20fade
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREjose_rob
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasJuan Pablo Bustos Thames
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasJuan Pablo Bustos Thames
 
Dierencia entre la ingeniería de software y la arquitectura de software
Dierencia entre la ingeniería de software y la arquitectura de softwareDierencia entre la ingeniería de software y la arquitectura de software
Dierencia entre la ingeniería de software y la arquitectura de softwareEnrique Torres Alarcon
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructuradoDascorp
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTECAMILO
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteCAMILO
 
Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesAndresRealp1
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CosteCAMILO
 

Ähnlich wie Arquitectura (20)

Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docx
 
Fundamentos del software
Fundamentos del softwareFundamentos del software
Fundamentos del software
 
Fundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas IIFundamentos Básicos para el Diseño del Software - Sistemas II
Fundamentos Básicos para el Diseño del Software - Sistemas II
 
Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx Metodología de Diseño Estructurado.pptx
Metodología de Diseño Estructurado.pptx
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturas
 
Fundamentos Básicos del Diseño de Software
Fundamentos Básicos del Diseño de SoftwareFundamentos Básicos del Diseño de Software
Fundamentos Básicos del Diseño de Software
 
2017.10.16-senati-powerpoint sesion8.pptx
2017.10.16-senati-powerpoint sesion8.pptx2017.10.16-senati-powerpoint sesion8.pptx
2017.10.16-senati-powerpoint sesion8.pptx
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...Clase no. 1 unidad no. iii  introduccion al analisis y diseño estructurado  d...
Clase no. 1 unidad no. iii introduccion al analisis y diseño estructurado d...
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
Conceptosdemodelado.pdf
Conceptosdemodelado.pdfConceptosdemodelado.pdf
Conceptosdemodelado.pdf
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemas
 
Significado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemasSignificado dentro del ciclo de vida de desarrollo de sistemas
Significado dentro del ciclo de vida de desarrollo de sistemas
 
Dierencia entre la ingeniería de software y la arquitectura de software
Dierencia entre la ingeniería de software y la arquitectura de softwareDierencia entre la ingeniería de software y la arquitectura de software
Dierencia entre la ingeniería de software y la arquitectura de software
 
Diseño estructurado
Diseño estructuradoDiseño estructurado
Diseño estructurado
 
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTEPRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
PRESENTACION: PROYECTO DE SOFTWARE & ESTIMACION DE COSTE
 
Proyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de CosteProyecto de Software y Estimacion de Coste
Proyecto de Software y Estimacion de Coste
 
Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentes
 
Presentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de CostePresentacion de Software y Estimacion de Coste
Presentacion de Software y Estimacion de Coste
 

Arquitectura

  • 1. Arquitectura de Software Arquitectura y Calidad del Software Prof. Maria A. Perez de Ovalles www.lisi.usb.ve
  • 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. ARQUITECTURA DEL SISTEMA DE SOFTWARE Se obtiene mediante un proceso de partición que relaciona los ele- mentos de una solución de software con partes de un problema del del mundo real definido implícitamente durante el análisis de los requisitos. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Arquitectura y Atributos de Calidad de los Sistemas
  • 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. ESTILOS ARQUITECTÓNICOS Un estilo arquitectural define una familia de sistemas de software en términos de su organización estructural. Un estilo arquitectural representa los componentes y las relaciones entre ellos con las restricciones de su aplicación y 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 de componentes y tipos de conectores.
  • 16. ESTILOS ARQUITECTÓNICOS PIPES and FILTERS (Tuberías y filtros) Cada componente tiene un conjunto de entradas y un conjunto de 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. ESTILOS ARQUITECTÓNICOS ORGANIZACIONES POR TIPOS DE DATOS ABSTRACTOS Y O-O La representación de los datos y sus operaciones primitivas se encapsulan 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. ESTILOS ARQUITECTÓNICOS BASADOS EN EVENTOS, INVOCACIÓN IMPLÍCITA En el estilo anterior, la interfaz de los componentes (objetos) cuentan con una colección de procedimientos y funciones, y la integración entre ellos se logra a través de la invocación explícita de éstos. En este estilo, se considera una técnica de integración conocida 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. ESTILOS ARQUITECTÓNICOS SISTEMAS EN CAPAS Están organizados jerárquicamente; cada capa le presta servicios a 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. ESTILOS ARQUITECTÓNICOS REPOSITORIOS Consta de dos (2) tipos de componentes: una estructura central de datos que 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. ESTILOS ARQUITECTÓNICOS INTÉRPRETES En 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. 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.
  • 25. Estilos y Patrones Arquitectónicos
  • 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. 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. 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. Framework Clasificando 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. 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. 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].
  • 33. Design Patterns Documentació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. Estilos y Patrones Arquitectónicos y de Diseño
  • 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ón El Modelo Vista 4+1 organiza la descripción de la arquitectura de un software usando cinco (5) vistas concurrentes, cada una de las 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 dichas decisiones.
  • 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. Interdependencia entre Vistas Ló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. Ejercicio • Elaborar una tabla con las siguientes columnas: nombre del estilo/patrón arquitectónico, cualidad que propicia