Uma Abordagem Dirigida por Modelos para Gerência de Variabilidades e Execução de Processos de Software



Documentos relacionados
Uma Abordagem Dirigida por Modelos para Gerência de Variabilidades e Execução de Processos de Software

Uma Abordagem Dirigida por Modelos para Gerência de Variabilidades e Execução de Processos de Software

Fase 1: Engenharia de Produto

Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

PROJETO DE FÁBRICA DE SOFTWARE

O modelo unificado de processo. O Rational Unified Process, RUP.

Engenharia de Software

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Universidade Estadual de Maringá Centro de Tecnologia Departamento de Informática Programa de Pós-Graduação em Desenvolvimento de Sistemas para Web

MODELAGEM DE PROCESSOS

Agenda da Aula. Resumo dos Padrões (Aula 4) Padrões Arquiteturais. Arquitetura Cliente-Servidor. Arquitetura Cliente-Servidor

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

Wilson Moraes Góes. Novatec

UML - Unified Modeling Language

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Engenharia de Domínio baseada na Reengenharia de Sistemas Legados

RUP. Evolução. Principais Características do RUP. Principais Características do RUP RUP

2 Engenharia de Software

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Fábrica de Software 29/04/2015

Processos de Desenvolvimento de Software. Prof. Hélio Engholm Jr

ISO/IEC 12207: Gerência de Configuração

Introdução à Engenharia de Software

Processos de Software

Pós Graduação Engenharia de Software

Professor: Curso: Disciplina:

Agenda. Introdução Etapas genéricas Atividades de apoio Ferramentas de apoio Modelos genéricos Modelos de mercado Modelos de melhoria

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

Programa do Curso de Pós-Graduação Lato Sensu MBA em Engenharia de Software Orientada a Serviços (SOA)

ENGENHARIA DE SOFTWARE I

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

**Docentes do Centro Universitário Filadélfia- Unifil.

Processo de Desenvolvimento Unificado

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

PMONow! Serviço de Implantação de um Escritório de Projetos

Unidade II MODELAGEM DE PROCESSOS

GARANTIA DA QUALIDADE DE SOFTWARE

1 Introdução. Componentes Usuários. Provedor de Serviços. Figura 1.1 Ambiente de oferecimento de serviços

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Introdução ao OpenUP (Open Unified Process)

Model-Driven Engineering Geração de modelos de software e especificações usando a plataforma IBM

Transformação de um Modelo de Empresa em Requisitos de Software

Introdução à Engenharia de. Software. Introdução à Engenharia de. Software. O que é a Engenharia de Software? Software

Integração Contínua com Rational Team Concert, Jenkins e SonarQube

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Projeto de Sistemas I

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

ESPECIFICAÇÃO DO AMBIENTE EXPSEE SEGUNDO O MÉTODO CATALYSIS

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Feature-Driven Development

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Modelagem de Processos. Prof.: Fernando Ascani

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

Professor: Rômulo César BPMN

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Linha de Produto de Software

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Modelagem de Sistemas

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

PLANEJAMENTO E PROJETOS. Lílian Simão Oliveira

Processo Unificado (RUP)

Processos de Desenvolvimento de Software

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Transformação de modelos em processos de desenvolvimento de software

PDS - DATASUS. Processo de Desenvolvimento de Software do DATASUS

Arquitetura Orientado por Modelos aplicada a Linha de Produto de Software. Eduardo Barbosa da Costa

Introdução à Computação

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Um Framework para definição de processos de testes de software que atenda ao nível 3 do TMM-e

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

Histórico da Orientação a Objetos Ciclo de vida de Desenvolvimento de SW

O Processo Unificado

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Desenvolvimento de um software de gerenciamento de projetos para utilização na Web

Desenvolvimento de software orientado a características e dirigido por modelos

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Oficina de Gestão de Portifólio

ALESSANDRO RODRIGO FRANCO FERNANDO MARTINS RAFAEL ALMEIDA DE OLIVEIRA

PLANOS DE CONTINGÊNCIAS

Extração de Requisitos

PROPOSTA DE SOFTWARE DE INSTALAÇÃO PARA UM AMBIENTE INTEGRADO DE GERÊNCIA DE PROJETOS E DE PROCESSOS DE NEGÓCIOS

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

