Debater sobre o conteúdo do paper intitulado "Implementing Product Line Variabilities" que discute implementação de variabilidades em linhas de produto de software. Apresenta trabalhos relacionados, requisitos para suporte à implementação, tipos de variabilidade, comparação de abordagens de implementação e critérios de avaliação.
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
Implementing Product Line Variabilities - Presentation
1. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Implementing Product Line Variabilities
Implementação de Variabilidades em Linhas de Produto de Software
Michel Alves dos Santos :: Ailton Felix de Lima Filho
Universidade Federal de Alagoas, Campus A. C. Simões
Tabuleiro do Martins - Maceió - AL, CEP: 57072-970
Docente Responsável: Prof. Dr. Arturo Hernández
{michel.mas,afdlf2}@gmail.com
08 de Outubro de 2012
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
2. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Introdução
Principais Objetivos da Apresentação
Implementing Product Line Variabilities
Michalis Anastasopoulos
Fraunhofer Institute for
Experimental Software Engineering
Sauerwiesen 6
D-67661 Kaiserslautern, Germany
+49 (0) 6301 707 168
anastaso@iese.fhg.de
ABSTRACT
Software product lines have numerous members. Thus, a product line
infrastructure must cover various systems. This is the significant
difference to usual software systems and the reason for additional
requirements on the various assets present during software product
line engineering. It is imperative that they support the description of
the product line as a whole, as well as its instantiation for the
derivation of individual products.
Literature has already addressed how to create and instantiate generic
product line assets, such as domain models and architectures to
generate instance specific ones [1, 2, 3], yet little attention has been
given on how to actually deal with this genericity at the code level.
This paper addresses the issue of handling product line variability at
the code level. To this end various implementation approaches are
examined with respect to their use in a product line context.
Keywords
Software product lines, product line variability, implementation
approaches, implementing variabilities, traceability
1. INTRODUCTION
Software product lines have numerous members. Thus, a product line
infrastructure must cover various systems. This is the significant
difference to usual software systems and the reason for additional
requirements on the various assets present during software product
line engineering. It is imperative that they support the description of
the product line as a whole, as well as its instantiation for the
derivation of individual products.
To reflect a product line, the generic assets have to cover all elements
the product family is built from, and their corresponding composition
rules. Clarifying how the various parts may be combined is a very
challenging task.
Generic assets differ from specific ones in the fact that they embrace
common and variable product aspects. Generic assets can be
instantiated, that is, product-specific assets can be derived from them.
Specific assets on the other hand are uniquely mapped to product line
members.
Products within a product line context consist of constant as well as
variable elements. Dependencies between these elements do exist
(e.g., elements may exclude each other or one element may make the
integration of a second one a necessity). Hence only a subset of all
combinations are correct and complete configurations. Therefore we
have to restrict the product line infrastructure to cover only the set of
valid family members.
A decision model structures the variability within a product line as a
set of decisions to be resolved. Interrelations between decisions are
captured as well. Such a model is also generic, that is, it can be also
instantiated. In the instance all decisions are resolved. Every diversity
in each generic asset must be connected to an open
decision in the decision model. The presence of a decision model is
important because a decision model specifies an instance of each
generic asset and thus a complete product line member.
Literature has already addressed how to create and instantiate generic
product line assets, such as domain models and architectures to
generate instance specific ones [1, 2, 3], yet little attention has been
given on how to actually deal with this genericity at the code level.
Variabilities and their composition rules must also be reflected at the
code level, and be instantiated when creating individual product
instances.
This paper addresses the issue of handling product line variability at
the code level. To this end various implementation approaches are
examined with respect to their use in a product line context. The rest
of this paper is structured as follows: section 2 introduces some of the
relevant related work, this is followed by a discussion on the types of
variabilities to be supported and the requirements for their
implementation support (section 3), we then introduce our framework
for comparison of implementation approaches (section 4), present
some examples of the techniques discussed (section 5), and briefly
discuss evaluation criteria needed for implementation techniques
(section 6). Section 7 comments on some of our practical experience
and section 8 concludes the paper with a short discussion of the
various research needs we have been able to elicit so far.
It should be noted that this paper’s purpose is not to impart profound
insights into the technologies but only to report on the possibilities of
their use for handling code variabilities in a product line. Finally we
must mention that the set of approaches presented here is not
complete. We are certain that other approaches may also be
advantageous in this context. We believe though that their majority
bears upon the collection introduced here.
2. RELATED WORK
James Coplien in his book “Multi-Paradigm Design for C++” [4]
presents a design method that takes advantage of the popular
programming language’s support for multiple paradigms, such as
classes, over-loaded functions, templates, modules, and procedural
programming. Each of those paradigms is described as being uniquely
suitable for solving a specific class of design problems. This
conclusion is particularly important for product line engineering
because the book has a strong focus on problems related to the
realization of commonalities and variabilities.
David Sharp has studied [5] existing object oriented techniques that
facilitate anticipated variabilities between different software versions.
Parameters of variations, which refer to the different aspects of
software that can vary, are being initially identified. Tailoring
techniques featured by languages like C++ and Ada95 are described
next. Each technique is categorized with respect to the supported
combinations of variabilities for each parameter of variation. Scope,
1 This work was done while the author was working for the IESE
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that
copies bear this notice and the full citation on the first page. To copy
otherwise, or republish, to post on servers or to redistribute to lists,
requires prior specific permission and/or a fee.
SSR’01, May 18-20, 2001, Toronto, Ontario, Canada.
Copyright 2001 ACM 1-58113-358-8/01/0005...$5.00.
Cristina Gacek1
Centre for Software Reliability
Department of Computing Science
University of Newcastle
NE1 7RU Newcastle upon Tyne, United Kingdom
+44 (0) 191 222 5153
cristina.gacek@ncl.ac.uk
109
Debater sobre o conteúdo do paper
intitulado Implementing Product
Line Variabilities (Autores: M.
Anastasopoulos and C. Gacek.).
Comentar a respeito de alguns
trabalhos relacionados ao tema.
Debater sobre os requerimentos
necessários a implementação da
técnica.
Analisar os tipos mais comuns (e
largamente aceitos) de Variabilidade.
Apresentar uma comparação de
abordagens de implementação e
alguns critérios de avaliação.
O que entendemos por Variabilidade?
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
3. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Trabalhos Relacionados
Apanhado de Trabalhos Relacionados
James Coplien, Multi-Paradigm Design for C++, Addison Wesley, 1995
David C. Sharp, “Containing and Facilitating Change Via Object Oriented
Tailoring Techniques,” to appear in Proceedings of The First Software
Product Line Conference Denver, Colorado, August, 2000
Mikael Svahnberg, Variability in Evolving Software Product Lines,
Licentiate thesis, Blekinge Institute of Technology, Department of
Software Engineering and Computer Science, Karlskrona, Sweden, 2000
Jilles Van Gurp, Jan Bosch, and Mikael Svahnberg. On the Notion of
Variability in Software Product Lines. In Proceedings of the Working
IEEE/IFIP Conference on Software Architecture (WICSA’01), 2001.
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
4. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Requerimentos
Requerimentos para Suporte a Implementação
Figure: Visão geral dos tipos de feature e critérios de inclusão em uma linha de produto.
Toda variabilidade encontrada em um contexto de linha de produto pode ser conectada a sua
feature correspondente. A relação entre feature e variabilidade é de 1:N, pois a implementação
da mesma geralmente se encontra espalhada pelos aquivos fontes e módulos.
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
5. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Tipos de Variabilidade
Categorização dos Tipos de Variabilidade
Classificação em Tempo de Resolução (Binding Time)
Em tempo de compilação (Compile-time), em tempo de ligação (Link-time), em tempo de
execução (Runtime) e em tempo de atualização (Update-time/Post-runtime).
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
6. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Comparação de Abordagens de Implementação
Abordagens para Implementação de Variabilidade
Figure: Matriz de comparação de abordagens de implementação de variabilidade.
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
7. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Comparação de Abordagens - Mapeamento das Linguagens
Mapeamento das Linguagens Usadas na Exemplificação
Figure: Mapeamento de abordagens nas linguagens: C++, Delphi, Java e Smalltalk.
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
8. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Exemplos - Delegação, Compilação Condicional e Design Patterns
Utilizando Delegação, Compilação Condicional e Design Patterns
Figure: Utilização de Delegação, Compilação Condicional e Design Patterns.
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
9. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Avaliação da Variabilidade
Critérios de Avaliação na Implementação de Técnicas
No artigo são identificados três tipos de critérios:
Critérios Fundamentais de Comparação e
Avaliação
Critérios Extendidos de Comparação e
Avaliação
Elementos Primitivos Existentes em
Linguagens
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
10. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Avaliação da Variabilidade - Critérios Fundamentais
Critérios de Avaliação na Implementação de Técnicas
Critérios Fundamentais de Comparação e Avaliação
Escopo: Identifica a menor unidade de integração suportada.
Flexibilidade: Medida do tempo de integração.
Eficiência: Custo de suporte da integrabilidade.
Compatibilidade Binária: Medida de compatibilidade com
bibliotecas pré-compiladas.
Tal lista é extendida pelos autores através de mais sete
atributos chamados de critérios extendidos.
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
11. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Avaliação da Variabilidade - Critérios Extendidos
Critérios de Avaliação na Implementação de Técnicas
Critérios Extendidos de Comparação e Avaliação
Separação de Lógica: Partes variantes e invariantes de código.
Escalabilidade: Impactos na expansão do código.
Rastreamento Realizável: Capacidade de rastrear uma unidade de integração.
Facilidade de Introdução: Grau de reestruturação requerida dos sistemas
quando ocorre a introdução da técnica.
Suporte em Linguagem: Forma com as linguagens existentes podem usufruir
da técnica.
Suporte a Ferramentas: Automação no uso das técnicas.
Facilidade de Contorno: Simulação ou emulação através de outras técnicas.
Outro aspecto interessante que deve ser levado em consideração no momento da
avaliação é a descoberta de elementos primitivos da linguagem.
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
12. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Avaliação da Variabilidade - Elementos Primitivos
Critérios de Avaliação na Implementação de Técnicas
Elementos Primitivos Existentes em Linguagens
Adição de Níveis de Indireção: Técnicas como delegation. Pode causar
impactos na eficiência pois toda uma classe deve ser carregada antes da
invocação de um método.
Ligação Tardia (Late Binding): Utilizada nos mecanismos de herança virtual,
ligando código de um método a sua declaração em tempo de execução.
Ligação Precoce (Early Binding): Manutenção de informação estática.
Utilizada em bibliotecas de tipo. Mais rápido que a ligação tardia.
Tipos Abstratos: Classes Abstratas são um exemplo. Definem funcionalidade
sem implementação que geralmente é fornecido em subclasses. Criam
interfaces comuns para acesso as instâncias e reduzem o acoplamento em
pontos de variabilidade.
Mecanismos de Composição: Usados para implementar aspectos dos sistemas
separadamente e depois combiná-los para obtenção do sistema final.
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
13. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Conclusões
Conclusões a Respeito dos Tópicos Apresentados
O Gerenciamento Sistemático de Variabilidade a nível de código é um campo
um tanto imaturo, necessitando de mais esforços científico-investigativos.
A migração de sistemas com fraco gerenciamento de variabilidade para
sistemas que possuem intenso suporte a essa modalidade pode se tornar
uma tarefa árida.
Diferentes abordagens são necessárias para a resolução de diferentes
problemas, a combinação das técnicas hoje disponíveis é algo que não
pode ser evitado.
Mais trabalhos nessa área necessitam ser
realizados!
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
14. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Agradecimentos
Grato Pela Atenção!
Michel Alves dos Santos - michel.mas@gmail.com
Ailton Felix de Lima Filho - afdlf2@gmail.com
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL
15. Universidade Federal de Alagoas - UFAL - Campus A. C. Simões - Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 - Instituto de Computação (IC)
Implementing Product Line Variabilities :: Implementação de Variabilidades em Linhas de Produto de Software :: Seminário :: Prof. Arturo Hernández
Referências Bibliográficas
Referências Bibliográficas
M. Anastasopoulos and C. Gacek.
Implementing product line variabilities.
IESE - International Encounter of Systems Engineering, May 2001.
M. Anastasopoulos, J. Bayer, O. Flege, and C. Gacek.
A process for product line architecture creation and evaluation.
Technical report, IESE, 2000.
E. Gamma.
Design Patterns: Elements of Reusable Object-Oriented Software.
Addison-Wesley, 1994.
O. Lewis.
Performance Issues Of Variability Design in Embedded System Application Families.
PhD thesis, November 2000.
M. Svahnberg.
Variability in envolving software product lines.
Master’s thesis, Blekinge Institute of Technology, Departament of Software Engineering and
Computer Science, Karlskrona , Sweden, 2000.
Michel Alves • Ailton Felix : Bacharelado em Ciência da Computação Instituto de Computação - Bloco 12 - Campus A. C. Simões - UFAL