UMA INFRAESTRUTURA PARA CONSISTÊNCIA DOS PROCESSOS DE SOFTWARE BASEADOS NO METAMODELO SPEM 2.0



Documentos relacionados
PROVA DISCURSIVA (P )

Guia de utilização da notação BPMN

Introdução ao RUP Rational Unified Process. por Denize Terra Pimenta Outubro/2004

3. Fase de Planejamento dos Ciclos de Construção do Software

2 Engenharia de Software

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

A construção de um manual sobre a utilização dos modelos também poderá alavancar o uso das representações. Este conteria a explicação detalhada da

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

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

Gerência de Projetos Prof. Késsia Rita da Costa Marchi 3ª Série

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Diagramas de Casos de Uso

Desenvolvimento de ferramenta computacional para o controle de equipamentos de acordo com a ISO/IEC

3 Qualidade de Software

Teste de Software: Um Breve Estudo do Importante Processo no Desenvolvimento de Softwares

Qualidade de Software

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

Curso: Engenharia de Software com Ênfase em Padrões de Software (UECE Universidade Estadual do Ceará) RUP

CONSTRUÇÃO DE UM FRAMEWORK PARA O DESENVOLVIMENTO DE APLICAÇÕES WEB

Gerenciamento de Projetos Modulo VIII Riscos

Integrando o Framework I* com a Gerência de Risco

3.1 Definições Uma classe é a descrição de um tipo de objeto.

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

Unidade II MODELAGEM DE PROCESSOS

PMBoK Comentários das Provas TRE-PR 2009

Processos de gerenciamento de projetos em um projeto

Requisitos de Software

Desenvolvimento estruturado versus orientado a objetos.

Engenharia de Software

Professor: Curso: Disciplina: Aula 4-5-6

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

6 Ferramenta de Apoio ao Processo de Desenvolvimento de Sistemas Multi-Agentes

P4-MPS.BR - Prova de Conhecimento do Processo de Aquisição do MPS.BR

Introdução ao Processo Unificado (PU)

PROJETO DE COOPERAÇÃO TÉCNICA INTERNACIONAL. Projeto 914 BRA PRODOC-MTC/UNESCO DOCUMENTO TÉCNICO Nº 03

Autoria:Aristófanes Corrêa Silva Adaptação: Alexandre César M de Oliveira

4.1. UML Diagramas de casos de uso

3 Trabalhos relacionados

REQUISITOS DE SISTEMAS

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

A SEGUIR ALGUMAS DICAS PARA O DESENVOLVIMENTO DE UM PROJETO CIENTÍFICO

Disciplina: Técnicas de Racionalização de Processos Líder da Disciplina: Rosely Gaeta NOTA DE AULA 04 O PROJETO DE MELHORIA DOS PROCESSOS

Gerenciamento de Requisitos Gerenciamento de Requisitos

1 Um guia para este livro

Uma extensão do BPMN para modelagem de Processos de Desenvolvimento de Software: BPMNt

LISTA DE VERIFICAÇAO DO SISTEMA DE GESTAO DA QUALIDADE

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

UML e a Ferramenta Astah. Profa. Reane Franco Goulart

QUALIDADE DE SOFTWARE

Processo de Avaliação da Transparência Organizacional

GBD PROF. ANDREZA S. AREÃO

Gerenciamento de Projetos Modulo II Clico de Vida e Organização

O Processo Unificado

Figura 5 - Workflow para a Fase de Projeto

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

OBJETIVO DO PROGRAMA ORGANIZAÇÃO DO PROGRAMA E CARGA HORÁRIA PREMISSAS DOS PROGRAMA INVESTIMENTO E PRÓXIMA TURMA I NSTRUTORES

Módulos QM de sistemas ERP ou MES X Sistemas LIMS?

Todos nossos cursos são preparados por mestres e profissionais reconhecidos no mercado, com larga e comprovada experiência em suas áreas de atuação.

Curso Superior de Tecnologia em Banco de Dados e Sistemas para Internet Disciplina: Projeto Integrador III Prof.: Fernando Hadad Zaidan

Qualidade de Software

Conceitos Fundamentais de Qualidade de Software

Introdução Ciclo de vida tradicional de desenvolvimento Prototipagem Pacotes de software Desenvolvimento de 4ª geração Terceirização

Utilização da modelagem UML em um sistema de gerenciamento de uma franquia do setor de alimentação

Fase 1: Engenharia de Produto

Introdução ao Modelo de Referência para melhoria do processo de software (MR mps) Projeto: mps Br melhoria de processo do software Brasileiro

Preparação do Trabalho de Pesquisa

Gerenciamento da Integração (PMBoK 5ª ed.)

Resolução da lista de exercícios de casos de uso

Motivação para o trabalho no contexto dos processos empresariais

PLANEJAMENTO ESTRATÉGICO

Por que sua organização deve implementar a ABR - Auditoria Baseada em Riscos

Ciência da Computação ENGENHARIA DE SOFTWARE. UML-Unified Modeling Language Linguagem de Modelagem Unificada

agility made possible

DIRETRIZES E PARÂMETROS DE AVALIAÇÃO DE PROPOSTAS DE CURSOS NOVOS DE MESTRADO PROFISSIONAL

ATENAS: Um Sistema Gerenciador de Regras de Negócio

2 Investimentos em Tecnologia da Informação

Ferramenta para Geração de Código a partir da Especialização do Diagrama de Classes

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

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

Ideal para que tipo de empresa (equipe): pequena, média, grande? Em software onde os requisitos não são conhecidos é recomendado o uso do XP? Por quê?

Modelagem de Sistemas

POLÍTICA DE GESTÃO DE RISCO - PGR

Observações. Referência Título / Campo de Aplicação Emissor Data de adoção

Copyright Proibida Reprodução. Prof. Éder Clementino dos Santos

CAPÍTULO 25 COERÊNCIA REGULATÓRIA

Planejamento e Gestão Estratégica

TechProf Documento de Arquitetura

Observações. Referência Título / Campo de Aplicação Emissor Data de adoção

Questionário de avaliação de Práticas X Resultados de projetos - Carlos Magno Xavier (magno@beware.com.br)

ADMINISTRAÇÃO E SERVIÇOS DE REDE

Profa. Dra. Ana Paula Gonçalves Serra

Apresentar os conceitos básicos da metodologia de desenvolvimento Processo Unificado, utilizando como aporte o Processo Unificado Rational RUP

Análise de Tarefas. Análise Hierárquica de Tarefas

TRANSIÇÃO DAS CERTIFICAÇÕES DOS SISTEMAS DE GESTÃO DA QUALIDADE E SISTEMAS DE GESTÃO AMBIENTAL, PARA AS VERSÕES 2015 DAS NORMAS.

Roteiro SENAC. Análise de Riscos. Planejamento do Gerenciamento de Riscos. Planejamento do Gerenciamento de Riscos

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

Transcrição:

1 PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UMA INFRAESTRUTURA PARA CONSISTÊNCIA DOS PROCESSOS DE SOFTWARE BASEADOS NO METAMODELO SPEM 2.0 ELIANA BEATRIZ PEREIRA Tese apresentada como requisito parcial à obtenção do grau de Doutor, pelo programa de Pós Graduação em Ciência da Computação da Pontifícia Universidade Católica do Rio Grande do Sul. Orientador: Prof. Dr. Ricardo Melo Bastos Porto Alegre 2011