Modelagemde Software Orientadaa Objetos com UML

Ontologia Aplicada ao Desenvolvimento de Sistemas de Informação sob o Paradigma da Computação em Nuvem

Transcrição:

Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento de Informática e Matemática Aplicada Programa de Pós-Graduação em Sistemas e Computação Uma Abordagem Dirigida por Modelos para Gerência de Variabilidades e Execução de Processos de Software Wanderson Câmara dos Santos Natal/RN Fevereiro de 2011

Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento de Informática e Matemática Aplicada Programa de Pós-Graduação em Sistemas e Computação Uma Abordagem Dirigida por Modelos para Gerência de Variabilidades e Execução de Processos de Software Dissertação submetida ao Programa de Pós- Graduação em Sistemas e Computação do Departamento de Informática e Matemática Aplicada da Universidade Federal do Rio Grande do Norte como parte dos requisitos para a obtenção do grau de Mestre em Sistemas e Computação. Autor: Wanderson Câmara dos Santos Orientador: Prof. Dr. Uirá Kulesza Natal/RN Fevereiro de 2011

"Este trabalho é dedicado aos meus avós Itamar Câmara e Terezinha Freitas Câmara. (in memoriam)." Wanderson. iv

Agradecimentos Gostaria de agradecer a deus, por tudo, porque quem tem Deus como império no mundo não está sozinho. Ao meu orientador Prof. Dr. Uirá Kulesza, pela sua dedicação e paciência. Aos meus avós Itamar Câmara e Terezinha Freitas Câmara, por me ensinar a sonhar e por simplesmente acreditarem que poderia transformar meus sonhos em realidade; Aos meus pais Edivaldo José dos Santos e Irismar Freitas Câmara dos Santos, que estão me ajudando a realizar estes sonhos; Aos meus irmãos Walderson e Iza, por serem simplesmente tão especiais; Aos amigos Silvano Maia, Hamilton Rangel, Guto de Castro e Peter Keussen pelos ensinamentos e amizade; A todas as pessoas que me apoiaram e estiveram presente durante todos os momentos. v

Resumo Este trabalho apresenta uma abordagem dirigida por modelos para gerência de variabilidades em processos de software, assim como sua implantação em sistemas de workflow. A abordagem é fundamentada nos princípios e técnicas de linhas de produto de software e engenharia dirigida por modelos. Engenharia dirigida por modelos fornece suporte para a especificação de processos de software e sua transformação em especificações de fluxo de trabalho. Técnicas de linhas de produto de software permitem a gerência automática de variabilidades de elementos do processo e fragmentos. Além disso, em nossa abordagem, tecnologias de workflows permitem a execução do processo em motores de workflow. Para avaliar a viabilidade abordagem, a implementamos utilizando tecnologias existentes de engenharia dirigida por modelos. Os processos de software são especificados usando Eclipse Processo Framework (EPF). O gerenciamento automático das variabilidades de processos de software foi implementado como uma extensão de uma ferramenta de derivação produtos já existente. Finalmente, as linguagens de transformação ATL e Acceleo são adotadas para transformar o processo EPF para a linguagem de especificações de fluxo de trabalho jpdl, a fim de permitir a implantação e execução de processos de software no motor de workflow JBoss BPM. A abordagem é avaliada através da modelagem e modularização da disciplina de gerenciamento de projetos do processo aberto Unificado (OpenUP). Palavras-chave: Processo de software, Execução de processos, Reuso de Processo de Software, Desenvolvimento Dirigido por Modelos vi

Abstract This dissertation presents a model-driven and integrated approach to variability management, customization and execution of software processes. Our approach is founded on the principles and techniques of software product lines and model-driven engineering. Model-driven engineering provides support to the specification of software processes and their transformation to workflow specifications. Software product lines techniques allows the automatic variability management of process elements and fragments. Additionally, in our approach, workflow technologies enable the process execution in workflow engines. In order to evaluate the approach feasibility, we have implemented it using existing model-driven engineering technologies. The software processes are specified using Eclipse Process Framework (EPF). The automatic variability management of software processes has been implemented as an extension of an existing product derivation tool. Finally, ATL and Acceleo transformation languages are adopted to transform EPF process to jpdl workflow language specifications in order to enable the deployment and execution of software processes in the JBoss BPM workflow engine. The approach is evaluated through the modeling and modularization of the project management discipline of the Open Unified Process (OpenUP). Key words: Software process, Process execution, Software process reuse, Model driven development vii

