UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

40
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

description

UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Transcript of UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Page 1: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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

Page 2: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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

Page 3: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 4: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 5: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO 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.

Page 6: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 7: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 8: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 9: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 10: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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;

Page 11: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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;

Page 12: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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).

Page 13: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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).

Page 14: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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).

Page 15: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 16: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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)

Page 17: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 18: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 19: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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")

Page 20: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 21: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Revisão Sistemática

Números dos trabalhos recuperados:

Page 22: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Revisão Sistemática

Números obtidos:

• 36 Trabalhos recuperados

• 17 Trabalhos selecionados para a leitura na íntegra

• 13 Trabalhos considerados relevantes

Page 23: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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

Page 24: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 25: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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.

Page 26: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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

Page 27: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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;

Page 28: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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;

Page 29: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE
Page 30: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO 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;

Page 31: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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;

Page 32: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Elementos do SMartySPEM

Atividades:

Page 33: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Elementos do SMartySPEM

Papéis:

Page 34: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Elementos do SMartySPEM

Tarefas:

Page 35: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Elementos do SMartySPEM

Passos:

Page 36: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Elementos do SMartySPEM

Artefatos:

Page 37: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Exemplo de Aplicação

Atividades de uma Linha de Processo para análise de um

projeto de software:

Page 38: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Exemplo de Aplicação

Atividade Analyze a Class:

Page 39: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

Próximos passos

1. Validação da Proposta;

2. Análise dos Resultados Obtidos;

3. Entrega e Apresentação do Trabalho

Page 40: UM ESTUDO SOBRE GERENCIAMENTO DE VARIABLIDADES EM LINHAS DE PROCESSO DE SOFTWARE

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?