Métodos de Evaluación de Arquitecturas Software -...

16
CALIDAD DE SISTEMAS DE INFORMACIÓN WEB Introducción a los métodos de evaluación de arquitecturas

Transcript of Métodos de Evaluación de Arquitecturas Software -...

CALIDAD DE SISTEMAS DE INFORMACIÓN WEB

Introducción a los métodos de evaluación de arquitecturas

Contenido de la Sesión Inicial

• Introducción a la evaluación de arquitecturas software

– Arquitecturas software

– Patrones arquitectónicos

– Calidad en Arquitecturas Software

– Evaluación de arquitecturas

• Entrenamiento para el trabajo practico. Métodos de Evaluación de arquitecturas:

– Architectural Tradeoff Analysis Method

– Quality-Driven Architectural Improvement

Evaluación de Arquitecturas Software 2

Arquitecturas

• La arquitectura es a grandes rasgos la partición prudente de un todo en partes, con relaciones específicas entre esas partes

– Esta partición es la que permite a grupos de personas, a menudo separadas por organizaciones, zonas geográficas e incluso zonas horarias trabajar de manera cooperativa y productiva para resolver un problema mucho más grande del que cualquiera de ellos podría resolver individualmente.

Evaluación de Arquitecturas Software 3

Arquitecturas software - Definición - Vistas Arquitectónicas - Lenguajes de Modelado Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Arquitectura Software

• Bass, Clements, y Kazman, 1998: Las arquitecturas software son la estructura o estructuras de un sistema, que comprende los elementos software, las propiedades visibles de esos elementos y sus relaciones. Por “propiedades visibles “ nos referimos a las asunciones que otros componentes pueden hacer acerca de un determinado componente, como los servicios que provee, las características de rendimiento, manejo de errores, uso de recursos compartidos etc. [Bass 98].

• Garlan y Perry, 1995: La estructura de los componentes de un sistema/programa, sus relaciones, principios y guías que rigen su diseño y evolución a lo largo del tiempo [Garlan 95].

4 Evaluación de Arquitecturas Software

Arquitecturas software - Definición - Vistas Arquitectónicas - Lenguajes de Modelado Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Como Modelar Arquitecturas: Vistas Arquitectónicas

• Las arquitecturas software, al igual que se hace con la arquitectura de un edificio, se suelen expresar utilizando diferentes vistas:

– Modular

– Componente Conector

– Despliegue

Evaluación de Arquitecturas Software 5

Arquitecturas software - Definición - Vistas Arquitectónicas - Lenguajes de Modelado Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Lenguajes de Modelado de Arquitecturas

• Se han presentado múltiples notaciones formales y lenguajes para representar arquitecturas:

– UML: Es un estándar para el modelado que puede ser utilizado para la describir arquitectura, aunque sus abstracciones en ocasiones no son el mejor camino para representar una arquitectura.

– SysML: Aunque se trata de un lenguaje de modelado de sistemas (hardware & software), SysML provee de las abstracciones necesarias para especificar las vistas diferentes vistas de la arquitectura.

– AADL: Es un lenguaje de especificación de arquitecturas que provee de una sintaxis textual y un DSL para la descripción de arquitecturas. Permite especificar todas las vistas de la arquitectura así como modelar y analizar otros aspectos relacionados con la calidad de arquitectura como el análisis de fallos o el análisis de tiempo de respuesta.

Evaluación de Arquitecturas Software 6

Arquitecturas software - Definición - Vistas Arquitectónicas - Lenguajes de Modelado Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Patrones Arquitectónicos 1/3

• Patrones arquitectónicos: describen soluciones a problemas comunes y recurrentes en las arquitecturas software. Son un medio de mejorar ciertos atributos de calidad como flexibilidad, modularidad, fiabilidad etc. en el sistema en la arquitectura en la que se aplican.

• Hay ejemplos de patrones para mejorar la mantenibilidad y modularidad de un sistema como pueda ser el patrón de capas

Evaluación de Arquitecturas Software 7

Arquitecturas software Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Product Architecture

Patrones Arquitectónicos 2/3

• Los patrones arquitectónicos se suelen especificar utilizando plantillas:

• La plantilla suele contener:

– Contexto: Contexto en el que se suele aplicar el patrón

– Problema: Problema arquitectónico que resuelve

– Solución (Estructura del patrón): Que cambios va a realizar sobre la arquitectura.

• En algunos casos se especifican mostrando el “antes” y el “después”

– Consecuencias:

• Beneficios: Que nos ayuda a mejorar este patrón

• Carencias: Que nuevos problemas o riesgos puede implicar la aplicación del patrón

Evaluación de Arquitecturas Software 8

Arquitecturas software Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Patrones Arquitectónicos 3/3

• Contexto

– Diseño de aplicaciones que necesitan exponer parte de la funcionalidad o consumir servicios de otras aplicaciones o tener distintos niveles de abstracción

• Problema – En algunos sistemas necesitamos portabilidad a otras plataformas o exportar servicios