viii Sumário Lista de Figuras p. xi 1 Introdução p. 1 1.1 Problema................................. p. 2 1.2 Limitações das Abordagens Atuais.................... p. 3 1.3 Trabalho Proposto............................. p. 3 1.4 Objetivos................................. p. 4 1.5 Organização do trabalho......................... p. 5 2 Fundamentação Teórica p. 6 2.1 Engenharia de Processos......................... p. 6 2.2 Reuso em Processos de Software..................... p. 8 2.2.1 Eclipse Process Framework................... p. 9 2.3 Linhas de Produto de Software...................... p. 10 2.3.1 Ferramentas de Derivação.................... p. 11 2.4 Engenharia Dirigida por Modelos.................... p. 14 2.4.1 Model-Driven Architecture.................... p. 14 2.4.2 Acceleo.............................. p. 15 2.4.3 QVTO.............................. p. 16 2.5 Sistemas de Workflow........................... p. 17 2.5.1 JBoss BPM............................ p. 18

3 Uma Abordagem Dirigida por Modelos para Gerência de Variabilidades e Execução de Processos de Software p. 20 3.1 Visão Geral da Abordagem........................ p. 20 3.2 Modelagem e Definição da Linha de Processo.............. p. 24 3.3 Gerência Automatizada de Variabilidades................ p. 28 3.3.1 Anotando Modelos de Processo com Variabilidades....... p. 29 3.3.2 Criação de Modelos de Derivação................ p. 31 3.3.3 Modelagem de Variabilidades em Diferentes Granularidades.. p. 33 3.4 Derivação e Customização Automática de Processos.......... p. 37 3.5 Transformação de Modelo de Processo para Modelo de Workflow... p. 39 3.6 Transformação de Modelo de Workflow para Projeto de Workflow... p. 43 3.7 Implantando e Executando Processos de Software em um Workflow Engine.................................... p. 46 4 Suporte Ferramental da Abordagem p. 51 4.1 Ferramenta para Gerência de Variabilidade em Processos de Software. p. 51 4.2 Ferramenta para Transformação e Implantação de Processos em Sistemas de Workflow............................ p. 52 5 Estudo de Caso p. 57 5.1 Visão Geral dos Projetos Analisados.................. p. 57 5.2 Modelagem e Definição da Linha de Processo............. p. 58 5.3 Gerência Automatizada de Variabilidades................ p. 61 5.4 Derivação e Customização Automática de Processos.......... p. 62 5.5 Transformação de Modelo de Processo para Workflow......... p. 65 5.6 Transformação de Modelo de Workflow para Texto........... p. 68 ix

5.7 Implantando e Executando Processos de Software em um Workflow Engine.................................... p. 70 5.8 Lições Aprendidas e Novas Perspectivas................. p. 72 5.8.1 Mapeamento de especificações de processo em Workflow.... p. 72 5.8.2 Integração do código do Workflow com ferramentas de engenharia de software......................... p. 73 5.8.3 Independência de plataforma na aplicação da abordagem.... p. 75 5.8.4 Gerência de variabilidades de processos............. p. 75 5.8.5 Especificação Multi-Nível do Modelo de Característica..... p. 76 5.8.6 Gerência de Variações em Métricas de Processo......... p. 76 6 Trabalhos Relacionados p. 78 6.1 Abordagens para Gerência de Variabilidades e Componentização em Processos de Software........................... p. 78 6.2 Abordagens para Execução de Processos de Software.......... p. 80 7 Conclusão e Trabalhos Futuros p. 82 7.1 Contribuições............................... p. 82 7.2 Trabalhos em Andamento e Futuros................... p. 83 Referências Bibliográficas p. 85 x

