A continuación se explica muy brevemente los temas relacionados a recuperación de arquitectura en líneas de productos software, si bien son 3 temas muy amplios, se hace una descripción general y se plantea en ellos un nuevo enfoque para lograr una recuperación de la arquitectura desde la parte colaborativa. Hay muchas cosas que se han mejorado, pero esta es la primera experiencia o acercamiento que se tiene. https://www.youtube.com/watch?v=klxg6xlU8R0
Participación en simposio IV jornadas Iberoamericanas de HCI
1. Un enfoque colaborativo para la
recuperación de la arquitectura de
referencia en Líneas de Producto Software
IV Jornadas Iberoamericanas de HCI
UNIVERSIDAD DEL CAUCA
MAESTRÍA EN COMPUTACIÓN
- IDIS -
Alejandro Bolaños Ussa
Advisor
PhD. Julio Ariel Hurtado
Advisor
PhD(c). Marta Cecilia Camacho
2. Agenda
Líneas de Producto Software. ¿Qué es una SPL? Ventajas, dificultades y alcance (Scoping) 3
Arquitectura del Software. ¿Qué es S.A? Documentación y vistas 6
Arquitectura en líneas de Productos Software – PLA 7
Recuperación de Arquitectura Software – SAR 8
Planteamiento del Problema: Cómo recuperar una Arquitectura de Software? Código fuente,
dinámico y resultados.
9
Objetivo: Lograr un enfoque de colaboración para recuperar una Arquitectura de Referencia 12
Trabajo relacionado 13
Enfoque Colaborativo 14
Metodología de investigación – Progresos y resultados esperados 15
Referencias 17
¿Preguntas? 19
2
3. Líneas de Producto Software
Es un conjunto de sistemas intensivos en
software que comparten un conjunto común
de características administradas que
satisfacen las necesidades específicas de un
segmento de mercado o misión particular y
que se desarrollan a partir de un conjunto
común de activos centrales de una manera
determinada[Clements, 2002]
3
4. Ventajas
Disminución del tiempo de
comercialización
Aumento de la calidad del
producto
Ganancia de productividad
Satisfacción del cliente
4
Requerimientos
Arquitecturas
Componentes
Pruebas
Procesos y
Personas
5. SCOPING
Definición del alcance en SPL –(scoping)
Es una descripción de los productos que
constituirán la línea de productos. En su forma
más simple, el alcance puede consistir en una
lista enumerada de nombres de productos.
Su alcance debe definirse cuidadosamente, este
evoluciona a medida que cambian las
condiciones del mercado.
Arquitectura de Referencia en SPL = {A ∩ B ∩ C ∩ D ∩ E}
5
6. Arquitectura Software- SA
• “Las estructuras de un sistema,
compuestas de elementos con
propiedades visibles de forma
externa y las relaciones que existen
entre ellos.”[L. Bass, P. Clements, R.
Kazman]
• La manera en que se estructura un
sistema permitirá o impedirá que se
satisfagan los atributos de calidad.
6
7. Arquitectura en Líneas de Producto - PLA 7
Rationale-Decisiones
Patrones Arquitectónicos
Patrones de diseño
Atributos de Calidad
Componentes variables Componentes reutilizables
8. Recuperación de la Arquitectura Software -
SAR
• La recuperación de la arquitectura de software (SAR) implica la
extracción de información arquitectónicamente relevante de un
sistema software, la abstracción y la descripción de la
arquitectura recuperada.
8
SAR
Módulos,
componentes,
patrones, decisiones,
atributos de calidad.
Desconocimiento del
sistema
9. Planteamiento del problema
• Existen varias propuestas de recuperación de arquitectura tal como se
definen Koznov y Romanovsky [4], que son el análisis del código fuente,
métodos formales, entre otros. Sin embargo, los métodos poseen un
punto débil como lo es la sincronización y/o coherencia entre el código,
el conocimiento, el dominio y el modelo recuperado, ya que son poco
efectivos en ambientes que evolucionan activamente
• En el caso de las líneas de productos, existen las siguientes propuestas:
Crescencio Lima [14], inicialmente propone en un enfoque para
recuperar PLA basado en el uso y la adaptación de técnicas y
herramientas para la recuperación de arquitectura software.
• Lima y Santana [15], establecen que las PLA es la arquitectura principal
en todos los productos pertenecientes a una línea.
9
11. Pregunta de investigación
• ¿Cómo recuperar una arquitectura de referencia para una
organización a partir de los productos, componentes, documentos
y personal involucrado en la construcción de productos previos,
considerando el alcance identificado para la SPL que será
desarrollada, y cuya principal fuente sean los stakeholders?
11
12. Objetivos 12
Proponer un enfoque colaborativo para la recuperación de
arquitectura de referencia en líneas de productos software
planteadas a partir de productos previamente construidos.
Establecer las técnicas o métodos
utilizados en las experiencias SAR en
el contexto de la construcción de
SPL, de especificación del rationale
arquitectónico y del trabajo
colaborativo en la ingeniería de
software.
Seleccionar y adaptar un método de
recuperación de arquitecturas y su
rationale, en el contexto de
construcción de una SPL a través de
la incorporación de aspectos de
trabajo colaborativo.
Evaluar el método de recuperación
de la arquitectura de referencia
propuesto a través de la comprensión
del producto a nivel arquitectural y
la integralidad del conocimiento
arquitectónico con el alcance de la
SPL en un estudio de caso práctico
13. Trabajo relacionado
SAR
SAR for
Product
Families
Evolution in
Software
Product
Lines
PLAR: an
approach
proposal
Experiences
with using
the
systematic
method for
SAR
Cost-Effective
Traceability
Links for
Architecture
Level Software
Understanding
Evidence for
Understanding
the
Relationship
between
PLA_SAR
Método de
recuperación
de la
arquitectura
EVAR
13
Enfoque
colaborativo
15. Metodología 15
Mario
Bundge,
2002
Kitchenha
m, 2004
Henderson-
Sellers, 2014
•Planteamiento del problema
•Reconocimiento de los hechos
•Análisis
Fase 1
•Selección de los factores pertinentes
Definición de las hipótesis
•Selección del método de recuperación de la
arquitectura de referencia
Fase 2
• Caracterización de los métodos de mejora y de
los elementos a emplear
• Construcción de la propuesta de mejora del
método de recuperación
Fase 3
•Evaluación de la propuesta de mejora.
Fase 4
•Introducción de las conclusiones en la teoría
•Confrontación de los resultadosFase 5
16. Progreso, resultados esperados
Review of
the literature
Review of
recovery tools
and methods
Selection of
tools and
method for
architectural
recovery
Termination
of the
Scientific
Article, a
review of the
literature
Case study
design for
architecture
recovery
(single). A
practical
case
Application
and execution
of the case
study
Case study
design, for
the
validation of
SAR + SPL +
Collaborative
Approach
Application
and execution
of the case
study
Report with
the results
obtained from
the execution
of the case
study
Evaluation,
Analysis and
Publication of
research
results
16
17. Referencias
• L. Bass, P. Clements, R. Kazman, Software Architecture in Practice, 2nd Edition, Addison
Wesley, 2003
• [1] A. E. Hassan y R. C. Holt, «Architecture recovery of Web applications,» Software
Engineering, International Conference, pp. 349-366, 2002.
• [2] J. Tahuiton Mora, «Arquitectura de software para aplicaciones Web,» México D.F., 2011.
• [3] E. Albassam, H. Gomaa, and D. A. Menascé, “Variable Recovery and Adaptation Connectors
for Dynamic Software Product Lines.”
• [4] D. Koznov, K. Romanovsky y A. Nikitin, «A Method for Recovery and Maintenance of
Software Architecture».
• [5] M. Pinzger, H. Gall, J.-F. Girard, J. Knodel, C. Riva, W. Pasman, C. Broerse y J. G.
Wijnstra, «Architecture Recovery for Product Families,» pp. 332 - 351, 2003.
• [6] I. Pashov y M. Riebisch, «Using feature modeling for program comprehension and software
architecture recovery,» Engineering of Computer-Based Systems, 2004. Proceedings. 11th IEEE
International Conference and Workshop on the, pp. 406-417, 2004
17
18. Referencias
• [7] F. Ahmed y L. F. Capretz, «The software product line architecture: An empirical investigation of key process activities,» Information and
Software Technology, vol. 50, nº 1, p. 1.098 a 1.113, 2008.
• [8] M. Svahnberg y E. Bosch, «Evolution in software product lines: Two cases,» Journal of Software Maintenance: Research and Practice, vol. 11,
nº 6, pp. 391-422, 1999.
• [9] F. Solms, “Experiences with using the Systematic Method for Architecture Recovery (SyMAR),” ACM Int. Conf. Proceeding Ser., pp. 170–178,
2013.
• [10] M. A. Javed, S. Stevanetic, and U. Zdun, “Cost-effective traceability links for architecture-level software understanding: A controlled
experiment,” ACM Int. Conf. Proceeding Ser., vol. 28–Septemb, pp. 69–73, 2015.
• [11] C. R. L. Neto, M. P. S. Cardoso, C. von F. G. Chavez, and E. S. de Almeida, “Initial Evidence for Understanding the Relationship between
Product Line Architecture and Software Architecture Recovery,” in 2015 IX Brazilian Symposium on Components, Architectures and Reuse
Software, 2015, pp. 40–49.
• [12] Y. A. Ordoñez Guzmán y E. A. Giraldo Muñoz, «Método de recuperación de arquitecturas basado en la focalización evaluativa y la
visualización de software: un estudio de caso en una pequeña organizacion de software,» 2016.
• [13] C. &. Northrop, Software Product Lines: Practices and Patterns: Practices and Patterns, 2002.
• [14] C. Lima, «Product line architecture recovery: An approach proposal (extended abstract),» IEEE International Conference on Software
Engineering Companion Product, 2017
• [15] C. Lima, E. Santana de Almeida, M. P. Soares Cardoso, C. v. F. G. Chavez y I. d. C. Machado, «Investigating the Variability Impact on the
Recovery of Soſtware Product Line Architectures: An Exploratory Study,» ACM Press, pp. 1-, 2017.
18
19. Un enfoque colaborativo para la
recuperación de la arquitectura de
referencia en Líneas de Producto Software
IV Jornadas Iberoamericanas de HCI
¿PREGUNTAS?
UNIVERSIDAD DEL CAUCA
MAESTRÍA EN COMPUTACIÓN
- IDIS -
Alejandro Bolaños Ussa
Advisor
PhD. Julio Ariel Hurtado
Advisor
PhD(c). Marta Cecilia Camacho
QUE NO ES:
Reutilizar piezas de grano pequeño
Todos los activos están diseñados para ser reutilizados y están optimizados para su uso en más de un sistema. La reutilización con líneas de productos de software es completa, planificada y rentable
Desarrollar un solo sistema con reutilización
Si tenemos un producto uno, y reutilizamos para crear un producto dos, tenemos dos productos diferentes. Pero no dos productos de una línea. En primer lugar, las líneas de productos de software reutilizan los activos que fueron diseñados explícitamente para su reutilización. En segundo lugar, la línea de productos se trata como un todo, no como productos múltiples que se ven y mantienen por separado. La línea de producto es por lo tanto, la agrupación de los activos principales que son la principal razón del producto u organización.
Desarrollar basado en componentes o basado en servicios
Las líneas de productos de software dependen de una forma de desarrollo basado en componentes (o basado en el servicio), pero se trata de mucho más. Aunque los productos en las líneas de productos de software ciertamente están compuestos de componentes, algunos de los cuales pueden ser servicios web, estos componentes están especificados por la arquitectura de línea de producto
Solo una arquitectura reconfigurable
Una arquitectura de línea de producto está diseñada para admitir la variación que necesitan los productos en la línea de productos, por lo que es reconfigurable. Sin embargo, la arquitectura de línea de productos es solo un activo, aunque importante, en la base de activos básicos de la línea de productos.
Liberaciones y versiones de productos individuales
Primero, una línea de productos tiene múltiples productos simultáneos, todos los cuales están pasando por sus propios ciclos de lanzamiento y versionamiento simultáneamente. Por lo tanto, la evolución de un solo producto debe considerarse dentro de un contexto más amplio, a saber, la evolución de la línea. Pero en una línea de productos, una versión temprana de un producto que todavía se considera que tiene potencial de mercado puede mantenerse fácilmente como un miembro viable de la familia: es, después de todo, una instancia de los activos centrales, al igual que otras versiones de otros productos
Solo un conjunto de estándares técnicos
Los estándares técnicos son restricciones para promover la interoperabilidad y disminuir el costo asociado con el mantenimiento y soporte de componentes comerciales. Una organización que emprende un esfuerzo de línea de productos puede tener tales estándares técnicos, en cuyo caso la arquitectura de la línea de productos y los componentes deberán cumplir con dichos estándares. Sin embargo, los estándares son simplemente restricciones que se ingresan a la línea de productos de software, no más.
Un enfoque de línea de productos de software brinda opciones para futuras oportunidades de mercado
Requisitos reutilizables
Los objetivos de calidad para un sistema -su rendimiento, confiabilidad, capacidad de modificación, etc.- están ampliamente permitidos o descartados una vez que la arquitectura está en su lugar. La arquitectura de línea de producto se usa para cada producto y solo necesita ser instanciada. Se ahorra tiempo y riesgo considerables.
Componentes: la arquitectura de línea de producto proporciona especificaciones de componentes para todos los componentes no únicos que pueden ser necesario
Con cada nuevo producto, existe una confianza extremadamente alta de que los problemas de temporización se han resuelto y que los errores asociados con la computación distribuida
Ya se han creado los planes genéricos de pruebas. Estos artefactos de prueba solo se deben adaptar en función de las variaciones relacionadas con el producto.
Los presupuestos de línea de base y los cronogramas de proyectos previos de desarrollo de productos ya existen y proporcionan una base confiable para los planes de trabajo del producto
Los procesos ya están definidos y sólo es necesario reutilizarlos.
Personas: se requieren menos personas para construir productos, y las personas se transfieren más fácilmente a través de toda la línea
“Elementos” dentro de la definición del SEI es vago a propósito, pues puede referirse a distintas entidades relacionadas con el sistema
Los difrentes productos tienen definido una arquitectura, pero es una instancia de la arquitectura principal, el cuál contiene una serie de variaciones.
Los productos en una línea de productos de software existen simultáneamente y pueden variar entre sí en términos de comportamiento, atributos de calidad, plataforma, red, configuración física, middleware y factores de escala, y en una multitud de otras formas
Existe durante el ciclo de vida de los productos
Varía relativamente poco
Generalmente la arquitectura está basada en los atributos de calidad (ADD – Diseño controlado por atributos [SEI]): Es un método de descomposición
Elige controladores arquitectónicos
Elige Patrones y tipos de componentes secundarios.
Crear instancia de elementos
Identificar puntos comunes
Validar descomposición
Refinar los CU y escenarios
Un patrón de arquitectura5 es una descripción de los tipos de componentes y una pauta de su control de tiempo de ejecución y / o transferencia de datos [Shaw 1996a]
SAR: es fundamental para el mantenimiento de una sola aplicación, ya que según Gomaa [3] una arquitectura de línea de producto (PLA) es una arquitectura para una familia de productos, el cual describe los componentes obligatorios, opcionales y variables de la línea.
De esta manera la combinación de SAR con PLA es parte fundamental para mantener actualizados y sincronizados los activos de un sistema dentro de la línea (Gomaa).
La recuperación de la arquitectura es fundamental para el mantenimiento de una sola aplicación, ya que según Gamaa una arquitectura de línea de producto (PLA) es una arquitectura para una familia de productos, el cual describe los componentes obligatorios, opcionales y variables de la línea.
De esta manera la combinación de SAR con PLA es parte fundamental para mantener actualizados y sincronizados los activos de un sistema dentro de la línea
A- Se define un proceso de construcción de familia de productos a través de una exploración de sistemas sobre productos que pertenecen a un dominio en particular
B- Presentan una propuesta inicial que consiste en un enfoque para recuperar PLA basado en el uso y la adaptación de técnicas y herramientas para la recuperación de arquitectura software en sistemas únicos de abajo hacia arriba (ascendente)
C- Presentan una directrices para facilitar la evolución de los activos pertenecientes a un línea de productos, Se identificaron categorías de esta evolución en requisitos, arquitectura y componentes software analizando las relaciones entre estas categorías
D- Definen un método iterativo en cual permite la descripción arquitectónica resultante incluye la identificación de componentes arquitectónicos que abordan problemas no funcionales
E- Integra como parte fundamental las actividades humana. Presentan herramientas para automatizar la recuperación del software por medio de métodos automáticos.
F- Recopila datos y evidencias sobre la relación entre la arquitectura de la línea de productos y la recuperación de la arquitectura de software. La intención es comprender la relación entre la recuperación de la arquitectura de software y las arquitecturas de línea de productos.
G-Realizan un análisis de las diferentes técnicas, herramientas, métodos de evaluación de arquitectura haciendo un enfoque en la visualización y la facilidad para la recuperación a partir del conocimiento implícito de los participantes.