Este documento apresenta um estudo sobre gerenciamento de variabilidades em linhas de processo de software. Ele propõe uma abordagem chamada SMartySPEM que combina as abordagens SMarty e SPEM 2.0 para representar variabilidades em linhas de processo utilizando a notação UML. O documento também descreve uma revisão sistemática realizada sobre o tema e apresenta um exemplo de aplicação da abordagem proposta.
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE
1. UM ESTUDO SOBRE GERENCIAMENTO DE
VARIABLIDADES EM LINHAS DE PROCESSO DE
SOFTWARE
Trabalho de Conclusão de Curso - TCC 2012
Acadêmico: Maicon Giovane Pazin
Orientador: Prof. Dr. Edson A. Oliveira Junior
2. Tópicos
• Motivação
• Objetivos
• Revisão Bibliográfica
• Revisão Sistemática
• Proposta de Abordagem
• Exemplo de Aplicação da Abordagem
• Próximos Passos
3. Motivação
• Demanda crescente pela definição e melhoria contínua
de processos para promover o desenvolvimento
produtivo de software de qualidade.
• Demanda pela rápida e efetiva customização de
processos de software atuais para endereçar a
variedade de projetos, tecnologias, cultura e escala
existentes.
4. Motivação
• Evolução da área de processos de software:
o Modelos de maturidade: CMMi, MPS.BR, PMBok
o Frameworks de processos: EPF, RUP
o Metodologias e práticas agéis: UP, Scrum, XP
• Existência de inúmeras informações, técnicas e
mecanismos que auxiliam na definição e avaliação de
processos de software.
5. Objetivos
• Realizar uma revisão sistemática sobre gerenciamento
de variabilidade em LPS.
• Identificar e analisar as abordagens recuperadas mais
relevantes.
• Estender uma abordagem para gerenciamento de
variabilidade em LPS utilizando técnicas e ferramentas
apoiadas pela notação UML
• Apresentar um exemplo de aplicação da abordagem
proposta.
• Analisar os resultados obtidos.
6. Linha de Produto de
Software
• Conjunto de sistemas de softwares em um domínio que
compartilham funcionalidades comuns e variáveis.
• Reúso sistemático de artefatos em nível de código e de
projeto: features, arquitetura, componentes, etc.
• Vantagens: Produtividade, Custos, Tempo, Risco e
Qualidade do Produto.
7. Linha de Produto de
Software
• Atividades Essenciais:
1. Desenvolvimento do Núcleo de Artefatos
(Engenharia de Domínio): Análise do domínio, projeto
do domínio, implementação do domínio.
2. Desenvolvimento do Produto (Engenharia de
Aplicação): Analise dos requisitos, configuração do
produto, customização e desenvolvimento do projeto.
3. Gerenciamento de Linha de Produto: Garantia do
processo e evolução da linha de produto.
8. Linha de Produto de
Software
• Variabilidade: Uma feature que varia de um produto
para outro.
• Pontos de Variação: Um ponto/lugar onde uma
variabilidade ocorre em um artefato da linha de produto
de software.
• Variantes: As diferentes possibilidades que existem
para satisfazer um dado ponto de variação.
9. Abordagem SMarty
• Processo sistemático que fornece caminhos para instruir
os usuários sobre como representar e lidar com
questões de variabilidade em LP.
• Composta por um perfil UML, o SMartyProfile, e um
processo sistemático para gerenciamento de
variabilidades, o SMartyProcess.
10. SMartyProfile – Fiori (2012)
• Conjunto de estereótipos e meta-atributos para
representar variabilidade em modelos UML de LP.
o <<variationPoint>>: extensão das metaclasses UML Actor, UseCase,
Interface, Class e DecisionNode;
o <<variant>>: extensão das metaclasses UML Actor, UseCase, Interface,
Class e Action. Especializada pelos esteriótipos: <<mandatory>>,
<<optional>>, <<alternative_OR>>, <<alternative_XOR>>
o <<mutex>> e <<requires>>: Restrição entre Variantes;
o <<variable>>: extensão das metaclasses Component e ActivityPartition;
11. SMartyProcess
• Guia para auxiliar nas atividades de identificação de
variabilidades em modelos da UML.
• Ex: Diretriz 08: elementos DecisionNode em diagramas
de atividade sugerem pontos de variação marcados com
<<variationPoint>> já que eles representam
explicitamente múltiplos caminhos para diferentes
grupos de ações;
12. Processos de Software
• A definição de um processo de software deve
estabelecer e formalizar informações sobre: as
atividades e os papéis responsáveis, os artefatos de
entrada e saída que devem ser criados ou mantidos em
cada atividade, os procedimentos e ferramentas
utilizadas, e o modelo de ciclo de vida utilizado
(Fuggetta, 2000).
13. Linha de Processo de
Software (LPS)
• Definição: Uma família de processos de software com
um conjunto gerenciado de características que
satisfazem necessidades específicas de uma
organização e que são desenvolvidos a partir de um
conjunto de processos básicos comuns (Armbrust et al,
2009).
14. Linha de Processo de
Software (LPS)
• Preocupação: criar um conjunto de processos
genéricos, capturar as similaridades e controlar as
variabilidades sobre um domínio.
• Vantagens: Aumentar a previsibilidade, diminuir prazo e
custo, minimizar riscos (abordagem de reuso).
15. Variabilidade em LPS
• Elementos de Processos: Atividades, tarefas, artefatos
e papéis
• Variabilidade: Elemento de processo que varia entre
diferentes domínios/projetos.
• Pontos de Variação: Ponto/local onde elementos de
processo podem ser instanciados em diferentes formas.
• Variantes: Elementos de processo permitidos para
serem inseridos em um ponto de variação.
16. Variabilidade em LPS
Algumas notações e ferramentas utilizadas para gerência
de variabilidades em LPS:
• Software Process Engineering Metamodel (SPEM) 2.0
• EPF Composer
• UML
• Feature Models
• Orthogonal Variability Modeling (OVM)
17. Revisão Sistemática
• Protocolo proposto por Kitchenham (2004)
• Objetivo da pesquisa:
1. Identificar e analisar estudos sobre linha de processo de software (LPS),
gerenciamento de variabilidade em LPS, modelagem de artefatos e
derivação automática de processos a partir de uma LPS.
2. Apresentar uma análise crítica sobre os estudos recuperados e identificar
as abordagens que poderão ser utilizadas para propor uma nova
abordagem para gerenciamento de variabilidade em LPS.
18. Revisão Sistemática
• Parâmetros de busca:
Fontes: bases de dados eletrônicas indexadas (IEEE, ACM, ScienceDirect,
Scopus e Compendex), máquinas de busca eletrônica (Scirus (Elsevier) e
Google Scholar) e consultas a especialistas.
Idioma dos trabalhos: inglês.
Tipos de documentos: artigos de conferência, anais de congresso, artigos
de periódicos, capítulos de teses e dissertação e relatórios técnicos.
Ano de publicação: estudos que foram publicados a partir do ano de 2005.
19. Revisão Sistemática
• Palavras-Chave: "software", "process line" e "variability"
• String de Busca:
"software "
AND
("process line" OR "process lines" OR "process-line" OR "process-family" OR
"process family" OR "family of process" OR "process families" OR "families
of process")
AND
("variability" OR "variant" OR "variation" OR "variation point" OR "commonality")
20. Revisão Sistemática
Processo de seleção preliminar:
1. Consulta nas bases de dados indexadas e máquinas de busca.
2. Leitura dos títulos e resumos dos resultados obtidos.
3. Aplicação dos critérios de inclusão e exclusão pré-estabelecidos.
Processo de seleção final:
1. Leitura na íntegra dos trabalhos pré-selecionados.
2. Elaboração de um resumo destacando a abordagem apresentada e os
conceitos envolvidos nos trabalhos.
22. Revisão Sistemática
Números obtidos:
• 36 Trabalhos recuperados
• 17 Trabalhos selecionados para a leitura na íntegra
• 13 Trabalhos considerados relevantes
23. Revisão Sistemática
Trabalhos considerados relevantes:
Id. Título Autor(es) Ano
1 Business Process Lines to deal with the Variability Rolland et al 2010
2 Deriving Project-Specific Processes from Process Line Architecture with Commonality and Washizaki 2006
Variability
3 Variability Mechanism Centric Process Family Architectures Schnieders 2006
4 Modeling and Implementing Variability in State Machine Based Process Family Architectures Schnieders 2006
for Automotive Systems
5 A Component Abstraction for Business Processes Barat et al. 2011
6 Building Software Process Line Architectures from Bottom Up Washizaki 2006
7 Representing Process Variation with a Process Family Simidchieva 2007
et al.
8 Modeling Variability in Software Process Lines Simmonds 2011
9 Variability Mechanisms in E-Business Process Families Schnieders e 2006
Puhlmann
10 Variability Modeling and Product Derivation in E-Business Process Families Schnieders e 2007
Puhlmann
11 Supporting the Definition of Software Processes at Consulting Organizations via Software Barreto et al. 2010
Process Lines
12 A Model-Driven Approach to Managing and Customizing Software Process Variabilities Aleixo et al. 2010
13 Automating the Variability Management, Customization and Deployment of Software Aleixo et al. 2010
Processes: A Model-Driven Approach
24. Revisão Sistemática
Extração de informações dos trabalhos relevantes:
Autor(es), título do documento, fonte, ano da publicação,
volume, quantidade de páginas, resumo, palavras-chave e
propriedades ou características abordadas nos trabalhos.
25. Análise da Qualidade dos
Estudos Recuperados
Cálculo do Índice-H e Estrato de conferências e periódicos
de acordo com suas relevâncias, prestígio e impacto no
cenário mundial. (CAPES)
• Índice-H: Verificação das citações através do Google
Scholar
• Estrato: A1, o mais elevado; A2; B1; B2; B3; B4; B5; C -
com peso zero.
26. Análise da qualidade dos
estudos recuperados
Relação dos Estratos das fontes de publicação dos 17
trabalhos selecionados na Revisão Sistemática:
• A1: 4 trabalhos
• A2: 2 trabalhos
• B1: 4 trabalhos
• B2: 1 trabalho
• B3: 2 trabalhos
• B4: 1 trabalho
• B5: 0 trabalhos
• C: 3 trabalhos
27. Proposta – Gerenciamento
de Variabilidades em LPS
• Motivos: Não existência de um padrão consolidado
para modelagem de LPS e a limitação das abordagens
encontradas na literatura para representação de
variabilidades em LPS;
• Objetivo: Definir uma abordagem para especificação
de processos de desenvolvimento de software que
suporte a representação e gerenciamento de
variabilidades em LPS utilizando técnicas e ferramentas
apoiadas pela notação UML;
28. Proposta – Gerenciamento
de Variabilidades em LPS
Combinação dos profiles UML das seguintes abordagens:
• SMarty: Abordagem para representação de
variabilidades em linhas de produto;
• SPEM 2.0: Linguagem padrão da OMG para
especificação de processos de desenvolvimento de
software;
29.
30. Abordagem SMartySPEM
Características da abordagem:
• Utiliza um subconjunto de estereótipos do profile UML
do SPEM 2.0 para representação das atividades
desempenhadas em um processo de desenvolvimento
de software: Activity, RoleUse, TaskUse, Step e
WorkProductUse;
• Utiliza o conjunto de estereótipos do profile UML da
abordagem SMarty empregados para gerenciamento
de variabilidades: variationPoint, variant, mandatory,
optional, alternative_OR, alternative_XOR, variable,
mutex, requires e variability;
31. Abordagem SMartySPEM
Características da abordagem:
• Marcação das representações gráficas dos elementos
do SPEM 2.0 para identificação de Variabilidades,
Pontos de Variação e Variantes nos elementos de
processos identificados por essas representações
durante a modelagem;
39. Próximos passos
1. Validação da Proposta;
2. Análise dos Resultados Obtidos;
3. Entrega e Apresentação do Trabalho
40. UM ESTUDO SOBRE GERENCIAMENTO DE
VARIABLIDADES EM LINHAS DE PROCESSO DE
SOFTWARE
Maicon Giovane Pazin - maiconpazin@gmail.com
Colaboração: Prof. Dr. Uirá Kulesza
Prof. Fellipe Aleixo
Perguntas?