xi Lista de Figuras 2.1 Divisão de tópicos da área de conhecimento de Engenharia de Processo p. 7 2.2 Arquitetura da Ferramenta Genarch [CIRILO, 2008].......... p. 13 2.3 Exemplo de identificação de variabilidades no código utilizando anotação Java................................. p. 14 2.4 Abordagem de Desenvolvimento Utilizando o Acceleo......... p. 16 3.1 Uma Visão da Abordagem para Gerência e customização de variabilidades e Derivação de Processo...................... p. 22 3.2 Uma Visão da Abordagem para Execução de Processos de Software.. p. 23 3.3 Criação do Method Plugin na Ferramenta EPF Composer........ p. 25 3.4 Elementos Presentes no Processo..................... p. 26 3.5 Visualização do processo na forma de um work breakdown structure na ferramenta EPF.............................. p. 27 3.6 Matriz de Variabilidade.......................... p. 30 3.7 Arquivo XMI com um comentário representando uma feature...... p. 31 3.8 Modelo de features gerado pelo GenArch................ p. 32 3.9 Modelo de Arquitetura do Processo Gerado pelo GenArch....... p. 33 3.10 Modelo de configuração gerado pelo GenArch.............. p. 34 3.11 Arquivo xmi representando elemento do processo com multipla anotações de variabilidade.......................... p. 35 3.12 Visualização dos arquivos gerados pela ferramenta EPF na geração do Processo.................................. p. 36 3.13 Modelo de Arquitetura do Processo gerado pelo GenArch com a adição de Fragmentos............................... p. 37

3.14 Modelo de Configuração gerado pelo GenArch com a adição de Fragmentos................................... p. 38 3.15 Arquivo XMI após ser transformado em um template segundo a linguagem XPand.............................. p. 39 3.16 Extração de código para fragmento.................... p. 40 3.17 Processo de seleção de variabilidades no modelo de característica dentro da ferramenta GenArch........................ p. 41 3.18 Processo derivado sem a presença da tarefa Criar os Casos de Teste. p. 42 3.19 Imagem com Work breakdown structure do processo derivado..... p. 43 3.20 Mapeamento elementos UMA e JPDL.................. p. 44 3.21 Fragmento de Código da transformação em QVTO........... p. 45 3.22 Modelo JPDL, resultado da transformação modelo-para-modelo.... p. 46 3.23 Visualização do workflow através do Plug In GPD no eclipse...... p. 46 3.24 Resultados da Transformação Modelo para Texto............ p. 47 3.25 Arquivo resultado da transformação modelo-para-texto, que relaciona formulários JSF a tarefas......................... p. 47 3.26 Template Acceleo para Derivação de Código Java(JSF)......... p. 48 3.27 Plugin jbpm para a execução do Processo................ p. 49 3.28 Processo em execução visualizado através do jbpm-console...... p. 50 4.1 Arquitetura da ferramenta GenArch adaptada para o trabalho com processos de software............................ p. 53 4.2 Código para o parsing dos arquivos XMLs a procura de anotações de variabilidades............................... p. 54 4.3 Fragmento de Código QVT0, destacando como parâmetros para execução do script a declaração dos metamodelos envolvidos e as instâncias dos modelos de entrada e saída................... p. 55 4.4 Arquitetura da ferramenta de transformação modelo-para-modelo e modelopara-texto................................. p. 56 xii

4.5 Visualização dos metamodelos instanciados pelo Eclipse, através do metamodel explorer............................ p. 56 5.1 Trecho do resultado do estudo de variabiliades e similaridades do OpenUP p. 60 5.2 Work Break down Structure resumido da linha de processo....... p. 61 5.3 Modelo de Característica gerado pela ferramenta Genarch........ p. 62 5.4 Modelo de Arquitetura do Processo gerado pela ferramenta Genarch.. p. 63 5.5 Modelo de Configuração gerado pela ferramenta Genarch........ p. 64 5.6 Fragmento do modelo de características gerado pela ferramenta Genarch, resultante da seleção de variabilidades nos processos analisados.... p. 65 5.7 Visualização WBS do processo resultado da customização e derivação. p. 66 5.8 Visualização do processo em forma de página web............ p. 67 5.9 Modelo de processo seguindo a especificação do metamodelo UMA.. p. 68 5.10 Modelo seguindo a especificação do metamodelo JPDL........ p. 69 5.11 Visualização do arquivo forms.xml responsável pela ligação das tarefas com seus formulários........................... p. 70 5.12 Arquivos gerados na Transformação de modelo-para-texto....... p. 71 5.13 Efetuando o deploy do workflow..................... p. 72 5.14 página de upload, disponível no jbpm Console, para a implantação de processos................................. p. 72 5.15 Visualização do Processo no jbpm Console............... p. 73 5.16 Visualização do processo na forma gráfica em execução pelo jbpmconsole.................................. p. 74 xiii