del core de nuestra aplicación a otras aplicaciones cliente. – En un sistema en el que los conceptos abstractos de un dominio deben ser

implementados en términos de un dominio mas concreto.

• Estructura del Patrón

• Consecuencias – Mejora la modificabilidad y la adaptabilidad de la aplicación – En algunos casos algunas capas deben ser descompuestas de nuevo en capas para

disminuir su complejidad

9 Evaluación de Arquitecturas Software

Product Architecture

Arquitecturas software Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Calidad en arquitecturas software 1/2

• Las arquitecturas software es el mecanismo que nos permiten asegurar (o alcanzar) determinados atributos de calidad como rendimiento, fiabilidad o seguridad.

• Por ejemplo si en nuestra arquitectura necesitamos prestaciones deberemos:

– Explotar el paralelismo, descomponiendo el trabajo en distintos procesos que pueden ejecutarse en paralelo y cooperar entre ellos

– Mejorar la comunicación entre procesos y las comunicaciones, mejorando el volumen de la red y la frecuencia de acceso a los datos

– Ser capaces de estimar la latencia y el rendimiento – Identificar los cuellos de botella

• Los requisitos de atributos de calidad son las principales guías para el diseño de la arquitectura.

• Además la arquitectura software nos puede ayudar a predecir la calidad del sistema en desarrollo

Evaluación de Arquitecturas Software 10

Arquitecturas software Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Calidad en arquitecturas software 2/2

• La medida en que un sistema alcance sus requisitos de atributos de calidad depende de las decisiones a nivel arquitectónico.

• Las estrategias para alcanzar atributos de calidad son principalmente arquitectónicas, pero es importante entender, que la arquitectura por si sola no puede garantizar la funcionalidad o la calidad.

– Unas decisiones de diseño o implementación incorrectas pueden siempre socavar un buen diseño arquitectónico.

– Decisiones en cualquier fase del ciclo de vida -desde el diseño de alto nivel hasta la codificación e implementación- afectaran a la calidad del sistema. Por ello la calidad no es únicamente función del diseño arquitectónico.

– Para asegurar la calidad, una buena arquitectura es necesaria pero no suficiente.

11 Evaluación de Arquitecturas Software

Arquitecturas software Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Evaluación de arquitecturas software 1/3

• La arquitectura va a permitirnos o no alcanzar determinados atributos de calidad que van a significar el éxito o el fracaso de un proyecto por lo que su evaluación en etapas tempranas es critica.

• Es posible verificar las decisiones arquitectónicas apropiadas sin tener que esperar a que el sistema este desarrollado y desplegado.

– Es decir podremos predecir a priori si el sistema tendrá los atributos de calidad requeridos.

• El objetivo es determinar el grado en que una arquitectura software o un estilo arquitectónico satisface los requisitos de calidad requeridos.

• En algunos casos ha permitido el ahorro de sumas millonarias al detectar que el sistema en desarrollo no podría alcanzar los requisitos de calidad necesarios y se abandonó el proyecto cuando aun se estaba a tiempo.

12 Evaluación de Arquitecturas Software

Arquitecturas software Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Evaluación de arquitecturas software 2/3

• Deberemos asegurarnos que la arquitectura seleccionada en un proyecto software es la adecuada para nuestras necesidades – Si las decisiones arquitectónicas determinan los atributos de calidad

del sistema, entonces debemos evaluar estas decisiones en relación a su impacto en estos atributos de calidad.

• Cuanto antes encontremos un problema en un proyecto software mas barato será corregirlo – Si predecimos los impactos de una decisión de diseño y escogemos

la opción adecuada para nuestro proyecto vamos a abaratar el proyecto y a obtener exactamente la arquitectura que necesitamos.

• El mero hecho de llevar a cabo una evaluación de la arquitectura fuerza a los arquitectos y desarrolladores a documentar, analizar y entender la arquitectura.

Evaluación de Arquitecturas Software 13

Arquitecturas software Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Evaluación de Arquitecturas Software 3/3

• Se han definido en los últimos años distintos métodos de evaluación de arquitecturas como el ATAM, SAAM, QuaDAI o ARID.

– Vamos a analizar con mas profundidad con ATAM y QuaDAI

14 Evaluación de Arquitecturas Software

Arquitecturas software Patrones arquitectónicos Calidad en Arquitecturas Software Evaluación de arquitecturas

Bibliografia

• Bass, L., Clements, P., Kazman, R.: Software Architecture in Practice, 2nd Edition, Addison-Wesley Professional (2003)

• Clements, P., Bachmann, F., Bass, L., Garlan, D., Ivers, J., Little, R., Merson, P., Nord, R., Stafford, J.: Documenting Software Architectures: Views and Beyond Addison-Wesley, Boston (2010)

• Clements, P., Kazman, R., Klein, M.: Evaluating Software Architecures, Methods and Case Studies.

15 Evaluación de Arquitecturas Software

CALIDAD DE SISTEMAS DE INFORMACIÓN WEB

Introducción a los métodos de evaluación de arquitecturas