2

3 P436i Pereira, Eliana Beatriz Uma infraestrutura para consistência dos processos de software baseados no metamodelo SPEM 2.0 / Eliana Beatriz Pereira. Porto Alegre, 2011. 279 f. Tese (Doutorado) Fac. de Informática, PUCRS. Orientador: Prof. Dr. Ricardo Melo Bastos 1. Informática. 2. Engenharia de Software. 3. Software Análise de Desempenho. 4. Simulação e Modelagem em Computadores. I. Bastos, Ricardo Melo. II. Título CDD 005.1 Ficha Catalográfica elaborada pelo Setor de Tratamento da Informação da BC-PUCRS

4

5

6

7 AGRADECIMENTOS A Deus, pela sabedoria, persistência e oportunidades que tem posto em minha vida. Aos meus pais, Arnaldo e Flávia, e minhas irmãs, Márcia e Patrícia, pela compreensão do tempo em que estive ausente e por acreditarem em mim e no meu trabalho, mas principalmente por torcerem por esta conquista. Ao meu orientador, Ricado Bastos, por sua amizade e cumplicidade, fruto de longo tempo de estrada juntos desde meu mestrado, além do apoio e incentivo em todos os momentos que foram importantes para minha vida acadêmica e pessoal. A você serei eternamente grata por tudo e espero que ainda realizemos muitos trabalhos em conjunto. Aos membros da banca, professores Toacy C. Oliveira, José Palazzo e Marcelo Blois, pela aceitação do convite de participação na avaliação deste trabalho. Em especial um agradecimento ao professor Toacy C. Oliveira pela amizade e pelo seu apoio técnico neste trabalho. Espero que esta parceria continue. Ao Márcio Brigidi, com quem tive a imensa satisfação de trabalhar, pessoa que aprendi a admirar e tenho muito a agradecer pelo apoio que foi fundamental na realização deste trabalho. Meu sincero agradecimento e reconhecimento por sua amizade e cumplicidade que foram essenciais para mim. Aos meus bolsistas, Bruno e Leonardo. Obrigada por compartilharem comigo muitas tardes de trabalho na implementação do sspem Tool. A participação de vocês foi fundamental para a realização da pesquisa. Considero esta vitória de vocês também! À minha grande amiga Tanise Novelo, que conheci durante o doutorado. Sua amizade sem dúvida foi um presente. Com certeza essa caminhada se tornou menos difícil pelo seu incomensurável incentivo e companheirismo. Valeu amiga, pelas horas a fio no skype fazendo praticamente tudo juntas!!! TESE, Negrinho, TESE, Compras, Almoços, TESE, Jantas...Te considero uma irmã! A todos os meus amigos pela paciência e incentivo nesta caminhada. Em especial um agradecimento a Analuisa Monteiro, Mariana Denes, Ana Mansur, Sobral, Marcos Tadeu, Carlos Bragança, Mirela Medeiros, Elisa Cerri, Bruno Pilz e Leonardo Machado. Vocês são especiais para mim! Ao Convênio Dell/PUCRS pelo apoio financeiro para realização do trabalho e ao SERPRO pela liberação de horas, as quais foram imprescindíveis para realização desta pesquisa.

8

UMA INFRAESTRUTURA PARA CONSISTÊNCIA DOS PROCESSOS DE SOFTWARE BASEADOS NO METAMODELO SPEM 2.0 9 RESUMO O uso de processos de desenvolvimento de software nas organizações de TI tem se tornado cada vez mais comum. Um dos motivos é que a qualidade do produto de software está relacionada com a qualidade do processo utilizado na sua construção. Nesse contexto, o interesse das organizações é estabelecer um ou mais processos de desenvolvimento de software bem definidos; adaptando-os, quando necessário, para atender metas específicas dos projetos de software. Contudo, devido à grande quantidade de elementos e relacionamentos que um processo de desenvolvimento de software possui, as atividades de definição e adaptação de processos são tarefas não triviais. Quando alguns cuidados não são tomados, inconsistências podem ser facilmente introduzidas em um processo de desenvolvimento de software, fato que pode, muitas vezes, ocasionar a geração de um processo inadequado que acarretará em erros durante a execução de um projeto de software. Considerando a necessidade de evitar inconsistências em um processo de desenvolvimento de software, esta pesquisa propõe uma infraestrutura que viabiliza a definição e adaptação dos processos de desenvolvimento de software consistentes baseados no metamodelo SPEM 2.0. A infraestrutura definida é composta por uma extensão ao metamodelo SPEM 2.0, um conjunto de regras de boa-formação para consistência dos processos de desenvolvimento de software e um protótipo de ferramenta que auxilia o uso do metamodelo proposto e das regras de boa-formação. Palavras chave: consistência, processo de desenvolvimento de software, definição de processos, adaptação de processos, metamodelo SPEM 2.0

10

11 AN INFRASTRUCTURE TO CONSISTENCY OF SPEM-BASED SOFTWARE DEVELOPMENT PROCESSES ABSTRACT The use of software development processes in the IT organizations has become common. This happens because the quality product is related to the process quality. The main interest of the IT companies is to adopt one or more well-defined software development processes and tailor them when necessary to meet the projects specific needs. However, since the amount of elements and relationships of a software development process is huge, defining and tailoring a software development process are not trivial activities. Inconsistencies may easily be introduced into a software development process when certain precautions are not taken. As a consequence, an inadequate software development process may be created to a software project causing errors during its enactment. Considering the need to avoid inconsistencies in a software development process, this research proposes a consistence infrastructure that enables defining and tailoring consistent software development processes based on SPEM 2.0 metamodel. The proposed infrastructure is composed by an extension to the SPEM 2.0 metamodel, a set of well-formedness rules related to the consistency of the software development processes and a tool prototype that supports automatically the proposed metamodel and well-formedness rules. Keywords: consistency, software development process, process definition, process tailoring, SPEM 2.0 metamodel

12

13 LISTA DE FIGURAS Figura 1 - Etapas da pesquisa... 30 Figura 2 - Ciclo de vida dos processos de software. (Adaptado [Mac00])... 35 Figura 3 - Camadas de metamodelagem propostas pela OMG... 44 Figura 4 - Divisão entre Method Content e Process Structure... 45 Figura 5 - Estrutura de pacotes do SPEM 2.0... 46 Figura 6 - Ponto de conformidade - SPEM Complete... 46 Figura 7 - Ponto de conformidade - SPEM with Behavior and Content... 47 Figura 8 - Ponto de conformidade - SPEM Method Content... 47 Figura 9 - Metaclasses ExtensibleElement e Kind definidas no pacote Core... 48 Figura 10 - Metaclasses do pacote Core... 49 Figura 11 - Taxonomida das metaclasses do pacote Process Structure... 50 Figura 12 - Metaclasses e associações do pacote Process Structure... 51 Figura 13 - Metaclasses e associações do pacote Managed Content... 53 Figura 14 - Taxonomida das metaclasses do pacote Method Content... 54 Figura 15 - Metaclasses e associações do pacote Method Content... 54 Figura 16 - Taxonomida das metaclasses do pacote Process with Methods... 56 Figura 17 - Metaclasses e associações do pacote Process with Methods... 56 Figura 18 - Taxonomida das metaclasses do pacote Method Plugin... 57 Figura 19 - Associações entre as metaclasses Method Library, Method Plugin e Method Configuration... 58 Figura 20 - Metaclasse Variability definida no pacote Method Plugin... 58 Figura 21 - Exemplo de aplicação dos relacionamentos usedactivity e supressedbreakdownelement... 60 Figura 22 - Exemplos de aplicação do mecanismo Variability em elementos do Method Content... 64 Figura 23 - Resultados da aplicação do mecanismo Variability em elementos do Method Content... 65 Figura 24 - Exemplos de aplicação do mecanismo Variability no elemento Activity... 65 Figura 25 - Organização do metamodelo sspem 2.0 nas camadas de metamodelagem propostas pela OMG... 95 Figura 26 - Metaclasses e relações incluídas e/ou alteradas no pacote Process Structure... 99 Figura 27 - Sequenciamento definido para atividades do metamodelo SPEM 2.0... 110 Figura 28 - Gráfico que demonstra a execução da transição A SS B e da transição B FF A... 111