1 1 Introdução Atualmente, empresas que tem suas atividades ligadas à engenharia de software demandam a definição e melhoramento contínuo de seus processos de software a fim de promover o desenvolvimento produtivo de softwares de qualidade. Há uma necessidade crescente por parte da indústria de desenvolvimento de sistemas na rápida e efetiva customização de processos de software para endereçar a variedade de cenários, tecnologias, culturas e escalas existentes[thränert; WERNER, 2006] [ROMBACH, 2005] [ARM- BRUST et al., 2009]. A rápida e eficaz customização de processos envolve a adaptação de modelos de processo de software para a realidade dos projetos das organizações. Assim como o reuso de experiências passadas na definição e desenvolvimento de processos de software para os novos projetos com o objetivo de aumentar a produtividade durante a realização de tal atividade. Ao longo dos últimos anos, diversas ferramentas e tecnologias que oferecem suporte a definição, empacotamento, customização, distribuição e execução de processos de software foram propostas [IBM, 2010] 1. O apoio de ferramentas auxiliam na automatização das atividades do engenheiro de processos permitindo a manipulação de artefatos relacionados à especificação e definição de processos de software e, embora tais ferramentas já sejam úteis para apoiar atividades de customização, reuso e execução de processos, ainda existe uma forte demanda por funcionalidades que permitam: (i) o gerenciamento dos componentes e variabilidades de tais processos; e (ii) a composição e derivação destes elementos para gerar um processo customizado para um projeto. A definição de um processo de software é uma atividade complexa que requer muita experiência e conhecimento de muitas áreas e disciplinas da engenharia de software [BARRETO et al., 2010]. Dessa forma, um dos desafios atuais está relacionado a maneira como uma organização de software pode facilmente reusar vários elementos dos processos de software existentes de maneira rápida e automática permitindo sua fácil customização para novos projetos. 1 PROJECT, E. Eclipse Process Framework Project (EPF). 2009. Disponível em: http://www- 01.ibm.com/software/awdtools/rmc. Acesso em: 3 Ago. 2009.

1. Introdução 2 1.1 Problema Atualmente, empresas de desenvolvimento de software buscam a melhoria contínua da qualidade e produtividade de seus processos de desenvolvimento. O desenvolvimento de software envolve várias tarefas complexas e envolve diferentes profissionais de diversas áreas. Projetos de desenvolvimento de software de naturezas distintas também demandam a adoção de novos processos, técnicas e ferramentas a serem utilizadas. Um dos caminhos para lidar com tal complexidade, é promover o reuso de processos legados adotados com sucesso em outros projetos, e permitir a customização de partes específicas de acordo com as peculiaridades do software a ser desenvolvido, assim como da natureza e escala do projeto. Embora, já seja possível reusar conhecimento e boas práticas de processos existentes, o suporte ferramental disponível para especificação e edição de processos de software não permite que a customização de variabilidades do processo seja realizada de forma rápida e confiável, garantindo assim uma boa qualidade para o resultado final. Algumas ferramentas atuais auxiliam no trabalho de especificar e editar especificações de processos de software [IBM, 2010] 2, porém não de forma intuitiva e tratando explicitamente o conceito de variabilidades. Elas permitem apenas a manipulação manual e trabalhosa de elementos presentes nas definições de processos, sendo esta uma forma manual e trabalhosa de reusar definições de processos. Estas ferramentas permitem também a visualização do processo na forma de um conjunto de páginas HTML, porém esta visualização é feita de maneira que não há interação do processo com a equipe envolvida nele. Um outro problema existente diz respeito ao acompanhamento e monitoramento da execução de tais processos de software, quando instanciando os mesmos para serem executados em determinados projetos. Trabalhos recentes propõem a criação de linguagens para especificação e execução de processos [BENDRAOU; JEZéQUéL; FLEUREY, 2009] [BENDRAOU et al., 2007] [MACIEL et al., 2009], mas ainda existe uma grande carência no que se refere a transformação de processos especificados seguindo metamodelos voltados exclusivamente para especificação de processos de software (UMA 3, SPEM 4 ) para ambientes específicos de execução de processos. 2 PROJECT, E. Eclipse Process Framework Project (EPF). 2009. Disponível em: http://www- 01.ibm.com/software/awdtools/rmc. Acesso em: 10 Nov. 2009. 3 PROJECT, E. E. Introduction to UMA. 2008. Disponível em: http://epf.eclipse.org/wikis/openupsp/baseconcepts/guidances/concepts/introduction.html. Acesso em: 24 Ago. 2009. 4 GROUP, O. M. OMG. Software Process Engineering Meta-Model, version 2.0. 2008. Disponível em: http://www.omg.org/technology/documents/formal/spem.htm Acesso em: 10 jan. 2010.

