Líneas de Producto de Software – Arquitectura de la línea de producto (SPLA) Rubby Casallas Departamento de Sistemas y Computación Universidad de los Andes, Bogotá Referencias Capítulo 6, 11. [Pohl 2010] Pohl K., Böckle G., van der Linden F., Requirements Engineering Fundamentals, Principles, and Techniques. Berlin. Springer, 2010 [Northrop 2007] Linda M. Northrop, Paul C. Clements. A Framework for Software Product Line Practice, Version 5.0. 2007. ETXEBERRIA, Leire; SAGARDUI, Goiuria and BELATEGI, Lorea. Quality aware software product line engineering. J. Braz. Comp. Soc. [online]. 2008, vol.14, n.1 [cited 2011-08-23], pp. 57-69 . Agenda Diseño a nivel de dominio Requerimientos de calidad SPLA Técnicas básicas de variabilidad a nivel de la arquitectura Diseño a nivel de dominio Tomado de: Capítulo 11. [Pohl 2010] Pohl K., Böckle G., van der Linden F., Requirements Engineering - Fundamentals, Principles, and Techniques. Berlin. Springer, 2010 Actividades tradicionales Abstraer Modelar Simular Prototipar Validar Requerimientos de calidad Atributos de calidad de la línea de producto: Modificability: permitir variación o evolución en el tiempo Configurability: considerar variaciones en el espacio de productos Atributos de calidad relevantes al dominio : Safety, performance, … ETXEBERRIA, Leire; SAGARDUI, Goiuria and BELATEGI, Lorea. Quality aware software product line engineering. J. Braz. Comp. Soc. [online]. 2008, vol.14, n.1 [cited 2011-08-23], pp. 57-69 . Available from: <http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0104-65002008000100006&lng=en&nrm=iso>. ISSN 0104-6500. Quality aware software product line engineering ETXEBERRIA, Leire; SAGARDUI, Goiuria and BELATEGI, Lorea. Quality aware software product line engineering. J. Braz. Comp. Soc. [online]. 2008, vol.14, n.1 [cited 2011-08-23], pp. 57-69 . Available from: <http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0104-65002008000100006&lng=en&nrm=iso>. ISSN 0104-6500. Quality aware software product line engineering Diferentes miembros de la línea pueden tener variaciones en los atributos de calidad Opcional Niveles diferentes Impacto de componentes funcionales sobre atributos de calidad ETXEBERRIA, Leire; SAGARDUI, Goiuria and BELATEGI, Lorea. Quality aware software product line engineering. J. Braz. Comp. Soc. [online]. 2008, vol.14, n.1 [cited 2011-08-23], pp. 57-69 . Available from: <http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0104-65002008000100006&lng=en&nrm=iso>. ISSN 0104-6500. Arquitectura de la línea de producto (SPLA) En el contexto de una línea de producto se necesita construir: Arquitectura de referencia (conjunto de estructuras y “textura” reglas y restricciones arquitecturales) Una biblioteca de componentes reutilizables Un método de configuración para seleccionar y configurar componentes para “derivar” una aplicación particular Arquitectura de referencia La arquitectura de referencia será la guía para la construcción de los productos de la línea Cuándo es le momento adecuado para desarrollar la arquitectura? Desarrollo prematuro es altamente arriesgado sino hay aun un buen entendimiento del dominio y alcance de la línea Desarrollo tardío puede perder flexibilidad Una buena táctica es adoptar un enfoque incremental Arquitectura de referencia (cont.) Retos: El arquitecto tiene que tener en cuenta diversos productos al mismo tiempo Comunicar con muchos stakeholders Puede haber conflictos entre los requerimientos de los distintos productos Resolver los puntos de variabilidad identificados Técnicas básicas de variabilidad a nivel de la arquitectura (vista funcional) Tomado de: Capítulo 3: Linden, Frank J. van der, Schmid, Klaus, Rommes, Eelco. Software Product Lines in Action. Springer. 2007 Adaptación Solo hay una implementación disponible para el componente pero este tiene formas de configurarlos a través de su interfaz Remplazo Existen muchas implementaciones para un componente Todas son conformes con el contrato con la arquitectura Cambia su implementación Una implementación es seleccionada por producto Extensión La arquitectura debe proveer interfaces para permitir adicionar nuevos componentes Extensión