14 Figura 29 - Gráfico que demonstra a execução da transição A FF B e da transição B FS A... 112 Figura 30 - Sequenciamento definido para atividades do metamodelo SPEM 2.0 com inclusão de nova transição obtida através de informações sobre transitividade das relações... 113 Figura 31 - Sequenciamentos definidos para atividades utilizando-se, respectivamente das transições da metaclasse WorkSequenceKind e dos conceitos Atividade_Início e Atividade_fim... 114 Figura 32 - Sequenciamento definido para atividades utilizando-se dos conceitos Atividade_Início e Atividade_fim... 115 Figura 33 - Pequeno sequenciamento definido para atividades utilizando-se das transições da metaclasse WorkSequenceKind... 115 Figura 34 - Transformação do sequenciamento da Figura 34 para os conceitos Atividade_Início e Atividade_fim... 116 Figura 35 - Sequenciamento definido para atividades que possuem sub-atividades... 118 Figura 36 - Sequenciamento definido para atividades e também para suas sub-atividades... 118 Figura 37 - Metaclasses e relações incluídas e/ou alteradas no pacote Method Content... 121 Figura 38 - Inclusão de metaclasses no pacote Process with Methods para organizar o conteúdo do repositório (Method Content)... 127 Figura 39 - Inclusão de metaclasses no pacote Process with Methods para organizar o conteúdo dos processos de software... 128 Figura 40 - Relações alteradas no pacote Process with Methods... 129 Figura 41 - Exemplo de aplicação do relacionamento usedactivity do tipo extension... 140 Figura 42 - Resultado da aplicação do relacionamento usedactivity do tipo extension.. 142 Figura 43 - Exemplo de aplicação do relacionamento usedactivity do tipo extension e localcontribution... 143 Figura 44 Resultado da aplicação do relacionamento usedactivity do tipo extension e localcontribution... 144 Figura 45 - Exemplo de aplicação do relacionamento usedactivity do tipo extension entre atividades de processos diferentes... 145 Figura 46 - Exemplo de aplicação do relacionamento usedactivity do tipo extension, localcontribution e localreplacement... 148 Figura 47 - Resultado da aplicação do relacionamento usedactivity do tipo extension, localcontribution e localreplacement... 149 Figura 48 - Exemplo de aplicação do relacionamento usedactivity do tipo extension, localcontribution e localreplacement entre atividades de processos diferentes... 150 Figura 49 - Resultado da aplicação do relacionamento usedactivity do tipo extension, localcontribution e localreplacement entre Atividades de Processos Diferentes... 151 Figura 50 - Exemplo de aplicação do relacionamento supressedbreakdownelement... 153 Figura 51 - Análise de impacto resultante da aplicação do relacionamento supressedbreakdownelement... 154

Figura 52 - Diagrama que representa o fluxo de atividades para definição e adaptação de processos... 163 Figura 53 - Representação da associação do pacote Process with Methods que permite realizar os apontamentos do pacote Process Structure para o Pacote Method Content 171 Figura 54 - Exemplo de funcionamento do Method Content proposto nesta pesquisa... 175 Figura 55 - Classes do pacote Process Structure... 178 Figura 56 - Classes do pacote Process with Methods... 190 Figura 57 - Classes do pacote Method Content... 195 Figura 58 - Classes do Pacote Method Plugin... 198 Figura 59 - Arquitetura de sspem 2.0 Tool... 203 Figura 60 - OpenUP incluído em sspem 2.0 Tool... 206 Figura 61 - Exemplo de validação em sspem 2.0 Tool... 208 Figura 62 - Validação da Activity Testing Validate... 208 Figura 63 - Janela Problems View em sspem Tool... 209 Figura 64 - Validação do processo OpenUP original... 211 Figura 65 - Detalhamento da Iteração Inception Iteration do OpenUP... 212 Figura 66 - Diagrama de atividades da Iteração Inception Iteration... 213 Figura 67 - Detalhamento da atividade incluída no OpenUP... 216 Figura 68 - Inclusão da atividade Verify and Validate Requirements em sspem Tool... 217 Figura 69 - Validação do processo OpenUP com dependências entre produtos de trabalho...... 218 Figura 70 - Detalhamento das tarefas do Cenário 3... 222 Figura 71 - Inclusão do Cenário 3 em sspem Tool... 224 Figura 72 - Primeira validação do Cenário 3 (sem informações novas de sequenciamento)... 224 Figura 73 - Interface em sspem Tool mostrando o detalhamento do fluxo definido para a Iteração Inception Iteration... 226 Figura 74 - Validação do Cenário 3 após inclusão das novas informações de sequenciamento... 226 Figura 75 - Interface em sspem Tool mostrando as situações-problema de sequenciamento incluídas no Cenário 3 destaque para a validação de ciclos... 227 Figura 76 - Validação do Cenário 3 após a inclusão das situações-problema de sequenciamento... 228 Figura 77 - Interface em sspem Tool mostrando as situações-problema de sequenciamento incluídas no Cenário 3 destaque para a validação de nodos de início de fim do processo... 229 Figura 78 - Validação do Cenário 3 após a inclusão das situações-problema de sequenciamento - sem formação de ciclos... 230 Figura 79 - Primeira validação do Cenário 4 após a criação de caminhos entre tarefas e exclusão do produto de trabalho Test Log... 232 15

16 Figura 80 - Validação do Cenário 4 - após consertar erros do produto de trabalho Work Items List... 233 Figura 81 - Validação do Cenário 4 após a criação de caminhos entre tarefas e exclusão do parâmetros de entrada para a tarefa Plan Project... 234 Figura 82 - Validação do Cenário 4 processo 100% consistente... 235 Figura 83 - Elementos afetados pela exclusão do produto de trabalho Vision... 237 Figura 84 - Elementos afetados pela exclusão do produto de trabalho Glossary... 238 Figura 85 - Elementos afetados pela exclusão da tarefa Verify Requirements... 238 Figura 86 - Validação do Cenário 4 após operações de exclusão processo 100% consistente... 239 Figura 87 - Validação do Cenário 4 após primeiras operações de inclusão de elementos... 240 Figura 88 - Validação do Cenário 4 após primeiras operações de inclusão de relacionamentos... 241 Figura 89 - Entradas e Saídas da Atividade Agree on Technical Approach... 242 Figura 90 - Resultado da Herança da Atividade Agree on Technical Approach... 242 Figura 91 - Resultado do Framework de Validação para a Herança da Atividade Agree on Technical Approach... 243 Figura 92 - Validação do Cenário 5 após inclusões de elementos no processo relacionados com nodos especiais... 245 Figura 93 - Validação do Cenário 5 após as últimas inclusões de elementos neste Cenário... 246 Figura C.1 - Exemplo de sequenciamento de atividades com proposta de exclusões... 273 Figura C.2 - Análise de impacto para informações de sequenciamento... 273 Figura C.3 - Reorganização do sequenciamento após as exclusões de atividades... 274