1. Introdução 3 1.2 Limitações das Abordagens Atuais Apesar de oferecer funcionalidades para a manipulação de elementos presentes na especificação do processo, ferramentas como o EPF Composer e o Rational Method Composer [IBM, 2010], não oferecem funcionalidades e mecanismos que permitam a gerência de suas variabilidades e a derivação automática de versões customizadas do processo. Dado que metodologias de processos, tais como o RUP [JACOBSON; BOOCH; RUMBAUGH, 1999] e OpenUP 5, possuem inúmeras possibilidades de customização e configuração dependendo da natureza do projeto a ser usado, a manipulação e customização manual dos diferentes elementos do processo pode se tornar inviável, custosa e sujeita a erros. Alguns dos frameworks de processo citados até explicitam elementos do processo (atividades, tarefas, passos, artefatos) que são opcionais, mas a maioria deles se refere a decisões tomadas durante a execução do processo em um projeto específico, e não durante as atividades de customização do projeto por um engenheiro de processo. Uma vez definido um processo no EPF Composer, a ferramenta permite reaproveitar parte da configuração definida para um novo processo. Porém, este reaproveitamento ocorre através da manipulação direta de seus elementos. Este processo por ser manual, é pouco produtivo e confiável, e não explicita as variabilidades existentes em tal processo, dificultando também sua evolução como uma família de processos relacionados. No que diz respeito a execução de processos, existem linguagens de definição de fluxos de processos e engines para esses workflows. Por se tratar de uma linguagem específica para a execução de processos, nosso processo teria que ser modelado novamente em uma dessas linguagens para que fosse possível o engine executar nosso fluxo principal de processo. De forma geral, podemos dizer que as abordagens, técnicas e ferramentas disponíveis atualmente, são bastante carentes no que se refere: (i) a gerência de variabilidades em processos; (ii) a derivação automática de versões específicas de tais processos; e (iii) a transformação de especificações de processos em instâncias concretas de tais processos, de forma a permitir a sua instalação, execução e monitoramento, em um ambiente definido para tal finalidade. 1.3 Trabalho Proposto Esta dissertação de mestrado propõe uma abordagem baseada em modelos para a gerência de variabilidades e execução de processos de software. Seus principais objetivos 5 http://epf.eclipse.org/wikis/openup/

