viernes, 30 de mayo de 2014

Modelo de vistas de arquitectura 4+1 Kruchten

En el proyecto se propuso hacer la arquitectura siguiendo el modelo de arquitectura 4+1 propuesto por  Kruchten, a continuación se describirá de manera general , cada una de las vistas:

 

Vista  Lógica

La vista lógica apoya principalmente los requisitos funcionales –lo que el sistema debe brindar en términos de servicios a sus usuarios. El sistema se descompone en una serie de abstracciones clave, tomadas (principalmente) del dominio del problema en la forma de objetos o clases de objetos. Aquí se aplican los principios de abstracción, encapsulamiento y herencia. Esta descomposición no sólo se hace para potenciar el análisis funcional, sino también sirve para identificar mecanismos y elementos de diseño comunes a diversas partes del sistema.

Se usa  el enfoque de Booch/Rational para representar la arquitectura lógica, mediante diagramas de clases y plantillas de clases. Un diagrama de clases muestra un conjunto de clases y sus relaciones lógicas: asociaciones, uso, composición, herencia y similares. Grupos de clases relacionadas pueden agruparse en categorías de clases. Las plantillas de clases se centran en cada clase individual; enfatizan las operaciones principales de la clase, e identifican las principales características del objeto. Si es necesario definir el comportamiento interno de un objeto, esto ser realiza con un diagrama de transición de estados o diagrama de estados. Los mecanismos y servicios comunes se definen como utilities de la clase.

Vista de Procesos

La vista de procesos toma en cuenta algunos requisitos no funcionales tales como el rendimiento y la disponibilidad. Se enfoca en asuntos de concurrencia y distribución, integridad del sistema, de tolerancia a fallas. La vista de procesos también específica en cuál hilo de control se ejecuta efectivamente una operación de una clase identificada en la vista lógica. La arquitectura de procesos se describe en varios niveles de abstracción, donde cada nivel se refiere a distintos intereses. El nivel más alto la arquitectura de procesos puede verse como un conjunto de redes lógicas de programas comunicantes (llamados “procesos”) ejecutándose en forma independiente, y distribuidos a lo largo de un conjunto de recursos de hardware conectados mediante un bus, una LAN o WAN. Múltiples redes lógicas pueden usarse para apoyar la separación de la operación del sistema en línea del sistema fuera de línea, así como también para apoyar la coexistencia de versiones de software de simulación o de prueba.

Un proceso es una agrupación de tareas que forman una unidad ejecutable. Los procesos representan el nivel al que la arquitectura de procesos puede ser controlada tácticamente (i.e., comenzar, recuperar, reconfigurar, y detener). Además, los procesos pueden replicarse para aumentar la distribución de la carga de procesamiento, o para mejorar la disponibilidad.

Partición.

El software se parte en un conjunto de tareas independientes: hilo de control separado que
puede planificarse para su ejecución independiente en un nodo de procesamiento.
Podemos entonces distinguir:

•Tareas mayores son elementos arquitectónicos que pueden ser manejados en forma univoca. Se comunican a través de un conjunto bien definido de mecanismos de comunicación inter-tarea: servicios de comunicación sincrónicos y asincrónicos basados en mensajes, llamados a procedimientos remotos, difusión de eventos, etc. Las tareas mayores no debieran hacer suposiciones acerca de su localización con otras tareas dentro de un mismo proceso o un mismo nodo de procesamiento.

• Tareas menores son tareas adicionales introducidas localmente por motivos de implementación tales como actividades cíclicas, almacenamiento en un buffer, time-out, etc.). Pueden implementarse en Ada por ejemplo, o como hilos de control liviano (threads). Pueden comunicarse mediante rendezvous o memoria compartida. El flujo de mensajes y la carga de procesos pueden estimarse en base al diagrama de procesos. También es posible implementar una vista de procesos “vacía”, con cargas dummy para los procesos y medir entonces su performance en el sistema objetivo.


Vista de Desarrollo

La vista de desarrollo se centra en la organización real de los módulos de software en el ambiente de desarrollo del software. El software se empaqueta en partes pequeñas –bibliotecas de programas o subsistemas– que pueden ser desarrollados por uno o un grupo pequeño de desarrolladores. Los subsistemas se organizan en una jerarquía de capas, cada una de las cuales brinda una interfaz estrecha y bien definida hacia las capas superiores.

La vista de desarrolla tiene en cuenta los requisitos internos relativos a la facilidad de desarrollo, administración del software, reutilización y elementos comunes, y restricciones impuestas por las herramientas o el lenguaje de programación que se use. La vista de desarrollo apoya la asignación de requisitos y trabajo al equipo de desarrollo, y apoya la evaluación de costos, la planificación, el monitoreo de progreso del proyecto, y también como base para analizar reusó, portabilidad y seguridad. Es la base para establecer una línea de productos.

La vista de desarrollo de un sistema se representa en diagramas de módulos o subsistemas que muestran las relaciones extend e include. La arquitectura de desarrollo sólo puede describirse completamente cuando todos los elementos del software han sido identificados. Sin embargo, es posible listar las reglas que rigen la arquitectura de desarrollo – partición, agrupamiento, visibilidad– antes de conocer todos los elementos.


Vista Física

La vista física toma en cuenta primeramente los requisitos no funcionales del sistema tales como la disponibilidad, confiabilidad (tolerancia a fallas), rendimiento (throughput), y escalabilidad. El software ejecuta sobre una red de computadores o nodos de procesamiento (o tan solo nodos). Los variados elementos identificados –redes, procesos, tareas y objetos– requieren ser mapeados sobre los nodos. Esperamos que diferentes configuraciones puedan usarse: algunas para desarrollo y pruebas, otras para mostrar el sistema en varios sitios para distintos usuarios. Por lo tanto, la relación del software en los nodos debe ser altamente flexible y tener un impacto mínimo sobre el código fuente.


Escenarios

Los elementos de las cuatro vistas trabajan conjuntamente en forma natural mediante el uso de un conjunto pequeño de escenarios relevantes –instancias de casos de uso más generales– para los cuales describimos sus scripts correspondientes (secuencias de interacciones entre objetos y entre procesos) tal como lo describen Rubin y Goldberg. Los escenarios son de alguna manera una abstracción de los requisitos más importantes.

Su diseño se expresa mediante el uso de diagramas de escenarios y diagramas de interacción de objetos. Esta vista es redundante con las otras (y por lo tanto “+1”), pero sirve a dos propósitos principales:

• Como una guía para descubrir elementos arquitectónicos durante el diseño de arquitectura tal como lo describiremos más adelante

• Como un rol de validación e ilustración después de completar el diseño de arquitectura, en el papel y como punto de partido de las pruebas de un prototipo de la arquitectura.


Extraido de: 

http://cic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:modelo4_1.pdf

No hay comentarios:

Publicar un comentario