17 LISTA DE TABELAS Tabela 1 - Principais terminologias utilizadas nos processo de software... 34 Tabela 2 - Regras para o mecanismo contributes... 61 Tabela 3 - Regras para o mecanismo replaces... 62 Tabela 4 - Regras para o mecanismo extends... 62 Tabela 5 - Regras para o mecanismo extends-replaces... 63 Tabela 6 - Referências da revisão sistemática... 72 Tabela 7 - Primeira parte dos resultados da revisão sistemática... 73 Tabela 8 - Segunda parte dos resultados da revisão sistemática... 74 Tabela 9 - Premissas para os processos de software descritas no contexto do metamodelo SPEM 2.0... 88 Tabela 10 - Relação dos Elementos de Processo e das Metaclasses do Metamodelo SPEM 2.0... 96 Tabela 11 - Relação de alterações e regras de boa-formação incluídas no pacote Process Structure... 97 Tabela 12 - Combinações para as transições possíveis entre duas atividades... 111 Tabela 13 - Relação de alterações e regras de boa-formação incluídas no pacote Method Content... 119 Tabela 14 - Relação de alterações e regras de boa-formação incluídas no pacote Process with Methods... 126 Tabela 15 - Análise de impacto para a exclusão de uma instância do elemento InternalUse... 154 Tabela 16 - Elementos criados no Method Content e Process Structure na criação do processo OpenUP... 205 Tabela 17 - Premissas e regras analisadas no Cenário 1... 214 Tabela 18 - Relação de dependências entre os produtos de trabalho do OpenUP... 215 Tabela 19 - Premissas e regras analisadas no Cenário 2... 220 Tabela 20 - Premissas e regras analisadas no Cenário 3... 230 Tabela 21 - Premissas e regras analisadas no Cenário 4... 244 Tabela 22 - Relação de elementos relacionados com nodos inicial e final incluídos no Cenário 5... 245 Tabela 23 - Relação de elementos incluídos no Cenário 5... 245 Tabela 24 - Premissas e regras analisadas no Cenário 5... 247 Tabela A.1 - Palavras-chaves e sinônimos... 259

18 Tabela C.1 - Análise de impacto para a exclusão de uma instância do elemento ExternalUse... 266 Tabela C.2 - Análise de impacto para a exclusão de uma instância do elemento Activity... 267 Tabela C.3 - Análise de impacto para a exclusão de uma instância do elemento TaskUse... 268 Tabela C.4 - Análise de impacto para a exclusão de uma instância do elemento RoleUse... 268 Tabela C.5 - Análise de impacto para a exclusão de uma instância do elemento ProcessPerformer... 269 Tabela C.6 - Análise de impacto para a exclusão de uma instância do elemento ProcessParameter... 270 Tabela C.7 - Análise de impacto para a exclusão de uma instância do elemento WorkProductUseRelationship... 271 Tabela C.8 - Análise de impacto para a exclusão de uma instância do elemento ProcessResponsabilityAssignment... 271

19 LISTA DE SIGLAS APE CMMI EMF EPF Fol MDD MOF OCL OMG OPEN OPF PA PML RSM RUP SME SPEM SPI TI UML WBS agenttool Process Editor Capability Maturity Model Integration Eclipse Modeling Framework Eclipse Process Framework First-Order Logic Model Driven Development Meta Object Facility Object Constraint Language Object Management Group Object-oriented Process, Environment and Notation OPEN Process Framework Process Area Process Modeling Language Rational Software Modeler Rational Unified Process Situational Method Engineering Software & Systems Process Engineering Meta-Model Specification Software Process Improvement Tecnologia da Informação Unified Modeling Language Work Breakdown Element

20

21 SUMÁRIO 1 INTRODUÇÃO... 25 1.1 Objetivo Geral da Tese... 27 1.1.1 Objetivos Específicos... 28 1.2 Metodologia de Pesquisa... 28 1.2.1 Etapas de Pesquisa... 29 1.3 Contribuições da Tese... 31 1.4 Estrutura da Tese... 32 2 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE... 33 2.1 Introdução... 33 2.2 Processos de Software nas Organizações de TI... 34 2.3 Definição de Processos de Software... 36 2.3.1 Estruturação dos Processos de Software nas Organizações... 38 2.3.1.1 Processo Padrão de Desenvolvimento de Software... 38 2.3.1.2 Engenharia de Método... 39 2.4 Adaptação dos Processos de Software... 40 2.5 Execução dos Processos de Software... 42 2.6 Metamodelos e Modelos... 42 2.6.1 SPEM 2.0... 43 2.6.1.1 Estrutura do Processo x Conteúdo... 44 2.6.1.2 Definição dos Pacotes... 45 2.6.1.3 Pontos de Conformidade... 46 2.6.1.4 Funcionamento e Principais Classes dos Pacotes SPEM 2.0... 48 2.6.1.5 Adaptação de Processos no SPEM 2.0... 58 2.7 Considerações Finais... 66 3 CONSISTÊNCIA X PROCESSOS DE SOFTWARE... 67 3.1 Introdução... 67 3.2 Consistência em Processos de Software... 68 3.3 Revisão Sistemática sobre Consistência em Processos de Software... 71 3.3.1 Consistência na Fase de Definição dos Processos de Software... 74 3.3.1.1 Conclusões e Lacunas Identificadas para a Fase de Definição de Processos. 79 3.3.2 Consistência na Fase de Adaptação dos Processos de Software... 80