1. Introdução 4 são: (i) promover o reuso de variabilidades que ocorrem dentro de uma família (ou linha) de processos; e (ii) permitir a sua execução em sistemas de workflow. A abordagem é definida baseada nos fundamentos de engenharia de linhas de produtos [CLEMENTS; NORTHROP, 2001] [POHL; BOCKLE; LINDEN, 2005], sobretudo em estratégias e técnicas usadas atualmente para gerência de variabilidades e derivação de produtos. É realizada a adaptação de uma ferramenta de derivação de produto existente, denominada GenArch [CIRILO, 2008], para promover a gerência explícita das variabilidades de uma linha de processo [ARMBRUST et al., 2009]. Uma linha de processos pode ser vista como um conjunto de processos que compartinha similaridades e possuem variabilidades decorrentes das especificidades de cada um dos processos que fazem parte da linha. Os modelos de processo de software utilizados neste trabalho são especificações do metamodelo Unified Method architecture (UMA) 6 que é uma variante do Software Process Engineering Metamodel (SPEM) 7 e para a criação destes modelos de processo foi utilizada a ferramenta Eclipse Process Framework (EPF) 8. A abordagem também permite que cada especificação de processo EPF derivado automaticamente, possa ser automaticamente transformado para uma especificação de workflow, que pode ser instalado e executado no engine de workflow jbpm. 1.4 Objetivos O objetivo central da abordagem é promover o reuso sistemático de processos de software, através da proposição de mecanismos para gerência de variabilidades e derivação automática de processos, assim como permitir sua execução e monitoramento. Cada família de processos relacionados é organizado como uma linha de processos. Os seguintes objetivos específicos são definidos para este trabalho de mestrado: Proposição de mecanismos para gerência de variabilidades e derivação automática de processos de software com foco na disciplina de gerência de projetos, assim como transformação de especificações de processo EPF em especificações concretas de workflow que podem ser instaladas em sistemas de gerenciamento de workflows. Implementação dos mecanismos mencionados acima como forma de avaliação da abordagem proposta. 6 http://epf.eclipse.org/wikis/openupsp/baseconcepts/guidances/concepts/introduction.html 7 http://www.omg.org/technology/documents/formal/spem.htm 8 PROJECT, E. Eclipse Process Framework Project (EPF). 2009. Disponível em: <http://www- 01.ibm.com/software/awdtools/rmc>. Acesso em: 3 Ago. 2009.

1. Introdução 5 Modelagem de estudo de caso de linha de processo de software para avaliar a abordagem e mecanismos propostos. Análise e comparação da abordagem proposta com outros trabalhos relacionados. 1.5 Organização do trabalho O restante deste documento está organizado da seguinte forma: O capítulo 2 apresenta a fundamentação teórica para realização deste trabalho. O capítulo 3 apresenta a abordagem proposta nesta dissertação de mestrado, detalhando sua aplicação com um pequeno exemplo. O capítulo 4 apresenta a adaptação da ferramenta de derivação de linha de produto de software para trabalhar com especificações de processo de software. O capítulo 5 demonstra a aplicação da abordagem aplicada em um estudo de caso. No capítulo 6 apresentamos trabalhos relacionados que motivaram e ajudaram a criar e desenvolver a abordagem proposta neste trabalho. No capítulo 7 apresentamos as considerações finais.

6 2 Fundamentação Teórica Este capítulo apresenta a fundamentação teórica para esta dissertação de mestrado. O desenvolvimento da abordagem proposta neste trabalho envolveu diversos conceitos, tecnologias e ferramentas para a sua implementação. Entre os principais conceitos estão : (i) Engenharia de processos; (ii) Reuso em processos; (iii) Linhas de produto de software; (iv) Ferramentas de derivação; (v) Engenharia dirigida por modelos; e (vi) Sistemas de workflow. 2.1 Engenharia de Processos Metodologias de desenvolvimento de software são utilizadas regularmente pela indústria de software para diferentes tipos de projetos. A engenharia de processos de software consiste na criação, modelagem, adaptação e representação desses processos. De acordo com o Software Engineering Body of Knowledge (SWEBOK) 1, a área de conhecimento da "Engenharia de Processo de Software"pode ser estruturada em dois níveis: (i) o primeiro nível engloba os aspectos técnicos e as atividades de gestão no âmbito do ciclo de vida do processo; e (ii) o segundo nível engloba a definição, implementação, avaliação, medição, gerenciamento de mudanças e a melhoria do processo. A área de conhecimento da engenharia de processo pode ser dividida em diversas sub-áreas. A Figura 2.1 ilustra tal divisão segundo o SWEBOK. Implementação e gerência de mudanças do processo. A sub-área de implementação e mudança é focada nas mudanças organizacionais e descreve atividades, modelos e infraestrutura para o processo de implementação e gerência de mudanças. Para esta sub-área temos a divisão dos tópicos que ajudam na atividade de implementação e mudança, são eles: (i) infraestrutura do processo - esse tópico envolve toda a infraestrutura aplicada no processo, garantindo que todos os recursos necessários estejam disponíveis; 1 IEEE Computer Society. Software Engineering Body of Knowledge (SWEBOK). EUA: Angela Burgess, 2004. Disponível em: http://www.swebok.org/.

