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
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
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.
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.
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.
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.
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.
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.
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.
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;
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;
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).
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).
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).
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.
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)
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.
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.
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")
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.
Revisão Sistemática
Números dos trabalhos recuperados:
Revisão Sistemática
Números obtidos:
• 36 Trabalhos recuperados
• 17 Trabalhos selecionados para a leitura na íntegra
• 13 Trabalhos considerados relevantes
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
Variability
Washizaki 2006
3 Variability Mechanism Centric Process Family Architectures Schnieders 2006
4 Modeling and Implementing Variability in State Machine Based Process Family Architectures
for Automotive Systems
Schnieders 2006
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
et al.
2007
8 Modeling Variability in Software Process Lines Simmonds 2011
9 Variability Mechanisms in E-Business Process Families Schnieders e
Puhlmann
2006
10 Variability Modeling and Product Derivation in E-Business Process Families Schnieders e
Puhlmann
2007
11 Supporting the Definition of Software Processes at Consulting Organizations via Software
Process Lines
Barreto et al. 2010
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
Processes: A Model-Driven Approach
Aleixo et al. 2010
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.
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.
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
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;
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;
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;
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;
Elementos do SMartySPEM
Atividades:
Elementos do SMartySPEM
Papéis:
Elementos do SMartySPEM
Tarefas:
Elementos do SMartySPEM
Passos:
Elementos do SMartySPEM
Artefatos:
Exemplo de Aplicação
Atividades de uma Linha de Processo para análise de um
projeto de software:
Exemplo de Aplicação
Atividade Analyze a Class:
Próximos passos
1. Validação da Proposta;
2. Análise dos Resultados Obtidos;
3. Entrega e Apresentação do Trabalho
UM ESTUDO SOBRE GERENCIAMENTO DE
VARIABLIDADES EM LINHAS DE PROCESSO DE
SOFTWARE
Maicon Giovane Pazin - [email protected]
Colaboração: Prof. Dr. Uirá Kulesza
Prof. Fellipe Aleixo
Perguntas?
Top Related