22 3.3.2.1 Conclusões e Lacunas Identificadas para Fase de Adaptação de Processo... 86 3.4 Premissas para Consistência dos Processos de Software... 87 3.5 Considerações Finais... 92 4 INFRAESTRUTURA PARA CONSISTÊNCIA DOS PROCESSOS DE SOFTWARE... 93 4.1 Identificação do Escopo... 93 4.2 Camadas de Metamodelagem... 94 4.3 Extensão do Metamodelo SPEM 2.0 sspem 2.0... 95 4.3.1 Pacote Process Structure... 97 4.3.1.1 Alterações sobre Metaclasses e Relações do Pacote Process Structure... 98 4.3.1.2 Regras de Boa-Formação do Pacote Process Structure... 101 4.3.2 Pacote Method Content... 119 4.3.2.1 Alterações sobre Metaclasses e Relações do Pacote Method Content... 119 4.3.2.2 Regras de Boa-Formação do Pacote Method Content... 120 4.3.3 Pacote Process with Methods... 125 4.3.3.1 Alterações sobre Metaclasses e Relações do Pacote Process with Methods 126 4.3.3.2 Regras de Boa-Formação do Pacote Process with Methods... 130 4.3.4 Pacote Method Plugin... 137 4.4 Mecanismos de Adaptação de Processos... 138 4.4.1 Relacionamentos usedactivity e supressedbreakdownelement... 138 4.4.2 Metaclasse Variability... 156 4.5 Pontos de Conformidade... 160 4.6 Considerações Finais... 160 5 GUIA PARA DEFINIÇÃO E ADAPTAÇÃO DE PROCESSOS DE SOFTWARE... 162 5.1 Definição da Biblioteca Etapa 1... 162 5.2 Definição do Repositório de Conteúdo Etapa 2... 162 5.3 Definição do Repositório de Processos Etapa 3... 165 5.4 Adaptação de Processos Etapa 4... 168 5.5 Funcionamento do Repositório de Conteúdos (Method Content) baseado na Engenharia de Método... 170 5.6 Considerações Finais... 176 6 FORMALIZAÇÃO DAS REGRAS DE BOA-FORMAÇÃO PARA CONSISTÊNCIA EM LÓGICA DE PRIMEIRA ORDEM... 177 6.1 Pacote Process Structure... 178

23 6.2 Pacote Process with Methods... 189 6.3 Pacote Method Content... 195 6.4 Pacote Method Plugin... 198 6.5 Considerações Finais... 199 7 AVALIAÇÃO... 200 7.1 Protótipo... 200 7.1.1 Tecnologias utilizadas... 201 7.1.1.1 Eclipse Modeling Framework (EMF)... 201 7.1.1.2 IBM Rational Software Modeler (RSM)... 201 7.1.2 Visão Geral de sspem Tool... 202 7.1.3 Arquitetura de sspem Tool... 203 7.1.4 Funcionalidades... 204 7.2 Cenários de Teste... 204 7.2.1 Inclusão do OpenUP em sspem Tool... 204 7.2.2 Cenário 1... 209 7.2.3 Cenário 2... 214 7.2.4 Cenário 3... 221 7.2.5 Cenário 4... 231 7.2.6 Cenário 5... 244 7.3 Considerações Finais... 247 8 CONCLUSÕES E TRABALHOS FUTUROS... 249 8.1 Trabalhos Futuros... 250 REFERÊNCIAS... 252 APÊNDICE A PROTÓCOLO DA REVISÃO SISTEMÁTICA... 259 APÊNDICE B REGRAS DE BOA-FORMAÇÃO REDEFINIDAS PARA O PACOTE PROCESS WITH METHODS... 263 APÊNDICE C ANÁLISE DE IMPACTO PARA OS MECANIMOS USEDACTIVITY, SUPRESSEDBREAKDOWNELEMENT E VARIABILTIY... 266

24 APÊNDICE D FORMALIZAÇÃO DAS REGRAS DE BOA-FORMAÇÃO REDEFINIDAS PARA O PACOTE PROCESS WITH METHODS... 275

25 1 INTRODUÇÃO Ao longo dos últimos anos, o software tem conquistado um papel essencial e crítico em nossa sociedade, uma vez que a dependência por produtos e serviços oferecidos através de sistemas de computador, é cada vez mais comum [Fug00]. Nesse sentido, a indústria do software está passando por um acentuado crescimento, impulsionado pelas exigências do mercado, no sentido de desenvolverem seus produtos de software em prazos e custos determinados, obedecendo a padrões de qualidade. Para auxiliar as organizações de Tecnologia da Informação - TI a atingirem níveis mais elevados de qualidade em seus produtos de software, satisfazendo prazos e custos, encontram-se os processos de desenvolvimento de software (ou simplesmente processos de software), que são a principal base para melhorar a produtividade das equipes de desenvolvimento, com vistas à qualidade dos produtos de software desenvolvidos [ZAH98]. Com base nesse contexto, o interesse das organizações de TI é definir um ou mais processos de software, adaptando-os, quando necessário, para atender metas específicas dos projetos de software. Definir um processo de software consiste em escolher um conjunto de elementos tais como tarefas, produtos de trabalho e papéis, combinando e organizando estes elementos em fluxos de trabalho para a construção ou manutenção de um produto de software. Já a adaptação desse processo envolve adicionar, excluir e/ou modificar alguns de seus elementos e relacionamentos com o objetivo de torná-lo mais apropriado para o alcance das metas de um projeto de software específico [Yoo01]. Dada a complexidade de um processo de software, decorrente da sua elevada quantidade de elementos e relacionamentos, ambas as atividades de definição e adaptação de processos não são triviais. Alguns cuidados devem ser tomados durante estas atividades, principalmente para evitar a incidência de inconsistências nos processos de software. De acordo com Harmsen [Har97], uma inconsistência em um processo de software é representada por um conjunto de informações incompletas e/ou incoerentes nos seus elementos e relacionamentos, e, quando não identificada previamente, esta inconsistência é reproduzida na execução dos projetos de software, o que pode ocasionar o seu insucesso. Na literatura, soluções têm sido propostas para a identificação de inconsistências em processos de software. Em geral, o foco tem sido a definição de um conjunto de

26 regras de consistência e também a definição de uma atividade específica para a checagem da consistência dos processos de software [Atk07], [Baj07] e [Hsu08]. Além disso, um ponto comum nessas soluções é a indicação do uso de um metamodelo como base para definição e adaptação dos processos de software. Segundo Perez e Sellers [Per07a], processos de software definidos a partir de um metamodelo geralmente oferecem um alto grau de formalismo e melhor suporte para consistência e customização, uma vez que os conceitos que formam sua base são explicitamente definidos. Além disso, como metamodelos são normalmente representados com diagramas de classe da Unified Modeling Language UML [Omg03], eles já são capazes de representar restrições através das multiplicidades entre suas metaclasses, e, ainda, permitem associar restrições mais complexas através da linguagem natural ou linguagens formais, tais como, Object Constraint Language OCL [War03], Z [Mou01], Lógica de Primeira Ordem (em inglês First-order Logic FoL) [Smu95], entre outras. Existem diversos metamodelos de processo, tais como: Software & Systems Process Engineering Meta-Model Specification - SPEM 1.1 [Omg02], OPEN Process Framework OPF [Fir02], entre outros. Atualmente, o metamodelo referência para a definição de processos de software é o SPEM 2.0, que foi publicado pela Object Management Group - OMG em 2007 [Omg07a]. Tal metamodelo tem sido utilizando em muitas pesquisas, tais como em [Was06], [Ben07], [Fer10], [Rod10] e [Par11]. O SPEM 2.0 é usado para definir processos de software e também prevê atividades de adaptação, já que ele possui um conjunto de relacionamentos para reuso e variabilidade que permite definir variações de um mesmo processo de software para diferentes projetos. Segundo a especificação do SPEM 2.0, a meta em definir um metamodelo referência é viabilizar a criação de uma grande variedade de processos de software para diferentes culturas que utilizam diferentes níveis de formalismo e modelos de ciclo de vida. Apesar da importância do supracitado, é necessário ressaltar que embora o metamodelo SPEM 2.0 seja bastante completo e represente um avanço para área de processos de software, este metamodelo não possui regras específicas para as atividades de definição e adaptação de processos consistentes. Além disso, analisando a literatura disponível, constata-se que os estudos que abordam o aspecto da consistência em processos de software só o fazem de forma parcial. Esse é o caso, por exemplo, dos estudos que apresentam regras apenas para a definição de processos e não abordam as atividades de adaptação [Atk07], [Hsu08], [Bao08], [Fer10], [Rod10], ou ainda, dos