2. Fundamentação Teórica 7 Figura 2.1: Divisão de tópicos da área de conhecimento de Engenharia de Processo (ii) ciclo de gerenciamento do processo de software - este tópico tem como objetivo o gerenciamento do processo, e para melhor obter esse gerenciamento contam com atividades como estabelecer a infraestrutura do processo e planejamento ; e (iii) modelos para implementação e gerência de mudanças dos processos - provê a implementação de modelos para apoiar a execução desta sub-área. Definição do processo. Esta sub-área da engenharia de processos exige um grande esforço por parte do engenheiro de processo, uma vez que para a definição do processo é levado em consideração diversos aspectos como a qualidade crescente do produto e apoio a melhoria do processo. Para esta sub-área temos a seguinte divisão de tópicos: (i) modelos de ciclo de vida de processos - estes modelos servem como uma definição das fases que auxiliam no desenvolvimento. Exemplos desses modelos são: modelo em cascata e o modelo espiral; (ii) processo de ciclo de vida do software - esse tópico tende a ser mais detalhado do que os modelos de ciclo de vida do software; (iii) notações para a definição dos processos - há uma série de notações sendo utilizadas para definir processos [CONSORTIUM, 1992], as principais diferenças entre essas notações são os tipos de informações utilizadas. (iv) adaptação do processo - os processos de software que são pré-definidos precisam se adaptar a diversos contextos como: tamanho do projeto, práticas industriais e culturas corporativas e (v) automação - diz respeito ao apoio ferramental que

2. Fundamentação Teórica 8 auxilia na automação da engenharia de processos. Avaliação do processo. Esta sub-área consiste em avaliar o processo de software apoiado por métodos e modelos de avaliação. Os modelos e métodos de avaliação são a divisão dos tópicos desta sub-área: (i) modelo de avaliação do processo - captura o que é reconhecido como boas práticas e (ii) metodos de avaliação - com o intuito de realizar uma avaliação, um método de avaliação específico deve ser seguido para produzir dados que caracterize o processo, como por exemplo, sua capacidade ou nível de maturidade. Medição de processos e produtos. A medição pode ser realizada para dar suporte a iniciação da implementação e gerência de mudanças do processo ou avaliar as suas consequências, os tópicos desta sub-área são: (i) medição de processo - este tópico tem como informações de entrada, dados relativos a quantitativos coletados, analisados e interpretados do processo, que são usados para identificar os pontos fortes e fracos dos processos, e também avaliar esses processos depois de terem sido implementados e/ou alterados; (ii) medição de produtos de software - inclui, particularmente, a medição do tamanho do produto, a sua estrutura e a qualidade deste produto. (iii) qualidade nos resultados de medição - a qualidade dos resultados obtidos nas medições é importante para proporcionar resultados efetivos e delimitados dos processos; (iv) modelos de informação de software - a maneira como a informação é coletada e utilizada para fins de medição, torna possível a construção de modelos utilizando a experiência e dados obtidos. Estes modelos existem para fins de análise, classificação e previsão; e (v) técnicas de medição do processo - técnicas de medição podem ser aplicadas na análise de processos de software e identificar pontos fortes e pontos fracos desses processos. Este trabalho de dissertação tem relação mais direta com a sub-área de Definição do Processo, a qual envolve notações para a definição do processo, adaptação de processos e automação da engenharia de processos. Em particular, o trabalho busca promover o reuso de elementos de processo através da modelagem de uma linha ou família de processos. 2.2 Reuso em Processos de Software Trabalhos recentes [ROMBACH, 2005] [BARRETO; MURTA; ROCHA, 2009] [RU- ZHI et al., 2005] [ARMBRUST et al., 2009] têm reforçado a importância de promover a reutilização de processos como forma de promover o uso de boas práticas de projetos anteriores na definição dos novos processos. Uma das principais vertentes de trabalho atual diz respeito ao uso e adaptação de técnicas de linhas de produto de software, na gerência de variabilidades encontradas em linhas de processo. Uma linha de processo