27 estudos que tratam da consistência de apenas alguns aspectos e/ou elementos de um processo de software, como por exemplo, da consistência referente ao sequenciamento de tarefas [Bao08]. Diante disso, constata-se como uma lacuna para área de pesquisa sobre processos de software, a falta de estudos mais completos sobre a consistência desses processos durante suas atividades de definição e adaptação. Entende-se por mais completos estudos que considerem os principais elementos de um processo de software e que definam soluções para o tratamento da consistência em ambas as atividades de definição e adaptação de processos. Segundo a OMG [Omg02] e [Omg07a], os principais elementos de um processo de software são Atividades, Tarefas, Papéis e Produtos de Trabalho. Baseado no exposto acima, esta tese tem como o foco estudar todos os aspectos de consistência de um processo de software considerando seus principais elementos e relacionamentos nas suas atividades de definição e adaptação. Durante a condução desse estudo, o metamodelo SPEM 2.0 será utilizado como referência e como resultado de pesquisa será apresentada uma infraestrutura que viabiliza a definição e adaptação de processos de sofware consistentes. A infraestrutura definida será composta por uma extensão ao metamodelo SPEM 2.0, um conjunto de regras de boa-formação para consistência dos processos de software e um protótipo de ferramenta que auxilia o uso do metamodelo proposto e das regras de boa-formação. Como resultado adicional da pesquisa, será também apresentado um guia que auxilia a definição e adaptação de processos de software utilizando a infraestrututra apresentada neste trabalho. As seções seguintes, apresentam um detalhamento sobre os objetivos, etapas de pesquisa e contribuições desta pesquisa. 1.1 Objetivo Geral da Tese O objetivo geral desta pesquisa é o desenvolvimento de uma infraestrutura que suporte a definição e adaptação de processos de software consistentes baseados no metamodelo SPEM 2.0.

28 1.1.1 Objetivos Específicos Para a consecução do objetivo geral proposto pode ser desmembrado nos seguintes objetivos específicos: Identificar um conjunto de premissas para a definição de processos de software consistentes; Propor uma extensão ao metamodelo SPEM 2.0 para o atendimento das premissas para a contrução de processos de software consistentes. A extensão proposta inclui e/ou altera alguns elementos, bem como alguns relacionamentos do metamodelo SPEM 2.0; Propor um conjunto de regras de boa-formação para consistência que serão utilizadas nas atividades de definição e adaptação dos processos de software. Como forma de respeitar as regras de boa-formação definidas na pesquisa será desenvolvida a análise dos impactos sobre os elementos e relacionamentos para os mecanismos de adaptação do metamodelo SPEM 2.0; Desenvolver um guia que auxilia o uso da infraestrutura para consistência proposta nesta pesquisa. Formalizar as regras de boa-formação para consistência em Lógica de Primeira Ordem; Implementar um protótipo de ferramenta que automatize a infraestrutura para consistência proposta nesta pesquisa; Avaliar a solução proposta, utilizando-se de cenários simulados que são baseados no processo OpenUP [Ope10]. Uma vez apresentado os objetivos geral e específicos deste estudo, introduz-se a questão de pesquisa utilizada: Como viabilizar a consistência dos processos de software baseados no metamodelo SPEM 2.0 durante suas atividades de definição e adaptação? 1.2 Metodologia de Pesquisa Embora alguns trabalhos relacionados com o objetivo desta pesquisa tenham sido encontrados na revisão teórica desenvolvida, não se tem conhecimento de que o problema apresentado tenha sido tratado da mesma maneira em outros estudos. Desta forma, esta pesquisa se caracteriza como exploratória, sendo o principal método de

29 pesquisa utilizado, de acordo com a classificação de Oates [Oat06], projeto e criação (do inglês design and creation). Segundo Oates [Oat06], a estratégia de pesquisa projeto e criação têm como finalidade o desenvolvimento de novos produtos de TI que podem ser construções, modelos, métodos ou instanciações. Para este último caso, considera-se como instanciação um trabalho que demonstra que modelos, métodos, gêneros ou teorias podem ser implementados em um sistema de computador. Salienta-se que, para projetos que seguem a estratégia de projeto e criação serem considerados de fato uma pesquisa, eles devem demonstrar, segundo Oates, qualidades acadêmicas, como análise, discussão, justificação e avaliação crítica [Oat06]. Nesta pesquisa os novos produtos de TI desenvolvidos envolvem um modelo e um protótipo de ferramenta. O modelo proposto é resultado da extensão proposta ao metamodelo SPEM 2.0 e o protótipo de ferramenta implementa o modelo desenvolvido. A avaliação do modelo foi realizada com o auxílio do protótipo de ferramenta desenvolvido e realizada de forma analítica, ou seja, verificando-se os resultados produzidos pelo modelo em decorrência de algumas informações manipuladas em cenários simulados. A seção a seguir apresenta as etapas que constituíram esta pesquisa: 1.2.1 Etapas de Pesquisa Resumidamente, esta tese foi realizada através de quatro etapas, as quais estão representadas pela Figura 1 e são descritas a seguir: Etapa 1: inicialmente, para obter maior conhecimento sobre o assunto de pesquisa, realizou-se um levantamento bibliográfico e estudo do referencial teórico que permitiu aprofundar os conhecimentos sobre processos de software. Etapa 2: com base nos resultados da etapa 1, um estudo foi realizado sobre os processos de software Rational Unified Process RUP [Kru00], Object-oriented Process, Environment and Notation OPEN [Fir02] e também sobre o metamodelo SPEM 2.0. A partir disto, um conjunto de premissas relacionadas com a consistência foi identificado para os processos de software que são baseados no metamodelo SPEM 2.0. Com base nas premissas definidas, uma nova análise ao metamodelo SPEM 2.0 foi realizada e como resultado para esta análise, identificou-se a necessidade de uma extensão a esse

30 metamodelo. Desta forma, ainda nesta etapa foram estudados os mecanismos de extensão para metamodelos e o mecanismo de merge 1 da UML 2.0 [Omg07b]. Figura 1 - Etapas da pesquisa Etapa 3: foi nesta etapa que se desenvolveu grande parte da infraestrutura que viabiliza a consistência dos processos de software que são definidos e adaptados a partir do metamodelo SPEM 2.0. Para fazer isso, uma extensão a esse metamodelo foi proposta envolvendo os seguintes passos: (1) alteração e/ou inclusão de alguns elementos e relacionamentos; (2) inclusão de um conjunto de regras de boa-formação que visam atender as premissas desta pesquisa para consistência dos processos de software e que devem ser utilizadas nas atividades de definição e adaptação de processsos; e (3) alteração das semânticas de alguns mecanismos de adaptação do metamodelo SPEM 2.0 com a proposição de uma análise de impacto para os elementos e relaciomentos desse metamodelo, quando operações de adaptação são conduzidas. Em adição, na etapa 3, todo o conjunto de regras de boa-formação foi formalizada em Lógica de Primeira Ordem e o guia que auxilia o uso da infraestrutura para consistência foi definido. Também foi nesta etapa que foi conduzida uma revisão sistemática sobre o tratamento da consistência dos processos de software para suas atividades de definição e adaptação. O objetivo da revisão foi acompanhar o estado da arte sobre os trabalhos relacionados com esta pesquisa. 1 Explicado na Seção 2.6.1.3 deste trabalho.

31 Etapa 4: a etapa final desta pesquisa constituiu-se da construção do protótipo de ferramenta e da avaliação do metamodelo e regras de boa-formação definidos nesta pesquisa. O protótipo desenvolvido oferece suporte automatizado para definição e adaptação de processos de software. 1.3 Contribuições da Tese As contribuições desta tese para a área de Engenharia de Software estão relacionadas principalmente com o desenvolvimento de uma infraestrutura que suporte a definição e adaptação de processos de software consistentes baseados no metamodelo SPEM 2.0, o qual é tido hoje pela OMG como principal referência na área de processos de software. A infraestrutura proposta abrange os principais elementos e relacionamentos de um processo de software e aborda aspectos de sua consistência tanto para as atividades de definição quanto para as atividades de adaptação. Desta forma, indica-se uma contribuição para o estado da arte nos estudos sobre a consistência dos processos de software. Os produtos que integram a infraestrutura para consistência também são considerados como contribuições específicas desta pesquisa e são: Extensão ao Metamodelo SPEM 2.0 que inclui e/ou altera alguns elementos, bem como alguns relacionamentos do metamodelo SPEM 2.0. A principal contribuição do metamodelo proposto é a redefinição de alguns relacionamentos do metamodelo SPEM 2.0 que geram inconsistências para os processos de software. Conjunto de regras de boa-formação para consistência que são utilizadas nas atividades de definição e adaptação dos processos de software. A principal contribuição das regras é guiar a construção (através das atividades de definição e adaptação) de processos de software consistentes. Pode-se apontar também como uma contribuição a análise de impacto definida para os mecanismos de adaptação do metamodelo SPEM 2.0 que permite identificar todos os elementos e relacionamentos afetados durante as operações de adaptação realizadas sobre um processo de software. A principal contribuição da análise de impacto proposta é garantir que as dependências de um processo de software serão respeitadas durante uma operação de adaptação, evitando assim, que inconsistências sejam geradas no processo resultante.

32 Protótipo de ferramenta que implementa: (1) a extensão do metamodelo proposta nesta pesquisa incluindo o conjunto total de regras de boa-formação para consistência de processos (definição e adaptação dos processos); (2) mecanismo de funcionamento do repositório de conteúdos do metamodelo SPEM 2.0; (3) visões gráficas para um processo de software; (5) análise de impacto para os mecanismos de adaptação; e (5) um mecanismo para verificação de processos de software. A principal contribuição do protótipo de ferramenta desenvolvido é auxiliar o uso e avaliação da infraestrutura de consistência proposta nesta pesquisa. Além disso, o suporte automatizado para esta infraestrutura é considerado de alta importância, uma vez que, como mencionado acima, a quantidade e complexidade de informações envolvidas em um processo de software construído a partir da extensão proposta ao metamodelo SPEM 2.0 é elevada. Além das contribuições específicas dos produtos que integram a infraestrutura de consistência, também são definidos nesta pesquisa um conjunto de premissas para a definição de processos de software consistentes e um guia para definição e adaptação dos processos de software. O guia elaborado especifica um fluxo de atividades a ser seguido para a definição e adaptação de processos utilizando a infraestrututra apresentada neste trabalho. A contribuição mais expressiva deste guia é facilitar o uso da solução aqui proposta, uma vez que devido a grande quantidade de elementos, relacionamentos e regras de boa-formação da extensão definida para o metamodelo SPEM 2.0, seu uso se torna uma tarefa não trivial. 1.4 Estrutura da Tese Este documento está organizado da seguinte forma: o capítulo 2 apresenta a base teórica da área e descreve o funcionamento do metamodelo SPEM 2.0; o capítulo 3 discorre sobre o aspecto da consistência em processos de software e apresenta o estado da arte sobre este assunto; o capítulo 4 descreve a extensão proposta ao metamodelo SPEM 2.0; o capítulo 5 descreve o guia para definição e adaptação de processos definidos nesta pesquisa; o capítulo 6 apresenta a formalização das regras de boaformação; o capítulo 7 apresenta a avaliação da solução proposta nesta pesquisa baseado em cenários de uso; e, por fim, no capítulo 8 são apresentadas as considerações finais seguidas das referências bibliográficas.

33 2 PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE Este capítulo descreve a introdução à área de estudo e também traz alguns conceitos utilizados no contexto desta pesquisa. Em seguida, um detalhamento do metamodelo SPEM 2.0 é apresentado. 2.1 Introdução No contexto da computação, um processo é uma tarefa em execução inserida em um dispositivo computacional [Ost87]. No entanto, não existe um consenso entre os autores no tocante a definição de um processo de software. Adicionalmente, existem também diferenças na nomenclatura utilizada para o termo na área de pesquisa, já que alguns autores utilizam como sinônimo para processo de software os termos método ou metodologia. Segundo Jacobson et al. [Jac01], um processo de software é o conjunto completo de atividades necessárias para transformar requisitos de usuários em produtos de software. Como as organizações geralmente consideram o desenvolvimento de um produto de software como um projeto, então, um processo pode ser considerado como uma seqüência de passos que um projeto pode seguir para desempenhar alguma tarefa. Para [Fug00], um processo de software é um conjunto de atividades e resultados associados que levam ao desenvolvimento de um produto de software. Ainda, segundo Fuggetta [Fug00], o processo de software pode ser definido como um conjunto coerente de políticas, estruturas organizacionais, tecnologias, procedimentos e produtos de trabalho que são necessários para compreender, desenvolver e manter um produto de software. Com relação aos estudos que utilizam o termo método ou metodologia, apresentam-se [Sel03], [Ser04], [Per05a], [Bur08] e [Kor10]. De acordo com Perez e Sellers [Per05a], uma metodologia é a especificação do processo a ser seguido, dos produtos de trabalho a serem gerados, das pessoas e das ferramentas envolvidas durante um esforço de desenvolvimento de software. Para Sellers [Sel03], uma metodologia (ou método) inclui aspectos de processo e descrições dos produtos de trabalho que serão gerados na construção e/ou manutenção de um produto de software. De acordo com Kornyshova et al. [Kor10], por sua vez, uma metodologia é um conjunto de idéias,

34 abordagens, técnicas e ferramentas usadas por analistas de sistemas para a construção e/ou manutenção de um produto de software. Através do exposto acima, pode-se observar que, embora existam vários termos e definições na presente área de pesquisa, não existem diferenças significativas para os conceitos apresentados. Assim, deste ponto em diante, assume-se, nesta pesquisa, os termos processo de software, metodologia e método como sinônimos. Ainda no contexto da solução apresentada neste estudo, o termo processo de software será utilizado. Faz-se necessário também definir, neste ponto, os termos utilizados no presente estudo para os principais elementos de um processo de software. Isso porque, mediante a existência de vários processos de software na literatura, nem sempre o nome dos elementos são os mesmos, sendo comum termos diferentes terem o mesmo significado. Nesta pesquisa, assume-se a utilização dos termos apresentados no metamodelo SPEM, na sua versão 2.0 [Omg07a], que são Atividade, Artefato, Papel e Tarefa. Contudo, como outros processos de software são utilizados em alguns pontos deste trabalho, a Tabela 1 apresenta a correlação entre os termos utilizados nos processos RUP, OPEN e OpenUP com os termos do metamodelo SPEM 2.0. Tabela 1 - Principais terminologias utilizadas nos processo de software SPEM 2.0 Artefato Papel Atividade Tarefa RUP Artefato Papel Fase / Iteração / Workflow Detail Atividade OPEN Produto de Atividade / Técnica / Produtor Trabalho Workflow / Stage Tarefa OpenUP Produto de Fase / Iteração / Papel Trabalho Atividade / Tarefa Tarefa Durante a descrição dos trabalhos relacionados e definições da literatura apresentadas no texto que segue, correlações entre a nomenclatura original dos estudos e a terminologia utilizada nessa pesquisa, também serão realizadas. 2.2 Processos de Software nas Organizações de TI Na literatura, muitos estudos indicam que o estabelecimento de um ou mais processos de software nas organizações de TI tem se tornado cada vez mais comum. Um dos motivos disso é que existem fortes indícios que a qualidade do produto de software está relacionada com a qualidade do processo utilizado na sua construção [Yoo01] [Xu05] [Kan08]. Desta forma, o interesse das organizações de TI é estabelecer um ou mais

35 processos de software bem definidos buscando atender metas específicas de seus projetos de software. Além do interesse pelo aumento da qualidade dos produtos de software, outro aspecto a ser considerado é que a adoção de um processo de software torna-se ainda mais importante para organizações de TI que desejam implantar um modelo de qualidade como as normas ISO/IEC 15504 [Iso98], ISO/IEC 12007 [Iso95] ou Capability Maturity Model Integration (CMMI) [Chr03]. Isso porque tais modelos possuem seus esforços centrados na definição e uso de processos de software e na constante melhoria destes processos [Fug00]. Nesse sentido, estabelecer um processo de software é uma tarefa não trivial [Fug00]. Basicamente, isto envolve as seguintes atividades [Omg07a]: (1) definição de um processo de software (em inglês process modeling); (2) adaptação do processo de software (em inglês process tailoring); e (3) execução do processo de software (em inglês enactment). Tais atividades ocorrem em instantes diferentes e constituem o ciclo de vida básico de um processo de software, conforme mostrado na Figura 2. Figura 2 - Ciclo de vida dos processos de software. (Adaptado [MAC00]) Na Figura 2, no instante 0 e 3, em tom mais claro, está a atividade de definição de um processo de software. As entradas para esta atividade, no instante 0, são as características de desenvolvimento da organização, das políticas e de outros fatores tais como se a organização pretende atingir algum nível de maturidade em determinado

36 modelo de qualidade. A saída para essa atividade é a definição de um ou mais processos de software para a organização. Em seguida, o instante 1, em tom de cinza intermediário, representa a atividade de adaptação de um processo para um projeto específico. Nesse momento, além das entradas já consideradas para o instante de definição de processos, somam-se as entradas específicas de cada projeto de software, tais como características do projeto, ferramentas disponíveis, características da equipe e do ciclo de vida selecionado para o projeto. Logo, a saída desta atividade é a especificação de um processo adequado ao projeto de software, comumente chamado de processo específico do projeto. Por fim, em tom mais escuro está o instante 2, que representa a atividade de execução do processo de software. Nesse momento, os recursos são selecionados e associados ao processo específico do projeto. As saídas desta atividade são os resultados do projeto relativos ao processo de software executado (por exemplo, lições aprendidas) e possíveis ações corretivas. A Figura 2 exibe também que a saída do instante de execução pode ser entrada para uma nova atividade de definição do processo de software, o que caracteriza o instante 3 do ciclo de vida do processo. Isso ocorre, porque melhorias podem ser realizadas, a qualquer momento, em um processo de software. Em verdade, todo processo de software precisa ser monitorado na execução dos projetos de software para que possíveis falhas não ocorram. A importância da constante melhoria de um processo de software pode ser possivelmente notada pela quantidade de trabalhos disponíveis na literatura especializada, a qual é chamada de Melhoria de Processos de Software (em inglês Software Process Improvement SPI). Na seção seguinte, cada uma das atividades do ciclo de vida de um processo de software será apresentada. Como o foco desta pesquisa concentra-se nas atividades de definição e adaptação de processos de software, estas serão as atividade mais detalhadas. Torna-se importante também ressaltar que os aspectos relacionados com a melhoria dos processos de software não serão tratados nesta pesquisa. 2.3 Definição de Processos de Software O primeiro passo para a definição de um processo de software é a especificação de suas informações. Isto envolve escolher um conjunto de elementos tais como

37 atividades, tarefas, produtos de trabalho e papéis, combinando e organizando estes elementos em fluxos de trabalho para a construção ou manutenção de um produto de software [Jac01]. Nesse estágio, deve-se considerar as tecnologias utilizadas pela organização onde o processo será utilizado, os tipos de software desenvolvidos, o domínio de aplicação, o grau de maturidade (ou capacitação) da equipe em engenharia de software, as características próprias da organização e as características dos projetos e das equipes [Hum89], [Mac00] e [Roc01]. Tipicamente, para definir um processo de software as organizações de TI podem se utilizar de processos off-the-shelf, tais como RUP e OPEN, os quais estão disponíveis na literatura e especificam as melhores práticas de engenharia de software. Os referidos processos podem ser adotados por completo, ou podem ainda, ser adaptados de acordo com as características da organização. Faz-se possível, também, que uma organização baseie-se em mais de um desses processos mencionados para especificação de seu ou, ainda, que especifique seu processo próprio, através de consultorias ou de um grupo de processos de software interno. Independente da estratégia escolhida para a definição do processo, além da especificação de suas informações, torna-se necessário também a sua modelagem. Modelar um processo de software consiste em representar as informações deste, utilizando alguma linguagem de modelagem de processos [Rib02]. Uma linguagem de modelagem de processos (em inglês Process Modeling Language PML) tem como objetivo apoiar a representação de diversos conceitos que caracterizam um processo de software [Cug98]. Atualmente, uma grande quantidade de linguagens de modelagem de processos está disponível na literatura, mas, nos últimos anos, em uma tentativa de padronização destas linguagens muitos pesquisadores e profissionais da área têm adotado o uso da UML como PML [Hsu08]. Já em 1999, Franch e Ribó [Fra99] definiram a UML como uma linguagem emergente que havia despertado um grande interesse por parte da indústria e academia e estava se tornando, de fato, um padrão na área da modelagem de processos. Nesse sentido, a popularização da UML, como linguagem para modelagem de processos, deve-se principalmente ao fato de importantes processos terem sido modelados, utilizando essa linguagem. Esse é o caso, por exemplo, dos processos RUP e OPEN, os quais possuem metamodelos de processos representados com diagramas de classe da UML [Kru00] e [Fir02]. Outro fato que contribuiu para o aumento do uso da UML