Uma abordagem para a gerência das modificações e da

Transcrição

Uma abordagem para a gerência das modificações e da
INPE-14099-TDI/1078
UMA ABORDAGEM PARA A GERÊNCIA DAS MODIFICAÇÕES
E DA CONFIGURAÇÃO EM UM AMBIENTE INTEGRADO PARA
O DESENSOLVIMENTO E GESTÃO DE PROJETOS DE
SOFTWARE
Martha Adriana Dias Abdala
Dissertação de Mestrado do Curso de Pós-Graduação em Computação Aplicada,
orientada pelo Dr. Nilson Sant’Anna, aprovada em 29 de junho de 2004.
INPE
São José dos Campos
2006
681.3.06
Abdala, M. A. D.
Uma abordagem para a gerência das modificações e da
configuração em um ambiente integrado para o
desenvolvimento e gestão de projetos de software / M. A. D.
Abdalla. – São José dos Campos: Instituto Nacional de
Pesquisas Espaciais (INPE), 2004.
292 p.; - (INPE-14099-TDI/1078)
1.Gerenciamento da configuração. 2.Engenharia de
software. 3.Ambientes de engenharia de software.
4.Processos. 5.Modelos. I.Título.
“Mudar e mudar para melhor são duas coisas diferentes”.
Provérbio alemão.
A meus pais,
ANDRÉ MIGUEL ABDALA e
MARIA DAS DÔRES DIAS ABDALA.
AGRADECIMENTOS
Ao Senhor Jesus, o Autor da minha Fé: “Não tenho palavras para agradecer Tua
bondade... Nunca me deixes esquecer que tudo o que tenho, tudo o que sou, o que vier a
ser, vem de Ti, Senhor”. †
Ao meu orientador, Prof. Dr. Nilson Sant´Anna, agradeço pela oportunidade
proporcionada e pelos conhecimentos transmitidos.
Aos meus colegas e amigos, em especial ao Carlos Lahoz e à Luciana Burgareli, pelas
discussões técnicas e também pelo apoio, incentivo e pela paciência que tiveram
comigo: muito obrigada.
Meus agradecimentos à equipe da SESIS, em especial à Roberta Panzera, e à estagiária
Juliana que, com suas contribuições no desenvolvimento do protótipo, enriqueceram
este trabalho.
Minha gratidão ao Instituto Nacional de Pesquisas Espaciais, INPE, aos seus
professores e ao Instituto de Aeronáutica e Espaço, IAE, pela oportunidade desta
realização profissional.
Finalmente, aos meus familiares minha gratidão pelo apoio recebido, sem o qual não
teria chegado até aqui.
†
Bessa, A. P. V., em “Nos braços do Pai”, IBL, 2002.
RESUMO
Organizações responsáveis pelo Programa Espacial Brasileiro, o INPE, Instituto
Nacional de Pesquisas Espaciais, e o IAE, Instituto de Aeronáutica e Espaço, vêm
procurando entender e melhorar os processos empregados no desenvolvimento de
software, de maneira a alcançar alta qualidade e confiabilidade nos produtos
desenvolvidos. No INPE, a necessidade da adoção de novos paradigmas baseados nos
processos de software levou à proposta de um ambiente integrado para o apoio ao
desenvolvimento e gestão de projetos de software para o controle de satélites. Dentre
estes processos, os da Gerência das Modificações e da Configuração de Software (GCS)
são aqueles que visam minimizar os problemas que as modificações trazem durante o
desenvolvimento e a manutenção do software, de maneira a garantir a integridade dos
produtos gerados. Este trabalho de dissertação de mestrado apresenta uma abordagem
utilizada para a definição e a modelagem dos processos da GCS para este ambiente
integrado. A modelagem dos processos da GCS e o suporte automatizado deste
ambiente apresentam-se como facilitadores para a definição e a efetiva implantação
destes naquelas organizações.
AN APPROACH TO THE CHANGE AND CONFIGURATION MANAGEMENT IN AN
INTEGRATED ENVIRONMENT FOR SOFTWARE PROJECTS DEVELOPMENT
AND MANAGEMENT
ABSTRACT
The National Institute for Space Research (INPE), and the Aeronautics and Space Institute
(IAE), organizations responsible for the Brazilian Space Program, are trying to understand
and improve the processes employed in software development, in order to obtain software
products that are reliable and of higher quality. At INPE, the necesssity to adopt new
paradigms based on software development processes led to a proposal of an integrated
environment to support the development and management of the satellite control software
project. Among the processes to be supported by the environment, the Software Change
and Configuration Management (SCM) processes are those which purpose is to minimize
the problems that changes cause during software development and maintenance, so that the
integrity of the generated products may be assured. This dissertation presents an approach
used to define and model the SCM processes to this process-centered integrated
environment. The process modeling and the automated support provided by this
environment are presented as the factors that will facilitate the definition and effective
implementation of the SCM process in those organizations.
SUMÁRIO
Pág.
LISTA DE FIGURAS .........................................................................................................
LISTA DE TABELAS .........................................................................................................
CAPÍTULO 1 – INTRODUÇÃO
............................................................................................ 25
1.1 – Objetivo............................................................................................................................ 27
1.2 – Motivação......................................................................................................................... 28
1.2.1 – As Modificações no Software ..................................................................................... 28
1.2.2 – A Utilização de Técnicas de Modelagem de Processo................................................. 29
..........................................
1.2.3 – A GCS e os Padrões e Modelos Qualidade ................................................................. 29
1.2.4 – A GCS no Ambiente Integrado e o Suporte ao Processo............................................. 30
...............................
1.2.5 – A GCS e o Desenvolvimento de Software no Setor Aeroespacial
Brasileiro...................................................................................................................... 31
1.3 – Esboço Geral................................................................................................................... 33
CAPÍTULO 2 – A GERÊNCIA DA CONFIGURAÇÃO DE SOFTWARE
......................
35
2.1 – A Natureza e Complexidade de um Produto de Software............................................... 35
2.2 – A Gerência da Configuração de Software - Definições e Atividades............................. 36
2.2.1 – As Atividades da GCS.................................................................................................. 39
2.2.1.1 – Implementação do Processo...................................................................................... 39
2.2.1.2 – Identificação da Configuração................................................................................... 41
2.2.1.3 – Controle da Configuração.......................................................................................... 41
2.2.1.4 – Relato da S ituação da Configuração......................................................................... 42
2.2.1.5 – Avaliação da Configuração....................................................................................... 42
2.2.1.6 – Gerenciamento da Liberação e Entrega..................................................................... 43
2.3 – Conceitos Básicos da GCS.............................................................................................. 44
2.3.1 – Item de Configuração de So ftware............................................................................... 44
2.3.2 – Configuração- base........................................................................................................ 46
2.3.3 – Desenvolvimento de Software Baseado em Configuração- base.................................. 47
2.3.4 – Distribuições................................................................................................................. 51
2.3.5 – Informações Sobre os Itens de Configuração: Metadados........................................... 51
2.3.6 – Repositórios e Bibliotecas de Software........................................................................ 55
2.3.7 – Controle de Versões..................................................................................................... 57
2.3.8 – Linhas de Desenvolvimento......................................................................................... 59
2.3.9 – Variantes e Desenvolvimento Paralelo......................................................................... 60
2.3.10 – Operações de Acesso às Versões no Repositório....................................................... 62
2.3.11 – Agregações................................................................................................................. 62
2.4 – Breve Histórico da Gerência da Configuração de Software............................................ 63
2.5 – Áreas de Funcionalidade da GCS.................................................................................... 66
2.6 – A GCS e os Requisitos do Projeto................................................................................... 69
2.7 – Políticas e Modelos da GCS............................................................................................ 69
2.7.1 –Política de Check In/Check Out..........................................................……………….. 71
2.7.2 – Política de Composição................................................................................................ 72
2.8 – Mecanismos da GCS....................................................................................................... 73
2.9 – O Estado Atual da GCS................................................................................................... 73
2.10 – As Ferramentas de GCS................................................................................................ 75
CAPÍTULO 3 – MODELAGEM, PADRÕES E AMBIENTES CENTRADOS EM
PROCESSO DE SOFTWARE
.................................................................... 79
3.1 – Processos de Software, Modelos de Processos e Ambientes Centrados em Processos.. 81
3.2 – A Técnica de Modelagem de Processos.......................................................................... 84
3.2.1 – Elementos de um Processo de Software....................................................................... 84
3.2.2 – As Linguagens de Modelagem de Processos............................................................... 86
3.2.3 – Os propósitos das PMLs............................................................................................... 87
3.2.4 – Abordagens para a Modelagem de Processos.............................................................. 88
3.3 – A Linguagem de Modelagem de Processo SPEM........................................................... 89
3.3.1 – Arquitetura da Modelagem........................................................................................... 90
3.3.2 – Elementos da Linguagem SPEM.................................................................................. 91
3.3.3 – A notação SPEM.......................................................................................................... 93
3.4 – Padrões de Processos de Software e Modelos de Maturidade......................................... 96
3.4.1 – A Gerência da Configuração de Software em Padrões e Modelos de Maturidade...... 98
3.4.1.1 – A GCS e o Padrão ISO/IEC 12207........................................................................... 99
3.4.1.2 – A GCS no Modelo ISO/IEC 15504........................................................................... 99
3.4.1.3 – A Maturidade da GCS............................................................................................... 104
3.5 – O Ambiente Integrado para Apoio ao Desenvolvimento e Gestão de Projetos de
Software........................................................................................................................... 106
3.5.1 – Definições e Conceitos................................................................................................. 106
3.5.2 – Caracterização do Ambiente Integrado........................................................................ 107
3.5.3 – Arquitetura Lógica do Ambiente.................................................................................. 107
3.5.4 – A Arquitetura Física..................................................................................................... 109
3.5.5 – Ciclo de Vida do Processo no Ambiente...................................................................... 109
3.5.5.1 – A Fase de Planejamento do Processo........................................................................ 110
3.5.5.2 – A Fase de Execução do Processo.............................................................................. 112
3.5.5.3 – A Fase de Avaliação do Processo.............................................................................. 114
3.5.6 – O Serviço de Coordenação de Processos de Software................................................. 114
3.5.7 – As Gerências no Ambiente integrado........................................................................... 115
3.5.8 – Os Requisitos para a Gerência das Modificações e da Configuração no Ambiente
Integrado...................................................................................................................... 116
CAPÍTULO 4 – A
MODELAGEM
DO
PROCESSO
DA
GERÊNCIA
DAS
MODIFICAÇÕES E DA CONFIGURAÇÃO
............................................ 117
4.1 – Histórico e Desenvolvimento do Trabalho...................................................................... 118
4.2 – O Escopo do Processo da GCS........................................................................................ 120
4.3 – Estratégias para a Definição e Modelagem do Processo da GCS................................... 121
4.4 – A Modelagem do Processo da GCS................................................................................ 122
4.4.1 – Papéis e Responsabilidades no Processo da GCS........................................................ 123
4.4.2 – As Atividades do Processo da GCS............................................................................. 126
4.4.3 – Os Produtos do Processo da GCS................................................................................. 128
4.4.4 – O Processo de Definição das Estratégias Organizacionais da GCS............................. 131
4.4.4.1 – Objetivos e Requisitos Básicos do Processo............................................................. 132
4.4.4.2 – Papéis, Responsabilidades e Produtos Envolvidos no Processo............................... 134
4.4.4.3 – Atividades do Processo............................................................................................. 135
4.4.5 – O Processo de Planejamento da GCS........................................................................... 141
4.4.5.1 – Objetivos e Requisitos Básicos do Processo............................................................. 142
4.4.5.2 – Papéis, Responsabilidades e Produtos Envolvidos no Processo............................... 145
4.4.5.3 – Atividades do Processo............................................................................................. 146
4.4.5.3.1 – O Pacote Definição do Gerenciamento e Relações com o Ambiente de Projeto... 147
4.4.5.3.2 – O Pacote Descrição das Atividades da GCS.......................................................... 150
4.4.5.3.3 – O Pacote Definição da Condução das Tarefas, Fases e Marcos da GCS............... 154
4.4.5.3.4 – O Pacote Descrição de Ferramentas, Técnicas e Métodos..................................... 156
4.4.5.3.5 – O Pacote Definição de Linhas de Desenvolvimento Paralelo................................ 159
4.4.5.3.6 – O Pacote Definição do Ambiente da GCS............................................................. 160
4.4.6 – O Processo de Gerenciamento da Configuração.......................................................... 162
4.4.6.1 – Objetivos e Requisitos Básicos do Processo............................................................. 163
4.4.6.2 – Papéis, Responsabilidades e Produtos Envolvidos no Processo............................... 166
4.4.6.3 – Atividades do Processo............................................................................................. 171
4.4.6.3.1 – O Pacote Identificação da Configuração................................................................ 172
4.4.6.3.2 – O Pacote Armazenamento e Controle dos Itens de Configuração......................... 175
4.4.6.3.2.1 – A Definição de Trabalho Armazenar Item de Configuração para Produção...... 177
4.4.6.3.2.2 – A Definição de Trabalho Liberar It em de Configuração para Produção............ 180
4.4.6.3.2.3 – A Definição de Trabalho Liberar Item de Configuração para Utilização........... 181
4.4.6.3.3 – O Pacote Relato da Situação da Configuração....................................................... 185
4.4.7 – O Processo Gerenciamento das Solicitações de Modificação...................................... 188
4.4.7.1 – Objetivos e Requisitos Básicos do Processo............................................................. 189
4.4.7.2 – Papéis, Re sponsabilidades e Produtos Envolvidos no Processo............................... 191
4.4.7.3 – Atividades do Processo............................................................................................. 195
4.4.7.3.1 – Atividade Identificar e Registrar a Solicitação de Modificação............................. 196
4.4.7.3.2 – Atividade Avaliar Impacto da Modificação........................................................... 198
4.4.7.3.3 – Atividade Identificar Atividades de Verificação/Validação.................................. 199
4.4.7.3.4 – Atividade Aprovar Modificação............................................................................. 199
4.4.7.3.5 – Atividade Agendar Modificação............................................................................ 199
4.4.7.3.6 – Atividade Desenvolver Produto............................................................................. 201
4.4.7.3.7 – Atividade Avaliar Produto de Trabalho................................................................. 201
4.4.7.3.8 – Atividade Revisar Modificação Implementada...................................................... 201
4.4.7.3.9 – Atividade Relatar Situação das Modificações........................................................ 202
CAPÍTULO 5 – O SUPORTE AUTOMATIZADO AO PROCESSO DA GERÊNCIA
DAS MODIFICAÇÕES E DA CONFIGURAÇÃO................................... 203
5.1 – Os Requisitos para a GCS no Ambiente Integrado......................................................... 204
5.1.1 – Gerenciamento do Processo da GCS............................................................................ 204
5.1.2 – Desenvolvimento de Software Baseado em Configurações- base................................ 206
5.1.3 – Suporte ao ciclo de vida do item de configuração........................................................ 206
5.1.4 – Suporte ao controle de versões..................................................................................... 207
5.1.4.1 – Biblioteca da GCS..................................................................................................... 207
5.1.4.2 – Política Check- in/Checkout e Composição............................................................... 207
5.1.5 – Política de Liberação.................................................................................................... 208
5.1.6 – Suporte ao Ciclo de Vida de uma Solicitação de Modificação.................................... 208
5.1.7 – Integração com a Garantia do Produto......................................................................... 208
5.2 – A Implementação do Protótipo Change and Configuration Management no Ambiente
Integrado.......................................................................................................................... 209
5.2.1 – Os Requisitos do Protótipo........................................................................................... 210
5.2.1.1 – Definir Estratégias da GCS....................................................................................... 211
5.2.1.2 – Planejar a GCS.......................................................................................................... 211
5.2.1.3 – Gerenciar Configurações- base.................................................................................. 213
5.2.1.3.1 – Caso de Uso Descrever Item de Configuração....................................................... 215
5.2.1.3.2 – Caso de Uso Criar Configurações- base.................................................................. 216
5.2.1.3.3 – Caso de Uso Liberar IC para Modificação............................................................. 216
5.2.1.3.4 – Caso de Uso Incorporar Modificações nas Configurações- base............................ 216
5.2.1.3.5 – Caso de Uso Obter IC para Utilização................................................................... 217
5.2.1.3.6 – Caso de Uso Obter Situação da Configuração e das Modificações....................... 217
5.2.1.3.7 – Registrar Distribuição de Configuração- base......................................................... 218
5.2.1.4 – Gerenciar Solicitações de Modificação..................................................................... 218
5.2.1.4.1 – Caso de Uso Abrir Solicitação de Modificação..................................................... 220
5.2.1.4.2 – Caso de Uso Avaliar Modificação.......................................................................... 221
5.2.1.4.3 – Caso de Uso Agendar Modificação........................................................................ 221
5.2.1.4.4 – Caso de Uso Registrar Implementação da Modificação........................................ 222
5.2.1.4.5 – Caso de Uso Registrar Verificação da Qualidade.................................................. 222
5.2.1.4.6 – Caso de Uso Revisar Modificação Implementada................................................. 222
5.3 – Os Recursos do Ambiente Necessários para os Processos.............................................. 223
5.3.1 – Os Recursos da Ca mada de Armazenamento e Acesso............................................... 223
5.3.2 – Os Recursos da Camada de Serviços........................................................................... 224
5.3.3 – Os Recursos da Camada de Interação com o Us uário.................................................. 229
CAPÍTULO 6 – CONCLUSÕES
231
6.1 – A modelagem de processos............................................................................................. 235
6.2 – Processo e melhoria de processo..................................................................................... 237
6.3 – Recomendações e Trabalhos futuros............................................................................... 237
REFERÊNCIAS BIBLIOGRÁFICAS
..................................................................................... 241
BIBLIOGRAFIA COMPLEMENTAR
................................................................................... 253
APÊNDICE A
A UTILIZAÇÃO DO SPEM NA MODELAGEM DE PROCESSOS 255
APÊNDICE B
EXERCÍCIO DE MODELAGEM - PROCESSO DE
GERENCIAMENTO DAS MODIFICAÇÕES
........................................... 261
APÊNDICE C
TELAS DO PROTÓTIPO CHANGE AND CONFIGURATION
MANAGEMENT........................................................................................ 265
LISTA DE FIGURAS
Pág.
2.1 – Atividades da GCS.......................................................................................................... 39
2.2 – Modelo de Desenvolvimento Genérico........................................................................... 47
2.3 – Visão Geral dos Metadados dos Itens de Configuração.................................................. 52
2.4 – Controle de Versões de um Arquivo............................................................................... 58
2.5 – Linhas de Desenvolvimento............................................................................................ 59
2.6 – Desenvolvimento Paralelo e União................................................................................. 61
2.7 – Agregações...................................................................................................................... 63
2.8 – Áreas de Funcionalidade da GCS.................................................................................... 68
2.9 – Check-out e Check-in....................................………………………………………….. 71
2.10 – A Política de Composição............................................................................................. 72
3.1 – Elementos e Relacionamentos de um Modelo de Processo............................................ 85
3.2 – Níveis de Capacidade e Atributos de Processo.............................................................. 105
3.3 – A Camada Conceitual do Ambiente e-WebProject......................................................... 108
3.4 – Arquitetura Três Camadas para Aplicações Web........................................................... 109
3.5 – Ciclo de Vida do Processo Auditar Produto.................................................................... 110
3.6 – Fase de Planejamento...................................................................................................... 111
3.7 – Os Estados de um Processo em Execução....................................................................... 113
4.1 – O Processo da GCS......................................................................................................... 126
4.2 – O Processo de Definição das Estratégias Organizacionais da GCS................................ 133
4.3 – O Gerente das Modificações e da Configuração e os Produtos do Processo de
Definição das Estratégias Organizacionais da GCS........................................................ 135
4.4 – O Processo de Planejamento da GCS.............................................................................. 144
4.5 – O Gerente das Modificações e da Configuração e os produtos do processo de
Planejamento da GCS...................................................................................................... 146
4.6 – O Pacote de Gerenciamento e Relações como o Ambiente de Projeto........................... 148
4.7 – O Pacote de Descrição das Atividades da GCS.............................................................. 151
4.8 – O Pacote de Definição da Condução das Tarefas, Fases e Marcos da GCS................... 155
4.9 – Pacote de Definição da Utilização de Ferramentas, Técnicas e Métodos....................... 157
4.10 – Pacote de Definição de Linhas de Desenvolvimento Paralelo....................................
159
4.11 – Pacote de Definição do Ambiente da GCS.................................................................
161
4.12 – O Processo Gerenciamento da Configuração................................................................ 165
4.13 – O Responsável pela GCS e os Produtos do Processo de Gerenciamento da
Configuração................................................................................................................. 168
4.14 – O Responsável pelo Produto e os Produtos do Processo de Gerenciamento da
Configuração................................................................................................................. 169
4.15 – Os Gerentes da Qualidade e Projeto e os Produtos do Processo de Gerenciamento da
Configuração................................................................................................................. 170
4.16 – O Cliente da GCS e os Produtos do Processo de Gerenciamento da
Configuração................................................................................................................. 171
4.17 – O Pacote de Identificação da Configuração.................................................................. 173
4.18 – A Definição de Trabalho do Armazenamento e Controle dos Itens de Configuração.. 177
4.19 – Diagrama de atividades da Definição de Trabalho de Armazenar Item de
Configuração para Produção......................................................................................... 179
4.20 – Diagrama de Atividades da Definição de Trabalho de Liberar Item de Configuração
para Produção................................................................................................................ 181
4.21 – Diagrama de Atividades da Definição de Trabalho de Liberar Item de Configuração
para Utilização Interna.................................................................................................. 182
4.22 – Diagrama de Atividades da Definição de Trabalho de Liberar Item de Configuração
para Utilização Interna.................................................................................................. 183
4.23 – Diagrama de Atividades da Definição de Trabalho de Liberar Item de Configuração
para Utilização Externa................................................................................................. 184
4.24 – O Pacote Relato da Situação da Configuração.............................................................. 186
4.25 – O Processo de Gerenciamento das Solicitações de Modificação.................................. 191
4.26 – O Responsável pela GCS e os Produtos do Processo de Gerenciamento das
Solicitações de Modificação.......................................................................................... 194
4.27 – O GCC e os Produtos do Processo de Gerenc iamento das Solicitações de
Modificação................................................................................................................... 195
4.28 – Diagrama de Atividades do Processo de Gerência das Solicitações de Modificação –
Avaliação e Aprovação de uma SM............................................................................... 197
4.29 – Diagrama de Atividades do Processo de Gerência das Solicitações de Modificação –
Encaminhamento para Implantação e Fechamento de SM........................................... 200
5.1 – Diagrama de Contexto do protótipo Change and Configuration Management.............. 210
5.2 – Diagrama de Casos de Uso da Definição das Estratégias da GCS.................................. 211
5.3 – Diagrama de Casos de Uso do Planejamento da GCS.................................................... 212
5.4 – Ciclo de Vida de um Item de Configuração.................................................................... 213
5.5 – Diagrama de Casos de Uso do Gerenciamento das Configurações-base........................ 215
5.6 – Ciclo de Vida de uma Solicitação de Modificação (SM)................................................ 219
5.7 – Diagrama de Casos de Uso do Gerenciamento das Solicitações de Modificação........... 220
A.1 – Comparação entre Fluxos de Trabalho.......................................................................... 259
C.1 – Tela de Trabalho do Usuário.......................................................................................... 266
C.2 – Tela de Acesso do Gerente das Modificações e da Configuração.................................. 267
C.3 – Tela Inicial das Atividades do Gerente das Modificações e da Configuração............... 268
C.4 – Tela de Convenção para Identificação Única para Documentos.................................... 269
C.5 – Tela de Convenções para Formação dos GCCs.............................................................. 270
C.6 – Tela Referente à Lista de Projetos Instanciados............................................................. 271
C.7 – Tela de Escolha de Membros para o GCC-Des.............................................................. 272
C.8 – Tela de Acesso dos Envolvidos com a GCS................................................................... 273
C.9 – Tela Inicial da Atividade de Gerenciamento das Solicitações de Modificação.............. 274
C.10 – Tela de Acompanhamento das SMs............................................................................. 275
C.11 – Tela de Abertura da SM................................................................................................ 276
C.12 – Tela de Acompanhamento das SM com o Status atualizado para “Aberta”................ 277
C.13 – Tela Inicial das Atividades do GCC............................................................................. 278
C.14 – Tela de Acompanhamento das SMs Encaminhadas para Avaliação............................ 279
C.15 – Tela de Avaliação da Modificação............................................................................... 280
C.16 – Tela de Acompanhamento das SM com o Status Atualizado para “Aprovada para
Implementação”............................................................................................................ 281
C.17 – Tela Inicial da Atividade de Agendar SM.................................................................... 282
C.18 – Tela da Atividade Agendar SM.................................................................................... 283
C.19 – Tela Inicial das Atividades do Cliente da GCS............................................................ 284
C.20 – Tela Inicial do Registro da Implementação da Modificação........................................ 285
C.21 – Tela da Atividade Registro da Implementação da Modificação................................... 286
C.22 – Tela Inicial do Registro da Aprovação da Modificação pela Qualidade...................... 287
C.23 – Tela da Atividade Registro da Aprovação pela Qualidade........................................... 288
C.24 – Tela Inicial do Fechamento da SM............................................................................... 289
C.25 – Tela de Fechamento da SM.......................................................................................... 290
C.26 – Registro de Histórico das Modificações....................................................................... 291
C.27 – Registro de Solicitação de Liberação........................................................................... 292
C.28 – Lista de Composição..................................................................................................... 292
LISTA DE TABELAS
Pág.
2.1 – Exemplos de Configuração-base................................................................................... 50
3.1 – Níveis de Abstração da Modelagem de Processos........................................................ 90
3.2 – Principais Ícones e Estereótipos do SPEM.................................................................... 95
3.3 – Categorias e Grupos de Processo do Padrão ISO/IEC 15504....................................... 101
4.1 – Papéis e Responsabilidades da GCS.............................................................................. 149
6.1 – A GCS nos Padrões e no Modelo Proposto................................................................... 233
CAPÍTULO 1
INTRODUÇÃO
Nos últimos 20 anos o software conquistou um papel essencial e crítico na sociedade, cada
vez mais dependente de sistemas computadorizados. Hoje em dia qualquer serviço ou
produto contém ou faz uso de algum software. À medida que mais e mais funcionalidades
são exigidas dos produtos de software estes se tornam mais complexos, aumentando assim
a dificuldade para desenvolvê-los e testá- los (Fuggeta, 2000).
O software pode ser ainda um elemento crítico dentro de um sistema maior. Um erro ou
defeito que venha a conter pode causar perdas não só financeiras, como também de vidas
humanas, como no caso de aplicações de software no controle de aeronaves, trens e metrô,
e também das aplicações aeroespaciais.
Diante disto, tem aumentado a preocupação dos pesquisadores e desenvolvedores em
entender e melhorar a qualidade do software produzido.Uma das principais direções
tomadas pela pesquisa na área de Engenharia de Software é aquela voltada para o estudo e
melhoria dos processos através dos quais o software é desenvolvido. Segundo essa
abordagem, há uma correlação direta entre a qualidade do processo empregado na
construção do software e a qualidade do produto resultante desse processo. A área de
pesquisa que trata destas questões é referenciada pelo termo processo de software
(Fuggetta, 2000).
A área de pesquisa em processo de software surgiu como disciplina ainda nos anos 80,
tendo sido apresentada em uma série de eventos e workshops. Desde então, muitos outros
eventos, publicações e instituições foram criados para tratar do assunto. Entres estas
instituições estão o Software Engeneering Institute (SEI), nos EUA, e o European Software
Institute (ESA), na Europa. Organismos internacionais de padronização também têm
centrado esforços no processo de software, como o International Organization for
Standardization/ International Electrotechnical Commission (ISO/IEC), com os padrões
25
12207 (atividades do ciclo de vida do software) (ISO/IEC 12207, 1995) e 15504
(determinação da capacidade de processo de software) (ISO/IEC 15504-2, 2003) derivado
do modelo de maturidade organizacional Software Process Improvement and Capability
dEtermination (SPICE) (SPICE, 1995).
No Brasil, nota-se nos últimos anos um interesse crescente pelo assunto por parte de
universidades, indústria e organizações governamentais, nos vários eventos de Engenharia
de Software e também em eventos realizados na área de processo de software, como o
SIMPROS, Simpósio Internacional de Melhoria de Processo de Software, um fórum para
intercâmbio de informações e conhecimento na prática de melhoria de processo de
software.
No Instituto Nacional de Pesquisas Espaciais (INPE), a necessidade da adoção desses
novos paradigmas para o desenvolvimento de software levou à proposta de um ambiente
integrado para o apoio ao desenvolvimento e para a gestão de projetos de software para
controle de satélites (Sant'Anna, 2000), que evoluiu para o e-Webproject® 1 , referenciado
neste trabalho como Ambiente ou Ambiente Integrado.
Esse Ambiente consiste de um conjunto integrado de ferramentas para apoiar as atividades
e tarefas do desenvolvimento e gestão do processo de construção de software. Utiliza a
abordagem de processos do modelo SPICE (atual ISO/IEC 15504) para o desenvolvimento
de projetos de software, integra todos os processos necessários de forma adequada à visão
de objetos e está organizado em áreas de negócio, proporcionando apoio eficiente à
gerência de projetos.
Entre as características do Ambiente, pode-se destacar: o trabalho cooperativo centrado no
processo; o conceito de ambiente ativo ou capacidade de forçar o fluxo de trabalho
(workflow); a integração das equipes de trabalho, a utilização de tecnologia para controle
1e-WebProject® é um produto registrado pela SESIS, Sistemas de Engenharia de Software, cujo desenvolvimento é apoiado pelo Programa de Capacitação de Recursos
Humanos (RHAE) do CNPq.
26
dos processos envolvidos no desenvolvimento de software; e a disponibilidade de um
conjunto de serviços oferecidos pela WEB/Internet para os vários participantes do processo
(desenvolvedores, gerentes, clientes), que podem trazer como benefícios a obtenção de
ganhos de produtividade e qualidade do software.
O Ambiente oferece suporte a categorias de gerenciamento estabelecidas pelo Project
Management Institute (PMI) (PMI, 1996), às quais foram acrescentadas outras para atender
melhor às necessidades específicas de projetos de software, como a Gerência das
Modificações e da Configuração de Software (GCS). Caberá ao Ambiente prover o apoio
necessário de maneira a que cada gerência desempenhe com sucesso suas atividades.
O processo de gerenciamento das modificações e da configuração, dentre os vários
processos empregados no desenvolvimento de software, é aquele que fornece as técnicas,
os métodos e procedimentos para manter a integridade do produto de software durante todo
seu ciclo de vida, através do controle sistemático de suas modificações e de seu
armazenamento controlado, bem como do relato da situação do produto a todos os
envolvidos no seu desenvolvimento. Essas atividades ajudam a eliminar inconsistências e
redundância de trabalho, aumentando assim a qualidade do produto e a produtividade dos
desenvolvedores.
1.1
Objetivo
Esta dissertação tem por objetivo apresentar uma abordagem para a definição e modelagem
do processo da Gerência da Configuração de Software para o Ambiente Integrado,
nomeado, neste ambiente, como Gerência das Modificações e da Configuração de
Software . Esta abordagem leva em consideração os processos da Gerência da Configuração
e das Solicitações de Modificação propostos nos padrões e modelos de processo (ISO/IEC
12207, 1995) e (ISO/IEC 15504-5, 2003) e em padrões específicos para a GCS (IEEE 828,
1998). Também são consideradas as funcionalidades da disciplina de Gerência da
Configuração de Software, descritas na literatura, como na abordagem prática apresentada
27
em (Hass, 2002) e as diretrizes propostas em (Sant'Anna, 2000), para definir e modelar os
processos e atividades essenciais desta Gerência que devem ser incorporados em uma
organização desenvolvedora de software de maneira a minimizar os problemas que surgem
durante o ciclo de vida de desenvolvimento do software devido às modificações.
Através do recurso da prototipação será possível apresentar a funcionalidade deste modelo
e ainda identificar os recursos do Ambiente necessários para apoiá- lo.
1.2
1.2.1
Motivação
As Modificações no Software
O software é mutável por natureza. Um produto de software passa por várias
transformações durante o seu ciclo de vida: parte de uma abstração ou idéia, até chegar a
ser código executável por uma máquina, que atenda ao propósito para o qual foi construído.
Modificações são, portanto, inerentes ao software, e inevitáveis em todo o seu ciclo de
desenvolvimento. Elas podem ocorrer também devido à correção de erros, à incorporação
de novas tecnologias e para atendimento a novos requisitos funcionais. Controlar as
modificações feitas no software é uma atividade crítica, pois modificação não gerenciada é,
sem dúvida, uma das causas de falha em entregar sistemas no tempo certo e dentro do
orçamento.
O gerenciamento da configuração, portanto, ajuda a proteger os investimentos no
desenvolvimento de software por meio do controle das modificações nele fe itas,
garantindo, por exemplo, que uma modificação errada possa ser revertida sem afetar a
integridade de todo o sistema. Também fornece uma estrutura básica para suporte a todo o
processo de engenharia de software através da configuração e controle dos subprodutos
deste processo, durante o desenvolvimento e após a entrega do produto. A GCS fornece as
técnicas, os métodos e os procedimentos para manter o histórico do produto, para
28
identificá- lo e localizar cada versão do produto, e controlar suas modificações. A GCS pode
ajudar, ainda, na coordenação e na comunicação entre os membros da equipe de
desenvolvedores, através do uso de um repositório comum de configurações e do suporte a
modificações (Van Brunt, 1996).
1.2.2
A GCS e os Padrões e Modelos de Qualidade
Dada a importância da GCS, padrões e modelos de processo de software, como o ISO/IEC
15504 e ISO/IEC 12207, exigem o controle das modificações nos produtos através do
gerenciamento da configuração. A GCS no Ambiente Integrado visa atender à necessidade
de se manter o controle sobre a configuração e sobre as modificações do produto de
software cujo desenvolvimento será apoiado pelo Ambiente, como recomendam estes
padrões e modelos de processo de software.
Segundo a abordagem proposta neste trabalho, um escopo mínimo para a GCS no
Ambiente Integrado pode ser definido pelas atividades e práticas básicas dos padrões de
processo que, se realizadas pelas organizações desenvolvedoras de software, resultam no
cumprimento dos propósitos da GCS e, conseqüentemente, contribuem para que melhores
níveis de qualidade dos produtos de software sejam obtidos nessas organizações.
Como nesses padrões as atividades e práticas básicas que a GCS deve realizar são
apresentadas em linhas gerais, ou seja, o padrão declara o que o processo deve fazer, e não
detalhes de como fazer para que o processo seja implantado, é preciso então definir o
processo da GCS, detalhar suas práticas básicas e descrever as maneiras como estas devem
ser implementadas.
1.2.3
A Utilização de Técnicas de Modelagem de Processo
Para os pesquisadores da área de processo de software, a principal causa dos problemas é
justamente a falta de um processo de desenvolvimento claramente definido e efetivo.
29
Entender e definir um processo de software não é tarefa trivial. A primeira contribuição da
área de pesquisa de processo de software foi justamente o aumento da percepção de que
desenvolver software é um processo complexo (Fuggeta, 2000). Por isso, sem uma
definição clara do processo, sua implantação efetiva pode ser comprometida.
Desta forma, a definição e a modelagem dos processos da GCS, tendo ainda o suporte
automatizado de um ambiente integrado para sua execução, apresentam-se como
facilitadores para a efetiva implantação destes em uma organização desenvolvedora de
software.
1.2.4
A GCS no Ambiente Integrado e o Suporte ao Processo
A GCS deve ser parte integrante de um ambiente completo de engenharia de software
(Sharon e Anderson, 1997). O Ambiente Integrado permite que as atividades de
manutenção da integridade do produto, como seu armazenamento controlado e o
acompanhamento das modificações, sejam integradas mais facilmente ao processo de
desenvolvimento e à cultura de uma organização. Outra vantagem de se ter a GCS
integrada ao Ambiente é a facilidade da utilização, por outras gerências, das informações
que ela fornece. Como exemplo, temos a informação da situação da configuração do
produto, que pode ser utilizada pela Gerência de Projeto para acompanhamento do
progresso de desenvolvimento do projeto.
A incorporação da idéia de suporte ao processo nas ferramentas e ambientes de
gerenciamento de configuração de software tem sido alvo de pesquisas nos últimos anos,
tendo surgido várias abordagens baseadas em atividades. O objetivo dessas abordagens é
fornecer capacidades de modelagem poderosas e mecanismos associados de maneira que os
usuários possam definir e controlar seus próprios processos de gerência de configuração
(Estublier, 2002; Estublier et al, 1997).
30
A GCS é uma das áreas da engenharia de software onde o suporte automatizado ao
processo provou ser crítico, tendo se tornado um dos maiores argumentos dos vendedores
de software e uma das maiores expectativas dos clientes (Estublier et al, 2002). Isto se deve
principalmente ao fato de que a maioria dos processos são repetitivos, prontos, assim, para
o suporte automatizado (Conradi e Westfechtel, 1999).
Antes do processo de GCS ser automatizado é necessário um entendimento completo dos
seus fundamentos e das políticas, procedimentos e instruções necessárias que são
adequadas para execução do processo (Starbuck, 1997).
Portanto, neste trabalho, procurou-se definir os processos e atividades essenciais da GCS,
baseadas nos padrões e modelos de processo, possibilitando assim a identificação dos
diferentes níveis de suporte automatizado que facilitam sua efetiva implantação em um
ambiente de desenvolvimento de software, como o Ambiente Integrado.
1.2.5
A GCS e o Desenvolvimento de Software no Setor Aeroespacial Brasileiro
Quando se tem um processo de desenvolvimento de software bem estabelecido, com
atividades agrupadas em fases, cujos produtos são bem definidos e documentados, a GCS
constitui-se na espinha dorsal sobre a qual essas fases são conduzidas e os produtos finais e
intermediários, controlados. No desenvolvimento de software comercial nacional,
entretanto, a realidade é um pouco diferente (Oliveira et. al., 2001).
Boa parte do software no Brasil é desenvolvida por pequenas empresas, que lutam contra a
escassez de recursos e deficiências tecnológicas para manter seus produtos no mercado.
Fases do desenvolvimento de software não são bem definidas; a codificação se mistura à
especificação e projeto do software. Testes, quando realizados, não são sistemáticos e
racionais. Isso tudo é refletido na documentação, quase sempre deficie nte e desatualizada
(Oliveira et. al., 2001).
31
No INPE, assim também como no Instituto de Aeronáutica e Espaço (IAE) esses problemas
têm sido combatidos com esforços para entender e melhorar o processo de desenvolvimento
de software que, no caso, pode ser crítico quanto à missão e à segurança.
No INPE, os sistemas de software para controle de satélites têm sido desenvolvidos com a
adoção de modelos e métodos de engenharia de software em seus projetos, de maneira a
alcançar alta qualidade e confiabilidade nos produtos desenvolvidos (Sant´Anna, 2000). O
ambiente integrado para apoio ao desenvolvimento e gestão de projetos de software para
sistemas de controle de satélites tem sido desenvolvido justamente para apoiar o processo
de engenharia de software e consolidar os resultados obtidos. A GCS é um importante
aspecto da Engenharia de Software a ser contemplado pelo Ambiente.
No IAE, a preocupação com um processo de desenvolvimento de software existiu desde o
início do projeto do Software Aplicativo de Bordo (SOAB) do Veículo Lançador de
Satélites Brasileiro (VLS), devido à sua natureza crítica (Moura et. al., 1999). O padrão
adotado como referência para o desenvolvimento do SOAB, o DoD Std 2167A (DoD
2167A, 1988) tem no gerenciamento da configuração um dos seus destaques.
No desenvolvimento de software crítico quanto à segurança a GCS tem um papel ainda
mais importante, já que muitos acidentes reportados estão relacionados a falhas de software
(Kulkarni, 1996) que podem ocorrer devido a modificações em sistemas externos ou
subsistemas internos, ou como conseqüência não intencional de outras modificações. As
modificações no software devem, portanto, ser controladas e também ter seu impacto na
segurança avaliado (Leveson, 1995).
No caso do SOAB, por exemplo, as modificações são inevitáveis, já que o veículo lançador,
o sistema maior no qual o software se insere, está em desenvolvimento e, portanto, sujeito a
modificações em seus subsistemas, que acabam por se refletir no software. Assim, um
processo de gerência da configuração é essencial para que as modificações no software
32
possam ser feitas de maneira controlada, o que tem sido alvo de estudos da equipe
responsável pelo seu desenvolvimento (Moura et al, 2003).
Ainda que possa ser vista muitas vezes como um processo burocrático, que pode atrapalhar
ou inibir a criatividade dos desenvolvedores, principalmente em ambientes de pesquisa, a
GCS tem, no entanto, o objetivo de manter o controle sistemático e necessário sobre as
modificações, não o de inibi- las. A GCS não é a solução para todos os problemas do
software, mas uma disciplina que, envolvendo aspectos técnicos e gerenciais, se propõe a
minimizar os problemas que surgem durante o ciclo de vida de desenvolvimento do
software devido às modificações. É, portanto, um processo chave num ambiente de
desenvolvimento
de
software
de
qualidade,
como
no
caso
das
organizações
desenvolvedoras de software na área aeroespacial.
1.3
Esboço Geral
Este trabalho foi dividido em outros seis capítulos, apresentados a seguir:
•
CAPÍTULO 2 – A GERÊNCIA DA CONFIGURAÇÃO DE SOFTWARE : Este
Capítulo apresenta os fundamentos desta disciplina, bem como seus vários aspectos
considerados para elaboração da abordagem proposta.
•
CAPÍTULO 3 – MODELAGEM, PADRÕES E AMBIENTES CENTRADOS EM
PROCESSO DE SOFTWARE : Apresentam-se neste Capítulo os fundamentos
teóricos para a abordagem proposta na dissertação, como modelos e padrões de
qualidade, processos de software, ambientes centrados em processos de software e o
ambiente integrado para o desenvolvimento e gestão de projetos de software.
•
CAPÍTULO 4 – A MODELAGEM DO PROCESSO DA GERÊNCIA DAS
MODIFICAÇÕES E DA CONFIGURAÇÃO: Neste Capítulo mostra-se a definição e
33
a modelagem do processo da Gerência das Modificações e da Configuração para o
Ambiente Integrado.
•
CAPÍTULO 5 – O SUPORTE AUTOMATIZADO AO PROCESSO DA GERÊNCIA
DAS MODIFICAÇÕES E DA CONFIGURAÇÃO: Neste Capítulo são feitas
algumas considerações sobre as funcionalidades da GCS que o Ambiente deve
prover para que o processo modelado seja implantado de maneira a alcançar seus
objetivos. Um protótipo de aplicação é apresentado para ilustrar algumas destas
funcionalidades e possibilidades de automação de partes do processo, como o
gerenciamento das solicitações de modificação. Os recursos necessários para a
implementação do processo da GCS no Ambiente são também apresentados.
•
CAPÍTULO 6 - CONCLUSÕES: Este Capítulo apresenta as conclusões do trabalho
e sugestões de trabalhos futuros.
Feita, pois, esta abordagem introdutória, passa-se à apresentação dos principais
fundamentos da GCS e dos aspectos mais relevantes para este trabalho de pesquisa e sua
conseqüente proposta.
34
CAPÍTULO 2
A GERÊNCIA DA CONFIGURAÇÃO DE SOFTWARE
A Gerência da Configuração de Software (GCS) é uma disciplina abrangente. Vários
aspectos e funcionalidades desta disciplina têm sido explorados sob os mais diferentes
enfoques, tanto na literatura da Enge nharia de Software, em padrões e artigos
especializados, quanto em aplicações e ferramentas de software gratuitas e comerciais.
O conhecimento dos fundamentos da disciplina é essencial para que o processo da GCS
seja definido e descrito, como é feito adiante no Capítulo 4, de maneira que possa ser
implantado em uma organização.
Neste capítulo são apresentados alguns conceitos e definições da GCS, encontrados na
literatura da Engenharia de Software e em padrões, e outros assuntos relacionados,
coletados durante a pesquisa e utilizados no desenvolvimento deste trabalho, iniciandose com um entendimento da natureza e da complexidade de um produto de software.
2.1
A Natureza e Complexidade de um Produto de Software
Um produto de software, diferentemente do hardware no qual é executado, não é uma
entidade física e tangível. É mais complexo, mais fácil de ser modificado e, por
conseguinte, capaz de mais facilmente propagar os efeitos das modificações (Futrell et
al, 2002).
Um produto de software torna-se visível através dos vários modelos abstratos que
representam sua estrutura, sua funcionalidade e seus relacionamentos com o mundo
real, que formam a documentação do produto. Esta documentação torna-se a base para o
desenvolvimento e manutenção de um produto de software e, devido à sua importância,
é muitas vezes considerada parte do próprio software.
Um produto de software pode ser decomposto em vários níveis de hierarquia, como por
exemplo: sistema, subsistemas e componentes. Esta decomposição ajuda a diminuir a
35
comp lexidade, facilita tanto a divisão do trabalho dos desenvolvedores como a
manutenção, permitindo melhor restringir as modificações a partes do sistema.
Um produto de software pode sofrer modificações por vários motivos. O National
Institute of Standards and Technology (NIST) dos EUA, afirma que o software é
modificado para sua adaptação, aperfeiçoamento ou correção (Futrell et al, 2002).
Existe uma relação de dependência entre os componentes de um produto de software.
Modificações feitas na especificação afetam a implementação; modificações em um
subsistema afetam seus componentes, e assim por diante.
O fato de o produto de software ser facilmente modificável lhe confere bastante
flexibilidade, mas adiciona também complexidade ao gerenciamento de sua integridade.
Além disto, o desenvolvimento do produto de software envolve várias pessoas, como
desenvolvedores, gerentes, etc. Quanto mais pessoas estiverem envolvidas no projeto,
mais difícil se tornam a comunicação entre elas e a coordenação de suas atividades.
É necessária, portanto, uma abordagem disciplinada para tratar destas questões: a
Gerência da Configuração de Software - GCS.
2.2
A Gerência da Configuração de Software – Definições e Atividades
Várias definições para a Gerência da Configuração de Software podem ser encontradas
na literatura da Engenharia de Software e de padrões relacionados.
A GCS é definida por (Bersoff et al., 1980) como a disciplina de identificação da
configuração de um sistema, em pontos distintos no tempo, com o propósito de
controlar sistematicamente as modificações na configuração e manter a integridade e a
rastreabilidade da configuração durante todo o ciclo de vida do sistema.
Segundo (Sommerville, 2001), o gerenciamento da configuração de software constituise na aplicação e criação de padrões e procedimentos para o gerenciamento de um
produto de software em desenvolvimento.
36
Segundo (Pressman, 2001), a GCS é um conjunto de atividades projetadas para:
controlar as modificações, através da identificação dos produtos de trabalho que
provavelmente serão modificados; estabelecer relacionamentos entre eles; definir
mecanismos para gerenciar diferentes versões desses produtos de trabalho; controlar as
modificações impostas; e realizar auditorias e relatar as modificações feitas.
Vários padrões internacionais tratam do processo de desenvolvimento de software e,
conseqüentemente, da Gerência da Configuração. Para o padrão ISO/IEC 12207
(ISO/IEC12207, 1995) o processo da GCS é aquele que aplica procedimentos técnicos e
administrativos para suportar o ciclo de vida do software para: identificar e definir itens
de software em um sistema; controlar modificações e liberações dos itens; registrar e
informar a situação dos itens e solicitações de modificação; garantir a integridade,
consistência e correção dos itens; e controlar o armazenamento, o manuseio e a entrega
dos itens.
Vários padrões internacionais estão relacionados diretamente à Gerência da
Configuração. Uma visão geral destes pode ser obtida em (Hass, 2002). Um dos mais
utilizados e conhecidos é o padrão IEEE Std 828 (IEEE 828, 1998), que define a GCS
como a disciplina que fornece os métodos e ferramentas para identificar e controlar o
software durante todo o seu desenvolvimento e utilização.
Todos os padrões e modelos de maturidade para desenvolvimento de software incluem
requisitos para gerenciamento da configuração, apesar desses requisitos variarem de
modelo para modelo.
O CMMI-SW Versão 1.1 (CMMI-SW, 2002) afirma que o propósito da GCS é
estabelecer e manter a integridade dos produtos de trabalho usando a identificação da
configuração, o controle da configuração, o relato da situação da configuração e as
auditorias da configuração.
O padrão ISO/IEC 15504-5 (ISO/IEC 15504-5, 2003) na sua mais recente versão
Committed Draft (CD) de Outubro de 2003 apresenta um grupo de processos
denominado Grupo de Controle de Configuração, onde as atividades de gerenciamento
37
da configuração e de modificações estão agrupadas nos processos de Gerência da
Configuração e Gerência das Solicitações de Modificação. Segundo este padrão, o
propósito da Gerência da Configuração é estabelecer e manter a integridade de todos os
produtos de trabalho de um processo ou projeto e torná- los disponíveis às partes
envolvidas. A Gerência das Solicitações de Modificação tem o propósito de garantir que
as solicitações de modificação sejam gerenciadas, acompanhadas e controladas.
Com relação às áreas de atividades da GCS, encontram-se relacionadas no padrão IEEE
610.12 (IEEE 610.12, 1990) as seguintes: identificação, controle, relato da situação,
auditoria e revisão (Dart, 2000). O padrão IEEE 828 (IEEE 828, 1998), acrescenta a
essas as atividades de controle de interface e controle de subcontratante/vendedor. Dart
(Dart, 1991) considera também como atividades da GCS a construção, o gerenciamento
do processo e o trabalho em equipe, que são tarefas mais específicas para software.
Abordagens encontradas na Engenharia de Software apresentam como atividades
principais da Gerência da Configuração o planejamento da GCS, a gerência de
modificação, a gerência de versão e liberação (release) e a construção de sistemas
(Sommerville, 2001).
Em (Hass, 2002) é apresentada uma visão da GCS orientada a processo, que inclui as
áreas de atividade: identificação, armazenamento, controle de modificação e relato da
situação. Segundo essa abordagem, a área de atividade de auditoria não é considerada
parte da GCS, mas sim da Garantia da Qualidade, já que utiliza suas técnicas e métodos,
como revisões e testes. Ainda segundo a autora, a auditoria é um legado da origem
militar (Departamento de Defesa norte-americano) da GCS. Na prática, no entanto, a
auditoria pode envolver os responsáveis pela GCS.
Como visto, a caracterização das atividades da GCS não é uniforme na literatura,
embora exista um certo consenso em relação à definição do ISO/IEC 12207 (ISO/IEC
12207, 1995), que também é a visão adotada pelo Guide to the Software Engineering
Body of Knowledge (SWEBOK, projeto iniciado em 1998, por representantes da
indústria, agências de pesquisa e do IEEE, entre outros, para fornecer uma
38
caracterização dos limites da disciplina da Engenharia de Software e um acesso tópico
ao corpo de conhecimento que suporta esta disciplina) (IEEE SWEBOK, 2001).
2.2.1
As Atividades da GCS
Segundo o padrão ISO/IEC 12207 (ISO/IEC 12207, 1995) são consideradas atividades
principais da GCS: a implementação do processo, a identificação da configuração, o
controle da configuração, o relato da situação da configuração, a avaliação da
configuração e o gerenciamento da liberação e entrega.
Estas atividades (Figura 2.1) são aplicáveis a qualquer projeto de software, ainda que,
dependendo da implementação da GCS e das características do projeto, possam aparecer
de maneira um pouco diferente da apresentada.
Tem-se, nas seções seguintes, a descrição sucinta das atividades da GCS.
Implementação do
processo
Controle
Relato da
Situação
Avaliação
Gerenciamento da
Liberação e
Entrega
Identificação
FIGURA 2.1 – Atividades da GCS.
FONTE: Adaptada de (IEEE SWEBOK,
2001, p. 7-2).
2.2.1.1
Implementação do Processo
A implementação do processo da GCS baseia-se no desenvolvimento de um Plano de
Gerência de Configuração de Software (PGCS), onde são descritas as atividades
relacionadas à implantação e administração do processo. Este plano deve conter também
os procedimentos e o planejamento de execução destas atividades, os responsáveis por
39
elas e os recursos necessários. O plano deve refletir as particularidades de cada projeto,
dependendo das metas e soluções específicas a cada ambiente. O PGCS deve ser
documentado e implementado (ISO/IEC 12207, 1995).
O PGCS é o primeiro passo para estabelecer um bom gerenciamento da configuração,
quando se inicia um novo projeto de desenvolvimento de software, pois permite que as
tarefas da GCS sejam conhecidas de antemão, fornecendo as bases para a sua execução
(Bounds e Dart, 1993).
O PGCS pode ser criado a partir de uma orientação já existente, como o padrão IEEE
828 (IEEE 828, 1998) para Planos de Gerência de Configuração, que apresenta, no seu
Anexo B, diretrizes de conformidade com o padrão ISO/IEC 12207. Esse padrão pode
ser utilizado em conjunto com o Guia para a Gerência da Configuração de Software
(ANSI/IEEE 1042, 1987), que mostra uma visão de vários fatores que devem ser
considerados no planejamento da gerência da configuração e apresenta em seus anexos
vários exemplos de planos, para diferentes tipos de projeto e organizações. Esses
exemplos fornecem uma interpretação de como o padrão IEEE 828 pode ser utilizado
para o planejamento de diferentes tipos de desenvolvimento de software e atividades de
manutenção.
Na elaboração do PGCS é importante levar em consideração a experiência dos membros
da equipe de desenvolvimento. O responsável pela elaboração do plano deve questionar
membros-chave da equipe de desenvolvimento (gerente de projeto, arquiteto de
software, líder de desenvolvimento, responsável pelos testes). Assim poderá obter uma
percepção da abordagem da equipe de desenvolvimento de software, com relação, por
exemplo, a regras para identificação e nomenclatura dos itens de configuração ou
necessidades específicas do processo de controle de modificações (Sayko, 2003).
40
2.2.1.2
Identificação da Configuração
A identificação é um dos fundamentos da GCS, já que é impossível controlar algo cuja
identidade se desconhece. Esta atividade visa estabelecer um esquema para
identificação dos itens de software e suas versões a serem controladas.
O passo inicial desta atividade é a escolha dos itens que serão gerenciados. Devem-se
determinar as informações associadas a um item de configuração, que possam
identificá- lo de maneira única e especificar seus relacionamentos com o mundo exterior
e outros itens de configuração. A especificação dos relacionamentos é importante para a
manutenção, pois permite a rápida localização dos itens afetados em cada modificação.
Um esquema de identificação única consiste na atribuição de nomes exclusivos a cada
um dos componentes, para que seja possível reconhecer a evolução de suas versões e a
hierarquia existente entre elas, a partir de seus nomes. Para cada item e suas versões,
devem ser identificados: a documentação que estabelece a configuração-base (baseline),
as referências de versão e outros detalhes de identificação.
2.2.1.3
Controle da Configuração
Dois tipos de controle básicos estão incluídos no processo da GCS: o das modificações
e o das versões dos itens de configuração. O controle das modificações deve ser
implantado somente após uma configuração-base ter sido estabelecida. Este controle
consiste na identificação e registro das solicitações de modificações; análise e avaliação
das modificações; aprovação ou desaprovação da solicitação; e implementação,
verificação e distribuição (release) do item de software modificado. Deve existir um
procedimento de registro do motivo e autorização para a modificação.
O controle das versões consiste em controlar a criação e utilização das várias versões
dos itens de configuração, configurações-base e distribuições, que devem estar
armazenadas e identificadas convenientemente.
41
2.2.1.4
Relato da Situação da Configuração
O objetivo desta atividade é relatar informações das modificações às pessoas envolvidas
no desenvolvimento e na manutenção do software. Estas informações são relativas ao
que foi modificado, por quem e quando, e também o que foi afetado pela modificação.
Esta atividade consiste em gerenciar o registro e os relatórios da situação da
configuração, que mostram o estado e o histórico de itens controlados, incluindo as
configurações-base. Os relatórios de situação podem incluir o número de modificações
de um projeto, as últimas versões de itens de configuração, identificadores de
distribuições, o número de distribuições, e comparações entre as distribuições.
O registro das ocorrências na GCS é feito em uma base de dados que deve estar
disponível aos desenvolvedores, com acesso controlado por senhas. A partir dela são
emitidos os relatórios da GCS, que permitem uma melhor comunicação entre os
integrantes da equipe, agilizam o processo de desenvolvimento e eliminam problemas
relativos a modificações feitas no mesmo item com intenções diferentes e conflitantes
(Rocha et. al., 2001).
2.2.1.5
Avaliação da Configuração
Esta atividade consiste em determinar e garantir a funcionalidade dos itens de software
em relação aos seus requisitos e à integridade física dos itens de software (se seu projeto
e código refletem uma descrição técnica atual). Existem dois tipos de avaliações: a
funcional e a física.
A avaliação funcional compreende uma verificação técnica formal na configuração de
software, ou seja, preocupa-se com os aspectos internos dos arquivos. Esta verificação é
uma atividade do controle da qualidade que tenta descobrir omissões ou erros na
configuração que degradam os padrões de construção do software (Rocha et. al., 2001).
A avaliação física é um processo administrativo da qualidade que ocorre ao final de
cada fase do ciclo de vida do software e consiste em verificar se a configuração que será
estabelecida em uma configuração-base é composta pelos itens corretos, que foram
42
determinados para a fase específica do ciclo de vida, nas versões corretas. Esta
avaliação também verifica se os procedimentos e padrões que foram definidos foram
devidamente aplicados (Rocha et. al., 2001).
2.2.1.6
Gerenciamento da Liberação e Entrega
Esta atividade consiste em controlar formalmente a liberação e a entrega dos produtos
de software, ou seja, das configurações-base e distribuições. Ela envolve a decisão sobre
quando a distribuição deve ser feita, os procedimentos para a sua criação e sua
documentação (Sommerville, 2001; van der Hoek et. al., 1997).
Configurações-base internas são geradas a partir das necessidades dos desenvolvedores
e responsáveis por testes e são criadas, quando necessárias, segundo critérios técnicos.
As decisões sobre quando as distribuições (configurações-base de produto liberadas
para utilização fora da organização de desenvolvimento) são criadas devem ser
governadas por considerações técnicas e organizacionais, e envolvem fatores como
qualidade técnica da distribuição, adição significativa de novas funcionalidades,
competitividade do produto, propostas de modificações dos clientes, etc.
A criação das distribuições consiste na coleta dos arquivos e da documentação que as
compõem. O código executável dos programas e todos os arquivos de dados devem ser
coletados e identificados. Instruções necessárias para instalação e configuração devem
ser incluídas na distribuição. Finalmente, uma distribuição é colocada em um meio
físico para ser entregue.
A documentação da distribuição consiste de uma descrição do conteúdo de cada
distribuição, das versões dos componentes e do sistema operacional, compiladores e
outras ferramentas utilizadas para construir o software, bem como de arquivos de dados
e de configuração. Informações sobre a data em que foi entregue e para quem foi
entregue também devem ser mantidas.
43
Cópias do código e da documentação entregues devem ser mantidas por toda a vida do
produto de software. O código e a documentação que contiverem funções críticas
quanto à segurança ou confidenciais deverão ser tratados conforme políticas da
organização para tais casos.
2.3
Conceitos Básicos da GCS
As definições da GCS apresentadas incluem uma terminologia própria e ainda alguns
conceitos fundamentais, necessários para uma melhor compreensão das atividades da
GCS. Estes conceitos são apresentados nas seções seguintes.
2.3.1
Item de Configuração de Software
Item de configuração é um conceito fundamental do gerenciamento da configuração que
possui diversas interpretações.
Segundo o padrão IEEE 610.12 (IEEE 610.12, 1990) um item de configuração de
software é uma agregação de software designada para o gerenciamento da configuração
e tratada como uma entidade única no processo da GCS, isto é, um item de configuração
é uma unidade funcional que possui um ciclo de desenvolvimento e acompanha mento
próprios da GCS. Um sistema em desenvolvimento é particionado em itens de
configuração, que são particionados em outros conjuntos de itens, até que se obtenha
um conjunto de itens não particionáveis, que são desenvolvidos segundo um ciclo de
vida definido. A configuração do sistema de software é, assim, o conjunto das
configurações dos Itens de Configuração de Software (ICSWs) integrantes do sistema.
O padrão ISO/IEC 12207 (ISO/IEC 12207, 1995) diferencia itens de configuração e
itens de software. O processo da Gerência da Configuração se aplica a ambos os
elementos, mas, para os itens de configuração de software: (1) o tempo em que eles são
estabelecidos pode ser muito mais tarde no projeto; (2) a formalidade de identificação,
controle, relato da situação e avaliação pode ser muito mais rígida; e (3) o processo de
44
aprovação para modificar pode ser mais restritivo. De acordo com este padrão, os itens
de configuração de software deverão ser estabelecidos antes da integração de sistema.
Uma outra definição caracteriza um item de configuração como qualquer parte do
desenvolvimento ou entrega de um sistema ou produto que precisa ser identificado,
produzido, armazenado, utilizado e modificado individualmente (Hass, 2002).
Durante todo o ciclo de vida de um produto de software, existem elementos ou itens que
fazem parte dele e outros que são usados para suportar o seu desenvolvimento e
manutenção. Estes itens podem ser classificados em diferentes tipos, dependendo do
ponto de vista.
Sob a visão de produto, os itens colocados sob gerenciamento da configuração são,
tipicamente, arquivos de cabeçalho, arquivos do tipo include, arquivos de código fonte e
bibliotecas de sistema. Tipos derivados destes, como arquivos objetos e executáveis,
que também podem ser gerenciados, quando a rapidez para a entrega, por exemplo, é
um fator levado em consideração. Ainda sob a visão do produto podem-se considerar
itens de dados, como valores de parâmetros; serviços, como descrições de
procedimentos ou material de treinamento; e ferramentas utilizadas na produção dos
itens de software, como editores de texto, ferramentas de desenho, compiladores, banco
de dados, entre outros.
Sob a visão de projeto, a cada fase do ciclo de vida, e a cada atividade, itens são gerados
e podem ser colocados sob o gerenciamento da configuração. Estes itens podem ou não
ser entregues ao cliente. São exemplos de itens obtidos nas diferentes fases do ciclo de
vida:
•
Preparação: contratos, requisitos do usuário, plano de trabalho, etc.
•
Especificação de Requisitos: requisitos de software, protótipos, cenários, etc.
•
Projeto: especificação de projeto de arquitetura, especificação de projeto
detalhada, desenhos, diagramas, notas técnicas, etc.
45
•
Testes: drivers, stubs, dados de testes, especificações e procedimentos de testes,
relatórios de testes, etc.
•
Operação e Manutenção: procedimentos de instalação, procedimentos de
implantação, etc.
Um item de configuração é, portanto, considerado neste trabalho, como qualquer item
produzido ou utilizado durante o ciclo de vida do produto de software, como os
relacionados acima, que foi selecionado para estar sob o controle da GCS.
Um item de configuração pode variar em complexidade desde um item individual ou
atômico (não existem partes que podem ser variadas independentemente, sem modificar
o item como um todo) a uma coleção de outros itens, chamadas agregações ou
configurações (existem várias partes variáveis independentemente ou substituíveis, que
são atômicas ou outras configurações), que são também, por sua vez, colocados sob
gerenciamento da configuração.
Como são muitos os itens gerados durante o desenvolvimento de um projeto de
software, a seleção destes deve ser feita com critério, pois tentar colocar um grande
volume de itens sob o controle da GCS pode aumentar sobremaneira o volume de
trabalho, sem trazer em contrapartida mais benefícios. Geralmente, utilizam-se como
critérios para seleção dos itens de configuração de software: os itens de software mais
utilizados no ciclo de vida, os mais genéricos, os mais importantes para a segurança, os
projetados para reutilização e os que podem ser modificados por vários desenvolvedores
ao mesmo tempo (Rocha et. al., 2001). Considera-se que, no mínimo o código- fonte e a
documentação de projeto devem estar sob controle da GCS.
2.3.2
Configuração-base
Entende-se por configuração-base (baseline) um conjunto bem definido de itens de
configuração que representam um estágio de desenvolvimento do software,
formalmente aceitos, que servem como base para desenvolvimento posterior e que só
46
podem ser alterados segundo um procedimento de controle de modificações
estabelecido e documentado.
2.3.3
Desenvolvimento de Software Baseado em Configuração-base
Um ciclo de vida ou modelo de desenvolvimento representa uma quebra do trabalho de
desenvolvimento, produção e manutenção de um produto em fases limitadas. Um
produto passa, então, por várias atividades durante o ciclo de vida, nas quais o
gerenciamento da configuração deve ser considerado. Estas atividades podem ser, por
exemplo: preparação, especificação de requisitos, projeto, codificação, integração, testes
e operação e manutenção, como ilustra a Figura 2.2.
Projeto A
Desenvolvimento
Preparação
Operação e
Requisito Projeto Codificação Teste Manutenção
odificação
s
Gerência de Projeto
Garantia da Qualidade
Gerência da Configuração
FIGURA 2.2 - Modelo de Desenvolvimento Genérico.
FONTE: Adaptada de Hass (2002, p. xliii).
Podem-se considerar as atividades mencionadas como blocos de construção que são
arranjados de acordo com o modelo de desenvolvimento escolhido, como o clássico
modelo em cascata (semelhante à Figura 2.2), ou desenvolvimento iterativo, onde
algumas fases são mais curtas, mas repetidas várias vezes durante o ciclo de vida do
projeto, ou o desenvolvimento ágil, ou incremental. Como a Figura 2.2 mostra, existem
várias funções de suporte para preparar, desenvolver, operar e manter um produto. Estas
funções, que incluem o gerenciame nto de projeto, a garantia da qualidade e a gerência
da configuração, devem ser executadas durante toda a vida de um produto (Hass, 2002).
47
Independente do modelo escolhido para um dado projeto, cada fase termina em um
marco (milestone): um ponto específico no projeto no qual um resultado é esperado.
Este resultado constitui-se no conjunto de produtos de trabalho que devem ser
considerados para o controle pela GCS, ou seja, devem ser selecionados como itens de
configuração do projeto para formar uma configuração-base de projeto.
Ainda que as configurações-base possam ser estabelecidas em qualquer ponto do ciclo
de vida do desenvolvimento de software, é mais vantajoso fazer coincidir o
estabelecimento das configurações-base com os finais das fases do ciclo de vida
definido para o produto. O desenvolvimento em configurações-base pode ser descrito
pelo seguinte (Oliveira, et. al., 2001):
•
Obter, da gerência de projeto ou de desenvolvimento, a caracterização do ciclo
de vida, que consiste na identificação das fases de desenvolvimento, das
atividades a serem realizadas em cada uma delas e dos produtos que deverão ser
desenvolvidos.
•
Definir o conjunto de configurações-base obtidas a cada final de fase, ou marco
de desenvolvimento identificado, os itens de configuração que irão compor cada
configuração-base e as condições impostas para seu estabelecimento.
•
Durante cada fase, o desenvolvimento dos itens de configuração referentes a ela
está sob o controle dos desenvolvedores, que podem criá- los e modificá- los com
facilidade.
•
A modificação em uma configuração-base já estabelecida só pode ser feita de
forma controlada, através de procedimento bem definido.
•
Cada configuração base incorpora integralmente a anterior. Assim, em qualquer
instante do desenvolvimento, a última configuração-base estabelecida representa
o estado oficial de todo o desenvolvimento.
48
•
O estabelecimento de uma configuração-base é feito após aprovação pela
Gerência da Qualidade, que realiza as atividades de verificação e validação dos
produtos de trabalho, conforme especificado no Plano de Garantia da Qualidade.
Por exemplo (Oliveira, et. al., 2001), num desenvolvimento em cascata, inicialmente,
uma configuração-base de requisitos contém documentos de especificação do software a
ser construído. A configuração-base de projeto é composta pela configuração-base de
requisitos acrescentada dos documentos de projeto; uma configuração-base de código é
composta pelas anteriores mais o código produzido.
Outras configurações-base típicas geralmente utilizadas são as configurações-base
funcional, alocada, de desenvolvimento e de produto (IEEE SWEBOK, 2001). A
funcional corresponde aos requisitos de sistema revistos. A alocada corresponde às
especificações de requisitos de software e de interface de software revistas. A de
desenvolvimento representa a configuração de software em desenvolvimento, em certos
momentos durante o ciclo de vida do software. A de produto corresponde ao produto de
software completo entregue para integração do sistema.
Uma configuração-base constitui-se, portanto, em uma versão estável de um sistema,
que contém todos os itens de configuração que o constituem em um dado momento.
Uma vez que todos os itens de configuração de uma configuração-base tenham sido
desenvolvidos, a configuração-base é estabelecida, e daí em diante só poderá ser
modificada através de mecanismos formais estabelecidos pela GCS.
Entre uma configuração-base e a seguinte, novos itens de configuração são criados
livremente. Mas os itens de configuração que fazem parte da configuração-base anterior
também são passíveis de modificação, quer seja para correção ou aperfeiçoamento.
Assim, a evolução das configurações-base deve-se a dois fatores: criação de novos itens
e modificação dos já existentes.
Por exemplo, depois de estabelecida a configuração-base de requisitos, inicia-se a fase
de projeto, e os projetistas passam a desenvolver os itens de configuração referentes à
fase com base nos documentos (itens de configuração) já estabelecidos na configuração-
49
base de requisitos. Nesta fase, pode ocorrer uma necessidade de modificação em algum
dos itens de configuração já consolidados na configuração-base de requisitos. Quando
isto ocorre há a necessidade de seguir um procedimento bem definido para a realização
da modificação, discutida na atividade de controle da configuração. Uma vez verificado
que as modificações foram implementadas corretamente e não criaram inconsistências
na configuração-base, uma nova versão da configuração-base de requisitos é criada.
Estabelecida esta nova versão, os projetistas continuam suas atividades, tendo agora
como referência a nova configuração-base. E assim, de maneira semelhante, conforme
as fases seguintes vão sendo executadas, as novas configurações-base vão sendo
desenvolvidas, estabelecidas e modificadas, até que o desenvolvimento seja concluído.
O número de itens de configuração, os nomes e os conteúdos das configurações-base
dependem do projeto e do desenvolvimento adotado. Um exemplo de configuraçõesbase (CB) e seus conteúdos e desenvolvimento ao longo do tempo encontram-se na
TABELA 2.1.
TABELA 2.1 – Exemplos de Configuração-base.
Itens de
configuração
incluídos
CB
Requisitos
CB
Arquitetura
CB
Projeto
CB
Código
CB
Produto
CB
Distribuição
Plano de Projeto
Plano de GCS
Plano e especificação
de testes
Especificação de
requisitos
Especificação de
Projeto de arquitetura
Especificação do
Projeto detalhado
Manual do usuário
Subsistema 1
Subsistema 2
Sist. Completo
Notas de liberação
1.0
1.0
1.0
2.0
2.0
2.0
3.0
3.0
3.0
4.0
4.0
4.5
4.1
4.0
5.2
4.1
4.0
6.3
1.0
1.3
1.4
1.4
1.6
1.6
-
1.0
1.2
1.3
1.3
1.3
-
-
1.0
1.1
1.2
1.3
-
-
-
1.0
1.0
1.0
-
1.1
1.1
1.1
1.0
-
1.1
1.2
1.2
1.1
1.0
50
2.3.4
Distribuições
Uma distribuição consiste num conjunto de itens de configuração que foram entregues a
um usuário ou cliente no final do desenvolvimento, após o estabelecimento da última
configuração-base, geralmente a configuração-base de produto. Uma distribuição é,
portanto, uma configuração do produto para utilização em ambiente externo ao de
desenvo lvimento, como um setor ou organização responsável pelos testes finais do
produto ou o cliente final.
Nem sempre todos os itens que compõem a configuração-base de produto são entregues.
Os documentos de projeto, por exemplo, podem ficar em poder do desenvolvedor.
Assim, o conjunto de itens que constituem uma distribuição do produto pode não ser o
mesmo de uma configuração-base; às vezes, nem mesmo um subconjunto dela, no caso
de só serem entregues os arquivos executáveis, que não são colocados, geralmente, sob
gerenciamento da configuração.
Uma configuração-base que dá origem a uma distribuição é chamada de configuração
de distribuição. Estabelecer uma distribuição consiste em realizar um conjunto de ações
para, a partir de uma configuração-base, gerar uma distribuição do produto referente a
esta configuração.
2.3.5
Informações Sobre os Itens de Configuração: Metadados
Todas as atividades da GCS compartilham informações sobre os itens de configuração.
Estas informações são conhecidas como metadados: um conceito de banco de dados que
significa dados sobre os dados armazenados na base de dados. No contexto da GCS, os
metadados descrevem os itens de configuração de software. A Figura 2.3 apresenta uma
visão geral de quais os elementos de dados podem fazer parte dos me tadados de um
item de configuração. Estes dados podem ser considerados como aqueles estritamente
necessários sob o ponto de vista da GCS (Hass, 2002), embora outros possam ser
considerados necessários, sob o ponto de vista de outras gerências.
51
Produto
Pertence a
Produzido por
Pessoas
Sob responsabilidade de
Foi distribuído para
Aprovado por
Nome
Versão
Estado
Data
Localização
Ligado a
Produzido com
Derivado de
Consiste de
Outros itens
de
configuração
FIGURA 2.3 – Visão Geral dos Metadados dos Itens de Configuração.
FONTE: Adaptada de Hass (2002, p. 90).
Os metadados do item são compostos de elementos de dados que podem ser divididos
em quatro grupos: identificação única, autorização, relacionamentos com outros itens de
configuração e distribuição.
Identificação única. Metadados de identificação única do item de configuração, que
incluem:
•
Pertence a: indica o produto ao qual o item pertence.
•
Nome do item: nome dado ao item segundo convenções estabelecidas para o
tipo de item específico.
•
Versão: expressa o histórico de desenvolvimento do item.
•
Estado: expressa o estado atual do item de configuração.
•
Data: data em que o item foi colocado sob armazenamento controlado.
•
Localização: o caminho completo e o nome eletrônico do item que expressam a
localização física do item.
52
Autorização para o item de configuração. Três tipos de autorização estão associados
ao item de configuração, expressos nos relacionamentos: produzido por, sob
responsabilidade de e aprovado por.
•
Produtor: quem produz o item e o encaminha para avaliação pela qualidade e
posterior controle da GCS.
•
Responsável pelo item: quem possui a responsabilidade final pelo item no
projeto, que pode ser o Gerente de Projeto ou Gerente de Produto.
•
Responsável pela aprovação: a responsabilidade pela aprovação do item fica a
critério da Gerência da Qualidade, dependendo da fase de desenvolvimento em
que se encontra o item de configuração.
Relacionamentos entre o item de configuração e outros. Praticamente todos os itens
de configuração têm relacionamentos com outros itens, que podem ser:
•
ligado a: refere-se a itens das atividades anteriores no desenvolvimento, nos
quais o item de configuração é baseado. Geralmente o Plano de Projeto indica
como os itens estão ligados uns aos outros. Por exemplo:
-
Requisitos de software estão ligados aos requisitos dos usuários.
-
Especificações de teste de aceitação estão ligadas aos requisitos do usuário.
-
Projeto de arquitetura está ligado aos requisitos de software.
-
Especificações de teste do sistema estão ligadas aos requisitos de software.
-
O projeto detalhado está ligado ao projeto de arquitetura e aos requisitos de
software, e assim por diante.
Este relacionamento é freqüentemente do tipo vários-para-vários. O pré-requisito
para manter este relacionamento é que os itens de configuração tenham
identificação única e que não seja modificável, mas fácil de referenciar e
53
acessível. Este relacionamento deve ser registrado de maneira a possibilitar
relatar as ligações nas duas direções, ou seja, deve ser possível saber quais casos
de teste estão associados a qual requisito específico de software e saber a quais
requisitos de software um caso de teste específico está associado. Novos itens de
configuração herdam as ligações da versão anterior.
•
produzido com: indica qual a ferramenta utilizada na produção do item.
•
derivado de: expressa o histórico do item e deve ser utilizado somente quando o
nome do item muda de uma versão para outra.
•
consiste de: somente as configurações-base consistem de outros itens de
configuração. Os itens pertencentes a uma configuração-base devem ser
expressos precisamente, de maneira que o estado do item seja levado em
consideração quando forem agrupados, ou seja, somente os que estiverem
aprovados pela GQ e não apenas a última versão do item. Este relacionamento é
herdado da versão anterior de um item de configuração e deve-se verificá- lo para
que, caso na versão atual algum item tenha sido eliminado da configuração-base,
a informação contida neste relacionamento seja também eliminada.
Distribuição do item de configuração. Esta informação deve ser registrada quando
uma configuração-base de distribuição for liberada para um cliente externo à
organização de desenvolvimento e consiste no relaciona mento:
•
foi distribuído para: este relacionamento deve ser registrado após uma
solicitação de liberação ter sido atendida. Esta informação pode incluir um
registro do porque a liberação ocorreu (se o propósito foi um teste de integração
ou a entrega do produto todo ao cliente). Esta informação é registrada somente
depois que uma configuração-base de produto é estabelecida.
54
2.3.6
Repositórios e Bibliotecas de Software
Itens
de
configuração
de
software
devem
ser
reunidos
e
armazenados
convenientemente, de maneira a evitar que sejam perdidos ou danificados. Os acessos e
as modificações feitas nestes itens podem ser de alguma forma controlados, e um
registro de quem realizou estas operações pode ser mantido.
O armazenamento dos itens de configuração é feito em locais específicos, chamados de
bibliotecas. As bibliotecas podem ser apresentadas na forma de estrutura de arquivos e
diretórios. Fisicamente, uma biblioteca pode ser uma estrutura de diretório em uma
estação de trabalho, uma base de dados ou um repositório.
Um repositório, sob o ponto de vista da GCS, é uma biblioteca centralizada de arquivos
que fornece controle de versão para estes arquivos. Considera-se que qualquer arquivo
no repositório está sob uma forma de gerenciamento da configuração. Os arquivos no
repositório são imutáveis – não podem ser modificados. Realizar uma modificação em
um arquivo no repositório significa criar uma nova versão do arquivo.
As bibliotecas são também chamadas de sistemas de gerenciamento da configuração
(CMMI-SW, 2002) e repositórios de configurações-base.
Tradicionalmente, três tipos de biblioteca (Hass, 2002; IEEE 828, 1998) são ligados ao
desenvolvimento de software: a controlada, a dinâmica e a estática.
A biblioteca controlada, ou biblioteca da GCS é onde os itens de configuração são
armazenados. Ela pode estar dividida em várias bibliotecas físicas, especialmente
quando se tem vários tipos de itens de configuração, tais como documentos, código
fonte, etc.
A biblioteca dinâmica ou de desenvolvimento é onde os itens são mantidos enquanto
estão em produção. Está localizada na área de trabalho do desenvolvedor e pode
consistir de várias bibliotecas independentes. Esta biblioteca não está sob o
gerenciamento da configuração e sim sob a responsabilidade do desenvolvedor.
55
Bibliotecas controladas e dinâmicas podem, no entanto, se sobrepor, contendo tanto
itens de configuração quanto produtos de trabalho em desenvolvimento. Durante a
produção um item pode ser retirado e colocado na biblioteca várias vezes antes de ser
finalizado, sendo a biblioteca utilizada como uma forma de backup para os resultados
intermediários do trabalho. Estes resultados intermediários não são aprovados, nem
estão sob o gerenciamento da configuração. Para distingui- los das versões do mesmo
item que estão sob gerenciamento da configuração deve-se, então, usar códigos de
estado para tornar claro quando a versão modificada de um item é aprovada e está sob o
gerenciamento da configuração e quando não. Além disso, é necessário garantir que
quando um item é extraído da biblioteca este não é apenas um item que está em
desenvolvimento e sim uma versão que está realmente aprovada e sob o gerenciamento
da configuração.
A biblioteca estática é onde os itens são utilizados, não só pelos usuários finais, mas
também em outras aplicações, como por exemplo, no caso de teste parcial do sistema,
na integração de um sub-componente em um componente maior.
Na biblioteca estática os itens de configuração não são modificados. Esta biblioteca
pode ser constituída de vários repositórios físicos ou meios de armazenamento. A
localização desta biblioteca depende do tipo de item e sua utilização. Por exemplo, a
biblioteca estática pode ser idêntica à dinâmica, no caso do item ser utilizado no módulo
de teste de um outro item. Neste caso o item é copiado da biblioteca controlada para
uma cópia somente de leitura na área de trabalho do desenvolvedor. Quando o item for
um sistema em produção, a biblioteca estática pode estar situada na máquina de
produção ou estação de trabalho do usuário. Esta biblioteca não está sob o
gerenciamento da configuração, mas sob responsabilidade do desenvolvedor, ou gerente
de testes, ou do cliente, dependendo do contexto de utilização.
A biblioteca da GCS contém não somente os itens de configuração, mas também os
metadados associados ao item, utilizados para geração de relatórios e consultas.
56
2.3.7
Controle de Versões
O controle de versões é um mecanismo fundamental da GCS e consiste em ferramentas
e procedimentos utilizados para gerenciar as diferentes versões de arquivos criadas
durante o desenvolvimento de software.
Durante um projeto, os itens de software passam por vários estados, até que consigam
atender aos propósitos para os quais foram criados. Isto implica em diversas
modificações, gerando uma versão de item a cada estado. Fazendo-se uma analogia com
a abordagem orientada a objeto, um item de configuração pode ser visto como uma
classe e as suas versões como instâncias da classe (Hass, 2002). Uma versão é uma
instância do item de configuração que é diferente das out ras. Cadeias de versões de itens
de configuração – versões 1, 2, 3, etc - podem ser formadas indicando-se de qual item
de configuração um dado item é derivado ou em qual está baseado.
O gerenciamento de versão pode ser aplicado, inicialmente, ao código, à documentação
e às configurações-base e, mais à frente, também ao ambiente de desenvolvimento. A
reconstrução de versões anteriores de um produto só pode ser garantida se tanto o
código quanto o ambiente de desenvolvimento —compiladores, linkers, bibliotecas de
runtime, bibliotecas de banco de dados e de comunicação—forem idênticos àqueles
utilizados para criar a versão original.
O controle de versões possibilita o rastreamento automático dos arquivos e a prevenção
de conflito de acesso por parte dos desenvolvedores. Permite, ainda, a recuperação de
versões anteriores, criação de linhas de desenvolvimento, registro de informações
durante o desenvolvimento do arquivo (quem, quando, o quê foi modificado) e
estabelecimento de agregações de arquivos: as configurações-base e distribuições.
Um esquema de identificação feito em forma de árvore mantém um histórico das
versões dos itens e permite a identificação única e ramificações a partir de qualquer
versão. Um formato muito utilizado é o seguinte:
57
<Id_Principal>.<Id_Secundário>, onde o Id_Principal é o identificador principal da
versão, e constitui-se em um número inteiro, cujo valor inicial é 1, e o Id_Secundário é
o identificador secundário de versão e constitui-se de um número inteiro, iniciando-se
em 0. Para ambos os identificadores não existe um número limite superior.
Como exemplo, temos na Figura 2.4 um arquivo ARQ. A primeira versão de ARQ é a
1.0. Cada vez que uma nova versão de ARQ é criada, seu Id_Secundário é incrementado
de 1. Pode-se, também, a critério de pessoa com a autorização competente, avançar o
Id_Principal para 2. Neste caso, o Id_Secundário é reiniciado com 0. Um incremento no
I_Principal pode ser feito, por exemplo, quando uma nova funcionalidade significativa é
acrescentada ao arquivo.
Arquivo ARQ
Modificações
1.0
•
•
•
1.1
1.2
1.3
Quem
Quando
Por que
2.0
2.1
Versão atual
FIGURA 2.4 – Controle de Versões de um Arquivo.
Com o crescimento das ramificações na estrutura de versões, cresce também o espaço
necessário para o armazenamento das versões. Para minimizar a necessidade de espaço,
surgiu o conceito de delta, que é o conjunto de diferenças entre uma versão e outra.
Assim, é feito o armazenamento de apenas uma versão completa e das diferenças ou
deltas entre as versões. Este conceito tem duas variações: o delta positivo e o delta
negativo. Com o delta positivo, é armazenada a versão mais antiga, a partir da qual são
montadas as versões mais recentes, processando-se as diferenças (deltas) armazenadas.
Com o delta negativo, a versão mais recente é armazenada integralmente junto com as
diferenças até ela. Como é muito mais comum a utilização das versões mais recentes, o
delta negativo é o conceito mais utilizado nos sistemas de gerenciamento de versões.
58
Com ele, uma versão das mais recentes é obtida rapidamente, pois não é necessário o
acréscimo de muitos deltas para a sua obtenção.
Este método de deltas, eficiente para arquivos-texto, pode trazer um grande desperdício
de espaço se aplicado a arquivos binários. Deste modo, técnicas de compressão são
utilizadas para este tipo de arquivo, que têm suas versões armazenadas na íntegra.
Com o barateamento dos meios de armazenamento é razoável a utilização de técnicas de
compressão eficientes para o armazenamento de versões integrais de arquivos, evitandose, assim a montagem de versões a partir das diferenças entre elas.
2.3.8
Linhas de Desenvolvimento
As linhas de desenvolvimento (branches) são derivações a partir de uma determinada
versão de arquivo, que geram linhas paralelas a partir da linha de desenvolvimento
principal ou tronco principal de uma árvore de versões. São utilizadas quando se deseja
incorporar certas características em determinadas versões e não em outras. Isto pode ser
visualizado na Figura 2.5.
Arquivo Arq
1.0
1.1
1.2
1.3.1.1
1.3
2.0
1.2.1.1
1.2.1.2
2.1
FIGURA 2.5 – Linhas de Desenvolvimento.
A identificação de uma linha de desenvo lvimento pode ser feita da seguinte maneira:
<Id_Versão>.<Id_Linha>.<Id_Seq>, onde Id_Versão é a identificação de uma versão
existente denominada versão base, da qual a versão identificada é uma variante ou
59
paralela, o Id_Linha é o número de ordem inteiro, maior ou igual a 1, de uma linha
paralela a partir da versão base e Id_Seq é o número inteiro, maior ou igual a 1, da
ordem da versão dentro da linha paralela.
2.3.9
Variantes e Desenvolvimento Paralelo
Variantes ocorrem quando um item de configuração, aparentemente único sob o ponto
de vista funcional, aparece em várias versões simultaneamente, com pequenas
diferenças entre elas. Isto pode surgir por requisitos de linguagem (software em versões
em português e inglês, por exemplo), requisitos de hardware, protocolos de
comunicação, requisitos de clientes (produto com mais ou menos funcionalidades) ou
requisitos de plataforma de sistema operacional.
O desenvolvimento paralelo ocorre quando pessoas têm que trabalhar no mesmo item de
configuração ao mesmo tempo – quando linhas de desenvolvimento (branches) são
formadas a partir da linha principal e depois os resultados das linhas devem ser unidos.
A necessidade para o desenvolvimento paralelo pode surgir por fatores como pressões
de tempo, trabalho feito em turnos ou distribuição de competência (Hass, 2002).
Isto ocorre, por exemplo (Figura 2.6), quando uma especificação de requisitos de um
grande projeto envolve o trabalho de vários especialistas, que trabalham cada um em
uma parte da especificação ao mesmo tempo (Hass, 2002). O trabalho de especificação
de requisitos é então dividido e as partes resultantes são unidas em um documento ao
fim da atividade. Deve-se considerar cuidadosamente se o desenvolvimento paralelo
deve ficar restrito a ambientes de desenvolvimento ou se os itens de configuração
paralelos devem ser colocados sob gerenciamento da configuração.
60
ER 2A1
ER 2A2
ER 2A3
ER 1
ER 2
ER 2B1
ER 2B2
FIGURA 2.6 – Desenvolvimento Paralelo e União.
FONTE: Hass (2002, p. 246).
No exemplo da Figura 2.6, se não se deseja tornar públicas ou manter histórico das
versões intermediárias, mas apenas o histórico de ER 1 diretamente para ER 2, então o
desenvolvimento não é paralelo sob o ponto de vista da GCS; a união das versões deve
ser feita antes do resultado ser colocado sob a GCS.
Tanto a criação de variantes como o desenvolvimento paralelo adicionam complexidade
à GCS e devem ser considerados com cuidado. São decisões de planejamento e projeto
e, portanto, de responsabilidade do gerente de projeto ou de desenvolvimento, não da
GCS.
Técnicas de projeto podem ser utilizadas para reduzir o número de variantes ou linhas
de desenvolvimento paralelo. Por exemplo, no caso das variantes, pode-se retirar o
acesso a determinadas funcionalidades, ou utilizar compilação condicional (como o
#ifdef) ou, ainda, pode-se dividir um item em outros itens mais independentes. Quando
o desenvolvimento paralelo for inevitável, devem ser feitas freqüentes uniões (merges),
para que as linhas de desenvolvimento sejam poucas e o mais curtas possíveis.
As duas situações, variantes e desenvolvimento paralelo, devem se refletir na
identificação do item. Outros cuidados devem ser tomados durante o processo da GCS,
principalmente no controle de modificações, como por exemplo, se estas devem ou não
se propagar pelas variantes e linhas de desenvolvimento.
61
2.3.10 Operações de Acesso às Versões no Repositório
Ferramentas de controle de versão permitem acesso às versões armazenadas nos
repositórios através de um conjunto de operações básicas, conhecidas como política de
check-in/check-out, isto é, conferência na entrada e na saída.
As operações conceituais básicas desta política são:
•
Operação check-out. Uma cópia de trabalho da versão desejada é retirada do
repositório para modificação, ao mesmo tempo que impede acessos à versão por
outros desenvolvedores.
•
Operação check-in. Uma nova versão do arquivo é criada a partir da cópia de
trabalho modificada (obtida por check-out) e libera acessos à versão.
•
Operação get. Permite obter uma cópia específica de uma versão apenas para
leitura, não impedindo o acesso ao arquivo por outros usuários.
2.3.11 Agregações
O controle de versão inclui também um mecanismo de agregação, onde várias versões
de arquivos relacionadas são agregadas, referenciadas e obtidas em conjunto. Este
mecanismo consiste na atribuição de um rótulo (tag) comum a cada versão de arquivo
que integra o conjunto que se deseja caracterizar.
As operações básicas de check-in, check-out e get se aplicam também às agregações,
sendo aplicadas a todos os elementos do conjunto.
A Figura 2.7 apresenta o mecanismo de agregação. Nela, um produto é composto pelos
arquivos A, B e C. A primeira agregação, identificada como 1.0, é composta pelo
seguinte conjunto de versões de seus arquivos componentes: {A1.1, B3.2, C2.0}. A
segunda agregação, 1.1, é composta pelo seguinte conjunto: {A1.2, B3.2, C2.1}.
62
O mecanismo de agregação possibilita a implementação dos conceitos de configurações,
configurações-base e distribuições.
A
1.0
B
C
1.0
1.0
1.1
3.2
1.0
1.0
1.1
2.0
2.0
1.1
1.1
1.2
1.0
3.0
1.2
2.0
1.1
3.2
3.1
2.1
2.1 1.1
Agregações
3.2
1.0
1.1
FIGURA 2.7 – Agregações.
2.4
Breve Histórico da Gerência da Configuração de Software
A Gerência da Configuração (Oliveira et. al., 2001) teve o seu início ainda nos anos 60,
voltada para projetos de engenharia na área de defesa, em organizações militares norteamericanas. Na década de 1970, o governo americano desenvolveu vários padrões
militares, que incluíam o gerenciamento da configuração, sendo que o primeiro a
reconhecer a gerência de configuração tanto de hardware como de software foi o padrão
MIL STD 483, Configuration Management Practices for Systems, Equipment,
Munitions, and Computer Programs, publicado por volta de 1971. Nos anos de 1979 e
1981 foram realizadas conferências de software em Monterey, Califórnia, onde uma das
principais resoluções foi a determinação de se criar um padrão universal para
desenvolvimento de software. Este projeto se consolidou no padrão DOD STD 2167
Defense System Software Development publicada em 1985. Esta norma significou um
grande avanço nos conceitos de GCS principalmente com a introdução do conceito de
63
configuração-base (baseline), que organizava a GCS em termos das fases do ciclo de
vida.
A partir de 1988, com a demonstração de interesse do governo americano em fomentar
os trabalhos de normalização das associações da indústria, tais como IEEE, ANSI e
EIA, a evolução de GCS passou para entidades ligadas às indústrias e universidades,
ainda com grande participação das organizações militares e de defesa norte-americanas.
A IEEE publicou dois padrões enfocando especificamente a questão de elaboração de
planos de GCS: IEEE Std 828 Software Configurations Management Plans e o IEEE
Std 1042 Guide to Software Configuration Management. Esses padrões, principalmente
o IEEE Std 828, são internacionalmente bastante adotados como referência para a
elaboração de planos de GCS.
Mais tarde, especialmente nos anos 90, surgiram muitos outros padrões e publicações
discutindo o gerenciamento da configuração de software.
Com o Capability Maturity Model (CMM-SW, 1993), do Software Engineering
Institute da Carnegie Mellon University, a importância da disciplina GCS foi ainda mais
realçada, com sua identificação como processo-chave de um processo de software de
qualidade.
A International
Organization
for
Standardization
(ISO)
e
a International
Electrotechnical Commission (IEC) produziram o padrão ISO/IEC 12207:1995
Information technology – Software life cycle processes, que define uma estrutura de
processos para o processo de software. Neste modelo, é estabelecido o processo de GCS
como um dos processos de apoio ao desenvolvimento de software. A partir deste padrão
foi produzido o relatório técnico ISO/IEC TR 15846:1998 Information technology Software life cycle processes – Configuration Management que procura desenvolver a
caracterização resumida de GCS definida na ISO/IEC 12207.
Assim, nos últimos anos, o entendimento crescente do desenvolvimento de software
como uma coleção de processos inter-relacionados tem influenciado o trabalho da
64
Gerência da Configuração, que passou também a ser considerada sob o ponto de vista
de processo (Hass, 2002), como será visto no Capítulo 3.
A evolução da GCS pode ser observada ainda através das funcionalidades das gerações
de sistemas de GCS. No início, a gerência da configuração de software esteve voltada
para a captura da evolução de um sistema de software no nível de código fonte (van der
Hoek et. al., 2001). A primeira geração consistia de sistemas como o Source Code
Control System (SCCS) (Rochkind, 1975), desenvolvido pelos Laboratórios Bell no
começo dos anos 70, e o Revision Control System (RCS), desenvolvido na Universidade
Purdue, por W. Tichy (Tichy, 1991). Estes sistemas tinham como objetivos evitar que
múltiplos desenvolvedores fizessem modificações simultâneas no mesmo arquivo de
código-fonte e controlar a evolução, no tempo, de cada arquivo fonte. Isto foi
conseguido através da manutenção automática de arquivos de versão, onde cada arquivo
contém uma série de revisões de um único arquivo fonte (usando a técnica de
armazenamento de deltas para salvar espaço em disco) bem como bloqueios (locks) para
indicar modificações em progresso.
Para suprir as necessidades de múltiplas linhas de desenvolvimento e de trabalho
paralelo, o RCS introduziu o conceito de linhas de desenvolvimento (branches) para
armazenar variações lógicas em um arquivo de versões e o merging como um método
de incorporar as modificações de uma linha em outra. Combinadas, todas as revisões e
variantes formam uma árvore de versão, que é a entidade central através da qual os
usuários interagem com um sistema de GCS de primeira geração.
A complexidade dos projetos de software continuou a aumentar, levando a que se
desenvolvessem camadas de abstração, usando scripts, sobre as funcionalidades básicas
destas ferramentas, para atender a este aumento de complexidade.
A fim de suportar o controle de modificações compostas nos grupos de arquivos fontes
e gerenciamento avançado da área de trabalho (workspace), pesquisas em modelos de
sistemas iniciaram a criação da segunda geração de sistemas de GCS. Modelos de
sistemas e suas linguagens de modelagem associadas fornecem uma maneira de capturar
65
a estrutura do software que está sendo gerenciada através de configurações - conjunto
de versões específicas ou arquivos fonte específicos.
Para capturar a evolução potencial da própria estrutura, configurações podem existir em
diferentes revisões e variantes - assim como um arquivo fonte individual. Com a
automatização do gerenciamento da área de trabalho, através de especificações de
configuração (conjuntos de regras indicando qual versão de qual arquivo fonte colocar
em uma área de trabalho), modificações feitas em vários códigos fonte podem ser
colocadas de volta em um repositório em um único passo, atualizando assim tanto os
arquivos fontes individuais como as configurações.
O surgimento da terceira geração de sistemas de GCS deveu-se à necessidade de
políticas diferentes em situações onde um grande número de usuários opera um pequeno
conjunto de arquivos fontes ou em casos em que grupos distribuídos de desenvolvedores
modificam um único trecho de código (van der Hoek et. al., 2001). Ferramentas
modernas estenderam, então, as funcionalidades básicas das primeiras ferramentas,
suportando um desenvolvimento paralelo melhorado, gerenciamento de áreas de
trabalho, e gerenciamento de construção e liberação.
Atualmente, recursos avançados têm sido adicionados a várias ferramentas de GCS,
permitindo um suporte em um nível de abstração quase alinhado com outros aspectos da
Engenharia de Software, tais como gerenciamento das solicitações de modificação e
gerenciamento de projeto. Estas ferramentas dão suporte à atribuição de versões a todos
os artefatos de um projeto, a projetos de software cujos membros da equipe podem não
estar fisicamente no mesmo local, ao desenvolvimento baseado em componentes, e
gerenciamento da configuração baseado em atividades (White, 2000).
2.5
Áreas de Funcionalidade da GCS
Os diferentes grupos de pessoas envolvidas têm diferentes necessidades quando se
considera a perspectiva global de um projeto de software. Por exemplo, o desenvolvedor
necessita de uma visão mais detalhada, do que a do gerente de projeto.
66
Dart (Dart, 1991) apresenta um cenário típico, através do qual se pode ter uma visão dos
aspectos da GCS em uma organização. Este cenário envolve várias pessoas com
diferentes responsabilidades, por exemplo: um gerente de projeto, responsável por um
grupo de software, um gerente de configuração, responsável pelos procedimentos de
GCS, os engenheiros de software, responsáveis pelo desenvolvimento e manutenção dos
produtos de software, o responsável pelos testes de validação do produto, o gerente da
garantia da qualidade, que garante a alta qualidade do produto e o cliente que o utiliza.
Cada papel tem seus próprios objetivos e tarefas.
Com base neste cenário, Dart apresenta um conjunto de funcionalidades esperadas de
um sistema de GCS. Estas funcionalidades podem ser agrupadas em duas principais
áreas: equipe e processo, como mostrado na Figura 2.8.
As áreas funcionalidades centradas na equipe tratam de aspectos técnicos da GCS:
Componentes: identifica, classifica, armazena e acessa os componentes que formam o
produto.
Estrutura: representa a arquitetura do produto.
Construção: apóia a construção do produto e de seus artefatos.
Equipe: capacita uma equipe de projeto a desenvolver e manter uma família de
produtos.
Em contraste com as áreas centradas na equipe, as funcionalidades centradas em
processo cobrem as questões de gerenciamento:
Auditoria: mantém auditorias do produto e do seu processo.
Contabilidade: reúne estatísticas sobre o produto e seu processo.
Controle: controla como e quando as modificações são feitas.
Processo: suporta o gerenciamento da evolução do produto.
67
Dentre estas áreas, a de processo requer suporte para o modelo de ciclo de vida do
produto e as políticas da organização; habilidade para identificar tarefas a serem feitas e
como e quando elas estarão completas; possibilidade de comunicar informações sobre
eventos relevantes às pessoas certas e facilidades para documentar conhecimento sobre
o produto.
CONSTRUÇÃO
ESTRUTURA
Construção
Instantâneos
Otimização
Análise de impacto
de modificação
Regeneração
EQUIPE
Modelo do sistema
Interfaces
Relacionamentos
Seleção
Consistência
AUDITORIA
Áreas de trabalho
Resolução de conflitos
Famílias
Histórico
Rastreabilidade
Registro
Versões
Configuração
Versões de configuração
Configurações-base
Contextos de projeto
Repositório
Tipos de componentes
Suporte ao ciclo de vida
Gerenciamento de tarefas
Comunicação
Documentação
Estatísticas
Estado
Relatórios
PROCESSO
COMPONENTES
Controle de acesso
Solicitação de modificação
Acompanhamento de defeitos
Propagação das modificações
Particionamento
CONTABILIDADE
CONTROLE
FIGURA 2.8 - Áreas de Funcionalidade da GCS.
FONTE: Dart (1991, p.4).
Em (Frühauf e Zeller, 1999) os autores acrescentam à Figura 2.8 novas funcionalidades
como a Conectividade à funcionalidade de Equipe, e um novo grupo, denominado
Implantação, que inclui a Instalação, a Parametrização, a Instanciação e a
Reconfiguração.
68
Para o usuário, o sistema de GCS ideal seria aquele que fornecesse todas as áreas de
funcionalidade com o suporte à equipe e ao processo totalmente integrados, o que, no
entanto, não acontece com um único sistema de GCS existente.
Um espectro dos conceitos que suportam algumas das áreas de funcionalidade
identificadas anteriormente, representando uma evolução do suporte à GCS é
encontrado em (Dart, 1991).
2.6
A GCS e os Requisitos do Projeto
Os requisitos para a GCS podem variar em um projeto de software (White, 2000)
devido a mudanças que ocorrem no projeto ao longo do tempo, como: aumento da
complexidade do software que está sendo desenvolvido, aumento da complexidade do
ambiente no qual o software está sendo desenvolvido, mudanças nos requisitos baseadas
nas fases do ciclo de vida do desenvolvimento e mudanças nos processos de
gerenciamento da organização e/ou de pessoal.
Considerando-se as modificações nos requisitos baseadas nas fases do ciclo de vida, um
bom processo deve facilitar as modificações ao máximo sem perder o controle efetivo
sobre o software. Um exemplo de controle é o nível de aprovação necessário para
aceitação das modificações no projeto. Nas primeiras fases do desenvolvimento, podese requerer somente a aprovação do líder de projeto, enquanto nas últimas fases do
desenvolvimento, pode ser exigida a aprovação de um grupo de controle de modificação
(GCC). Além do nível de autoridade, a forma de atuação de um GCC pode variar de
reuniões formais, com controle da agenda das reuniões, até a troca de e-mails para a
tomada de decisão.Um sistema de GCS flexível permitiria ao usuário escolher o tipo de
controle desejado.
2.7
Políticas e Modelos da GCS
Feiler (Feiler, 1991) classificou quatro modelos para a GCS, baseados em certos
padrões observados no suporte à biblioteca controlada nos sistemas de GCS comerciais:
69
check-out/check-in, composição, longa transação e conjunto de modificações. Desde
esta pesquisa, muitos outros sistemas de GCS surgiram baseados, essencialmente, nestes
mesmos modelos (Hoen et. al., 2000).
Em (van der Lingen e van der Hoek, 2003), os autores diferenciam um modelo de
gerenciamento da configuração de uma política de gerenciamento da configuração. Os
dois termos são geralmente utilizados para denominar a mesma coisa, já que um sistema
típico de GCS requer um único modelo harmonizado com uma só política. Como
resultado, a terminologia não é muito clara e os primeiros artigos sobre políticas de
gerenciamento da configuração, como o citado (Feiller, 1991), referem-se a elas como
modelos. Segundo os autores, um modelo é definido como as estruturas de dados usadas
para rastrear a evolução de um ou mais artefatos e uma política é definida como um
conjunto de procedimentos através dos quais um usuário desenvolve os artefatos
armazenados nestas estruturas de dados. Por exemplo, o modelo de árvore de versão é
geralmente usado em conjunto com uma política de check-in/check-out. Já a política de
conjuntos de modificação geralmente usa estruturas de dados especializadas para
capturar e relatar conjuntos de modificação individuais.
Os modelos da GCS têm um grande efeito na funcionalidade exigida e no processo de
modificação desejado. Uma classificação dos desenvolvedores de sistemas de GCS de
acordo com estes modelos pode ser encontrada em (Dart, 1992). O modelo de longa
transação ou transação introduz a noção de workspace, onde os desenvolvedores estão
isolados das modificações dos outros. O modelo de conjunto de modificações tem o
foco nas modificações ao invés de nas versões. Neste modelo, as versões são o produto
de um conjunto de modificação aplicado a uma configuração-base. Este modelo é útil
para propagação e combinação de modificações entre usuários e sites. O modelo mais
utilizado ainda é o check-in/check-out (Dart, 1992; Estublier et al, 2002).
A seguir, são apresentadas as políticas de gerenciamento da configuração baseadas em
(Feiller, 1991), utilizadas nesta abordagem.
70
2.7.1
Política de Check In/Check Out
Esta política é baseada no conceito de repositório, onde todos os arquivos individuais e
suas versões estão armazenados. É um modelo tradicional usado por ferramentas como
o SCCS (Rochkind, 1975) e o RCS (Tichy, 1991), onde os arquivos no repositório ou
biblioteca não são operados diretamente por ferramentas do desenvolvedor, mas são
necessárias operações explícitas (Figura 2.9) para armazenar um arquivo (check-in) e
para retirá- lo para uma área de trabalho desejada (check-out). Quando o arquivo é
colocado no repositório (checked-in), geralmente após alguma modificação, uma nova
versão é criada. Quando se retira uma versão do repositório, esta tem que ser
identificada. Arquivos podem ser retirados para leitura ou escrita, permitindo ações de
controle de concorrência para evitar modificações indesejadas na mesma versão do
arquivo. Isto é feito com o mecanismo de bloqueio (lock), que garante que o arquivo
não será modificado por outra pessoa até que retorne ao repositório. Versões
seqüenciais de um arquivo são chamadas revisões e caminhos de desenvolvimento
paralelo (branches) podem ser linhas de desenvolvimento paralelo ou variantes. O
histórico de versão de um arquivo pode ser apresentado como um gráfico de versão,
como já apresentado também na Figura 2.5.
Biblioteca da GCS
Check-out
1.1
1.2
1.3
2.2
2.1
2.3
2.3
2.3
Check-in
Var1
Var2
Revisão de
Variante de
Área de Trabalho
FIGURA 2.9- Check-out e Check -in.
71
2.7.2
Política de Composição
Esta política é baseada nos conceitos de repositório e modelagem de sistema, que tem
como foco o suporte a configurações. Uma configuração consiste em um modelo de
sistema, que lista todos os componentes que formam um sistema, e as regras de seleção
de versão que são aplicadas a este modelo, a fim de escolher a versão desejada de cada
componente. Regras de seleção podem especificar também uma variante de um arquivo
e assim suportar o gerenciamento de variantes do sistema. A Figura 2.10 apresenta um
sistema que consiste dos componentes A, B e C. Uma regra de seleção escolhendo a
última versão de cada componente foi aplicada resultando na versão 1.2 do componente
A, 1.1 de B e 1.0 de C. O histórico das versões das configurações é armazenado através
da atribuição de versões ao modelo do sistema e das regras de seleção. Uma
configuração pode ter nomes de versão, usados para referenciá- la mais tarde. Várias
ferramentas combinam o modelo de composição e o check-in/check-out, como a
ferramenta livremente disponível Concurrent Versions Systems (CVS) (Cederqvist,
1993), construída sobre o RCS, que utiliza também um conceito de módulo para
facilitar a modelagem do sistema e ainda implementa o modelo de transação.
Componente A
1.0
1.1
Modelo de
Sistema
Componente A
Regras de Componente B
seleção
1.0
Componente B
1.1
Componente C
Componente C
1.0
FIGURA 2.10 - A Política de Composição.
72
1.2
2.8
Mecanismos da GCS
A GCS deve prover mecanismos para que suas funcionalidades possam ser fornecidas
(Jalote, 1999). Entre os mecanismos mais utilizados para fornecer as funcionalidades
mínimas necessárias incluem-se:
Convenções para identificação e organização de arquivos e manutenção de
informações de estado: a identificação de código e documentos de projeto de acordo
com convenção padrão de identificação e o armazenamento destes produtos em locais
planejados ajuda na rápida localização de um arquivo desejado. Através da identificação
pode-se conhecer a natureza do conteúdo do arquivo, sem precisar olhar seu conteúdo.
Controle de versão: o controle de versão, apresentado anteriormente, é um mecanismo
chave para a GCS. Muitas ferramentas estão disponíveis para ajudar a gerenciar versões
de arquivos e programas.
Acompanhamento das solicitações de modificação: este mecanismo provê um
mapeamento entre a solicitação de modificação e as modificações implementadas nos
arquivos.
Controle de acesso: garante que somente pessoas autorizadas podem modificar alguns
arquivos e somente uma pessoa pode modificar um arquivo em um dado momento.
Histórico de modificações: é um mecanismo que permite ligar uma modificação à
solicitação de modificação que a gerou.
2.9
O Estado Atual da GCS
Vários artigos retratam o estado da arte, os desafios e o impacto da comunidade de
pesquisa no campo do gerenciamento da configuração de software (van der Hoek et al,
1995; Frühauf, 1999; Conradi e Westfechtel, 1999; Crnkovic, 1999; Estublier, 2000 e
Estublier et al, 2002). Vários estudos têm sido conduzidos unindo a GCS a outras
disciplinas, como sistemas orientados a objetos (Jennings, 2000), a programação
orientada a componentes (Larsson e Crnkovic, 2000) e sistemas hipermídia (Bendix et
73
al, 2000), assim como um framework conceitual para integrar os conceitos de tecnologia
de processo à GCS já havia sido proposto em (Joeris, 1997).
No cenário internacional, a GCS é considerada uma disciplina madura, e uma das
tecnologias de engenharia de software bem sucedidas, com um mercado crescente, com
mais de US$1bilhão de vendas em 1998 (Estublier, 2000).
A GCS é uma disciplina que tem recebido contribuições de pesquisas tanto da área
acadêmica quanto das grandes indústrias de software. Em (Estublier et al, 2002) é
analisado o impacto destas pesquisas no campo da GCS.
Segundo (Oliveira et. al., 2001), nos Estados Unidos, as iniciativas a respeito da GCS
partiram principalmente de entidades governamentais (DoD, NASA entre outras). Como
grandes compradoras de software, acabam por ditar as regras do mercado, impondo
padrões de qualidade aos seus fornecedores. Estas práticas vão sendo disseminadas para
o restante do mundo, em maior ou menor rapidez.
Assim, nos países mais desenvolvidos, esforços consideráveis têm sido feitos na
pesquisa e implementação de ferramentas de GCS. Uma grande quantidade de
ferramentas, com os mais variados custos e funcionalidades encontram-se no mercado,
desde simples ferramentas para controle de versões até as mais sofisticadas, com
capacidades para geração de builds, relatórios e suporte ao desenvolvimento distribuído,
entre outras.
Segundo levantamento feito em 2001 (Oliveira et. al., 2001), no Brasil a GCS ainda era
um tanto desconhecida e não se desenvolviam ferramentas para o mercado. No entanto,
há um interesse crescente pela GCS devido ao aumento da competitividade no mercado
e da busca de certificação ou maiores níveis de maturidade por parte das organizações,
como os do ISO 9000, SEI CMM-SW e ISO/IEC 15504. A maior incidência da
utilização de ferramentas de GCS encontra-se, no entanto, em empresas multinacionais
e de grande porte.
74
2.10 As Ferramentas de GCS
O escopo da disciplina da GCS é muito amplo, assim como as funcionalidades
fornecidas por sistemas ou ferramentas de GCS, que variam desde um simples controle
de versões, oferecido por ferramentas gratuitas, até o suporte ao gerenciamento de áreas
de trabalho, e de construção/distribuição de produto, para desenvolvimento em
ambientes distribuídos, oferecido pelas mais recentes e poderosas ferramentas
comerciais. Estas, além do alto custo de utilização, apresentam também uma íngreme
curva de aprendizado (Jézéquel, 1998).
Existe, portanto, atualmente, um grande número de ferramentas de GCS e vários sites
dedicados exclusivamente à avaliação de suas capacidades (como o CM Today Yellow
Pages, www.cmtoday.com/yp/configuration_management.html). Não é objetivo deste
trabalho apresentar as ferramentas de GCS, quer sejam comerciais ou gratuitas, ainda
que eventualmente citadas, nem comparar as suas funcionalidades. No entanto é
interessante conhecer uma classificação das ferramentas, bem como alguns critérios
utilizados para avaliação das mesmas, uma vez que através deles, são ressaltadas as
funcionalidades da GCS esperadas.
Estes critérios (Oliveira, et. al., 2001) podem ser: o suporte à equipe de
desenvolvimento, ao desenvolvimento remoto, a configurações, à gerenciamento de
modificações, a construção e distribuição do produto e ao processo; a usabilidade, a
facilidade de operação e a capacidade de adequação ou personalização da ferramenta.
O suporte ao processo diz respeito ao controle efetivo sobre o desenvolvimento do
produto, através da possibilidade de aplicação de políticas, implementação do conceito
de ciclo de vida, estabelecimento de níveis de autoridade para acesso a funções de
acordo com os papéis dos vários envolvidos no projeto e o registro de históricos e
estados dos diversos itens sob o controle da ferramenta.
O suporte à gerência de modificações envolve o acompanhamento das modificações e
geração de relatórios, de maneira a permitir uma visão precisa da situação das
modificações, a qualquer momento.
75
Segundo Dart (Dart, 1996), as ferramentas de GCS podem ser classificadas, de maneira
simplificada, de acordo com suas características funcionais. Assim tem-se:
•
Ferramentas de controle de versões, que implementam os conceitos de
controle de versões, como apresentados na Seção 2.2.2.
•
Ferramentas orientadas ao desenvolvedor, que, além do controle de versões,
oferecem suporte ao trabalho em equipe, facilitando o desenvolvimento
concorrente. Caracterizam-se também pela integração ao ambiente de
desenvolvimento.
•
Ferramentas orientadas a processo, que oferecem o controle de versões e
suporte
a
parte
das
funcionalidades
das
ferramentas
orientadas ao
desenvolvedor, cuja característica principal é a automatização do gerenciamento
do ciclo de vida dos objetos envolvidos no desenvolvimento do software. Podem
fornecer também uma abordagem integrada ao gerenciamento das solicitações
de modificação.
Uma ferramenta de gerenciamento da configuração, no entanto, não é um instrumento
isolado e nem substitui a falta de um processo compreensível e definido (Starbuck,
1997). Independente da adoção de uma ferramenta automatizada de última geração, a
GCS só pode ser implantada em uma organização de maneira satisfatória desde que haja
conhecimento dos princípios básicos da GCS e um processo bem definido.
Sem a definição de um processo de GCS, um projeto de desenvolvimento de software
pode ser prejudicado, e até mesmo ter o seu bom andamento comprometido. O suporte
ao processo da GCS é, portanto, o foco da abordagem proposta para o Ambiente
Integrado.
Em resumo, a utilização de uma ferramenta automatizada de GCS facilita e até mesmo
viabiliza algumas de suas atividades, em alguns casos. Mas não é suficiente para que o
controle sobre as modificações no produto de software exista, nem que a integridade do
produto seja mantida durante seu desenvolvimento. Assim, um processo definido é a
76
solução mais eficaz. Se este processo contar com o suporte de mecanismos, como os
citados na Seção 2.8, automatizados, além de treinamento adequado dos usuários, as
chances de sua implementação bem sucedida são ainda mais elevadas.
77
78
CAPÍTULO 3
MODELAGEM, PADRÕES E AMBIENTES CENTRADOS EM PROCESSO DE
SOFTWARE
Neste Capítulo apresentam-se os conceitos, as técnicas e os padrões que apresentam a
GCS como processo integrante, utilizados na abordagem proposta, e o Ambiente
Integrado, que serve de contexto para o trabalho.
Um dos conceitos básicos utilizados na abordagem proposta nesta dissertação é o de
processo de software. Pode-se definir um processo de software (Fuggetta, 2000) como
um conjunto de políticas, estruturas organizacionais, tecnologias, procedimentos e
artefatos necessários para conceber, desenvolver, construir e manter um produto de
software.
A técnica de modelagem de processo de software refere-se à definição destes processos
como modelos, que são expressos em uma linguagem de modelage m adequada, aliada,
opcionalmente, a algum suporte computacional automatizado, disponível para modelar e
executar estes modelos (Acuña e Ferré, 2001). As linguagens utilizadas para expressar
estes modelos são conhecidas como Linguagens de Modelagem de Processo (Process
Modeling Languages – PMLs). As ferramentas de suporte utilizadas para a definição, a
análise, a execução e a melhoria de um modelo de processo são conhecidas como
Ambientes de Engenharia de Software Centrados em Processos (Process-Centered
Software Engineering Environments – PSEEs).
Modelos de referência para processos de software podem ser encontrados em padrões
como o ISO/IEC 12207 (ISO/IEC12207, 2001), que descreve os processos para
desenvolvimento e manutenção de software, fornecendo um conjunto essencial de
atividades que devem ser completadas para a obtenção de um produto de software. O
padrão ISO/IEC 15504 (ISO/IEC 15504, 2003) fornece um framework para a avaliação
de processo e estabelece um conjunto mínimo de requisitos para execução de uma
avaliação, de forma a verificar o nível em que as organizações se encontram, em termos
79
de maturidade dos processos e das práticas organizacionais utilizadas no
desenvolvimento de software.
Estes padrões utilizam um mesmo modelo de referência de processo (Process Refrence
Model – PRM), isto é, um modelo que compreende as definições dos processos em um
ciclo de vida descrito em termos de objetivos do processo e resultados, juntamente com
uma arquitetura que descreve os relacionamentos entre os processos.
O ISO/IEC 15504 (ISO/IEC 15504-5, 2003) fornece um exemplo de modelo para dar
suporte à avaliação de processo (Process Assessment Model – PAM), e contém
orientações sobre boas práticas de engenharia de software e gerenciamento que devem
ser consideradas na interpretação da finalidade do modelo de referência de processo.
Neste trabalho, o propósito e as atividades da GCS do padrão ISO/IEC 12207 (ISO/IEC
12207, 1995) e as práticas básicas do padrão ISO/IEC 15504 (ISO/IEC 15504-5)
servem como referência para os processos básicos da GCS no Ambiente Integrado. A
linguagem de modelagem de processo utilizada para defini- los e representá- los é o
Software Process Engineering Metamodel (SPEM) (OMG SPEM, 2002) que, através de
diagramas com notação gráfica da Unified Modeling Language (UML), permite
representar de forma compreensível as várias características ou elementos do processo
da GCS, facilitando sua implantação e execução em um ambiente de engenharia de
software centrado em processo.
O Ambiente Integrado para Apoio ao Desenvolvimento e Gestão de Projetos de
Software, (Sant’Anna, 2000) é o ambiente centrado em processo que define o contexto
para a abordagem proposta, e que se propõe a dar suporte à descrição e à execução
desses processos de modo a auxiliar e controlar todas as atividades envolvidas na
produção e manutenção de um projeto de software.
80
3.1
Processos de Software, Modelos de Processos e Ambientes Centrados em
Processos
A pesquisa na área de processo de software levou ao entendimento de que desenvolver
software não consiste apenas na utilização de linguagens de programação poderosas e
ferramentas eficazes, mas é um esforço coletivo, complexo e criativo (Fuggeta, 2000).
Assim, a qualidade do produto de software depende de pessoas, da organização e de
procedimentos usados para criá- lo e entregá- lo. Esta visão tem sua origem em trabalhos
de pesquisa realizados ainda nas décadas de 60 e 70, que tinham o foco nas técnicas de
programação estruturada, nos métodos de projeto, como a decomposição funcional e o
refinamento top-down, bem como na definição de um modelo de ciclo de vida para o
produto de software. Este último tópico está diretamente relacionado com a noção de
processo de software (Fuggeta, 2000).
De maneira geral, um ciclo de vida do software define uma estrutura e uma maneira de
acordo com as quais o processo de software deve ser realizado.
O ciclo de vida do software compreende um período de tempo que começa quando o
produto de software é concebido e termina quando o software já não está mais
disponível para uso. Um ciclo de vida tipicamente inclui as fases de concepção,
requisitos, projeto, implementação, teste, instalação, operação e manutenção (IEEE 610,
1990). Além disto, o ciclo de vida do software define também os princípios e
orientações para condução destes estágios. O modelo em cascata sugere que uma fase
específica só deve começar quando as entregas da fase anterior são completadas. O
modelo em espiral, considera o desenvolvimento de software como uma iteração
sistemática de várias atividades dirigidas pela análise de risco.
Um ciclo de vida, no entanto, não prescreve uma direção precisa de ações, nem como
elas devem estar organizadas, ou quais ferramentas e procedimentos operacionais,
políticas de desenvolvimento e restrições são aplicáveis ao projeto (Fuggeta, 2000).
Assim, não é suficiente para conduzir e controlar um projeto de software, ainda que seja
certamente um ponto de partida importante para definir como o software deve ser
desenvolvido.
81
Deste modo, a idéia de processo de software veio ampliar a noção de ciclo de vida
(Fuggeta, 2000), fornecendo um conceito mais abrangente e compreensível para
estruturar e organizar os diferentes fatores e questões relacionadas às atividades de
desenvolvimento de software.
Processo de software pode também ser definido como um conjunto parcialmente
ordenado de atividades, responsável pelo gerenciamento, desenvolvimento e
manutenção de sistemas de software (Acuña et al., 2000).
A visão do desenvolvimento de software como um processo ajuda a identificar suas
dimensões e problemas que precisam ser resolvidos para que práticas efetivas sejam
estabelecidas nas organizações.
Segundo Osterweil, estas organizações diferem em sua cultura, habilidades das pessoas,
produtos entregues, estratégias comerciais e de desenvolvimento (Osterweil, 1987;
Cugola e Ghezzi, 1998). Mesmo dentro de uma organização, projetos diferentes
apresentam variações. Como conseqüência, não existe um único e acabado processo de
desenvolvimento de software. O processo deve ser definido com base no problema a ser
solucionado, adaptado às características específicas do projeto e levar em consideração
as particularidades da organização e do produto que está sendo desenvolvido. Além
disto, os processos de software podem apresentar comportamentos indesejados ou
inesperados. Os produtos que são entregues podem não possuir a qualidade desejada,
em termos de confiabilidade, funcionalidade ou desempenho. Isto motivou uma série de
projetos voltados para a criação de padrões de modelos de qualidade e melhoria de
processo de software.
Ainda segundo Osterweil, o desenvolvimento de modelos de processo é semelhante ao
de software. Possui características específicas, passa por fases diferentes e requer
ferramentas específicas para ser suportado. Assim também os ambientes que suportam o
desenvolvimento de software devem ser adequados ao processo de desenvolvimento
específico. Para satisfazer estes objetivos, Osterweil (Osterweil, 1987) concluiu na
época que seriam necessárias linguagens para descrição dos processos de
desenvolvimento de software. Os modelos resultantes deveriam ser verificáveis e
82
executáveis. Isto requeria novos ambientes de desenvolvimento de software capazes de
suportar o desenvolvimento, documentação, análise, execução e evolução de modelos
de processos (Cuggola e Ghezzi, 1998).
Este ponto de vista estimulou, desde então, uma área de pesquisa ativa, voltada para o
desenvolvimento de Ambientes de Engenharia de Software Centrados no Processo (em
inglês, Process-centered Software Engineering Environments – PSEEs,) (Cuggola e
Ghezzi, 1998).
Os PSEEs, apresentados em (Ellmer, 1995) como ferramentas para suportar tanto a
execução como a melhoria dos processos, são ambientes que se propõem a melhorar a
comunicação entre os elementos envolvidos, acompanhar a situação atual dos produtos
e dos processos, permitir, entre outras coisas, ações automáticas durante o
desenvolvimento e conduzir o fluxo das atividades. Como exemplos de PSEEs podem
ser citados o SPADE-1 (Bandinelli et al., 1996), Oz (Ben-Shaul e Kaiser, 1994) e o
PROMENADE (Franch e Ribó, 1999).
Um modelo de processo dentro de um PSEE é instanciado pelo ambiente através de um
cronograma, definindo os desenvolvedores que atuarão no processo, os recursos a serem
alocados e os artefatos a serem manipulados. Um mecanismo de execução (enactment) é
responsável pela coordenação das atividades descritas em um modelo de processo, que
podem ser realizadas por desenvolvedores ou agentes de forma automatizada.
Segundo (Fuggetta, 2000) para que estes ambientes não se tornem complexos e
intrusivos, deve-se automatizar apenas processos ou fragmentos de processo que sejam
razoáveis para se automatizar, ou seja, atividades repetitivas e cansativas, como por
exemplo, o check-out de uma versão de um item de configuração. Liberando o
engenheiro de software ou desenvolvedor de um trabalho repetitivo, não só se reduz a
chance de erros, como também o tempo de entrega do produto.
Uma classificação e apresentação das características destes ambientes podem ser
encontradas em (Ambriola, et. al., 1997). Um interessante panorama do trabalho de
83
Osterweil e de outros pesquisadores na área de processo de software, inclusive os
citados anteriormente, pode ser encontrado em (Osterweil, 2003).
3.2
A Técnica de Modelagem de Processos
3.2.1
Eleme ntos de um Processo de Software
Em um processo de software podem-se identificar vários elementos a serem modelados,
como as atividades, os produtos e os recursos necessários para execução destas e os
papéis desempenhados pelos executores.
Existem várias classificações referentes aos principais elementos de um modelo de
processo (Conradi et. al., 1994; Feiler, 1993; Benali e Derniame, 1992; Finkelstein,
1994). Em (Acuña e Ferré, 2001) apresentam-se os seguintes elementos, como os mais
comumente modelados (Figura 3.1):
•
Agentes ou atores: entidades que executam um processo. Podem ser divididos
em dois grupos: a) atores humanos, que são pessoas que desenvolvem software
ou estão envolvidas no processo de software e estão, provavelmente,
organizados em equipes; b) atores sistemas ou ferramentas de sistema, que são
software de computador ou componentes de hardware. Um ator é caracterizado
pelas propriedades dos seus papéis e de suas disponibilidades e pode
desempenhar vários papéis, que são compostos de um conjunto consistente de
atividades. Um papel pode ser atribuído a vários atores cooperativos.
•
Papéis: descrevem um conjunto de responsabilidades de agentes ou grupos, os
direitos e habilidades requeridas para realizar uma atividade específica do
processo de software. São associações entre agentes e atividades em termos de
definição do conjunto de responsabilidades executadas pelos agentes.
•
Atividades: uma atividade é o estágio de um processo que produz mudanças de
estado externamente visíveis no produto de software. Uma atividade pode ter
uma entrada, uma saída e alguns resultados intermediários chamados
84
genericamente de produtos. Inclui e implementa procedimentos, regras, políticas
e objetivos para gerar e modificar um conjunto de artefatos. Pode ser realizada
por um agente humano ou por uma ferramenta e dividida em outras atividades,
mais elementares. Pode ser organizada em redes com dimensão horizontal
(encadeadas) e vertical (decomposta). É associada a papéis, outras atividades e
artefatos.
•
Artefatos ou Produtos : constituem-se no sub(produto) e na matéria prima de
um processo. Um artefato produzido por um processo pode ser usado depois
como entrada para o mesmo ou outros processos, para produzir outros artefatos.
Um artefato ou produto de software é desenvolvido e mantido dentro de um
processo. Um artefato pode ter uma longa duração. Podem existir diferentes
artefatos, à medida que o processo de software se desenvolve. Os (sub)produtos
podem ser criados, acessados ou modificados durante a atividade do processo.
Um conjunto de artefatos de software que serão entregues para um usuário é
chamado produto de software. Portanto, um relacionamento "composto de" pode
aparecer entre produtos.
Composto_de
Composto_de
Executa
PAPEL
ATIVIDADE
Executa
Composto_de
Entradas
Saídas
ATOR
PRODUTO
FIGURA 3.1 - Elementos e Relacionamentos de um Modelo de Processo.
FONTE: Adaptada de Acuña e Ferré (2001, p.2).
85
3.2.2
As Linguagens de Modelagem de Processos
Pelo fato dos processos de software serem entidades complexas, os pesquisadores da
área criaram uma variedade de linguagens e formalismos de modelagem, chamados de
Linguage ns de Modelagem de Processos (Process Modeling Languages – PMLs), para
de alguma maneira, formalizar estes processos. Estas linguagens permitem representar,
de maneira compreensível e precisa, os vários elementos do processo de software
identificados anteriormente, ou seja, as PMLs são constituídas de elementos core com
semânticas próprias, que representam os elementos comuns dos processos, e um
conjunto de associações utilizadas para a construção do modelo (Conradi e Liu, 1995).
Estas linguagens (Fuggeta, 2000), dos mais diferentes tipos, são geralmente baseadas
em paradigmas lingüísticos, como as Redes de Petri, que recebem extensões para
aumentar suas capacidades de expressão; outras abordagens, como a de Osterweil
(Osterweil, 1987), baseiam-se na idéia de que os processos podem ser descritos usando
o mesmo tipo de linguagem usada para criar software convencional (a idéia que
“processo de software é software também”).
Diversas classificações para as linguagens de processo de software são encontradas na
literatura, como a de (Zamli e Lee, 2001). Segundo os autores, uma classificação pode
ser obtida pela identificação das partes do ciclo de vida do processo que a PML suporta,
seguindo uma similaridade com o ciclo de vida do desenvolvimento de software, tendose, assim: Linguagens de Especificação de Processos, Linguagens de Projeto de
Processos e Linguagens de Implementação de Processos.
Já uma visão mais operacional das PMLs, sugere uma classificação baseada na
execução (enactement) do modelo de processo especificado em uma PML, já que um
processo de software só pode orientar, fazer cumprir e automatizar atividades da
engenharia de software através de sua execução.
Assim, segundo o suporte à execução do processo uma PML pode ser: não executável,
quando suporta somente o entendimento do processo e não sua execução; simulada,
quando permite a simulação em alto nível de um modelo de processo, que normalmente
86
ajuda no projeto de novos processos de software, mas não fornece uma orientação mais
detalhada ou controle do processo de software; e executável, quando permite que o
modelo de processo especificado seja executado para orientar de maneira ativa ou até
mesmo controlar um processo de software.
Como representantes desta última categoria, podem-se destacar as linguagens
Environment for Experimenting and Envolving Software Processes (E3), (Jacheri et al,
1998; Jacheri et al, 1999) e Process-oriented Modelling and Enactment of Software
Developments (PROMENADE) (Franch e Ribó, 1999).
A PML E3 oferece um conjunto de entidades básicas (tarefas, papéis, ferramentas e
artefatos) e relacionamentos envolvidos em processos de software. Estas entidades
podem ser adequadas às necessidades particulares do modelador por meio do uso de
herança.
A PML PROMENADE, assim como a E3, tem suas raízes baseadas em metodologias
orientadas a objetos. O meta-modelo PROMENADE apresenta elementos comuns como
meta-tarefas, meta-documentos, etc; está sendo desenvolvido com base na extensão do
meta- modelo UML como classes pré-definidas.
Alguns pesquisadores voltaram-se à experimentação da UML como uma PML
(Schleicher et. al., 1998; Jäger et. al., 1999). A UML apresenta, como vantagem
competitiva em relação às PMLs mais especializadas, o fato de ser mais popular e
largamente utilizada, mas tem, no entanto, a limitação de não ter sido concebida como
uma linguagem executável por uma máquina de processo. Ainda recentemente, estudos
têm sido feitos no sentido de empregar um subconjunto da UML como uma PML
executável (Di Nitto et. al., 2002).
3.2.3
Os propósitos das PMLs
De acordo com Fuggetta (Fuggeta, 2000), as linguagens de modelagem de processos
podem ser utilizadas para diversos propósitos, como:
87
•
Entendimento do processo: Um modelo de processo pode ser utilizado para
representar, de uma forma precisa, como o processo está estruturado e
organizado, tornando-se um instrumento importante para a eliminação de
inconsistências na especificação do processo.
•
Projeto de um processo: Um modelo de processo pode ser utilizado para o
projeto de um novo processo, descrevendo sua estrutura e organização.
•
Treinamento e educação: Uma descrição precisa do processo pode ser útil para
o treinamento e aprendizado de equipes sobre procedimentos e operações
organizacionais.
•
Simulação e otimização de processos : Uma descrição de um processo pode ser
útil para a avaliação de problemas e propostas para melhorias.
•
Suporte a processos : Uma descrição detalhada de um processo pode ser
interpretada e utilizada para fornecer diferentes níveis de suporte para pessoas
envolvidas no processo.
3.2.4
Abordagens para a Modelagem de Processos
Um processo pode ser modelado em diferentes níveis de abstração e sob diferentes
pontos de vista. Assim, as informações contidas em um modelo podem ser estruturadas
sob perspectivas variadas, sendo, segundo (Curtis e Kellner, 1992; Acuña e Ferré, 2001)
as mais usualmente encontradas na literatura:
•
Funcional: representa quais elementos de processo estão sendo implementados
e quais fluxos de informação são importantes para estes elementos.
•
Comportamental: representa quando (seqüência) e sob quais condições os
elementos de processo são implementados.
•
Organizacional: representa onde e por quem os elementos de processo são
implementados.
88
•
Informativa: representa as entidades de informação que são manipuladas por
um processo, incluindo sua estrutura e relacionamentos.
Acredita-se que estas perspectivas devem ser contempladas, em maior ou menor grau,
em um modelo de processo.
3.3
A Linguagem de Modelagem de Processo SPEM
O Software Process Engineering Metamodel (SPEM) é um metamodelo que pode ser
usado para descrever um processo concreto ou uma família de processos de
desenvolvimento de software relacionados (OMG SPEM, 2002). Foi desenvolvido pelo
Object Management Group (OMG), para tentar suprir a necessidade de um padrão para
as técnicas de modelagem de processo surgidas nos últimos anos. A execução do
processo (enactment) não está no escopo deste modelo.
O SPEM define o conjunto mínimo de elementos de modelagem necessários para
descrever qualquer processo de desenvolvimento de software, utilizando uma
abordagem orientada a objetos e a UML. A UML é uma linguagem gráfica para
modelagem de sistemas discretos, de maior aplicabilidade na área de projeto de
software orientado a objetos.
Além de ser definido como um metamodelo, o SPEM é também definido como um
perfil da UML. Um perfil contém uma ou mais extensões relacionadas da semântica
padrão da UML, para adaptá- la a um domínio ou propósito particular. Esta extensão é
feita através de mecanismos conhecidos como estereótipos, valores atribuídos e
restrições. Um estereótipo, por exemplo, estende o vocabulário da UML, permitindo a
criação de novos blocos de construção derivados dos já existentes.
Um fator que favorece a escolha do SPEM para a definição de processos é que ele tanto
define capacidades de modelagem dedicadas ao domínio do processo de software,
quanto se beneficia da expressividade da UML. Assim, desenvolvedores de software
que estejam familiarizados com a UML podem reutilizar seus conhecimentos de
modelagem de software no domínio da modelagem de processos de software.
89
3.3.1
Arquitetura da Modelagem
Existem sempre três níveis de abstração para qualquer contexto de modelagem. Há o
próprio modelo (nível M1), há instâncias do modelo (nível M0), e há um conjunto de
construtores/regras para a construção do modelo (nível M2). Existem também os metametamodelos (nível M3) que são como um terceiro nível de abstração para um
modelador. Um bom exemplo de nível 3 é o Meta Object Facility (MOF) que define um
meta- metamodelo (também chamado de modelo MOF) simples e com semântica
suficiente para descrever meta modelos em vários domínios, sendo o foco inicial metamodelos de análise e projetos OO.
Um meta-metamodelo é na verdade uma linguagem que cria ou define um metamodelo;
uma linguagem na qual um metamodelo pode ser expresso A integração entre metamodelos se dá pelas interfaces também providas pelo MOF, sendo necessária para a
integração de ferramentas e aplicações (pelas diversas fases do ciclo de vida) utilizando
uma semântica comum.
A TABELA 3.1 mostra a arquitetura em 4 camadas de modelagem definida pela OMG
envolvendo os níveis de abstração de modelagem.
TABELA 3.1 – Níveis de Abstração da Modelagem de Processos.
M0 Um processo em execução – isto é, um processo de produção do mundo
real enquanto ele é executado.
M1 A definição do processo correspondente. Esta camada inclui processos
genéricos bem como a adaptação destes processos para um dado projeto
(como o RUP - Rational Unified Process, Open).
M2 Metamodelo de Processo (SPEM, UML). Esta camada serve como um
modelo para o nível M1.
M3 Meta Object Facility (MOF)
90
3.3.2
Elementos da Linguagem SPEM
Um processo pode ser visto como uma colaboração entre papéis para alcançar uma certa
meta ou objetivo. Para conduzir sua execução (enactement) pode-se restringir a ordem
na qual atividades devem, ou podem ser executadas. Existe também uma necessidade de
definir a forma do processo no tempo, e sua estrutura de ciclo de vida em termos de
fases e iterações.
Um ProcessComponent significa um conjunto não arbitrário de elementos de definição
de processo, modelados em SPEM.
Um WorkProduct ou artefato é alguma coisa produzida, consumida ou modificada por
um processo. Pode ser um pedaço de informação, um documento, um modelo, código
fonte. Descreve uma classe e uma categoria de produto de trabalho produzido em um
processo, como um Documento Texto, Modelo UML, Executável e Biblioteca de
Código. Os tipos de produto de trabalho variam dependendo do processo que está sendo
modelado.
Uma WorkDefinition é um tipo de operação que descreve o trabalho executado no
processo. Suas subclasses são Activity, Phase, Iteration e LifeCycle. Uma
WorkDefinition pode ser composta de outras WorkDefinitions, e estas podem estar
relacionadas a WorkProducts usados como entrada ou saída, especificados pela classe
ActivityParemeter.
Um LifeCycle é definido como uma seqüência de fases que alcançam uma meta
específica. Ele define o comportamento de um processo completo a ser executado em
um dado projeto.
O ProcessRole auxilia a definição do WorkProduct como entrada ou saída do processo.
Pode-se estabelecer uma relação de dependência entre uma WorkDefinition e outra para
indicar dependências início- início, fim- início ou fim- fim entre elas. Por exemplo, se a
atividade B tem uma dependência fim- início com uma atividade A, então B pode iniciar
somente depois que A terminou.
91
Uma Activity é a subclasse principal de WorkDefinition que descreve uma parte do
trabalho executado por um ProcessRole, suas tarefas, operações e ações que são
executadas. Uma Activity pode consistir de elementos atômicos chamados Steps.
Uma Phase é uma especialização de WorkDefinition, que é um tipo de operação que
descreve o trabalho executado no processo. Em uma Phase, uma pré-condição define o
critério de entrada e uma meta define o critério de saída da fase. Phases têm a restrição
adicional de seqüencialidade, isto é, suas atividades são executadas de acordo com
marcos distribuídos no tempo.
Uma Iteration é uma composição de WorkDefinition com um marco secundário. Estes
elementos não descrevem a execução em si, são elementos da descrição do processo
usados para ajudar a planejar e executar aquela descrição.
Uma WorkDefinition tem um ProcessPerformer próprio, representando o papel
principal que a executa no processo. Um ProcessRole é responsável por um conjunto de
WorkProduct.
Uma dependência entre WorkProducts indica que a modificação feita em um pode
invalidar o outro.
O ProcessPerformer tem uma subclasse, ProcessRole que define responsabilidades
sobre WorkProduct específicos, e define os papéis que executam e ajudam em
atividades específicas. Um ProcessPerformer é o executante de WorkDefinitions
agregadas de mais alto nível que não podem ser associadas a ProcessRoles individuais.
É possível agrupar mais de uma Activity em uma Discipline. Uma Discipline é uma
especialização particular de Package que particiona as atividades dentro de um processo
de acordo com um tema comum. A inclusão de uma Activity em uma Discipline é
representada pela dependência Categorizes, com a restrição adicional que toda Activity é
categorizada por exatamente uma Discipline. A dependência Categorizes fornece um
meio de associar elementos de processo a múltiplas categorias.
92
Como na UML, um Package é um recipiente que pode tanto possuir como importar
elementos de definição de processo. Package e a dependência Categorizes podem ser
usados para implementar uma categorização geral de elementos de descrição de
processo. Um Package é criado para representar esta categoria e todos os elementos
ligados pela dependência Categorizes ao pacote.
Guidances podem ser associados a todos os elementos de modelo do SPEM a fim de
fornecer informação mais detalhada aos praticantes sobre o elemento associado. Os
tipos possíveis são: GuideLine, que é composto de um conjunto de regras e
recomendações de como um dado produto deve ser visto ou organizado; Technique, que
é um algoritmo detalhado usado para criar um produto de trabalho e ajudam a definir as
habilidades requeridas para executar tipos específicos de atividades; o UMLProfile
fornece mecanismos que especializam a UML para um plataforma ou propósito
específico como análise, projeto, e assim por diante. Toda atividade de desenvolvimento
que utiliza UML pode ser regida por um profile, que dita as regras de consistência da
UML que precisam ser aplicadas ou qual elemento de modelo UML é relevante para o
contexto atual e o foco da atividade.
Um ToolMentor mostra como usar uma ferramenta específica para realizar uma
atividade e está associado a uma única ferramenta. Um CheckList representa uma lista
de elementos que precisa ser completado. O Template provê um documento de formato
padrão para um determinado WorkProduct. Estimate descreve o esforço associado com
um elemento em particular.
3.3.3
A notação SPEM
No SPEM, diagramas da UML podem ser usados para apresentar os vários aspectos de
um modelo de processo de software, como os diagramas de classe, de pacote, de
atividade, de caso de uso, de seqüência e de estados, com algumas restrições. Os
diagramas de implementação e componentes não são usados porque contêm alguns
elementos semânticos da UML que foram excluídos do SPEM.
93
Diagramas de classe permitem a representação de aspectos do processo de software
como
herança,
dependências;
associações
simples;
relacionamentos
entre
ProcessPerformer ou ProcessRole e WorkProduct; estrutura, decomposição e
dependências de WorkProdutcts.
Diagramas de Pacote permitem a representação de Process, ProcessComponents,
ProcessPackages e Disciplines. Podem ser usados formatos aninhados ou não
aninhados para a representação dos pacotes.
O diagrama de casos de uso, por exemplo, pode ilustrar o relacionamento entre os
envolvidos e as atividades do processo. As dependências <<perform>> e <<assist>>
podem ser usadas para se definir as relações entre um ator e o seu caso de uso.
Outro diagrama usado, o de atividades, permite a apresentação da seqüência de
atividades com seus produtos de trabalho de entrada e saída, bem como os estados do
fluxo de objetos. Raias podem ser utilizadas para separar as responsabilidades dos
diferentes papéis do processo.
Diagramas de seqüência podem ainda ser utilizados para ilustrar padrões de interação
entre instâncias de elementos do modelo SPEM, bem como diagramas de estado podem
ser usados para ilustrar o comportamento de elementos do modelo.
Os elementos de definição do processo do SPEM são representados por estereótipos.
Ícones especiais foram criados para os mais freqüentemente utilizados, como atividades,
produtos de trabalho, papéis, etc. A TABELA 3.2 mostra os principais ícones utilizados
no desenvolvimento dos modelos de processo.
94
TABELA 3.2 - Principais Ícones e Estereótipos do SPEM.
Estereótipo
Comentário
Notação
WorkProduct
É uma descrição de um pedaço de informação ou entidade física
produzida ou usada pelas atividades de um processo de engenharia
de software. Exemplos: modelos, planos, código, documentos,
base de dados, etc.
WorkDefinition
Descreve a execução, as operações executadas e as transformações
executadas nos WorkProducts pelos papéis. Tipos: Activity,
Phase, Iteration e LifeCycle.
Guidance
É associado aos principais elementos do modelo, e contém
descrições adicionais como técnicas, orientações, procedimentos,
padrões, modelos de documentos, etc. Exemplos: Guideline, Tool,
Checklist e Template .
Activity
Descreve o que um ProcessRole executa. As atividades são o
principal elemento do trabalho e descrevem as tarefas, as
operações e ações que são executadas por um papel.
ProcessPerformer
Define um executante para um conjunto de WorkDefinition em um
processo. É usado para WorkDefinitions que não podem ser
associadas a ProcessRoles individuais.
ProcessRole
Descreve os papéis, as responsabilidades e competências de um
indivíduo na execução de Activities em um processo e a
responsabilidade sobre certos WorkProducts.
ProcessPackage
Representação de um pacote do SPEM.
Phase
Especialização de WorkDefinition com critério de entrada definido
por pré-condição e critério de saída definido por seu objetivo (ou
marco), com restrição de seqüência.
Process
Descreve completamente um processo de engenharia de software,
em termos de ProcessPerformers, ProcessRoles,
WorkDefinitions, WorkProducts e Guidances associados.
Document
Diferentes tipos de WorkProduct como por exemplo Documento
Texto, um Modelo UML, Executável, Biblioteca de Código, etc.
UML Model
Um modelo representado em UML.
95
3.4
Padrões de Processos de Software e Modelos de Maturidade
O padrão ISO/IEC 12207 (ISO/IEC, 1995) prescreve um processo para o
desenvolvimento e manutenção de software, através da determinação de um conjunto de
atividades essenciais que devem ser completadas para se obter um produto de software.
Neste padrão, os processos que envolvem o ciclo de vida do software são agrupados em
três categorias, segundo a natureza deles: primários, de suporte e organizacionais.
Cada processo é, então, definido em termos de suas próprias atividades e cada atividade
é adicionalmente definida em termos de suas tarefas (Rocha et. al., 2001).
Independentemente do processo de desenvolvimento de software utilizado, o grau de
implantação deste varia de uma organização para outra e mesmo de um projeto para
outro. Na realidade, a partir de uma estrutura de um processo de desenvolvimento, uma
equipe normalmente define a forma como este vai ser implantado, os procedimentos que
serão adotados, os métodos e as ferramentas que serão utilizados, bem como as métricas
e medidas que serão coletadas.
Um modelo de maturidade procura avaliar a capacidade que uma organização
desenvolvedora de software tem em implementar a metodologia escolhida, ou seja,
avaliar sua maturidade na implementação do processo escolhido.
Em geral os modelos de maturidade buscam fornecer orientações às organizações para a
melhoria contínua de seus processos de construção de software. Visando estas
melhorias, estabelecem e colocam em ordem de prioridade as ações que devem ser
realizadas para se evitar erros e repetição de trabalho durante o ciclo de
desenvolvimento do software. Através de níveis de maturidade, os modelos permitem às
organizações buscarem, de maneira consistente, os requisitos do próximo nível a ser
atingido, compostos por objetivos de processo que, quando atingidos, indicam um
crescimento na maturidade do processo.
A capacidade de uma organização em executar uma disciplina ou área de processo
específico pode ser avaliada para uma única área de processo ou um conjunto de áreas
de processo, considerando-se um modelo dito contínuo, ou para um conjunto
96
estabelecido de áreas de processo através de uma organização, no chamado modelo em
estágios.
Alguns dos padrões de processo e modelos de maturidade mais utilizados e conhecidos
internacionalmente são o modelo Capability Maturity Model (CMM) do Software
Engineering Institute (SEI), da Universidade de Carnegie Mellon nos EUA (CMM-SW,
1993), que evoluiu para o Capability Maturity Model Integration (CMMI) (CMMI-SW,
2002) e também o ISO/IEC 15504 Este último teve suas origens no modelo Software
Process Improvement and Capability dEtermination (SPICE), desenvolvido dentro do
ISO/IEC JTC/SC7 (Subcomitê de Engenharia de Software) visando harmonizar as
várias abordagens para avaliação de processos existentes (como o CMM, o Trillium e o
Bootstrap), que resultou no ISO/IEC 15504, publicado em 1998 na forma de Relatório
Técnico, e como padrão internacional (Parte 2) em 2003.
Enquanto o padrão ISO/IEC 12207 prescreve um processo para o desenvolvimento e
manutenção de software, o padrão 15504 define uma estrutura para avaliação e melhoria
de processos de engenharia de software, e prescreve práticas básicas que devem ser
realizadas para que se atinjam certos níveis de maturidade. Ambos baseiam-se no
mesmo modelo de referência, de modo que uma abordagem baseada no 15504 está
alinhada ao 12207.
Pode-se constatar uma tendência de crescimento do interesse nestes padrões e modelos
no Brasil. Segundo pesquisa do Ministério da Ciência e Tecnologia (MCT)
(Nascimento, 2001), o nível de conhecimento destes modelos e padrões pelas
organizações de TI vem aumentando nos últimos anos. Isto é o que se verifica nos
Relatórios de Qualidade e Produtividade no Setor de Software Brasileiro de 1999 e de
2001, editados bienalmente pela Secretaria de Política de Informática do Ministério da
Ciência e Tecnologia – MCT (MCT/SEPIN, 1999; 2001).
O nível de conhecimento do CMM mais que triplicou de 1995 a 1999, passando de 14%
para 47%. O resultado de 43% alcançado em 1999 para conhecimento do padrão
ISO/IEC foi significativamente superior ao de 25% obtido na primeira medição deste
indicador em 1997. Este padrão, aprovado em 1995, está publicado no Brasil como
97
NBR ISO/IEC 12207: Tecnologia da informação – Processos de ciclo de vida de
software. Também foram apurados ganhos históricos significativos de 18% em 1997
para 31% em 1999 quanto ao conhecimento do15504 (Nascimento, 2001).
Junto com o aumento do interesse pelos padrões cresce também o interesse pela GCS, já
que todos estes padrões incluem requisitos para a Gerência da Configuração, apesar
destes requisitos variarem de modelo para modelo, e também a maneira como a GCS
toma parte nos métodos de avaliação de maturidade.
3.4.1
A Gerência da Configuração de Software em Padrões e Modelos de
Maturidade
Os propósitos, as atividades e as práticas básicas dos modelos de processo dos padrões
12207 e 15504 servem de ponto de partida para a definição do processo da GCS nesta
abordagem. Esta escolha é devida à própria utilização do modelo SPICE na concepção
geral do Ambiente Integrado (Sant´Anna, 2000), sendo o 15504 uma evolução deste
modelo.
O modelo definido pelo padrão 15504 é um modelo bidimensional. Em uma dimensão,
a de processo, os processos são definidos e classificados em categorias. Na segunda
dimensão, a de capacidade, uma série de atributos de processo agrupados em níveis de
capacidade são definidos.
A dimensão de processo do 15504 está baseada nos propósitos e resultados descritos no
ISO/IEC 12207 AMD 1, e nas atividades e tarefas do ISO/IEC 12207, existindo uma
referência cruzada destas com cada prática básica associada, no caso da Gerência da
Configuração. Na nova versão do 15504 (ISO/IEC 15504-5, 2003), no entanto, o
processo de Gerência das Solicitações de Modificação é novo, não constando ainda da
estrutura do ISO/IEC 12207.
Cada processo na dimensão de processo tem um conjunto de práticas básicas
associadas, cuja execução fornece uma indicação da extensão da obtenção do propósito
98
do processo. Associados aos processos e suas práticas básicas estão os produtos de
trabalho que são utilizados ou produzidos durante a execução do processo.
3.4.1.1
A GCS e o Padrão ISO/IEC 12207
O padrão 12207 (ISO/IEC 12207/AMD 1, 2001) define o propósito do processo da GCS
como sendo o de estabelecer e manter a integridade de todos os produtos de trabalho de
um processo ou projeto e torná- los disponíveis às partes interessadas.
Como resultado de uma implementação bem sucedida do processo da GCS:
•
Uma estratégia para a gerência da configuração é desenvolvida;
•
Todos os itens gerados pelo processo ou projeto são identificados, definidos e
colocados em uma configuração-base;
•
Modificações e liberações dos itens são controladas;
•
Modificações e liberações são disponibilizadas para as partes interessadas;
•
A situação dos itens e das solicitações de modificações é registrada e relatada;
•
A integridade e consistência dos itens são garantidas; e
•
O armazenamento, o tratamento e a entrega dos itens são controlados.
Para que estes objetivos sejam alcançados, o processo da GCS deve realizar as
atividades de: implementação do processo, identificação, controle, relato da situação e
avaliação da configuração e gerenciamento da liberação e entrega.
3.4.1.2
A GCS no Modelo ISO/IEC 15504
O padrão 15504 é dividido em 5 partes, sob o título geral de Tecnologia da Informação
– Avaliação de Processo. Nesta dissertação, utiliza-se como referência a parte 5
(ISO/IEC CD 15504-5) que fornece um exemplo de modelo para suportar a avaliação de
99
processo e contém ainda orientações sobre as práticas básicas de engenharia de software
a serem consideradas na interpretação do modelo de referência, apresentado na parte 2
do padrão.
Os processos do padrão 15504 estão agrupados em 3 categorias de processos, idênticas
às categorias definidas no padrão 12207 AMD 1, que são: categoria de processos de
ciclo de vida Primários, de Suporte e Organizacionais.
Dentro de uma categoria de processo, os processos são agrupados em um segundo nível,
de acordo com o tipo de atividade que eles endereçam: os processos incluídos no
mesmo grupo têm um relacionamento lógico uma vez que suas capacidades são
relacionadas e contribuem para uma problemática complementar.
As categorias e os grupos de processo são mostrados na TABELA 3.3. A GCS é
encontrada na área de processos de suporte, no grupo de processos denominado Grupo
de Controle de Configuração (CFG), onde as atividades da GCS consideradas neste
trabalho estão agrupadas nos processos de Gerência da Configuração e Gerência das
Solicitações de Modificação.
O propósito da Gerência da Configuração é estabelecer e manter a integridade de todos
os produtos de trabalho de um processo ou projeto e torná- los disponíveis às partes
envolvidas. Os resultados esperados com a implementação bem sucedida deste processo
são os mesmos definidos no padrão 12207 para esta gerência.
Este processo apresenta onze Práticas Básicas (Base Practices, BP ) que são tarefas e
atividades da engenharia de software ou gerenciais que, quando executadas de maneira
consistente, contribuem para que o propósito de um processo, como o da GCS, seja
alcançado e produza os resultados esperados.
100
TABELA 3.3 – Categorias e Grupos de Processo do Padrão ISO/IEC 15504.
CATEGORIAS
PROCESSOS
DO CICLO DE
VIDA
PRIMÁRIOS
PROCESSOS
DO CICLO DE
VIDA
ORGANIZA CIONAIS
PROCESSOS
DO CICLO DE
VIDA DE
SUPORTE
GRUPOS DE PROCESSOS E PROCESSOS
FORNECIMENTO
ENGENHARIA
(SPL)
(ENG)
1) Proposição do
1) Elicitação dos
fornecedor
requisitos
2) Acordo do
2) Análise dos requisitos
contrato
do sistema
3) Liberação do
3) Projeto de arquitetura
software
do sistema
4) Suporte à
4) Análise de requisitos
aceitação do
do sistema
software
5) Projeto de software
6) Construção do
software
7) Integração do
software
8) Teste do software
9) Instalação do
software
10) Integração do
sistema
11) Teste do sistema
12) Manutenção do
sistema e do software
GERENCIAMENTO
MELHORIA DE
RECURSOS E
(MAN)
PROCESSO
INFRAESTRUTURA
(PIM)
(RIN)
1) Alinhamento
1) Estabelecimento
1) Gerência de recursos
organizacional
do processo
humanos
2) Gerência da
2) Avaliação do
2) Treinamento
organização
processo
3) Gerência do
3) Gerência de
3) Melhoria do
conhecimento
projeto
processo
4) Infra-estrutura
4) Gerência da
qualidade
5) Gerência de risco
6) Medidas
CONTROLE DE
GARANTIA DA
QUALIDADE DO
CONFIGURAÇÃO
QUALIDADE
PRODUTO
(CFG)
(QUA)
(PRO)
AQUISIÇÃO
(ACQ)
1) Preparação da
aquisição
2) Seleção do
fornecedor
3) Monitoração do
fornecedor
4) Aceitação do
cliente
1) Documentação
2) Gerência de
configuração
3) Gerência de
problemas
4) Gerência das
solicitações de
modificação
1) Garantia da
qualidade
2) Verificação
3) Validação
4) Revisão conjunta
5) Auditoria
101
1) Usabilidade
2) Avaliação de produto
OPERAÇÃO
(OPE)
1) Suporte ao
cliente
2) Uso
operacional
REUSO
(REU)
1) Gerência de
bens
2) Gerência do
programa de
reuso
3) Engenharia
do domínio
Práticas básicas representam as atividades funcionais únicas de um processo e são
descritas em um nível abstrato, identificando o que deveria ser feito sem especificar
como. A implementação destas práticas representa, no entanto, o primeiro passo na
construção da capacidade do processo. São elas:
•
CFG.2.BP1 – Desenvolver uma estratégia para a gerência da configuração.
•
CFG.2.BP2 – Identificar itens da configuração.
•
CFG.2.BP3 – Estabelecer estruturas e hierarquias de arquivo e diretório.
•
CFG.2.BP4 – Estabelecer estratégia de desenvolvimento paralelo.
•
CFG.2.BP5 – Estabelecer as configurações-base internas e de distribuição.
•
CFG.2.BP6 – Manter a descrição de item de configuração.
•
CFG.2.BP7 – Controlar modificações e liberações.
•
CFG.2.BP8 – Manter histórico do item de configuração.
•
CFG.2.BP9 – Relatar a situação da configuração.
•
CFG.2.BP10 – Verificar a informação sobre itens de configuração.
•
CFG.2.BP11 – Gerenciar o backup, armazenamento, arquivamento, tratamento e
distribuição dos itens de configuração.
O propósito da Gerência das Solicitações de Modificação é garantir que as solicitações
de modificação sejam gerenciadas, acompanhadas e controladas. Este processo não tem
equivalente no 12207. Os resultados esperados com a implementação bem sucedida
deste processo são:
•
Uma estratégia para o gerenciamento da modificação é desenvolvida.
•
Solicitações de modificação são registradas e identificadas.
102
•
Dependências e relacionamentos com outras solicitações de modificação são
identificados.
•
Critérios para confirmação da implementação das solicitações de modificação
são definidos.
•
Solicitações de modificação são priorizadas, e os recursos necessários são
estimados.
•
Modificações são aprovadas de acordo com a prioridade e disponibilidade de
recursos.
•
Modificações aprovadas são implementadas e acompanhadas até o fechamento.
•
A situação de todas as solicitações de modificação é conhecida.
Este processo apresenta dez práticas básicas (BP) que devem ser realizadas a fim de que
o propósito e resultados esperados sejam alcançados. São elas:
•
CFG.4.BP1 – Desenvolver uma estratégia de gerenciamento das modificações.
•
CFG.4.BP2 – Registrar a solicitação de modificação.
•
CFG.4.BP3 – Registrar a situação das solicitações de modificação.
•
CFG.4.BP4 – Fornecer possibilidade de rastreamento com o problema originário
ou relatórios de erros.
•
CFG.4.BP5 – Estabelecer as dependências e relacionamentos com outras
solicitações de modificação.
•
CFG.4.BP6 – Avaliar o impacto da modificação.
•
CFG.4.BP7 – Identificar as atividades de verificação e validação a serem
executadas para as modificações implementadas.
103
•
CFG.4.BP8 – Modificações são aprovadas antes da implementação.
•
CFG.4.BP9 – Agendar a modificação.
•
CFG.4.BP10 – Revisar a modificação implementada.
Um nível de capacidade é um conjunto de Atributos do Processo (Process Attributes,
PAs) que cooperam para proporcionar uma melhoria na capacidade de executar um
processo. Os PAs fornecem, assim, uma medida da capacidade do processo e são
aplicáveis a todos os processos. Cada atributo descreve um aspecto da capacidade
completa de gerenciamento e melhoria da eficiência do processo em alcançar seu
propósito e contribuir para os objetivos de negócio da organização.
Os níveis constituem uma maneira racional de progredir na melhoria da capacidade de
qualquer processo.
No padrão ISO/IEC 15504 existem seis níveis de capacidade, que incorporam nove
atributos de processo (Figura 3.2). Cada atributo de processo possui indicadores da
capacidade do processo. Na Seção 6 da parte 5 do padrão 15504 apresentam-se os
indicadores de atributos de processo relacionados aos nove atributos de processo
associados aos níveis de processo, que variam de 1 a 5. Entre estes indicadores estão os
processos relacionados aos PAs. O processo de Gerência da Configuração é um
processo relacionado ao PA 2.2 - Gerenciamento de Produto de Trabalho.
3.4.1.3
A Maturidade da GCS
Uma vez que o modelo do padrão 15504 é contínuo e os processos das Gerências da
Configuração e das Solicitações de Modificação são áreas de processo, elas podem ser
executadas nos níveis de maturidade definidos.
Para obter o Nível 1, os processos das Gerências da Configuração e das Solicitações de
Modificação devem ser executados de maneira a que seus propósitos sejam alcançados.
104
O Nível 2 requer um planejamento do gerenciamento da configuração e das solicitações
de modificação e um acompanhamento da execução de acordo com o plano ou
estratégias estabelecidas. Os produtos de trabalho devem ser controlados tanto em
relação à qualidade quanto à sua integridade, significando que os produtos de trabalho
dos processos que são relevantes, como o Plano de Gerência da Configuração, devem
ser colocados sob o gerenciamento de configuração.
5.1 Inovação do Processo
5.2 Otimização Contínua
Processo
Otimizado
4.1 Medição do Processo
4.2 Controle do Processo
Processo
Previsível
Processo
Estabelecido
Processo
Gerenciado
Processo
Executado
3.1 Definição do Processo
3.2 Implantação do Processo
2.1 Gerenciamento da Execução do Processo
2.2 Gerenciamento de Produto de Trabalho
1.1. Execução do Processo
Processo
Incompleto
FIGURA 3.2 - Níveis de Capacidade e Atributos de Processo.
No Nível 3 os processos têm que estar documentados de maneira padronizada e permitir
que adequações do processo sejam introduzidas e documentadas, e também para que
uma realimentação seja fornecida para o processo padrão. Os recursos necessários para
execução dos processos (recursos humanos e ferramentas) devem estar identificados e
disponíveis.
O Nível 4 requer que a execução do gerenciamento da configuração e das solicitações
de modificação, bem como seus resultados, sejam controlados através de medições e
que haja ajustes nos processos, caso saiam do controle.
No Nível 5 utilizam-se medidas para dar suporte à melhoria da execução dos processos
de gerenciamento da configuração e das solicitações de modificação e para medir os
efeitos desta melhoria.
105
A presença dos produtos de trabalho e a execução das práticas básicas fornecem
evidências objetivas do cumprimento do propósito do processo.
Os modelos e o padrão descritos nesta seção não detalham como deve ser feita a
implementação das tarefas e atividades incluídas nos processos por eles descritos.
Fornecem orientações gerais e alguns exemplos de quais atividades e produtos de
trabalho podem ser usados para implementar os processos. Detalhes como a seleção do
conjunto de métodos, técnicas e ferramentas a serem implementados, os momentos
certos para implementá- los e quais os recursos necessários devem ser definidos.
Estes detalhes dos processos da GCS são apresentados no modelo apresentado no
Capítulo 4 desta dissertação.
3.5
O Ambiente Integrado para Apoio ao Desenvolvimento e Gestão de Projetos
de Software
Nesta seção é introduzido o Ambiente Integrado, conforme descrito em (Sant’Anna,
2000), que fornece o contexto e a motivação para a abordagem proposta neste trabalho
de dissertação. Apresentam-se ainda alguns conceitos e definições utilizadas pelo
Ambiente.
3.5.1
Definições e Conceitos
Segundo (Sant´Anna, 2000), um processo de engenharia de software é um processo
de software composto de um conjunto de processos capazes de conduzir a organização
envolvida com a construção de produtos de software com qualidade e custos previsíveis,
de forma eficiente, gerenciada e com a possibilidade de melhoria constante.
Um modelo de processo é uma representação detalhada e documentada dos processos
envolvidos em um processo de software, adotada por uma organização ou
empreendimento específico. Este modelo necessita ser consistente com as diretivas da
organização e estabelecido (aceito) pelos envolvidos na construção do software. O
modelo de processo pode ter um caráter formal ou não (textual ou gráfica apenas).
106
Um modelo de processo que é aceito pela organização é chamado de um processo
padrão. Um processo definido é uma customização do processo padrão estabelecido
pela organização, para atender a determinadas características de utilização especificada.
Um processo bem definido é um processo definido com entradas, critérios de entrada,
tarefas, validações, saídas e critérios de saídas consistentes, completos e documentados.
Um processo instanciado é um processo quando em execução por uma organização ou
empreendimento.
3.5.2
Caracterização do Ambiente Integrado
Este Ambiente, atualmente em desenvolvimento, consiste de um conjunto de
ferramentas para apoiar as atividades de desenvolvimento e gestão do processo de
construção de software, organizado em áreas de negócio, de maneira a proporcionar
apoio eficiente à gerência de projetos. Tem como características o uso do trabalho
cooperativo centrado no processo, o conceito de ambiente ativo ou capacidade de forçar
o fluxo de trabalho (workflow) e de agentes autônomos, elementos que executam ações
efetivas para o desenvolvimento, gerenciamento e controle dos produtos de software, de
forma independente da intervenção humana.
A integração das equipes de trabalho, a ut ilização de tecnologia para controle dos
processos envolvidos e a disponibilidade de um conjunto de serviços oferecidos pela
WEB/Internet para os vários participantes do processo (desenvolvedores, gerentes,
clientes) são alguns dos benefícios propostos por este ambiente, para a obtenção de
ganhos de produtividade.
3.5.3
Arquitetura Lógica do Ambiente
A arquitetura lógica permite, entre outras funções, que as atividades das gerências
propostas pelo ambiente possam ser executadas, acompanhadas e melhoradas,
disponibilizando para isto todos os recursos e os meios necessários à gestão de seus
processos. Para atender estas características, a arquitetura do ambiente foi definida em
três camadas:
107
•
Camada de Armazenamento: define os elementos responsáveis pelo
armazenamento e acesso às informações do projeto.
•
Camada de Serviços: abrange os elementos que permitem que os participantes
trabalhem de forma cooperativa, destacando-se os serviços de coordenação de
processo, de comunicação, agenda, segurança, dicionário, documentação,
armazenamento, entre outras.
•
Camada de Interação com o usuário: possui elementos que permitem que os
aplicativos de serviços sejam executados, a partir de uma rede de computadores,
disponibilizando com isso o trabalho remoto e cooperativo. A utilização de
navegadores (browsers), permite tal facilidade, dada a capacidade de operação
em modo gráfico e ambiente de janelas, possibilitando interação fácil e eficaz.
A arquitetura conceitual do ambiente é apresentada na Figura 3.3.
FIGURA 3.3 - A Camada Conceitual do Ambiente e-WebProject.
FONTE: Sant’Anna (2000, p.102 ).
108
3.5.4
A Arquitetura Física
O Ambiente leva dois aspectos em consideração: os requisitos propostos e a arquitetura
conceitual. A abordagem utilizada segue o modelo "n-camadas" para aplicações Web
(Conallen, 2000). A Figura 3.4 apresenta os componentes da arquitetura.
FIGURA 3.4 - Arquitetura Três Camadas para Aplicações Web.
FONTE: Sant´Anna (2000, p. 150).
3.5.5
Ciclo de Vida do Processo no Ambiente
O Ambiente Integrado propõe um modelo de processo de desenvolvimento que leva em
consideração principalmente o ciclo de vida do produto e os grupos participantes. O
Ambiente apresenta características evolutivas e permite a configuração baseada nas
necessidades organizacionais. O processo é o elemento essencial do Ambiente
(Sant’Anna, 2000). Para que possa ser apoiado pelo Ambiente, um modelo de processo
necessita ser detalhado e aprovado pela organização, transformando-se em um processo
padrão. Um novo processo se torna padrão quando for instanciado, permitindo que este
seja executado por pessoas e agentes autônomos especificamente envolvidos na tarefa.
Dentro desta visão, o ciclo de vida proposto para um processo consiste do planejamento
e definição de um modelo, sua execução e acompanhamento e finalmente avaliação e
propostas de melhoria. A Figura 3.5 mostra como exemplo o processo Auditar Produtos
do Trabalho, adaptada da categoria de processo da ISO/IEC 15504, que tem como
objetivo específico garantir que os produtos do trabalho e atividades dentro do ambiente
109
estejam em conformidade com todos os padrões, procedimentos e requisitos aplicáveis
(Lahoz et al., 2002).
FIGURA 3.5 - Ciclo de Vida do Processo Auditar Produto.
FONTE: Lahoz et al (2002, p.2).
3.5.5.1
A Fase de Planejamento do Processo
Planejar um processo é uma tarefa essencial para sua automação, sendo necessário que
seu modelo seja bem entendido e aceito por toda a organização que dele se utiliza. A
fase de planejamento deve, portanto, permitir a especificação dos elementos essenciais
para execução do processo tais como, os recursos necessários, as entradas e saídas,
quais são as tarefas do processo e quem as executa. O planejamento do processo deve
passar pela preparação do modelo de processo, sua aprovação pela organização e o
encerramento do planejamento conforme a Figura 3.6.
A preparação do modelo de processos consiste inicialmente da descrição e detalhamento
das atividades que compõem o processo no cotidiano real da organização. Estas
atividades são descritas em termos de tarefas executadas e seus participantes, a alocação
dos indivíduos e recursos materiais necessários às tarefas, bem como a especificação
dos requisitos de entrada e saída de cada processo. A preparação do modelo do processo
deve abranger as seguintes atividades:
110
FIGURA 3.6 - A Fase de Planejamento.
FONTE: Sant’Anna (2000, p. 114).
•
Descrição da função e dos objetivos básicos do processo a ser modelado.
•
Descrição dos requisitos que o processo deve atender.
•
Identificação das entradas e saídas necessárias à execução do processo.
•
Definição dos critérios para iniciar e fechar uma instância de processo.
•
Descrição do processo em atividades executáveis e factíveis descrevendo os
procedimento para execução destas tarefas.
•
Definição da ordem de execução e a dependência entre as tarefas.
•
Definição dos papéis dos executores de cada tarefa.
•
Definição das responsabilidades associando papéis as pessoas e agentes.
•
Definição dos recursos necessários.
•
Definição das métricas que são utilizadas para monitorar o processo.
•
Definição dos pontos de controle para melhor acompanhar a execução do
processo.
111
A aprovação do modelo pela organização consiste na validação deste por uma comissão
de revisores, responsável pela análise e certificação do modelo definido. Uma vez
certificado, o modelo se torna modelo padrão de processo adotado pelo Ambiente e
disponível para ser executado.
O fechamento do planejamento consiste de atividades que tornam o modelo de processo
acessível ao Ambiente, como a definição de diretivas para execução do processo e para
preparação do processo quando automatizado.
3.5.5.2
A Fase de Execução do Processo
O processo, antes de tornar-se operacional no Ambiente, passa por uma fase de
preparação
que consiste de uma série de tarefas relacionadas à configuração do
ambiente e ajuste para que este possa suportar o processo de modo planejado. Uma vez
concretizada esta fase, o processo entra em um estado que é chamado de estado
operacional (em operação). Poderá então, quando neste estado, ser utilizado pelos
participantes do projeto.
Todo processo possui pelo menos uma atividade que o inicia. A execução desta
atividade possibilita ao ambiente instanciar uma ocorrência do processo, e deve tomar
as medidas necessárias para que o processo seja concluído conforme o especificado.
Este conjunto de atividades a serem executadas segue o modelo do processo proposto
no planejamento. A fase de operação permite, pois, que processos sejam instanciados e
concluídos.
A execução de um processo implica também na realização das seguintes atividades:
•
Informação aos participantes de suas novas atividades a serem executadas e os
prazos a serem cumpridos.
•
Supervisão das atividades, verificando se estão sendo cumpridas no prazo. Em
caso negativo, cabe ao ambiente forçar o andamento das atividades.
112
•
Informação aos gerentes e os participantes da execução do processo informado
do andamento da execução do processo.
•
Coleta de métricas de processo estabelecidas no planejamento para posterior
avaliação.
•
Realização de ação corretiva para ajuste de pequenas inadequações, em função
dos dados coletados através das métricas de processo.
Durante esta fase operacional, ou seja, enquanto o ambiente estiver apoiando sua
execução, deve-se realizar uma coleta de dados a fim de medir sua eficiência, que após
análise, servirá para avaliar a conformidade deste novo processo padrão no
cumprimento dos objetivos especificados. Isto permite tanto implantar este novo
modelo do processo, como também, caso já exista, melhorá- lo.
Quando for necessário parar de prover o serviço, o processo pode ser desativado e entrar
em um estado que é chamado de fechamento. O fechamento é a fase onde o Ambiente
cessa de apoiar o processo. Ao parar de prover este suporte, o Ambiente deve informar
aos gerentes e interessados que o apoio ao processo especificado deixa de ser oferecido,
bem como deve registrar em arquivos históricos, toda a informação referente ao trato do
apoio ao processo especificado. O término do suporte ao processo ocorre normalmente
por motivo de avaliação e melhoria do modelo padrão definido para o processo.
A Figura 3.7 mostra os estados possíveis para um processo, quando em execução.
Fechamento
Operação
Preparação
FIGURA 3.7 – Os Estados de um Processo em Execução.
FONTE: Sant’Anna (2000, p. 116 ).
113
3.5.5.3
A Fase de Avaliação do Processo
Na fase de avaliação e melhoria do processo estão compreendidas as atividades
relacionadas à análise das medidas coletadas durante a execução do processo, a fim de
se identificar problemas na modelagem referente às definições, sobrecargas e
necessidades das atividades do processo. A avaliação deve ser conduzida através de
uma investigação que procure identificar características importantes da construção e uso
do processo, como por exemplo:
•
Problemas na modelagem referentes ao desdobramento do processo em
atividades.
•
Sobrecarga de atividade, ou seja, uma atividade muito executada causando falta
de recurso.
•
Atividades não necessárias.
•
Pontos de estrangulamento devido a restrições de entradas do processo.
Após análise destas informações, medidas corretivas devem ser tomadas para que o
processo obtenha melhorias e possa ser oferecido ao Ambiente de maneira a atender
suas necessidades. A partir daí, um novo modelo deve ser elaborado e reconduzido para
avaliação conforme descrito na fase de planejamento.
3.5.6
O Serviço de Coordenação de Processos de Software
Um processo de software deve ser formalizado e apoiado por um ambiente de
engenharia de software através de um mecanismo coordenador de processos (process
engine) (Sant’Anna, 2000; Sant’Anna et al., 2002). Este mecanismo utiliza o conceito
de fluxo de trabalho (workflow), que possibilita automatizar processos, racionalizando
suas potencialidades por meio dos componentes, organização e tecnologia (Cruz, 1998).
114
A execução de processos no Ambiente se dá por meio de um gerenciador de workflow
(Cereja Jr., 2002), onde cada tarefa do sistema é orientada por regras e agentes
(humanos ou não) para o processamento de informações.
O sistema coordenador de processos tem como papel controlar a instância dos processos
apoiados pelo Ambiente, guiando as pessoas envolvidas nos processos na execução de
suas tarefas. Dentre as principais características do mecanismo coordenador de
processos do Ambiente podemos destacar:
•
O usuário (agente) pode guiar o processo e a máquina de processo deve operar
em resposta às suas determinações.
•
A execução das tarefas pode ocorrer sem intervenção dos usuários.
•
A máquina tem um papel pró-ativo lembrando aos envolvidos sobre tarefas que
devem ser completadas (dentre outras medidas que podem ser tomadas).
•
A máquina pode guiar as pessoas na execução das tarefas; ela controla os
artefatos e os recursos produzidos e utilizados pelos processos.
No Ambiente Integrado, um repositório de artefatos é responsável pelo armazenamento
e controle dos artefatos produzidos pelos processos. Este repositório serve como uma
base de meta informações de processos, caracterizando seus componentes e regras para
execução definida em um modelo de processo. Um conjunto de agentes autônomos
(agentes genéricos e específicos) é capaz de monitorar as instâncias de processos,
notificar pessoas envolvidas, coordenar outros agentes, transportar informações,
monitorar tarefas, dentre outros aspectos definidos para o serviço ou processo
específico. Aliado a tudo isto, uma Interface Gráfica de fácil interação homem- máquina
facilitará o uso e a implantação dos processos no Ambiente.
3.5.7
As Gerências no Ambiente Integrado
O Ambiente toma por base as nove categorias de gerenciamento estabelecidas pelo
Project Management Institute (PMI) (PMI, 1996), com alguns ajustes, e acrescenta
115
outras, para melhor adequação às necessidades específicas de projetos de software. São
estabelecidas, então, onze áreas chaves - as gerências: geral do projeto, do tempo, do
custo, da qualidade, dos recursos humanos, da comunicação, de risco, de fornecedores e
sub-contratos, de requisitos, de modificações e da configuração e a categoria de
gerenciamento da reutilização.
As gerências têm à sua disposição uma camada de serviços que suporta o trabalho
cooperativo, como visto na arquitetura lógica do Ambiente, Seção 3.5.3.
3.5.8
Os Requisitos para a Gerência das Modificações e da Configuração no
Ambiente Integrado
A Gerência da Configuração no Ambiente é parte integrante e essencial por todo o
processo de desenvolvimento de software, sendo responsável pela definição dos
elementos controlados ou itens de configuração, a garantia da correta modificação
nesses elementos, a disseminação da informação das modificações e o estabelecimento
da configuração de um produto.
O Ambiente deve fornecer à GCS, através da camada de serviço, uma visão que lhe
permita cadastrar, manter e visualizar informações sobre: os produtos controlados, suas
categorias, situação, cadeia de relacionamento e versões; o Plano da Configuração; as
solicitações e classes de modificações, bem como as reuniões de validação destas; os
resultados da análise de solicitação de modificação; as auditorias e revisões em produtos
decorrentes das modificações e as estatísticas e os históricos.
Estes requisitos devem ser atendidos pelo modelo de processo da Gerência das
Modificações e da Configuração, que é apresentado no Capítulo 4.
116
CAPÍTULO 4
A MODELAGEM DO PROCESSO DA GERÊNCIA DAS MODIFICAÇÕES E DA
CONFIGURAÇÃO
Este Capítulo apresenta a definição e a modelagem do processo da Gerência das
Modificações e da Configuração (GCS), para o Ambiente Integrado.
Como visto no Capítulo 3, o padrão ISO/IEC 12207 apresenta um modelo de processo de
referência, utilizado pelo padrão ISO/IEC 15504, que representa um consenso da
comunidade internacional a respeito de práticas da engenharia de software. Estas práticas
são apresentadas em linhas gerais, ou seja, o padrão declara o que o processo deve fazer, e
não detalhes de como realizar as atividades.
A definição e modelagem do processo da GCS, principais contribuições deste trabalho,
consistem, portanto, no detalhamento das práticas básicas encontradas nos padrões e na
descrição das maneiras como elas podem ser implementadas. Utiliza-se, para expressar o
modelo do processo, a linguagem SPEM, da OMG, descrita no Capítulo 3 deste trabalho.
A modelagem com utilização de notação gráfica auxilia no entendimento e comunicação do
processo, possibilita sua documentação de maneira padronizada e, numa próxima etapa,
permitirá a tradução dos modelos para uma notação executável em um PSEE, como o
Ambiente Integrado, ou sua utilização em outros ambientes de desenvolvimento, naquelas
organizações que buscam melhores níveis de qualidade de seus produtos, como é o caso das
organizações responsáveis por desenvolvimento de software para aplicações espaciais.
Inicialmente, neste Capítulo, apresenta-se o histórico da condução dos estudos necessários
ao desenvolvimento do trabalho, em termos de produção científica reconhecida pela
comunidade da área, para mostrar como se deram a evolução do amadurecimento dos
conceitos apresentados e, também, o desenvolvimento do trabalho de modelagem.
117
4.1
Histórico e Desenvolvimento do Trabalho
No início dos estudos deste trabalho de dissertação, duas linhas de pesquisa foram
identificadas: uma, relacionada a processos de software, incluindo a modelagem de
processos, linguagens de modelagem, padrões de processo de software e ambientes
centrados em processos, e outra relativa à disciplina de gerenciamento da configuração de
software, conforme apresentada em padrões e na literatura de engenharia de software.
Partindo-se destas linhas, foram feitas pesquisas referentes à definição e modelagem do
processo Auditar Produtos do Trabalho (Lahoz et al., 2002), que resultou na apresentação
de um trabalho no IV Simpósio Internacional de Melhoria de Processo de Software,
SIMPROS, em Recife (PE). Nele foi possível identificar os passos mínimos necessários
para a definição de um processo, baseados naqueles definidos para o Ambiente Integrado
(Sant´Anna, 2000), sendo este um trabalho fundamental para o início da modelagem do
processo da GCS.
Em (Abdala et. al., 2002) foi feito um novo exercício de definição de processo, e um
levantamento inicial dos processos essenciais da GCS para o Ambiente Integrado. Este
trabalho foi apresentado no II Workshop dos Cursos de Computação Aplicada do INPE,
WORKCAP, em São José dos Campos (SP).
O amadurecimento adquirido até então nos estudos sobre o gerenciamento da configuração,
de padrões de processo, de linguagens de modelagem e do Ambiente Integrado, possibilitou
a participação, juntamente com outros, da apresentação do tutorial Um ambiente Integrado
para Suporte a Projetos de Engenharia de Software (Sant´Anna et al., 2003), no Congresso
COMDEX, em São Paulo (SP). O objetivo foi apresentar conceitos como requisitos,
arquitetura e suporte a processos que norteiam o Ambiente Integrado e também os
conceitos e atividades da Gerência das Modificações e da Configuração.
Em continuação aos estudos sobre modelagem de processos e do processo da GCS em
padrões e modelos de processo foram ainda elaborados dois trabalhos, em conjunto com
118
outros autores: um apresentado como artigo técnico no V SIMPROS, que inclui o relato de
experiência na utilização do SPEM (Abdala et al, 2003); e o outro, no III WORKCAP do
INPE (Abdala e Sant´Anna, 2003).
Como a linguagem de modelagem escolhida para expressar os modelos, o SPEM da OMG,
foi criado recentemente, faltavam referências e exemplos de sua utilização que pudessem
orientar a construção do modelo e servir para sua validação. Para isto, buscou-se contato
com participante do grupo de definição do SPEM. No Apêndice A é apresentado um
resumo desta experiência, contendo esclarecimentos sobre a linguagem que se acredita
serem úteis para outros que venham dela se utilizar.
Como já mencionado, definir processos não é uma tarefa trivial, sendo necessário para isto
conhecer os fundamentos e conceitos do processo a ser definido e modelado. Alguns dos
conceitos da GCS, ainda que entendidos facilmente, podem ser difíceis de implementar.
Além disto, muitos destes conceitos não são uniformes na literatura e nos padrões. Foi
fundamental, portanto, obter um entendimento desta disciplina, através de um estudo dos
seus conceitos e atividades fundamentais e suas variações, apresentados no Capítulo 2.
Muitas vezes a falta de uma definição clara leva a dificuldades na aplicação destes
conceitos no processo da GCS.
Seguindo a orientação do Ambiente, que é baseado no SPICE, foram utilizados os padrões
ISO/IEC 12207 e 15504, que apresentam práticas básicas consagradas, frutos de
experimentação e estão consolidados como padrões internacionais, como ponto de partida
do trabalho.
Uma vez identificadas as práticas básicas da GCS, foram feitas a definição e modelagem do
processo, detalhando-se suas atividades, os papéis que as desempenham e os produtos de
trabalho gerados ou utilizados na execução destes, empregando-se as técnicas e linguagem
apresentadas no Capítulo 3 desta dissertação.
119
4.2
O Escopo do Processo da GCS
As práticas básicas dos processos do grupo CFG2 – Gerência da Configuração e CFG4 –
Gerência das Solicitações de Modificação, da categoria de processos de suporte, da Parte 5
do ISO/IEC 15504, são utilizadas como ponto de partida para definição e modelagem do
processo da GCS. Outras práticas e abordagens encontradas na literatura e referenciadas na
bibliografia, como a abordagem prática encontrada em (Hass, 2002), e em padrões como o
(ANSI/IEEE Std 1042, 1987) são utilizadas para complementar esta definição e
modelagem.
O Processo da GCS nesta abordagem busca atender as atividades de implementação do
processo da GCS, de identificação da configuração, do controle da configuração, do relato
da situação da configuração e gerenciamento da liberação das configurações-base de
desenvolvimento e de distribuição, atribuídas à GCS, segundo o ISO/IEC 12207. A
avaliação da configuração não é considerada, nesta abordagem, uma atribuição do Processo
da GCS. Esta atividade fica sob responsabilidade da Gerência da Qualidade no Ambiente
Integrado, já que utiliza mecanismos de verificação e validação, sob responsabilidade desta
gerência (Hass, 2002). Outra consideração diz respeito às distribuições. Nesta abordagem o
controle sobre as distribuições é considerado o controle da configuração-base de
distribuição, ou seja, a configuração-base de produto utilizada para a geração de uma
distribuição do produto, não o processo de construção do sistema (system build) e
procedimentos para entrega. Estas atividades, que tradicionalmente estão associadas à GCS,
são tratadas em processo específico do Grupo de Processos de Fornecimento (Supply
Process Group), SPL3 - Liberação de Software, segundo o padrão ISO/IEC 15504, cujo
propósito é controlar a liberação de um produto ao cliente ao qual é destinado, não coberto
pela abordagem proposta.
O gerenciamento das modificações nos produtos de software contempla dois aspectos: o
acompanhamento de problemas e o controle das modificações. O acompanhamento de
problemas é o processo de registrar, acompanhar e relatar problemas e solicitações de
120
melhorias submetidas por usuários de um produto. O processo da Gerência de Proble mas
(CFG 3 - Problem Management) é coberto no Ambiente Integrado pelo processo
denominado Solucionar Ocorrências. Algumas destas ocorrências relatadas, que podem ser
problemas ou sugestões de melhorias, resultam em solicitações de modificação em um ou
mais itens de configuração de software. O Gerenciamento das Solicitações de Modificação
é o processo responsável pelo acompanhamento e controle das solicitações de modificação
nos itens de configuração de software durante todo o seu ciclo de vida, e é o aspecto
contemplado nesta abordagem.
4.3
Estratégias para a Definição e Modelagem do Processo da GCS
O processo da Gerência das Modificações e da Configuração, denominado aqui Processo da
GCS, é, nesta abordagem proposta, dividido em quatro outros processos, chamados:
Definição das Estratégias Organizacionais da GCS, Planejamento da GCS, Gerenciamento
da Configuração e Gerenciamento das Solicitações de Modificação.
Isto permite uma visão das atividades da GCS nos seus aspectos principais: elaboração de
estratégias para a GCS na organização, implantação do processo da GCS para um projeto
em particular, manutenção da integridade da configuração, através da identificação,
armazenamento, controle e relato da situação da configuração, e acompanhamento das
solicitações de modificação.
Para contemplar estes aspectos é necessário definir o que deve ser feito no processo. Isto
significa o material (produto) a ser desenvolvido ou as ferramentas utilizadas no seu
desenvolvimento, caracterizando a visão tecnológica do processo. Também é importante
saber como o processo é conduzido. Isto compreende uma seqüência de atividades e passos
bem definidos em uma ordem específica, caracterizando a visão metodológica do processo.
E também definir quem, ou seja, as pessoas que possuem responsabilidades nas ações do
processo e seguem a metodologia prescrita, caracterizando a visão sociológica do processo
121
(Unhelkar, 2002). Neste capítulo descreve-se o que, o como e o quem para o Processo da
GCS.
O contexto em que os processos da GCS se inserem no processo de desenvolvimento do
software, apresentado na Figura 2.4 do Capítulo 2, mostra que a GCS, como processo de
suporte, atua durante todo o ciclo de vida do software.
A notação utilizada na modelagem do Processo da GCS é o SPEM da OMG, cujas
principais características estão descritas no Capítulo 3.
Uma das vantagens da linguagem de modelagem SPEM é que ela permite a utilização da
representação gráfica da UML, ou seja, os diagramas da UML, que tornam mais fácil a
visualização das informações.
O SPEM oferece os recursos para a representação do processo de software como um todo,
detalhado nas suas atividades, fases, iterações e ciclo de vida. Como o Processo da GCS é
um processo de suporte, e utilizado por outros processos durante todo o ciclo de vida, ele é
representado como um Componente de Processo (ProcessComponent), que pode ser, assim,
composto com outros Componentes de Processo para criar um processo completo de
software, suportado pelo Ambiente Integrado.
Por sua vez, um Componente de Processo pode ser composto por outros. Utiliza-se, assim,
um diagrama de pacote de processo para representar o Processo da GCS, composto de
outros pacotes (Definição das Estratégias Organizacionais da GCS, Planejamento da GCS,
Gerenciamento da Configuração e Gerenciamento das Solicitações de Modificação). Estes
pacotes são detalhados e descritos, utilizando-se para isto, os diagramas de classe, caso de
uso e de atividades (ver Apêndice A).
4.4
A Modelagem do Processo da GCS
Conforme visto no Capítulo 3, uma seqüência de passos para a preparação dos modelos de
122
processo são apresentados em (Sant´Anna, 2000), tendo sido utilizados neste trabalho como
uma referência para a definição do Processo da GCS. Para o planejamento e definição do
modelo do Processo da GCS inicialmente são descritas e detalhadas as atividades que o
compõem, que devem ser utilizadas no cotidiano de uma organização. Estas atividades
podem ser descritas em termos dos papéis e responsabilidades, das tarefas ou atividades
executadas, da alocação dos produtos de trabalho necessários às tarefas e da especificação
dos requisitos de cada processo.
O modelo da GCS apresentado nesta abordagem se propõe a atender aos processos do
padrão 15504 (CFG.2 – Gerência da Configuração e CFG.4 – Gerência das solicitações de
modificação), fornecendo também uma visão abrangente da atuação da GCS em projetos de
desenvolvimento de software em uma organização, contemplando as estratégias para o
processo na organização, conforme apresentada nas seções seguintes deste Capítulo.
4.4.1
Papéis e Responsabilidades no Processo da GCS
Descrever os papéis desempenhados nas atividades da GCS é importante para que se tenha
um entendimento mais abrangente do trabalho a ser realizado. Os papéis devem se encaixar
dentro de uma estrutura organizacional, que pode variar de uma organização para outra.
Uma ou mais pessoas podem desempenhar um papel, assim como uma só pessoa pode
desempenhar vários papéis.
Os papéis específicos para a GCS definidos nesta abordagem foram aqueles considerados
essenciais para o processo, baseados nos papéis para a GCS, apresentados em (Hass, 2002),
e estão apresentados sucintamente abaixo. Estes papéis aparecerão associados a atividades
do processo da GCS na modelagem apresentada nas seções seguintes deste Capítulo.
Gerente das Modificações e da Configuração: o Gerente das Modificações e da
Configuração, ou simplesmente Gerente da Configuração deve conhecer a disciplina da
GCS, seus processos e variações, e ter uma sólida experiência em software. Este papel
123
requer ainda conhecimento dos princípios da engenharia de software para entender as
necessidades de variação dos esforços de engenharia durante o desenvolvimento de um
produto e uma compreensão dos aspectos culturais da organização para implantar um
programa de GCS.
Grupo de Controle da Configuração (GCC): os membros do GCC, representados pelo
seu presidente, têm a responsabilidade geral de controlar as modificações dos itens de
configuração. O grupo é também responsável pela avaliação dos relatórios de ocorrência,
pela criação das solicitações de modificação (SMs) relacionadas, pelo acompanhamento do
ciclo de vida das SMs, pelo fornecimento de informações para o solucionador da ocorrência
e demais envolvidos na modificação, pela coordenação com outros GCCs, com a gerência
de projetos e outras gerências. O GCC é que decide o destino das ocorrências que afetam os
itens de configuração, por isso deve ser presidido por alguém com autoridade para tomar
decisões de acordo com o tipo de item de configuração ou fase do desenvolvimento, ou,
ainda, unidade da organização ao qual está ligado.
Os membros do GCC devem conhecer o propósito geral do produto e ter uma visão deste
que lhes permita avaliar as conseqüências das modificações solicitadas. Devem ter também
um conhecimento geral da GCS, especialmente no que diz respeito aos procedimentos de
controle das modificações, bem como das informações sobre os itens de configuração e
como acessá- las.
Um GCC é constituído por pessoas que desempenham vários outros papéis na equipe.
Dependendo do impacto sobre o produto de software que a modificação no item de
configuração tem, o número de pessoas que compõem o GCC pode variar. Quando a
modificação tem um impacto maior, um GCC pode ser constituído de várias pessoas, como
o gerente de projeto, representante do cliente e o responsável pela garantia da qualidade. Ou
pode consistir de uma só pessoa, como um desenvolvedor ou o responsável pela garantia da
qualidade, se lhe foi delegada esta autoridade por autoridade apropriada. Isto acontece
124
quando, durante o desenvolvimento, adota-se um controle menos formal sobre as
modificações.
Responsável pela Gerência das Modificações e da Configuração (RGCS): o
Responsável pela GCS implementa, mantém e melhora o gerenciamento da configuração
dentro da estrutura fornecida pelo gerente da configuração. O RGCS tem a
responsabilidade de utilizar-se dos recursos disponíveis para o suporte às atividades do
gerenciamento da configuração. O RGCS reporta-se diretamente ao gerente de projeto e
deve interagir também com o gerente de processos no que diz respeito aos processos
relevantes à GCS. O RGCS deve ter um senso de ordem e atenção a detalhes. Deve ter
noções de gerenciamento e boa comunicação com os vários tipos de pessoas envolvidas no
processo. Deve ter um conhecimento profundo da GCS e também das necessidades da
organização e do projeto, inclusive, para adequar o processo da GCS a estas necessidades.
Além destes papéis específicos da GCS, estão envolvidos no processo o Gerente da
Qualidade, o Gerente de Projeto, o Desenvolvedor e o Cliente.
Gerente da Qualidade: responde pela organização e gerenciamento das funções da
qualidade dentro do projeto. Ele formaliza as expectativas da atuação da equipe e da
abordagem utilizada para a qualidade em projetos, suas atividades e tarefas, a definição dos
produtos a serem entregues ao final do desenvolvimento de cada fase do projeto, os
mecanismos de verificação, validação e de retorno destas expectativas.
Gerente de Projeto: é o responsável geral pelo projeto e ao qual o Gerente da
Configuração se reporta no caso de problemas no andamento do projeto, na execução de
processos de planejamento ou controle e recebe os relatórios de situação da configuração.
Responsável pelo Produto: um envolvido no projeto de desenvolvimento que gera
produtos de trabalho, que, de alguma foram estarão sob controle da GCS.
125
Cliente da GCS: um cliente ou usuário do gerenciamento da configuração, que pode ser
um cliente interno à organização desenvolvedora, como desenvolvedores e gerentes, ou um
cliente externo ou final.
4.4.2
As Atividades do Processo da GCS
As atividades do Processo da GCS são agrupadas nos quatro pacotes de processos, que
podem ser visualizados no diagrama da Figura 4.1.
Gerência das Modificações e
da Configuração de Software - GCS
Definição das estratégias
organizacionais da GCS
Planejamento da
GCS
Gerenciamento da
configuração
Gerenciamento das
solicitações de modificação
FIGURA 4.1 – O Processo da GCS.
Estes processos, descritos de maneira sucinta abaixo, serão detalhados em seções
posteriores neste Capítulo.
126
1. Definição das Estratégias Organizacionais da GCS : este processo consiste em
definir as estratégias para as atividades da GCS na organização, para o
gerenciamento da configuração, das solicitações da modificação e desenvolvimento
paralelo.
Estas
estratégias
são
consolidadas
no
documento
de
Política
Organizacional da GCS ou em um documento de políticas da qualidade da
organização.
2. Planejamento da GCS : este processo consiste em estabelecer e manter um Plano
da GCS para um projeto em particular, baseado em estratégias da organização e na
implantação do sistema de gerenciamento da configuração e das modificações
adequado ao projeto em questão.
3. Gerenciamento da Configuração: consiste basicamente nas atividades de
manutenção
da
integridade
dos
itens
de
configuração
durante
todo
o
desenvolvimento do produto e após a entrega do mesmo, através da identificação
dos itens de configuração e estabelecimento das configurações-base, do
armazenamento, manuseio controlado, e da incorporação das modificações nestes
itens e do relato da situação da configuração, a todos os envolvidos no seu
desenvolvimento e utilização.
4. Gerenciamento das Solicitações de Modificação: este processo reúne as
atividades necessárias para o acompanhamento das solicitações de modificação
feitas nos itens de configuração, desde o surgimento da necessidade da modificação
até a incorporação destas aos itens de configuração, fornecendo visibilidade do
estado de cada solicitação de modificação e permitindo a verificação da correta
implementação destas nos itens afetados, durante todo o ciclo de vida do produto.
127
4.4.3
Os Produtos do Processo da GCS
Associados ao processo e suas práticas básicas estão os produtos de trabalho, que são os
produtos utilizados, gerados, ou ambos, na execução do processo. Os produtos de trabalho
são indicadores de que o processo é executado. Os principais produtos de entrada e saída do
Processo da GCS, segundo a ISO/IEC 15504-5, são os seguintes:
•
Item de configuração: item mantido sob controle de configuração, que possui
identificação única de versão e cuja descrição deve estar sempre disponível e
atualizada. Esta descrição inclui: o tipo de item, sistema, arquivo, biblioteca de
gerenciamento da configuração associados, responsável pelo item, data em que o
item foi colocado sob controle de configuração, informação do estado do item (em
desenvolvimento, configuração-base, etc.), relacionamento com os itens de
configuração de nível mais baixo, identificação dos registros de controle de
modificação, identificação do histórico de modificação.
•
Configuração do produto: constitui-se na visão geral da configuração do sistema.
Define cada componente e sua posição na arquitetura do sistema, define as
interfaces principais do sistema, bem como quaisquer considerações de rede,
configuração de hardware e configurações de desempenho/parâmetro de sistema.
•
Plano de Gerência da Configuração de Software: define ou referencia os
procedimentos para controlar modificações nos itens de configuração, define
medidas usadas para determinar a situação das atividades do gerenciamento da
configuração, identifica ferramentas ou mecanismos da biblioteca da GCS,
identifica os registros e relatórios de estado gerenciais que mostram o estado e
histórico dos itens controlados, especifica ou referencia a localização, os
mecanismos de acesso à biblioteca da GCS e mecanismos específicos para
arquivamento e obtenção das informações contidas na biblioteca.
128
•
Plano de distribuição: identifica a funcionalidade que deve ser incluída em cada
distribuição, quais os componentes associados requeridos (i.e., hardware, software,
documentação, etc.) e apresenta também um mapeamento das solicitações dos
clientes e requisitos satisfeitos para uma distribuição particular do produto.
•
Histórico de modificações: relatório dos registros históricos de todas as
modificações feitas em um objeto ou item de configuração (documento, arquivo,
módulo de software, etc.). Devem constar deste histórico a descrição da
modificação, a identificação da versão do objeto modificado, a data da modificação,
informações sobre o solicitante da modificação e de registro de controle de
modificação.
•
Sistema de acompanhamento: possui capacidade para registrar a informação do
cliente e do responsável pelo processo, capacidade de registrar informações da
configuração do sistema relacionado, capacidade de registrar informações sobre o
problema ou ação necessária (data de abertura e data esperada para fechamento,
severidade, estado de qualquer ocorrência ou ações necessárias, informações sobre o
responsável pela ocorrência ou solução, prioridade para atendimento da ocorrência),
capacidade para registrar a solução proposta ou plano de ação, capacidade para
fornecer informação sobre o estado do gerenciamento, disponibilidade de
informações a todos os envolvidos e sistema(s) de controle de solicitação de
modificação e registros.
•
Biblioteca da Gerência da Configuração: contém todos os itens de configuração
do projeto. Possibilita o controle de versão, armazenamento e obtenção de itens de
configuração, compartilhamento e transferência de itens de configuração entre
membros do projeto, controle efetivo sobre o acesso, manutenção da descrição dos
itens, recuperação de versões anteriores (archived) de itens de configuração.
Possibilita a criação das configurações-base de distribuição, interna ou externa,
além de conter os metadados dos itens de configuração, que permitem a extração de
129
relatório da situação da configuração e acompanhamento das solicitações de
modificação nos itens de configuração.
•
Orientação para manuseio e armazenamento: define as tarefas a serem
executadas no manuseio, armazenamento e obtenção dos itens de configuração, bem
como para a atualização do histórico de modificação.
•
Configuração-base de distribuição: é a configuração-base de produto utilizada
para gerar uma distribuição do produto para fora do ambiente de desenvolvimento.
•
Registro de estado de progresso: registro da situação do planejado em relação à
situação atual, como: tarefas atuais em relação às planejadas, resultados obtidos em
relação aos objetivos e metas, alocação de recursos em relação aos recursos
planejados, custo atual em relação ao estimado, tempo despendido em relação ao
cronograma estabelecido. Registro de qua isquer desvios das atividades planejadas e
motivos.
•
Relatório de controle de modificação: contém os atributos do registro de controle
de modificação. É usado como um mecanismo para controlar a modificação dos
itens de configuração contidos na biblioteca da GCS. Contém o registro da
modificação solicitada e feita em um produto de configuração-base. Contém
identificação: do sistema e dos documentos afetados pela modificação, do
solicitante da modificação, do responsável pela modificação e do estado da
modificação. Apresenta a ligação com outras modificações associadas (internas ou
do cliente) e aprovações apropriadas. As solicitações duplicadas são identificadas e
agrupadas.
•
Solicitação de modificação: deve permitir a identificação do propósito da
modificação, do estado da solicitação, informações do solicitante, itens impactados,
130
impacto nas operações de sistemas existentes, impacto na documentação associada,
severidade da solicitação e data para atendimento.
•
Relatório de ocorrência: contém a identificação do relator da ocorrência e outros
detalhes de contatos já submetidos associados à ocorrência, informações da
configuração do sistema (versão da distribuição, etc.), identificação do grupo ou
pessoa responsável pela correção, uma descrição do problema, severidade da
ocorrência, identificação do estado do problema relatado, quais componentes são
afetados, identificação de qual distribuição incluirá a correção do problema, a data
esperada para fechamento, os critérios de fechamento e ações de re- inspeção
necessárias.
•
Mecanismo de comunicação: uma maneira de distribuir informações, que permita
uma descrição clara daquilo que está sendo comunicado, a identificação da data de
envio, a distribuição a todos os envolvidos, a identificação do impacto, a
identificação cla ra do destinatário da mensagem, um mecanismo de recepção de
respostas quando necessário. Uma lista de distribuição atualizada deve estar
disponível. O mecanismo deve ainda permitir a especificação de uma data de
retorno.
4.4.4
O Processo de Definição das Estratégias Organizacionais da GCS
O desenvolvimento de uma política para a GCS em uma organização, e os subseqüentes
planos para cada produto desenvolvido, são essenciais para a implementação bem sucedida
da GCS (Futrell et al, 2002). As estratégias da GCS para a organização devem expor, de
maneira clara e concisa, as expectativas que a liderança da organização tem em relação às
atividades da GCS. Elas devem também possibilitar que os benefícios trazidos com a
adoção da GCS possam ser evidenciados, definindo os métodos para medir o desempenho
destes benefícios.
131
Este processo abrange, portanto, a definição das estratégias para as atividades relacionadas
à GCS na organização, ou seja, a definição de como é conduzido o processo da GCS, de
acordo com as características da organização e dos projetos.
Um procedimento para desenvolver um PGCS deve ser elaborado e um modelo de PGCS
deve ser colocado à disposição para ser adequado de acordo com as características de um
projeto.
4.4.4.1
Objetivos e Requisitos Básicos do Processo
O objetivo principal deste processo é definir as estratégias gerais do processo da GCS na
organização. Estas estratégias gerais incluem estratégias para as atividades do
gerenciamento da configuração, para as atividades do gerenciamento das solicitações de
modificação e de desenvolvimento paralelo. O responsável pela execução deste processo é
o Gerente da Configuração e das Modificações.
Os requisitos básicos deste processo são:
Estratégias para a GCS devem ser definidas: os objetivos e o escopo da GCS na
organização devem ser definidos; estratégias para as atividades do gerenciamento da
configuração, para o gerenciamento das solicitações de modificação e de desenvolvimento
paralelo, bem como para o planejamento do processo da GCS devem ser estabelecidas.
Métricas para a GCS devem ser definidas: métricas devem ser definidas para a GCS,
bem como os métodos utilizados para a coleta das medidas para as métricas.
Os requisitos para o processo de Definição das Estratégias Organizacionais da GCS são
atendidos pelo pacote de atividades que compõem o processo, representados através do
diagrama de pacotes da Figura 4.2.
132
Definição das Estratégias
Organizacionais da GCS
Gerente das Modificações e da Configuração
Definir objetivos e escopo da GCS ( )
Definir estratégias para identificação da
configuração ( )
Definir estratégias para armazenamento e controle
da configuração ( )
Definir estratégias para controle das solicitações de
modificações ( )
Definir estratégias para o relato da situação da
configuração ( )
Definir estratégias para desenvolvimento
paralelo ( )
Definir estratégias para o planejamento da GCS ( )
Definir métricas para a GCS ( )
Registro de Estado
do Progresso
Descrição,
procedimentos e
convenções da
GCS
Orientação para
elaboração do
PGCS
Modelos de
Formulários
Plano de
Estratégias da
GCS
Modelo
de PGCS
Modelos de
Relatórios
FIGURA 4.2 – O Processo de Definição das Estratégias Organizacionais da GCS.
Este processo pode valer-se ainda de uma ferramenta que auxilie o Gerente das
Modificações e da Configuração documentar e implementar o Plano de Estratégias para a
GCS.
133
4.4.4.2
Papéis, Responsabilidades e Produtos Envolvidos no Processo
Cabe ao Gerente das Modificações e da Configuração, em concordância com as políticas da
Qualidade e do Projeto, estabelecer as estratégias da GCS e consolidá- las em um Plano de
Estratégias da GCS para a organização. O Gerente das Modificações e da Configuração fica
ainda responsável pela elaboração das orientações para elaboração do Plano da GCS
(PGCS), bem como de um modelo de referência para um PGCS e outros modelos de
formulários e relatórios da GCS.
O Gerente das Modificações e da Configuração deve definir, de acordo com a política de
métricas da organização definida pela Qualidade, as métricas utilizadas pela GCS, que
devem fazer parte do Plano de Métricas da organização. O Gerente deve ainda determinar
os tipos dos relatórios de registro de estado, que contêm os resultados obtidos e são
encaminhados à Gerência superior.
O diagrama de classes da Figura 4.3 mostra o relacionamento entre o Gerente das
Modificações e da Configuração e os produtos associados com o processo de Definição das
Estratégias Organizacionais da GCS.
134
*
Plano de
Estratégias da
GCS
1
1
1
1
1
Gerente das Modificações
e da Configuração
Descrição, procedimentos
e convenções da GCS
1
*
Modelos de
Formulários
*
*
Modelos de
Relatórios
*
Orientação para
elaboração do PGCS
Registro de Estado do
Progresso
Modelo de
PGCS
FIGURA 4.3 – O Gerente das Modificações e da Configuração e os Produtos do Processo
de Definição das Estratégias Organizacionais da GCS.
4.4.4.3
Atividades do Processo
O pacote de processo de Definição das Estratégias Organizacionais da GCS agrupa as
atividades, os papéis e os produtos do trabalho que possibilitam a implantação do processo
da GCS com sucesso na organização. Através destas atividades, vários projetos, de
abordagens metodológicas diversas, podem utilizar os recursos fornecidos pela GCS de
forma eficiente.
Este pacote estabelece as estratégias gerais para as atividades da GCS, que servem de
orientação para todos os projetos de software desenvolvidos pela organização.
135
A necessidade de execução da GCS e o nível de ambição para esta execução podem ter
origem em diversos fatores, como: requisitos externos do cliente, padrões específicos, como
no caso de sistemas críticos quanto à segurança ou para certificação. Nesta abordagem, os
requisitos para a GCS se originam das práticas de um modelo de maturidade, para
organizações que visam a melhoria da qualidade no desenvolvimento de software.
É importante salientar que as estratégias para as atividades da GCS podem ser adequadas à
medida que uma organização utiliza um modelo de processo. Para isto é necessário que, a
partir de estratégias iniciais, o processo seja controlado (com o registro de estado do
progresso de suas atividades), avaliado e revisado, para que possa ser melhorado. Qualquer
proposta para a criação de um novo processo fica, portanto, sujeita ao seu planejamento e
definição de modelo, execução, acompanhamento e finalmente avaliação, conforme
descrito no Capítulo 3, no ciclo de vida proposto para o Ambiente Integrado. Os benefícios
da GCS, como os ganhos obtidos através da prevenção de problemas e a melhoria da
qualidade, devem ser explicitados e comunicados, quando da revisão do processo. Os
esforços da GCS devem priorizar estes ganhos, mantendo, no entanto, a coerência com o
foco estratégico da organização, que pode ser a satisfação do cliente, a produtividade, a
qualidade, a segurança, e assim por diante.
As atividades deste Pacote são descritas a seguir.
Definir objetivos e escopo da GCS. Esta atividade consiste em:
•
Definir claramente os objetivos da GCS na organização, ou seja, definir o ponto de
partida, com referências a problemas atuais, e onde se quer chegar.
•
Determinar o escopo da GCS, no que diz respeito aos tipos de objetos colocados sob
a GCS, aos graus de formalismo com que a GCS é executada e sob quais
circunstâncias cada grau é utilizado.
136
•
Definir os critérios para determinar quando cada item de configuração é colocado
sob o gerenciamento da configuração, que podem ser marcos do ciclo de vida do
projeto e o estado do item de configuração (quando estiverem aprovados pela
qualidade, por exemplo). Deve-se levar em conta o grau de controle desejado para o
item de configuração e limitações de custo e cronograma, requisitos do cliente, etc.
Definir estratégias para identificação da configuração. Esta atividade consiste em:
•
Definir os critérios que podem ser empregados na seleção dos itens de configuração.
•
Definir as convenções e esquemas para identificação única dos itens de
configuração.
•
Definir as características importantes que podem ser empregadas para descrever os
itens de configuração (autor, tipo, data de criação, responsável, etc.).
•
Definir as maneiras como o esquema de identificação pode endereçar as versões e
distribuições.
•
Definir critérios que podem ser utilizados para inter-relacionamento dos itens de
configuração.
•
Definir critérios para determinação do conjunto de configurações-base e do
conteúdo destas.
Definir estratégias para armazenamento e controle da configuração. Esta atividade
consiste em:
•
Definir estruturas e hierarquias gerais de diretórios e arquivos, que possam ser
adaptadas e utilizadas nos projetos da organização para fornecer um meio eficiente
de acessar e armazenar os itens necessários, facilitando o gerenciamento da
evolução dos itens de configuração e sua organização. Por exemplo, diretórios
137
separados podem ser utilizados para documentos de projeto, código fonte,
documentos de apoio, testes, linhas de desenvolvimento paralelo, etc.
•
Definir os tipos (estática, dinâmica e controlada) das bibliotecas utilizadas na
organização.
•
Definir procedimentos gerais para criação e retenção das bibliotecas no repositório.
•
Definir procedimentos e políticas gerais para as distribuições na organização.
•
Definir procedimentos gerais para o acesso aos itens de configuração contidos nas
bibliotecas.
•
Definir os tipos de informações sobre as modificações nos itens de configuração que
vão ser registradas.
•
Definir maneiras para retenção das informações sobre as modificações, que irão
compor o registro de histórico das modificações, na base de dados da GCS.
Definir estratégias para controle das solicitações de modificação. Esta atividade
consiste em:
•
Definir os procedimentos gerais para controle e acompanhamento das solicitações
de modificação nos itens de configuração.
•
Elaborar um checklist para análise de impacto das modificações.
•
Descrever os graus de controle sobre a configuração que podem ser utilizados. Estes
graus variam de acordo com critérios como severidade da modificação, urgência,
fase de desenvolvimento, tipo de projeto.
•
Descrever mecanismos que podem ser utilizados para graduar o controle. Estes
mecanismos podem ser os níveis de autoridade para a modificação, através dos
138
vários GCCs, modo de comunicação da modificação, na permissão de acesso à
biblioteca controlada e ao tipo de configuração-base.
•
Definir convenções para formar diferentes tipos de GCCs. Definir quais
informações deve m ser fornecidas, como responsabilidades, membros, papéis,
procedimentos, mecanismos de aprovação.
•
Definir convenções para a numeração e identificação das solicitações de
modificação.
•
Definir esquemas de classificação para aprovação das solicitações de modificação.
Definir estratégias para o relato da situação da configuração. Esta atividade consiste
em:
•
Definir critérios gerais para a coleta, registro, processamento e manutenção das
informações necessárias (metadados associados aos itens de configuração e os
obtidos das solicitações de modificação).
•
Definir periodicidade e tipos de relatórios de situação gerenciais, que mostram o
estado e histórico dos itens de configuração, e o público alvo de cada um.
•
Definir critérios que podem ser utilizados para extração de relatórios ad hoc.
•
Definir critérios para se restringir o acesso às informações da situação da
configuração.
Definir estratégias para desenvolvimento paralelo. Esta atividade consiste em:
•
Definir critérios para classificação de desenvolvimento paralelo e variante.
•
Definir estratégias para a união das linhas de desenvolvimento em um único item de
configuração.
139
•
Definir convenções para a definição da identificação das linhas de desenvolvimento
paralelo.
•
Definir critérios específicos que podem ser empregados para controle das
modificações e relato da situação das linhas de desenvolvimento paralelo.
Definir estratégias para o planejamento da GCS. Esta atividade consiste em:
•
Definir o contexto organizacional da GCS.
•
Definir restrições e orientações gerais aplicáveis a GCS na organização.
•
Descrever orientações para criação e manutenção do PGCS.
•
Elaborar a Orientação para elaboração do PGCS.
Definir métricas para a GCS. Esta atividade consiste em:
•
Definir quais as métricas vão ser utilizadas, ou seja, o que se deseja medir. Garantir
que as métricas definidas respondam a questões para as quais realmente se desejam
respostas.
•
Definir os tipos de dados a serem coletados (dados brutos, medidas diretas ou
indiretas).
•
Definir aspectos das métricas como definições, unidades, consistência, escala, etc.
Algumas das métricas que podem ser utilizadas são (CMBoK, 2003):
Média de tempo de processo por mês: útil para monitorar a efetividade do fluxo de
trabalho, como por exemplo, o tempo gasto para processar uma solicitação de modificação,
desde sua abertura até seu fechamento.
140
Atividade de modificação em um item de configuração de software : utilizada para
ilustrar, por exemplo, a taxa do número de modificações por item de configuração, feitas
mensalmente.
Finalização de modificação: utilizadas para analisar o tratamento de modificações adotado
pelo processo.
Outras métricas que podem ser coletadas e registradas são: número total de modificações
completadas, número de solicitações de modificação não concluídas, número de
solicitações de modificação rejeitadas, etc.
4.4.5
O Processo de Planejamento da GCS
Quando se deseja iniciar o processo da GCS em um projeto é preciso realizar o seu
planejamento de acordo com as características deste projeto. Este planejamento consiste na
adequação de estratégias já estabelecidas para a GCS na organização, definidas no Plano de
Estratégias da GCS, para um projeto em particular, e deve ser consolidado no Plano de
Gerência da Configuração de Software (PGCS) do projeto. Depois de revisado e aprovado,
o PGCS passa a servir como um guia para as atividades da GCS aos envolvidos no
processo. Ele deve ser apresentado a toda a equipe pelo gerente de projeto e disponibilizado
para ser acessado eletronicamente, a qualquer momento. O PGCS é ele próprio um item de
configuração e deve ser colocado sob o controle da GCS.
O planejamento da GCS envolve o planejamento da execução das atividades da GCS, a
definição do relacionamento da GCS com o ambiente de projeto, o planejamento das
atividades e da condução das tarefas, fases e marcos da GCS, e ainda, das ferramentas,
técnicas e métodos necessários para a implantação do processo.
As atividades da GCS devem ser integradas no cronograma geral do projeto, fazendo parte
do plano geral de projeto.
141
O planejamento da GCS deve ter seu início junto com o do projeto, mas os detalhes devem
ser planejados somente para o período ou fase imediatamente à frente, tal como a primeira
atividade da GCS. Mais detalhes vão sendo acrescentados à medida que se tornam
conhecidos, mas deve-se deixar bem claro o que ficou para ser definido depois.
Uma vez planejado o processo, é preciso estabelecer o ambiente para a GCS, ou seja,
configurar ferramentas de suporte, criar as bibliotecas da GCS para o projeto, etc.
4.4.5.1
Objetivos e Requisitos Básicos do Processo
O objetivo principal deste processo é planejar as estratégias do processo da GCS
específicas para um projeto. Estas estratégias incluem estratégias para as atividades do
gerenciamento da configuração, para as atividades do gerenciamento das solicitações de
modificação e de desenvolvimento paralelo.
O responsável pela execução deste processo é o Gerente das Modificações e da
Configuração.
Os requisitos básicos deste processo são:
O gerenciamento e as relações com o ambiente de projeto são definidos: engloba as
atividades de definição da organização da GCS, das responsabilidades, do controle de
interfaces, do gerenciamento de subcontratados, se houver, e de padrões relevantes para o
projeto.
As atividades da GCS são descritas: as atividades de ident ificação dos itens de
configuração, do armazenamento e controle dos itens de configuração, do controle e
acompanhamento das solicitações de modificação, e do relato da situação da configuração
devem ser definidas e descritas.
142
A condução das tarefas, fases e marcos da GCS são definidos: o relacionamento entre as
tarefas que devem ser executadas às fases e marcos gerais do gerenciamento da
configuração deve ser descrito.
A utilização de ferramentas, técnicas e métodos é descrita: isto envolve a descrição de
ferramentas, técnicas e métodos utilizados pela GCS ou referências a descrições,
procedimentos e convenções gerais existentes e documentados do processo.
A estrutura de arquivos e diretórios é definida: envolve a definição das estruturas de
arquivos e diretórios utilizados para conter os itens de configuração nas bibliotecas da
configuração. Esta estrutura deve ser organizada logicamente de maneira tal que garanta
que todos os itens de configuração estejam acessíveis. O formato da estrutura depende do
número de subsistemas ou módulos do software desenvolvido, e do número de
componentes em cada módulo. Esta estrutura lógica do produto não está totalmente
definida até o final das atividades de análise e projeto. No entanto, uma estrutura inicial
para o projeto deve ser criada para conter os produtos de trabalho das fases iniciais de
planejamento e gerenciamento. O restante da estrutura pode ser elaborada depois que as
decisões sobre o projeto tenham sido tomadas e a visão da implementação esteja mais clara,
bem como a maneira como os elementos do projeto serão agregados para implementação.
Linhas de desenvolvimento paralelo são definidas: estratégias para a criação de linhas de
desenvolvimento paralelo devem ser definidas para o projeto, se necessário, segundo as
diretrizes gerais definidas.
O ambiente para a GCS é estabelecido: isto envolve a preparação de um ambiente para a
GCS, incluindo a criação da biblioteca da GCS e definição das autorizações e mecanismos
de acesso, a configuração de ferramentas de suporte às atividades da GCS, como um
sistema de controle e acompanhamento de modificações entre outras.
143
Os requisitos para o processo Implantação da GCS são atendidos pelos pacotes de
atividades que compõem o processo, representados através do diagrama de pacotes da
Figura 4.4.
Planejamento da GCS
Definição do
gerenciamento e relações
da GCS com o ambiente
de projeto
Definição da condução das
tarefas, fases e marcos da
GCS
Definição de linhas de
desenvolvimento paralelo
Descrição das atividades da
GCS
Descrição de ferramentas,
técnicas e métodos da GCS
Definição do ambiente da
GCS
FIGURA 4.4 – O Processo de Planejamento da GCS.
Uma ferramenta para auxiliar o Gerente das Modificações e da Configuração a elaborar o
Plano da GCS e documentá- lo, tornando-o facilmente acessível a todos os envolvidos no
projeto, assim como, ferramentas de gerenciamento de projeto, como diagramas e gráficos,
144
para o suporte às descrições do planejamento e para o acompanhamento das atividades da
GCS no projeto são requisitos desejáveis para o processo.
4.4.5.2
Papéis, Responsabilidades e Produtos Envolvidos no Processo
Cabe ao Gerente das Modificações e da Configuração adequar as estratégias da GCS,
definidas na organização e estabelecidas no Plano de Estratégias da GCS, para um projeto
em particular e consolidá-las no Plano da GCS. Na elaboração do Plano devem ser seguidas
as orientações para elaboração do Plano da GCS (PGCS) já estabelecidas, assim como o
modelo de referência definido.
O Gerente das Modificações e da Configuração deve utilizar as descrições de processo,
procedimentos e convenções, já estabelecidos para o processo da GCS e referenciá- las no
Plano. Na falta destes, o Gerente das Modificações e da Configuração deve defini- los e
descrevê- los.
O diagrama de Classes da Figura 4.5 mostra o relacionamento entre o Gerente da
Configuração e das Modificações e os produtos associados com o processo de Implantação
da GCS.
145
Orientação para
elaboração do PGCS
PGCS
Plano de
Desenvolvimento
Modelo de
PGCS
Plano de
Distribuição
*
Gerente das Modificações
e da Configuração
Descrição, procedimentos
e convenções da GCS
1
1
Plano de1
Estratégias da
GCS
*
*
Modelos de
Formulários
Modelos de
Relatórios
FIGURA 4.5 – O Gerente das Modificações e da Configuração e os Produtos do Processo
de Planejamento da GCS.
4.4.5.3
Atividades do Processo
Os diagramas de pacotes do processo de Planejamento da GCS agrupam as atividades, os
papéis e os produtos do trabalho que possibilitam a implantação do processo da GCS com
sucesso na organização.
146
Cabe ressaltar que as estratégias para as atividades da GCS para o projeto são estabelecidas
e consolidadas no PGCS à medida que o projeto se desenvolve. Assim, detalhes
desconhecidos no início do projeto, como por exemplo, os itens que compõem a
configuração-base de produto, são adicionados à medida que o projeto evolui para suas
fases finais. Para isto é necessário que o PGCS seja revisado periodicamente, dentro da
atividade de manutenção do plano. Deste modo, o plano deve identificar e descrever as
atividades e responsabilidades necessárias para garantir um planejamento continuado da
GCS durante todo o ciclo de vida do projeto.
4.4.5.3.1
O Pacote Definição do Gerenciamento e Relações com o Ambiente
de Projeto
O pacote de Gerenciamento e Relações com o Ambiente de Projeto, Figura 4.6, define os
papéis, a organização e a alocação de responsabilidades da GCS no projeto.
As atividades deste Pacote são descritas a seguir.
Definir o contexto organizacional da GCS. Esta atividade consiste em:
•
Especificar a organização completa da GCS e como esta se encaixa no resto da
organização do projeto.
•
Descrever em termos gerais os papéis a serem preenchidos. Caso várias
organizações estejam envolvidas no projeto, definir claramente qual delas é a
responsável pela condução da GCS, em qual fase do ciclo de vida do software.
Definir responsabilidades da GCS. Esta atividade consiste em:
•
Identificar os responsáveis pela execução de atividades da GCS, nas funções de
identificação, controle, registro e relato da situação da configuração.
147
Gerenciamento e Relações
com o Ambiente de Projeto
Gerente das Modificações e da Configuração
Definir o contexto organizacional da GCS ( )
Definir responsabilidades da GCS ( )
Definir procedimentos para gerenciar interfaces ( )
Definir padrões relevantes ( )
Plano de
Estratégias da
GCS
Modelo de
PGCS
Orientação para
elaboração do
PGCS
PGCS
Descrição, procedimentos
e convenções da GCS
FIGURA 4.6 – O Pacote de Gerenciamento e Relações com o Ambiente de Projeto.
•
Definir os papéis organizacionais responsáveis pela aprovação de configuraçõesbase e distribuições.
Isto pode ser apresentado conforme a TABELA 4.1.
148
TABELA 4.1 – Papéis e Responsabilidades da GCS.
Gerente de
projeto
Atividade 1
Atividade 2
Atividade 3
I
I
I
Papéis
Responsável Gerente das
pela GCS modificações
e da
Configuração
S
R
R
I
R
I
GCC-1
GCC-2
A
R=Responsável; A=Aprovação; S=Suporte; I=Informação (GCC – Grupo de Controle da
Configuração)
Definir procedimentos para gerenciar interfaces. Esta atividade consiste em:
•
Definir as atividades de coordenação das modificações feitas nos itens de
configuração do projeto que façam interface com itens de outros sistemas, caso
existam.
•
Definir as estratégias para o suporte a subcontratante/vendedor. Descrever qualquer
suporte e interface de subcontratante e/ou vendedor se aplicável.
•
Definir como incorporar os itens desenvolvidos externamente aos itens de
configuração do projeto, tanto de software subcontratado como adquirido.
Definir padrões relevantes. Esta atividade consiste em:
•
Descrever as orientações e políticas às quais o projeto segue, referenciando os
padrões e políticas da organização que afetam as atividades da GCS.
149
4.4.5.3.2
O Pacote Descrição das Atividades da GCS
O pacote de descrição das atividades da GCS, Figura 4.7, contém a descrição das atividades
da GCS a serem executadas para um projeto. Estas atividades consistem na identificação
dos itens de configuração, no controle do armazenamento apropriado e acesso aos itens de
configuração, no controle da configuração, no acompanhamento e controle das solicitações
de modificação, e também no relato da situação da configuração. Devem ser referenciados
as descrições, as convenções e os procedimentos já definidos do processo da GCS.
As atividades que compõem este pacote são descritas a seguir.
Identificar a configuração. Esta atividade consiste em:
•
Definir quais são os itens de configuração do projeto, segundo critérios
estabelecidos na organização.
•
Descrever ou referenciar as convenções e o esquema para identificação única dos
itens de configuração que serão utilizados no projeto, incluindo os documentos de
projeto, as configurações-base e distribuições.
•
Descrever ou referenciar os critérios de atribuição de número de revisão/versão aos
itens de configuração.
•
Especificar quando cada item de configuração é colocado sob o gerenciamento da
configuração.
•
Descrever o conjunto de configurações-base e distribuições, bem como as
convenções utilizadas para identificação das mesmas.
•
Descrever o conteúdo das configurações-base, como e quando elas são criadas,
quais os critérios e propósitos para a criação.
150
•
Descrever o critério para inter-relacionamento dos itens de configuração.
•
Descrever os procedimentos para herança de metadados dos itens de configuração.
Descrição das Atividades da GCS
Gerente das Modificações e da Configuração
Identificar a configuração ( )
Armazenar e controlar os itens de configuração ( )
Controlar modificações ( )
Relatar a situação da configuração ( )
Avaliar a configuração ( )
Plano de
Estratégias da
GCS
Orientação para
Modelo de
elaboração
do PGCS
PGCS
Descrição, procedimentos
e convenções da GCS
PGCS
Plano de
Distribuição
FIGURA 4.7 – O Pacote de Descrição das Atividades da GCS.
Armazenar e controlar os itens de configuração: Esta atividade consiste em:
151
•
Identificar as bibliotecas que serão utilizadas no projeto e o tipo de cada uma delas.
•
Descrever a estrutura de diretório a ser usada no projeto para gerenciar a evolução
dos itens de configuração e organizá- los (as bibliotecas podem ser apresentadas na
forma de estrutura de arquivos e diretórios, diretórios separados podem ser
utilizados para documentos de projeto, código fonte, documentos de apoio, testes,
etc.).
•
Descrever os procedimentos para criação e retenção das bibliotecas (o que precisa
ser retido, por quem e por quanto tempo) do projeto.
•
Descrever procedimentos e políticas para as distribuições no projeto.
•
Descrever procedimentos para o acesso aos itens de configuração contidos nas
bibliotecas do projeto.
•
Descrever as informações sobre as modificações nos itens de configuração que
serão armazenadas.
•
Descrever como o histórico das modificações é retido.
Controlar modificações: Esta atividade consiste em:
•
Descrever os procedimentos para controle e acompanhamento das solicitações de
modificação nas configurações-base do projeto, como a periodicidade das reuniões
do GCC.
•
Descrever os níveis de controle sobre a configuração adotados para o projeto, de
acordo com critérios já definidos, como severidade da modificação, urgência, fase
de desenvolvimento, tipo de projeto.
152
•
Selecionar os mecanismos usados pelo controle de modificações. Estes mecanismos
podem agir nos níveis de autoridade para a modificação, tipo da reunião do GCC e
no acesso à biblioteca controlada.
•
Descrever os diferentes tipos de GCCs necessários para o projeto, fornecendo, para
cada um, as seguintes informações: responsabilidades, membros, papéis,
mecanismos de aprovação. Quando aplicável, descrever as interfaces, a hierarquia
geral e a responsabilidade de comunicação entre os vários GCCs da organização.
•
Selecionar as regras de identificação do formulário de solicitação de modificação.
•
Selecionar o esquema de classificação para aprovação das solicitações de
modificação.
Relatar a situação da configuração. Esta atividade consiste em:
•
Descrever os métodos selecionados para coleta, registro, processamento e
manutenção dos dados necessários para fornecer informações da situação através de
relatórios e/ou acesso à base de dados da GCS e das solicitações de modificações.
•
Definir os tipos e a periodicidade dos relatórios gerenciais que mostram o estado e
histórico dos itens de configuração, bem como o público alvo de cada um.
•
Definir as restrições de acesso às informações da situação da configuração.
•
Definir as distribuições, para quem elas estão autorizadas e as informações que
devem ser registradas sobre elas, como: a funcionalidade incluída na distribuição, o
conteúdo da distribuição, componentes associados necessários, o meio no qual a
distribuição é feita, problemas conhecidos, soluções de problemas conhecidos,
instruções de instalação e um mapeamento das solicitações dos clientes e requisitos
satisfeitos pela distribuição. Estas informações podem ser consolidadas em um
Plano de Distribuição.
153
Avaliar a configuração. Esta atividade consiste em:
•
Referenciar as auditorias físicas e funcionais a serem realizadas pela Gerência da
Qualidade, bem como as revisões. Deve-se mencionar quando elas serão feitas, a
qual configuração-base elas estão ligadas, e qual é o papel desempenhado pela GCS.
4.4.5.3.3
O Pacote Definição da Condução das Tarefas, Fases e Marcos da
GCS
O pacote de Definição da Condução das Tarefas, Fases e Marcos da GCS, Figura 4.8,
descreve as tarefas ligadas às atividades da GCS, inclusive o treinamento necessário às
atividades. As tarefas estão intimamente relacionadas aos papéis que as realizam. É preciso,
tanto quanto possível, documentar quais pessoas preenchem quais papéis, de maneira que
os recursos necessários sejam planejados eficientemente. Como qualquer projeto de
desenvolvimento, a GCS possui vários marcos que devem ser definidos e descritos, e,
geralmente, coincidem com os marcos definidos para o projeto no Plano de
Desenvolvimento. Ferramentas de gerenciamento de projeto, como diagramas e gráficos,
podem ser utilizadas para o suporte às descrições do planejamento e para o
acompanhamento das atividades da GCS no projeto. O planejamento continuado da GCS
deve ser garantido durante todo o ciclo de vida do projeto.
154
Definição da Condução das
Tarefas, Fases e Marcos da
GCS
Gerente das Modificações e da Configuração
Definir a condução das tarefas da GCS ( )
Definir as fases e marcos da GCS ( )
Definir a manutenção do planejamento da GCS ( )
Plano de
Plano de
Modelo de Orientação para PGCS
Desenvolvimento
elaboração do
Estratégias da
PGCS
de
Software
PGCS
GCS
FIGURA 4.8 – O Pacote de Definição da Condução das Tarefas, Fases e Marcos da GCS.
As atividades deste Pacote são descritas a seguir.
Definir a condução das tarefas da GCS. Esta atividade consiste em:
•
Relacionar as tarefas das atividades da GCS.
•
Associar pessoas a papéis a serem desempenhados.
•
Determinar o tipo e a quantidade de treinamento (por exemplo, orientação,
ferramentas).
Definir as fases e marcos da GCS. Esta atividade consiste em:
155
•
Definir todos os marcos da GCS, tais como: sistema de GCS pronto para utilização
na próxima atividade, estabelecimento do(s) GCC(s), estabelecimento das
configurações-base, etc.
•
Descrever como os marcos da GCS estão ligados às fases estabelecidas para o
processo de desenvolvimento de software e os critérios para alcançar cada marco.
•
Definir os critérios para que o marco seja alcançado, ou seja, determinar as
condições que os itens de configuração que fazem parte da configuração-base
associada ao marco devem alcançar. Estes critérios são definidos em conjunto com
e verificados pelo processo da Qualidade.
Definir a manutenção do planejamento da GCS. Esta atividade consiste em:
•
Estabelecer quando os procedimentos e estrutura da GCS devem ser revistos.
•
Definir como as modificações no planejamento são avaliadas e aprovadas.
•
Definir quando as modificações são feitas e comunicadas aos integrantes do projeto.
4.4.5.3.4
O Pacote Descrição de Ferramentas, Técnicas e Métodos da GCS
O pacote Descrição de Ferramentas, Técnicas e Métodos da GCS, Figura 4.9, relaciona as
ferramentas, as técnicas e métodos disponíveis para a GCS selecionadas para o suporte às
suas atividades. Devem ser feitas descrições e referências às descrições, procedimentos e
convenções da GCS existentes, assim como às ferramentas e serviços de suporte às
atividades da GCS disponibilizadas pelo ambiente.
156
Descrição de Ferramentas,
Técnicas e Métodos da GCS
Gerente das Modificações e da Configuração
Descrever ferramentas da GCS ( )
Descrever métodos da GCS ( )
Descrever técnicas da GCS ( )
Definir modelos de formulários e relatórios da
GCS ( )
Plano de
Estratégias da
GCS
Modelo de
PGCS
Descrição, procedimentos
e convenções da GCS
Orientação para
elaboração do
PGCS
Modelos de
Relatórios
PGCS
Modelos de
Formulários
FIGURA 4.9 – Pacote de Definição da Utilização de Ferramentas, Técnicas e Métodos.
As ferramentas utilizadas referem-se àquelas desenvolvidas para facilitar e automatizar as
atividades da GCS, e podem ser ferramentas dedicadas, estruturas de diretórios, base de
dados, formulários, etc. Entre as primeiras estão ferramentas para armazenamento dos itens
de configuração e seus metadados, com controle de versões, e para o gerenciamento das
solicitações de modificação. Deve-se descrever como as ferramentas são utilizadas, bem
como as conexões com outras ferramentas. As técnicas e métodos descrevem o trabalho a
157
ser feito e a maneira como deve ser feito. As descrições podem ser para cada tipo de item
de configuração e para graus de formalismo diferentes para cada tipo. Devem ser definidos
ou incluídas referências aos modelos de formulários e relatórios a serem utilizados pela
GCS.
As atividades deste Pacote são descritas a seguir.
Descrever ferramentas da GCS. Esta atividade consiste em:
•
Referenciar as ferramentas aplicadas à estrutura e controle de acesso a bibliotecas,
desenvolvimento
e
rastreamento
de
documentação,
processamento
das
modificações, comunicação e autorização, relato de situação, armazenamento,
retenção e recuperação de itens de configuração, de planejamento da GCS, e
geração de distribuições do sistema.
•
Associar a ferramenta necessária para cada atividade da GCS identificada.
•
Descrever ou referenciar as funções de cada ferramenta.
Descrever métodos da GCS. Esta atividade consiste em:
•
Descrever ou referenciar a descrição dos métodos necessários para cada atividade
da GCS identificada.
Descrever técnicas da GCS. Esta atividade consiste em:
•
Descrever ou referenciar as técnicas necessárias para cada atividade da GCS
identificada.
Definir modelos de formulários e relatórios da GCS. Esta atividade consiste em:
•
Definir quais serão os formulários utilizados pela GCS.
158
•
Definir os relatórios a serem gerados pela GCS, segundo critérios estabelecidos para
a organização.
4.4.5.3.5
O Pacote Definição de Linhas de Desenvolvimento Paralelo
O pacote de Definição de Linhas de Desenvolvimento Paralelo, Figura 4.10, define a
estratégia de gerenciamento das linhas de desenvolvimento paralelo a ser utilizada no
projeto, quando necessário. No desenvolvimento paralelo pode ocorrer a necessidade da
união de linhas de desenvolvimento, no caso em que as particularidades de uma linha
devam ser incorporadas à linha principal. O momento em que uma linha de
desenvolvimento deve ser criada ou unida à principal deve ser definido, bem como o
critério utilizado para identificação das linhas de desenvolvimento e versões de seus
componentes.
Definição de Linhas de
Desenvolvimento Paralelo
Gerente das Modificações e da Configuração
Definir o gerenciamento das linhas
de desenvolvimento paralelo ( )
Definir critérios de identificação ( )
Plano de
Estratégias da
GCS
Modelo de
PGCS
Orientação para
elaboração do PGCS
PGCS
FIGURA 4.10 – Pacote de Definição de Linhas de Desenvolvimento Paralelo.
159
As atividades deste Pacote são descritas a seguir.
Definir o gerenciamento das linhas de desenvolvimento paralelo. Esta atividade consiste
em:
•
Definir quando e porque as linhas de desenvolvimento são criadas.
•
Definir atividades que ocorrerão nas linhas de desenvolvimento.
•
Definir quando as linhas de desenvolvimento são completadas.
•
Definir quando as linhas de desenvolvimento são unidas à linha principal.
Definir critérios de identificação. Esta atividade consiste em:
•
Definir a atribuição de números de versão às linhas.
•
Definir a atribuição de rótulos ou nome às linhas.
4.4.5.3.6
O Pacote Definição do Ambiente da GCS
O pacote Definição do Ambiente da GCS, Figura 4.11, define o ambiente operacional da
GCS, ou seja, o ambiente onde as atividades da GCS serão desenvolvidas. A definição do
ambiente envolve tanto a alocação de recursos físicos (espaço em disco para o repositório e
base de dados) quanto a instalação ou configuração de ferramentas utilizadas para o suporte
às atividades da GCS, como um sistema de controle e acompanhamento de modificações.
160
Definição do Ambiente da
GCS
Gerente das Modificações e da
Configuração
Alocar recursos físicos ( )
Criar a biblioteca da GCS ( )
Configurar ferramentas de suporte ( )
Item de
Configuração
Biblioteca
da GCS
Configuração
do produto
PGCS
Sistema de
acompanhamento
Orientação para manuseio e
armazenamento
FIGURA 4.11 – Pacote de Definição do Ambiente da GCS.
O estabelecimento do ambiente de desenvolvimento envolve, assim, o estabelecimento da
estrutura de diretório do produto, através da criação da biblioteca da GCS, a definição das
autorizações e mecanismos de acesso, o check-in dos arquivos já existentes, se for o caso,
por exemplo, de um projeto de manutenção de software. O ambiente estabelecido
inicialmente servirá de base para qualquer trabalho de desenvolvimento posterior.
As atividades deste Pacote são descritas a seguir.
161
Alocar recursos físicos. Determinar a localização física do repositório que conterá a
biblioteca da GCS.
Criar a biblioteca da GCS. Esta atividade consiste em:
•
Criar a biblioteca da GCS identificada no planejamento, segundo a estrutura de
diretório inicial selecionada para utilização no projeto e os procedimentos definidos.
•
Implementar as autorizações de acesso à biblioteca da GCS.
•
Implementar os mecanismos de acesso à biblioteca da GCS.
•
Armazenar itens existentes na biblioteca controlada.
Configurar mecanismos de suporte. Esta atividade consiste em configurar os mecanismos
ou ferramentas utilizadas no suporte ao processo, que podem incluir:
•
Ferramenta aplicada à estrutura e controle de acesso a biblioteca da GCS, utilizada
para o armazenamento, retenção e recuperação de itens de configuração e seus
metadados, bem como para o controle das versões destes itens.
•
Mecanismos de comunicação entre os envolvidos no processo, como listas de emails, agendas de reuniões, etc.
•
Ferramenta de geração de relatórios da configuração e das modificações.
•
Sistema para o acompanhamento das solicitações de modificação e respectiva base
de dados da modificação.
4.4.6
O Processo de Gerenciamento da Co nfiguração
O processo Gerenciamento da Configuração é formado pelos componentes de processo
fundamentais da GCS, ou seja, componentes básicos, que abrangem as atividades da GCS
162
que serão executadas durante a fase de desenvolvimento do projeto, e que foram
identificadas e descritas durante o processo de Implantação da GCS.
O processo Gerenciamento da Configuração é iniciado após o planejamento inicial da GCS,
quando os primeiros itens de configuração são produzidos, e abrange atividades de
identificação da configuração, do armazenamento e controle dos itens de configuração e do
relato da situação da configuração.
As atividades do gerenciamento da configuração são consideradas cíclicas para todos os
itens de configuração (Hass, 2002): o primeiro ciclo inicia-se com a necessidade de um
item de configuração, definida em plano, e os próximos ciclos são conseqüência de uma
solicitação de modificação.
Em cada ciclo o item é identificado, produzido, armazenado e liberado para uso. Relatórios
de ocorrências são emitidos com a experiência trazida pela utilização do item, levando ao
controle de modificação, que levará à identificação de uma nova versão do item original, e
assim por diante. Os itens colocados sob o gerenciamento da configuração não são
modificados, mas novas versões do mesmo são criadas, permitindo que se possa reverter a
uma situação anterior do item.
O gerenciamento da configuração interage com o processo de Controle da Qualidade
quando um produto de trabalho é encaminhado para armazenamento controlado, após
avaliação e aprovação. A aprovação da qualidade será dada após as atividades de
verificação e validação, ou ainda das auditorias físicas e funcionais, dependendo da
categoria do produto de trabalho.
4.4.6.1
Objetivos e Requisitos Básicos do Processo
À medida que o processo de desenvolvimento de software evolui, produtos de trabalho
começam a ser gerados. O objetivo deste processo é estabelecer e manter a integridade dos
163
produtos de trabalho de um processo ou projeto selecionados, e torná- los disponíveis às
partes interessadas, conforme o planejamento da GCS.
Para isto, todos os itens de configuração gerados pelo processo ou projeto devem ser
identificados e pertencer a uma configuração-base. As modificações e distribuições dos
itens devem ser controladas e disponibilizadas às partes interessadas. As situações dos itens
e das solicitações de modificação devem ser registradas e relatadas. A integridade e
consistência dos itens devem ser garantidas e o armazenamento, manuseio e entrega dos
itens devem ser controlados.
Os requisitos básicos deste processo são:
Todos os itens gerados pelo processo ou projeto são identificados, definidos e
pertencem a uma configuração-base. Isto envolve a identificação única de todos os itens
de configuração e a manutenção da descrição dos itens de configuração.
Modificações e liberações dos itens são controladas. Isto envolve o estabelecimento das
configurações-base internas e externas ou distribuições, a manutenção da descrição dos
itens de configuração e do histórico dos itens de configuração.
Modificações e distribuições são disponibilizadas para as partes interessadas. Para isto
é necessário que as descrições dos itens de configuração sejam mantidas, que as
modificações e liberações dos itens sejam controladas, o histórico do item de configuração
seja mantido e que o armazenamento dos itens de configuração seja gerenciado.
A situação dos itens e das solicitações de modificação é registrada e relatada. Isto
envolve o relato da situação da configuração e o gerenciamento do armazenamento e acesso
aos itens de configuração.
164
A integridade e consistência dos itens de configuração são garantidas. Isto envolve a
verificação da informação sobre os itens de configuração e o gerenciamento do
armazenamento e acesso aos itens de configuração.
O armazenamento, o acesso e a entrega dos itens de configuração são controlados.
Envolve o estabelecimento da biblioteca da GCS ou controlada, que contém os itens de
configuração e seus metadados, e no armazenamento físico desta no repositório, bem como
o controle de permissão de acesso e liberação dos itens de configuração.
Os requisitos básicos do processo de Gerenciamento da Configuração são atendidos pelos
pacotes de atividades que compõem o processo, que são representados através do diagrama
de pacotes da Figura 4.12.
Gerenciamento da
Configuração
Identificação da
configuração
Armazenamento e controle
dos itens de configuração
Relato da situação da
configuração
FIGURA 4.12 – O Processo Gerenciamento da Configuração.
165
Para representação deste processo é também utilizado o diagrama de caso de uso, que
mostra o relacionamento entre papéis e atividades do processo, agrupadas em Definições de
Trabalho (WorkDefinitions). O diagrama de atividades é ainda utilizado para representar
uma visão dinâmica de aspectos do processo.
Como requisitos para o processo tem-se um ambiente para a GCS preparado, com a
biblioteca da GCS criada, e disponíveis os mecanismos de criação, controle e acesso às
versões dos itens e manutenção dos registros de modificação da configuração, para o
histórico de modificação, assim como uma ferramenta para geração automatizada dos
relatórios da configuração e das modificações.
4.4.6.2
Papéis, Responsabilidades e Produtos Envolvidos no Processo
O Responsável pelo Produto, que representa aqui qualquer envolvido no projeto ou
processo responsável pela produção de um item de configuração, é quem identifica o item,
segundo critérios estabelecidos no PGCS, de acordo com a configuração do produto. Parte
da atividade de identificação é feita pela atribuição automática de um número de
identificação de versão quando o item é armazenado na biblioteca da GCS. O Responsável
pelo Produto registra os metadados do item de configuração, ao encaminhá- lo à Qualidade
para aprovação e posterior armazenamento na biblioteca controlada.
O Responsável pela GCS é quem mantém e controla a biblioteca da GCS e o seu conteúdo,
ou seja, realiza as operações de check-in e check-out dos itens de configuração aprovados
pela qualidade na biblioteca da GCS, registrando as informações sobre as modificações
feitas nos itens de configuração, para manutenção do histórico do item; cria e mantém
metadados das configurações-base, inclusive das de distribuição, mantendo o registro das
informações de modificação feitas nestas; libera itens das configurações-base para a
produção de acordo com o cronograma do projeto e cria as distribuições para utilização
externa baseado em solicitações de liberação. Cabe ao Responsável pela GCS comunicar a
situação da configuração e das modificações aos envolvidos no processo, extraindo as
166
informações para a produção dos relatórios de situação da configuração e das modificações,
e informações ad hoc, como medidas para outros processos. O Responsável pela GCS
também controla a integridade dos metadados da configuração, verificando se as
informações sobre os itens e suas estruturas fornecidas pelos relatórios de situação estão
completas, de acordo com a configuração do produto, e garantem a consistência dos itens.
Ainda que grande parte destas atividades seja suportada por ferramenta automatizada, a
supervisão destas é feita pelo Responsável pela GCS.
As Gerências de Projeto e da Qualidade, bem como o Cliente da GCS, que pode ser tanto
interno, como um desenvolvedor ou outro envolvido no projeto, quanto externo à
organização de desenvolvimento, são informados da situação da configuração, através de
relatórios específicos ou acesso à biblioteca da GCS e às configurações-base de
distribuição.
Os diagramas de classes das Figuras 4.13, 4.14, 4.15 e 4.16 mostram os relacionamentos
entre os papéis e os produtos associados ao processo de Gerenciamento da Configuração.
167
Configuração
do Produto
PGCS
Plano de
Distribuição
Sistema de
Acompanhamento
Orientação para Manuseio
e Armazenamento
Responsável
pela GCS
*
Histórico de
Modificação
1
Biblioteca da
GCS
1
1
*
Descrição do Item
de Configuração
*
Item de
Configuração
Configuração-base
de Distribuição
Relatórios Controle
das Modificações
Relatórios de Histórico
das Modificações
Relatórios de Estado
da Configuração
FIGURA 4.13 – O Responsável pela GCS e os Produtos do Processo de Gerenciamento da
Configuração.
168
Configuração
do Produto
Orientação para Manuseio
e Armazenamento
*
1
Histórico de Modificação
1
Responsável
pelo Produto
1
Biblioteca da GCS
*
Descrição do Item
de Configuração
*
Relatórios de Estado
da Configuração
Item de
Configuração
FIGURA 4.14 – O Responsável pelo Produto e os Produtos do Processo de Gerenciamento
da Configuração.
169
Configuração
do produto
PGCS
Orientação para Manuseio
e Armazenamento
Gerente da
Qualidade
*
Histórico de Modificação
1
Biblioteca
da GCS
1
1
*
Descrição do Item
de Configuração
*
Item de
Configuração
Relatórios de Estado da
Configuração
Gerente de
Projeto
Relatórios de Histórico das
Modificações
Relatórios de Controle das
Modificações
Configuração-base
de distribuição
FIGURA 4.15 – Os Gerentes da Qualidade e Projeto e os Produtos do Processo de
Gerenciamento da Configuração.
170
Orientação para Manuseio
e Armazenamento
*
1
Cliente da
GCS
Biblioteca
da GCS
Histórico de Modificação
1
1
*
Descrição do Item
de Configuração
*
Item de
Configuração
Relatórios de Controle das
Modificações
Configuração-base
de distribuição
Relatórios de Estado da
Configuração
Relatórios de Histórico das
Modificações
FIGURA 4.16 – O Cliente da GCS e os Produtos do Processo de Gerenciamento da
Configuração.
4.4.6.3
Atividades do Processo
O diagrama de pacote do processo de Gerenciamento da Configuração agrupa as atividades,
os papéis e os produtos de trabalho que possibilitam a execução do processo da GCS com
171
sucesso na organização. Estes pacotes compreendem as atividades básicas da GCS, que
consistem na identificação da configuração, no armazenamento e controle dos itens de
configuração e no relato da situação da configuração. Estas atividades são as mínimas
necessárias para, durante o desenvolvimento de um projeto de software, estabelecer e
manter a integridade dos produtos de trabalho gerados e torná-los disponíveis às partes
interessadas, conforme o planejado.
4.4.6.3.1
O Pacote Identificação da Configuração
O pacote Identificação da Configuração apresentado na Figura 4.17 agrupa as tarefas
ligadas à identificação de um item de configuração, que consiste em descrever um produto
de trabalho selecionado para estar sob o gerenciamento da configuração. A identificação do
item, ou parte dela, pode ser feita antes mesmo do item ter sido produzido, quando foi
tomada a decisão de produzi- lo.
Um item identificado não está sob o gerenciamento da configuração até que seja colocado
em armazenamento controlado na biblioteca da GCS. Assim, a identificação de um item é
uma atividade que se sobrepõe a outras atividades, como a produção do item, que está fora
do escopo do processo da GCS, e seu armazenamento controlado, quando, por exemplo, um
contador de número de versão automático é incrementado. Quem encaminha o item para a
Qualidade e posterior armazenamento controlado fica responsável pela sua identificação
única, que deve ser baseada nos critérios e convenções definidos no PGCS.
A primeira vez que o item é encaminhado à GCS, a identificação se inicia com uma
necessidade definida em planos. Do Plano de Projeto, obtém-se a informação que o item
deve ser produzido e do Plano de GCS, sabe-se que ele deve ser colocado sob
gerenciamento da configuração. Quando o item precisa ser modificado, a identificação
começa com a solicitação de modificação. Neste caso, no processo de gerenciamento das
solicitações de modificação foi decidido que uma nova versão de um item de configuração
172
deveria ser criada, e, conseqüentemente, esta nova versão deve ser colocada sob controle da
GCS.
O processo de identificação de um item de configuração engloba também a identificação de
configurações-base de projeto e distribuições. Quando se atinge o ma rco estabelecido para
a criação de uma configuração-base uma identificação única é atribuída ao conjunto de
itens que a constituem, nas versões correntes.
Identificação da Configuração
Responsável pelo Produto
Descrever item de configuração ( )
Item de
Configuração PGCS
Biblioteca
da GCS
Plano de
Distribuição
Orientação para
manuseio e
armazenamento
Responsável pela GCS
Estabelecer as configurações-base ( )
FIGURA 4.17 – O Pacote de Identificação da Configuração.
A identificação resulta no registro da descrição de um item de configuração na biblioteca da
GCS. Esta descrição consiste de informações sobre o item coletadas e mantidas durante
toda a sua existência. Estas informações ou metadados do item são compostas de elementos
173
de dados que podem ser divididos em quatro grupos (Hass, 2002): identificação única,
autorização, relacionamentos com outros itens de configuração e distribuição.
A identificação da configuração consiste em:
Descrever o item de configuração. A descrição de um item de configuração deve ser feita,
de acordo com as convenções estabelecidas no PGCS, quando o item é encaminhado para
controle e durante todo o processo da GCS. O esquema de identificação deve incluir:
•
Identificação do item de configuração. Constitui-se nos metadados de
identificação única do item de configuração
•
Autorização para o item de configuração. Informações de autorização associadas
ao item de configuração, registradas em momentos distintos, como no
encaminhamento do item à Qualidade e aprovação do item pela Qualidade.
•
Relacionamentos entre o item de configuração e outros. Metadados que
relacionam outros itens de configuração que estão associados ao item de
configuração descrito.
•
Distribuição do item de configuração. Esta informação sobre a distribuição de um
item deve ser registrada quando uma configuração-base de distribuição for liberada
para um cliente externo à organização de desenvolvimento.
Estabelecer as configurações-base. Esta atividade, realizada pelo Responsável pela GCS
quando o marco de projeto definido para a criação de uma configuração-base é atingido, ou
quando uma modificação deve ser incorporada à configuração-base atual, registrando a
versão e o estado de cada item de configuração, consiste em:
•
Selecionar os itens que fazem parte da nova configuração-base.
174
•
Atribuir um nome e um número de versão à configuração-base, conforme
convenções estabelecidas.
•
Registrar metadados da configuração-base.
4.4.6.3.2
O Pacote Armazenamento e Controle dos Itens de Configuração
Este processo envolve as atividades necessárias para garantir que o armazenamento dos
itens de configuração seja feito convenientemente, de maneira que não sejam perdidos ou
danificados, mas possam ser recuperados a qualquer momento, na condição esperada e que
o acesso e as modificações feitas neles sejam controlados. Para isto, registros de descrição e
histórico de modificações dos itens devem ser mantidos.
O armazenamento envolve o meio físico onde os itens de configuração são armazenados,
que é o repositório. Logicamente, os itens estão organizados em uma biblioteca, que reflete
as estruturas de diretório definidas no planejamento, de acordo com o projeto de arquitetura
do produto que está sendo desenvolvido. Juntamente com os itens de configuração são
armazenadas as informações sobre os itens, ou metadados. Os itens de configuração e seus
metadados, que constituem sua descrição, bem como os registros de histórico, formam a
base de dados da GCS, ou biblioteca da GCS.
Ainda que bibliotecas dinâmicas ou de desenvolvimento possam ser criadas no mesmo
repositório global de produtos de trabalho onde está a biblioteca da GCS, para serem
utilizadas pelos processos de engenharia, nesta abordagem considera-se que estas
bibliotecas estão fora do controle da GCS.
Um produto de trabalho, quando finalizado pelo seu responsável é encaminhado para
avaliação pela Qualidade, passando para o estado Encaminhado. O critério de aprovação é
definido pela Qualidade em plano, para cada categoria de item e é verificado nos marcos
específicos de projeto. Estes marcos de projeto indicam o estabelecimento de uma
175
configuração-base e todos os itens encaminhados à Qualidade que pertencem a esta
configuração-base e foram aprovados recebem então o estado de Controlado. Itens com o
estado Controlado pertencem à biblioteca controlada e será possível modificá- los apenas
através do processo de gerenciamento das modificações.
O processo de armazenamento e controle dos itens de configuração é responsável, portanto,
pelo gerenciamento da evolução das configurações-base, que se dá pela criação de novos
itens de configuração e pela modificação dos itens existentes, como também pela liberação
de itens de configuração, tanto para a produção de novos itens, como para a sua utilização.
A configuração atual de um produto é dada sempre pelas últimas versões aprovadas dos
itens de configuração, que compõem uma configuração-base. Nas operações de check-out,
utilizadas nas atividades desta Definição de Trabalho, está implícita a obtenção da última
versão do item solicitado. Quando se deseja obter uma versão anterior, deve-se explicitar o
número de versão na operação.
Este processo é composto por grupos de atividades ou Definições de Trabalho
(WorkDefinitions), apresentadas no diagrama de caso de uso da Figura 4.18.
176
Armazenar item de
configuração para
produção
Armazenamento
e controle dos
itens de
configuração
Liberar item de
configuração
para produção
Liberar item de
configuração
para utilização
FIGURA 4.18 – A Definição de Trabalho do Armazenamento e Controle dos Itens de
Configuração.
4.4.6.3.2.1
A Definição de Trabalho Armazenar Item de Configuração para Produção
Esta Definição de Trabalho consiste no armazenamento de um novo item de configuração e
dos metadados associados na biblioteca da GCS, bem como do registro de informações de
modificações, através de mecanismos apropriados (permissões de acesso, check-in, registro
de histórico), após a identificação e aprovação do item de configuração pela Qualidade. O
histórico do item deve ser mantido através do registro das informações sobre as
modificações feitas nos itens, quando uma nova versão do mesmo for criada. Como
resultado, tem-se o item acessível apenas através da biblioteca controlada e com seus
metadados atualizados apropriadamente. Deve-se assegurar a correta atualização das
177
versões dos itens e da configuração-base associada, no caso dos itens modificados. Os
envolvidos no desenvolvimento devem ser notificados, através do processo de relato da
situação, de que novos itens foram armazenados na biblioteca da GCS.
A Figura 4.19 apresenta o diagrama de atividades desta Definição de Trabalho, incluindo a
atividade de Descrever Item de Configuração, do pacote de Identificação da Configuração.
As atividades que estão fora do escopo do processo aparecem nos diagramas na cor cinza.
Esta Definição de Trabalho consiste das atividades:
•
Manter histórico do item, atualizando o registro de histórico do item com os
metadados pertinentes.
•
Colocar o item de configuração aprovado pela Qualidade na biblioteca da GCS
(controlada), através do procedimento de check-in:
o Atribuir um número de versão ou atualizar o número de versão, no caso de
um item modificado.
o Atualizar o estado do item para Controlado.
o Comunicar a inclusão do novo item a todos os clientes da GCS ou a
modificação aos que obtiveram cópia do mesmo na biblioteca da GCS.
178
Responsável
pelo produto
Responsável
pela Qualidade
Responsável
pela GCS
Não Aprovado
Desenvolver
produto
Encaminhar
produto
Descrever item de
configuração
Avaliar item de
configuração
Item de configuração
{Encaminhado}
Aprovado
Item de
configuração
{Encaminhado}
Manter histórico do
item de configuração
Check-In
Item de configuração
{Controlado}
FIGURA 4.19 – Diagrama de atividades da Definição de Trabalho de Armazenar Item de
Configuração para Produção.
179
4.4.6.3.2.2
A Definição de Trabalho Liberar Item de Configuração para Produção
O evento que inicia a liberação de um item de configuração para a produção é a
necessidade da produção de um novo item baseado em um já existente. Esta necessidade é
expressa através de uma solicitação de modificação, quando esta é encaminhada para
implementação, e o controle da liberação do item é feito através dos mecanismos
apropriados (check-out), pelo Responsável pela GCS.
Como resultado, tem-se a liberação de uma cópia de um item de configuração armazenado
na biblioteca da GCS para uma área de trabalho, onde será modificado, e o registro de
quem e quando recebeu a cópia do item.
A Figura 4.20 apresenta o diagrama de atividades para a liberação de um item de
configuração para produção. As atividades que estão fora do escopo do processo aparecem
no diagrama na cor cinza.
Esta Definição de Trabalho consiste das atividades:
•
Manter histórico do item, atualizando o registro de histórico do item com os
metadados pertinentes.
•
Retirar o item de configuração a ser modificado referenciado na solicitação de
modificação, da biblioteca da GCS para a área de trabalho do responsável pelo
produto, através do procedimento de check-out:
o Atualizar o estado do item de configuração para Sob Modificação.
180
Responsável
pelo Produto
Responsável pela
GCS
Solicitação de
Modificação
{Encaminhada para
implementação}
Manter histórico do
item de configuração
Check-out
Desenvolver
produto
Item de configuração
{Sob Modificação}
FIGURA 4.20 - Diagrama de Atividades da Definição de Trabalho de Liberar Item de
Configuração para Produção.
4.4.6.3.2.3
A Definição de Trabalho Liberar Item de Configuração para Utilização
A liberação de um item de configuração para utilização consiste em retirar um item único
ou uma configuração-base da biblioteca controlada para uma biblioteca estática. Deve-se
garantir que as liberações dos itens foram permitidas e documentar quando ocorreram.
Esta Definição de Trabalho pode ser visualizada no diagrama da Figura 4.21.
181
Liberar item de
configuração para
utilização interna
Liberar item de
configuração para
utilização
Liberar item de
configuração para
utilização externa
FIGURA 4.21 – A Definição de Trabalho Liberar Item de Configuração para Utilização.
Dentro da organização de desenvolvimento, a liberação é feita através da operação get, por
qualquer envolvido no projeto que tenha permissão para tal, identificado no diagrama como
Cliente da GCS, com registro de histórico do item. A Figura 4.22 apresenta o diagrama de
atividades para a liberação de item de configuração para utilização interna. A atividade que
está fora do escopo do processo aparece no diagrama na cor cinza.
As atividades desta Definição de Trabalho são:
•
Obter cópia do item de configuração desejado através da operação get.
•
Registrar informações de histórico do item: quem retirou, por que e quando.
182
Cliente
da GCS
Get
Registrar
histórico do item
Cópia do Item de
configuração
Utilização do item
FIGURA 4.22 - Diagrama de Atividades da Definição de Trabalho de Liberar Item de
Configuração para Utilização Interna.
Para a liberação de uma configuração-base de distribuição, que será utilizada fora da
organização de desenvolvimento, é necessário o registro de uma solicitação de liberação
pelo Responsável pela GCS. Neste caso, o Responsável pela GCS libera a configuraçãobase para utilização pelo cliente, conforme especificado no Plano de Distribuição.
A Figura 4.23 apresenta o diagrama de atividades para a liberação de item de configuração
para utilização externa. A atividade que está fora do escopo do processo aparece no
diagrama na cor cinza.
183
Cliente da
GCS
Responsável pela
Configuração
Solicitação de
Liberação
Plano de
Distribuição
Analisar solicitação
de liberação
Get
Registrar
liberação do item
Utilização do
item
Configuração-base de
distribuição
FIGURA 4.23 - Diagrama de Atividades da Definição de Trabalho de Liberar Item de
Configuração para Utilização Externa.
As seguintes informações devem constar da solicitação:
•
Identificação da configuração-base.
•
Solicitante.
184
•
Localização de destino.
•
Data da solicitação.
•
Data da liberação.
•
Responsável pela liberação.
•
Motivo.
4.4.6.3.3
O Pacote Relato da Situação da Configuração
O pacote Relato da Situação da Configuração, Figura 4.24, consiste nas atividades de
relatar a situação das modificações feitas nos itens de configuração do projeto e verificar se
as informações sobre os itens e suas estruturas fornecidas pelos relatórios de situação da
configuração estão completas e garantem a consistência dos itens.
O relato da situação torna disponível, de maneira útil e compreensível, a informação
necessária para um gerenciamento efetivo do desenvolvimento e manutenção de um
produto de software.
O relato da situação utiliza informações fornecidas por outras áreas de atividade da GCS,
na forma de metadados e informações sobre as modificações. Para isto é mantido, para cada
item de configuração, um conjunto organizado de registros de gerenciamento de
configuração: os registros de descrição do item e os de histórico das modificações. Além
destes registros, têm-se ainda as solicitações de modificação geradas como fonte para os
relatórios de situação das modificações. O relato da situação extrai, arranja e formata estes
dados de acordo com a demanda por eles.
Como resultado deste processo têm-se os relatórios periódicos de estado baseados nas
configurações-base de projeto, nas distribuições e nas modificações. Relatórios ad hoc
185
também podem ser extraídos, a qualquer tempo, conforme a necessidade pelo Responsável
pela GCS e usuários ou Clientes da GCS, como Gerentes, Responsável pela Qualidade e
outros que sejam autorizados.
Relato da Situação da Configuração
Responsável pela GCS
Gerar relatórios da situação da configuração ( )
Gerar relatórios de histórico das modificações ( )
Gerar relatórios de controle das modificações ( )
Verificar informações sobre os itens de
configuração ( )
PGCS
Biblioteca da
GCS
Orientação para
manuseio e
armazenamento
Relatórios de histórico
das modificações
Relatórios da situação
da configuração
Relatórios de controle
das modificações
Cliente da GCS
Obter relatórios da situação da configuração ad hoc ( )
FIGURA 4.24 – O Pacote Relato da Situação da Configuração.
186
Gerar Relatórios da situação da configuração. O Responsável pela GCS deve submeter
os Relatórios da Situação da GCS periodicamente ao Gerente de Projeto e da Qualidade,
conforme definido no PGCS, se quaisquer modificações foram feitas a qualquer item de
configuração desde o último relatório. Estes relatórios de situação podem conter:
•
Lista com as últimas versões dos itens de configuração, identificadores de
distribuição.
•
Número de distribuições, e comparações entre as distribuições.
•
Uma lista completa dos itens de configuração da configuração-base atual e números
de revisão/versão associados.
•
Registros de progresso do desenvolvimento do ciclo de vida indicando o estado de
cada item de configuração.
•
Data da liberação/distribuição do item de configuração.
Gerar relatórios de histórico das modificações. Relatórios de histórico das modificações
fornecem as seguintes informações sobre as modificações nos itens de configuração:
•
Um sumário das mais recentes modificações a cada item de configuração, desde o
último relatório, contendo a data, descrição das modificações, autor da modificação
e SM associada. Estes relatórios podem ser emitidos automaticamente após as
operações de check-in na biblioteca da GCS, comunicando a todos os envolvidos
que novos itens encontram-se à disposição na biblioteca.
Verificar informações sobre os itens de configuração. Os relatórios de situação da GCS
devem ser verificados pelo Responsável pela GCS para detectar possíveis inconsistências
entre a situação relatada e a real, mesmo quando a geração dos relatórios for automatizada.
Esta atividade consiste de:
187
•
Verificar se os registros foram feitos de maneira incorreta.
•
Verificar se as informações fornecidas estão incompletas.
Obter relatórios da situação da configuração ad hoc. Esta atividade é realizada por um
cliente da GCS que tenha autorização de acesso à base de dados da GCS e das solicitações
de modificação, que necessite de informações sobre a configuração ou sobre as
modificações. Consiste em:
•
Acessar a biblioteca da GCS, através da aplicação disponível.
•
Selecionar e obter o tipo de relatório desejado.
4.4.7
O Processo Gerenciamento das Solicitações de Modificação
O processo de Gerenciamento das Solicitações de Modificação é composto pelas atividades
fundamentais do controle das modificações, identificadas e descritas durante o processo de
implantação da GCS, que serão executadas nos projetos.
A necessidade de uma modificação surge devido a um evento verificado durante a
utilização do produto, que pode ser uma mudança nos requisitos, a introdução de novas
funcionalidades ou melhoria, a correção de erros ou evolução do ambiente operacional.
Este evento, registrado em um Relatório de Ocorrência, originado do processo Solucionar
Problemas, é a entrada para o processo de Gerenciamento das Solicitações de Modificação.
Um Relatório de Ocorrência é encaminhado ao Responsável pela GCS quando a ocorrência
relatada envolver uma modificação em um ou mais itens de configuração de software. Uma
solicitação de modificação (SM) é então registrada, para cada item de configuração a ser
modificado.
As solicitações de modificação têm um ciclo de vida que deve ser suportado pela GCS.
Estas solicitações, fechadas ao final do processo, devem ser mantidas na base de dados das
188
solicitações de modificação, de modo a que os relacionamentos entre as solicitações de
modificações e os itens de configuração afetados sejam mantidos.
O processo de Gerenciamento das Solicitações de Modificação é iniciado após a primeira
configuração-base ser estabelecida.
4.4.7.1
Objetivos e requisitos básicos do processo
O objetivo deste processo é garantir que as solicitações de modificação sejam gerenciadas,
acompanhadas e controladas, possibilitando a identificação das modificações feitas em
qualquer versão de um item de configuração, em relação à anterior.
Para isto, todas as solicitações de modificação nos itens de configuração devem ser
registradas, bem como o estado de cada uma delas. A relação de uma solicitação de
modificação com o Relatório de Ocorrência que a originou deve ser mantida, bem como
relacionamentos com outras solicitações de modificação e a configuração-base à qual a
modificação se refere. O ciclo de vida da solicitação de modificação deve ser
acompanhado, bem como as atividades do Grupo de Controle de Modificações (GCC).
Os principais requisitos para este processo são:
As solicitações de modificação devem ser registradas e identificadas. Uma identificação
única deve ser atribuída à solicitação de modificação e esta deve ser registrada e
armazenada apropriadamente.
Dependências e relacionamentos com outras solicitações de modificação são definidos.
Os relacionamentos entre a solicitação de modificação e o Relatório de Ocorrência que a
originou e outras solicitações de modificação, devem ser estabelecidos e mantidos.
As solicitações de modificação são priorizadas, os recursos necessários são estimados e
critérios para confirmação da implementação das solicitações de modificação são
189
definidos. Isto envolve a avaliação do impacto das modificações, dos recursos necessários
para sua implementação, dos benefícios resultantes desta implementação e também um
cronograma para execução da modificação.
As modificações são aprovadas com base na prioridade e disponibilidade de recursos.
Todas as modificações devem ser aprovadas antes da implementação, de acordo com o
resultado da avaliação de impacto, que leva em conta a prioridade e os recursos disponíveis
para a implementação.
As modificações aprovadas são implementadas e acompanhadas até seu fechamento.
As atividades de verificação e validação a serem executadas para as modificações
implementadas devem ser identificadas, o cronograma para a modificação deve ser seguido
e as modificações, após a implementação, devem ser revistas.
O estado de todas as solicitações de modificação é conhecido. Todas as modificações
devem ser revistas após a implementação e antes do fechamento da solicitação de
modificação.
Um processo efetivo para o gerenciamento de solicitações de modificação requer algum
tipo de ferramenta ou procedimento de suporte. Uma ferramenta automatizada para a
geração das solicitações de modificação (Sistema de Acompanhamento), que faça cumprir
o fluxo do processo de modificação, registrando as decisões do GCC e as demais
informações do processo de modificação pode ser utilizada.
Os requisitos básicos do processo de Gerenciamento das Solicitações de Modificação são
atendidos pelas atividades representadas através do diagrama de caso de uso da Figura 4.25.
As atividades que estão fora do escopo do processo da GCS aparecem no diagrama na cor
cinza. Diagramas de atividades são também utilizados para representar a visão dinâmica do
processo.
190
<<perform>>
Responsável
pela Qualidade
<<perform>>
Identificar atividades de
verificação/validação
Avaliar produto
de trabalho
Identificar e
registrar SM
<<perform>>
Responsável
pela GCS
<<perform>>
<<perform>>
Relatar situação
das modificações
Avaliar impacto da
modificação
<<perform>>
Presidente
do GCC
<<perform>>
Agendar
modificação
<<assist>>
<<assist>>
Membro
do GCC
Responsável
pelo produto
<<assist>>
Revisar modificação
implementada
<<perform>>
<<perform>>
Desenvolver
produto
Aprovar
modificação
FIGURA 4.25 – O Processo de Gerenciamento das Solicitações de Modificação.
4.4.7.2
Papéis, Responsabilidades e Produtos Envolvidos no Processo
O Responsável pela GCS recebe o Relatório de Ocorrência, com as modificações propostas
e registra uma Solicitação de Modificação (SM) para cada item de configuração a ser
modificado, encaminhando-as ao Presidente do Grupo de Controle de Configuração (GCC).
A formação do GCC é definida no planejamento de acordo com o tipo de controle desejado
191
para o projeto e fase de desenvolvimento. De acordo com a demanda das solicitações, o
GCC reúne-se para deliberar sobre as modificações propostas. Cabe ao Presidente do GCC
a condução e registro das atividades do grupo e a decisão final pela aprovação ou não da
modificação. Este deve ter, portanto, a autoridade necessária para aprovar a modificação na
configuração-base. As reuniões podem ser formais, onde os membros do GCC se reúnem
fisicamente para as deliberações ou informais, através da comunicação por meio eletrônico,
de acordo com o tipo de item ou fase de desenvolvimento, definidos no PGCS.
Após aprovação da modificação para implementação, o GCC agenda a modificação e
encaminha a SM ao Responsável pelo Produto para implementar a modificação, dentro de
um prazo estabelecido. A atividade de Liberar Item de Configuração para Produção é
realizada, para que cópias de trabalho dos itens de configuração sejam liberadas para o
Responsável pelo Produto, que as utiliza para preparar as novas versões dos itens. Após
implementar a modificação, atividade identificada neste processo como Desenvolver
Produto, o Responsável pelo Produto registra na SM a modificação realizada e a encaminha
à Qualidade, juntamente com o item de configuração modificado. A atividade de Avaliar
Produto de Trabalho é realizada pela Qualidade, para que se proceda às atividades de
verificação/validação no item modificado, conforme identificadas anteriormente no
planejamento da qualidade. A aprovação do item modificado é registrada na SM pela
Qualidade, ao final dessas atividades. A modificação tem sua implementação verificada
pelo GCC, a SM tem seu estado atualizado para Fechada, e é, então, armazenada. A
atividade de Armazenar Item de Configuração para Produção é realizada, de maneira que o
item modificado seja incorporado à biblioteca da GCS.
Se a modificação não for aprovada, o Presidente do GCC registra na SM os motivos da
rejeição, a SM tem o estado atualizado para Rejeitada e é armazenada.
Através do estado da SM, o processo Solucionar Ocorrências é informado do fechamento
ou rejeição das SMs relacionadas a uma ocorrência, para que o Relatório de Ocorrência que
192
originou as SMs seja também fechado ou, no caso de rejeição, sejam tomadas as medidas
necessárias.
Durante todo o processo, o estado de progresso da atividade é obtido através do estado da
SM que é registrado, podendo ser verificado a qualquer tempo. Relatórios de controle das
modificações são gerados para que a situação das modificações seja divulgada aos
envolvidos no processo, quando necessário.
Os diagramas de classes das Figuras 4.26 e 4.27 mostram os relacionamentos entre os
papéis e os produtos associados ao processo de Gerenciamento das Solicitações de
Modificação.
193
Item de
Configuração
Relatório de Controle
de Modificações
Solicitação de
Modificação
Relatório de
ocorrência
Responsável
pela GCS
PGCS
Histórico de
Modificação
Registro de estado de
progresso
Sistema de
Acompanhamento
FIGURA 4.26– O Responsável pela GCS e os Produtos do Processo de Gerenciamento das
Solicitações de Modificação.
194
Item de
Configuração
Configuração
do Produto Relatório de Controle
de Modificações
Solicitação de
Modificação
Check-list de Avaliação
de Impacto da
Modificação
Relatório de
ocorrência
Presidente
do GCC
PGCS
Histórico de
Modificação
Registro de estado de
Produto de
progresso
trabalho
Sistema de
Acompanhamento
FIGURA 4.27 – O Presidente do GCC e os Produtos do Processo de Gerenciamento das
Solicitações de Modificação.
4.4.7.3
Atividades do Processo
Os diagramas de atividades do processo de Gerenciamento das Solicitações de
Modificação, Figuras 4.28 e 4.29, mostram o fluxo das atividades e os estados das
solicitações de modificação durante a execução do processo de controle das solicitações de
195
modificação. Estes diagramas compreendem as atividades básicas do gerenciamento das
solicitações de modificação, que consistem no registro da solicitação e no acompanhamento
desta solicitação por todo seu ciclo de vida.
As atividades do GCC são realizadas durante reuniões onde os seus membros, liderados
pelo Presidente do GCC, deliberam sobre a avaliação do impacto, a aprovação, o
agendamento e a verificação das modificações. Estas reuniões devem ocorrer
periodicamente, quando um certo número de SMs forem acumuladas, ou excepcionalmente,
quando o Presidente do GCC julgar necessário, de acordo com o tipo de modificação
solicitada ou fase do desenvolvimento do projeto. A comunicação da reunião para os
membros do GCC deve ser feita de maneira automatizada, atravé s de um mecanismo de
comunicação ou de agenda disponíveis. As atividades e deliberações do GCC podem ser
realizadas em reuniões onde os membros do GCC encontram-se fisicamente ou através de
um serviço de mensagens eletrônicas. Estas deliberações podem ocorrer em uma só reunião
ou várias, dependendo da quantidade de SMs tratadas.
4.4.7.3.1
Atividade Identificar e Registrar a Solicitação de Modificação
Esta atividade é realizada pelo Responsável pela GCS e inicia-se com o recebimento de um
Relatório de Ocorrência. Esse relatório deve conter uma proposta de solução para uma
ocorrência levantada que envolve a modificação de um ou mais itens de configuração. Para
cada item de configuração a ser modificado deve ser identificada e registrada uma
Solicitação de Modificação. Esta atividade consiste em:
•
Abrir uma nova SM para cada item de configuração que deve ser modificado,
identificando-a unicamente, conforme planejado.
•
Registrar informações de abertura da SM: a identificação do Relatório de
Ocorrência que originou a SM, identificação do projeto, identificação de
módulo/subsistema a que pertence o item, identificação do item de configuração,
196
tipo da modificação (corretiva, evolutiva, adaptativa e preventiva), sugestão de
solução, data da abertura.
Responsável
pela GCS
Relatório de
Ocorrência
Identificar e
Registrar a
SM
Presidente
GCC
SM
{Aberta}
Check-list para
avaliação de
impacto
Avaliar impacto
da modificação
SM
{Sob Avaliação}
Aprovar
modificação
rejeitada
aprovada
SM
{Rejeitada}
SM
{Aprovada para
Implementação}
FIGURA 4.28 – Diagrama de Atividades do Processo de Gerência das Solicitações de
Modificação – Avaliação e Aprovação de uma SM.
197
•
Registrar o estado da SM (Aberta). Esta informação será atualizada ao longo do
processo, de acordo com o andamento do mesmo.
•
Encaminhar a(s) SM(s) ao Presidente do GCC, para ser avaliada.
4.4.7.3.2
Atividade Avaliar Impacto da Modificação
A avaliação do impacto da modificação consiste em:
•
Atualizar o estado da(s) SM(s) para Sob Avaliação.
•
Realizar a avaliação, seguindo os critérios do check-list de avaliação de impacto da
modificação, que deve incluir:
o Verificação de requisitos afetados ou em conflito com a modificação,
possíveis efeitos adversos da implementação da modificação e efeitos nos
requisitos não funcionais.
o Avaliação dos recursos necessários para desenvolvimento da modificação
proposta, como custos, pessoas e tempo.
o Avaliação dos benefícios da modificação proposta e as conseqüências de não
realizá-la.
•
Atribuir uma prioridade à(s) SM(s), indicando a urgência da realização da
modificação.
•
Atribuir um grau de impacto da modificação. Por exemplo, uma modificação pode
ser de pequeno, médio ou grande impacto, dependendo da quantidade de recursos e
esforços necessários.
198
4.4.7.3.3
Atividade Identificar Atividades de Verificação/Validação
Esta atividade consiste na identificação do escopo das atividades de verificação e validação
a serem realizadas. Isto deve ser feito antes da modificação ser implementada, para que
sejam estimados os esforços e recursos para os testes necessários e para que as condições
de contorno sejam previstas. Esta atividade é realizada pela Qualidade, durante o
planejamento, para cada tipo de produto de trabalho.
4.4.7.3.4
Atividade Aprovar Modificação
A aprovação da modificação é de responsabilidade do Presidente do GCC, que toma esta
decisão com base na prioridade estabelecida para a modificação e na disponibilidade dos
recursos necessários.
A aprovação da modificação consiste em:
•
Verificar a disponibilidade dos recursos avaliados para as SMs existentes.
•
Aprovar ou reprovar a implementação da modificação, seguindo a ordem de
prioridade.
4.4.7.3.5
Atividade Agendar Modificação
Esta atividade realizada pelo GCC consiste em:
•
Verificar se os custos estimados estão dentro do orçamento geral e os recursos,
disponíveis. Para isto, informações de planejamento do projeto precisam ser
consultadas. Em caso negativo, a modificação deve ser adiada, sendo este estado
devidamente registrado na SM.
199
Responsável
pela Qualidade
Presidente do
GCC
Responsável
pelo produto
SM
{Aprovada para
Implementação}
Agendar
modificação
adiada
SM
{Encaminhada para
implementação}
Avaliar produto
de trabalho
SM
{Verificada}
Desenvolver
produto
SM
{Implementada}
Revisar modificação
implementada
SM
{Fechada}
FIGURA 4.29 - Diagrama de Atividades do Processo de Gerência das Solicitações de
Modificação - Encaminhamento para Implantação e Fechamento de SM.
•
Decidir em qual configuração-base a modificação será incorporada: na atual ou na
próxima a ser estabelecida.
•
Definir uma data para implementação da modificação e atribuí- la ao Responsável
pelo Produto ou desenvolvedor designado para implementá-la.
200
4.4.7.3.6
Atividade Desenvolver Produto
Esta atividade é realizada pelo Responsável pelo Produto ou outro desenvolvedor
designado pelo Gerente de Projeto, na condição de membro do GCC, conforme a
disponibilidade de recursos, e consiste na implementação das modificações indicadas na
SM. Esta atividade não está no escopo da GCS, mas sim no do desenvolvimento. Após o
término da implementação, o Responsável pelo Produto deve registrar na SM as seguintes
informações:
•
A descrição da implementação.
•
O esforço real despendido na implementação (horas trabalhadas).
•
A data de encaminhamento do produto para avaliação.
4.4.7.3.7
Atividade Avaliar Produto de Trabalho
Esta atividade é realizada pelo processo de Controle da Qualidade e também está fora do
escopo da GCS.
Ao final da atividade, deve-se registrar na SM:
•
O responsável pela avaliação do item modificado.
•
A data da avaliação.
•
O parecer do responsável pela avaliação.
4.4.7.3.8
Atividade Revisar Modificação Implementada
A atividade de revisão da modificação, feita pelo GCC após sua implementação, consiste
em verificar se as modificações tiveram o efeito desejado e alcançaram os objetivos
201
definidos. Caso as modificações não tenham alcançado os objetivos e efeitos desejados, o
GCC deve registrar uma nova ocorrência e submetê- la ao Solucionador de Ocorrência.
Ao final da atividade, deve-se registrar na SM:
•
O responsável pela revisão.
•
A data da revisão.
•
O parecer do responsável pela revisão.
4.4.7.3.9
Atividade Relatar Situação das Modificações
Esta atividade consiste na geração dos Relatórios de Controle das Modificações, e é
realizada pelo Responsável pela GCS, periodicamente, para relatar a situação das
modificações já realizadas e das que estão em andamento. Estes relatórios contêm
informações sobre as Solicitações de Modificação (SM) do tipo:
•
Relação dos relatórios de ocorrência e solicitações de modificação associadas.
•
O número de modificações de um projeto.
•
Quantas SMs foram: abertas, agendadas, fechadas.
•
Relação de SMs por prioridades.
•
Quantas SMs foram atribuídas a cada desenvolvedor.
•
Quantas SMs ainda não foram fechadas.
•
Em quanto tempo as SM são fechadas.
•
Quantas SMs são abertas por dia, semana, mês; quantas são fechadas.
202
CAPÍTULO 5
O SUPORTE AUTOMATIZADO AO PROCESSO DA GERÊNCIA DAS
MODIFICAÇÕES E DA CONFIGURAÇÃO
Segundo (Dart, 1992) uma solução de gerenciamento da configuração de software para
uma organização ou projeto envolve planejamento, definição de um processo,
negociação com pessoas, suporte automatizado e decisões gerenciais.
Estes aspectos podem ser contemplados quando a GCS se insere em um Ambiente
Integrado utilizado para gestão e desenvolvimento de projetos de software. O
planejamento da GCS consiste na escolha das estratégias apropriadas da GCS para a
organização como um todo, bem como a adequação destas a um projeto em particular,
que resulta na criação do Plano da GCS do projeto. O suporte adequado à definição e
estabelecimento do processo é efetuado com a ajuda do Ambiente através de atividades
automatizadas, de serviços e ferramentas; a negociação com pessoas é facilitada pelos
mecanismos de comunicação do Ambiente e da clara definição de papéis. Tomadas de
decisões gerenciais são facilitadas com a base de conhecimento do Ambiente, que
captura as informações da GCS e as fornece em forma de relatórios fixos ou consultas
ad hoc.
A modelagem do processo da GCS, apresentada no Capítulo 4, foi fundamental para a
sua compreensão, possibilitando a identificação de ferramentas e atividades que podem
ser automatizadas para fornecer, no conjunto, uma solução de GCS. Esta solução deve
levar em conta um número mínimo de funcionalidades, dentro do escopo das práticas
básicas do modelo do padrão ISO/IEC 15504.
Neste Capítulo, um protótipo de aplicação denominado Change and Configuration
Management
é
apresentado
para
ilustrar
algumas
destas
funcionalidades
e
possibilidades de automação de partes do processo, como o gerenciamento das
solicitações de modificação. Os recursos necessários para a implementação do processo
da GCS no Ambiente são também apresentados.
203
Inicialmente são feitas algumas considerações sobre as funcionalidades para a GCS no
Ambiente Integrado.
5.1
Os Requisitos para a GCS no Ambiente Integrado
Segundo Van Brunt (Van Brunt, 1996) a implantação da GCS em uma organização deve
ser incremental. A integração de funcionalidades ao longo do tempo pode ser uma
solução mais demorada, mas mais vantajosa sob o aspecto de choque cultural. Assim,
procurou-se nesta abordagem do processo da GCS contemplar inicialmente as seguintes
funcionalidades:
•
O gerenciamento do processo.
•
O desenvolvimento de software baseado em configurações-base.
•
O suporte ao ciclo de vida do item de configuração.
•
Suporte ao controle de versões:
o Biblioteca da GCS, contendo os itens de configuração e seus metadados,
e base de dados das Solicitações de Modificação.
o Políticas de check-in/checkout e composição.
•
Política de liberação.
•
Suporte ao ciclo de vida de uma solicitação de modificação.
•
Integração com o processo de Garantia do Produto.
5.1.1
Gerenciamento do Processo da GCS
O gerenciamento do processo da GCS no Ambiente deve ser definido em termos de
marcos, regras e responsabilidades durante o processo de desenvolvimento de software
de maneira a garantir que as modificações introduzidas no software sejam
204
cuidadosamente conduzidas através deste ciclo de vida com o nível de qualidade mais
alto possível.
Uma organização usuária do Ambiente deve ter a capacidade de adequar a GCS ao seu
estilo de desenvolver software. Isto requer funções de controle de processo que
permitam:
•
Atribuição de permissões aos usuários do Ambiente, vinculadas aos papéis que
desempenham, para controlar o acesso aos itens de configuração.
•
Possibilidade de definir fases dos processos e as transições entre elas – através
dos estados dos itens de configuração e das solicitações de modificação.
•
Definir uma maneira controlada de desenvolvimento com responsabilidades
claras e alto nível de visibilidade. A existência de marcos da GCS coincidentes
com os do ciclo de vida do projeto de software, garante que os itens de
configuração passarão pelos estágios desejados (produção, verificação pelo
controle da qualidade, estabelecimento de configurações-base e controle das
modificações), antes que o produto seja distribuído.
•
Graduar os níveis de autoridade para aprovação das modificações através de
vários Grupos de Controle de Configuração (GCCs), associados a tipos de
projetos ou etapas do desenvolvimento.
•
Permitir diferentes mecanismos de comunicação entre os envolvidos no
processo, de maneira a tornar mais ou menos formal esta comunicação, como no
caso das reuniões do GCC, por exemplo, que podem ocorrer fisicamente ou
através de trocas de mensagens eletrônicas entre seus membros.
•
Documentar as estratégias e o planejamento do processo, para que este seja
estabelecido e se torne gerenciado, isto é, possa ser executado para todos os
projetos da organização usuária do Ambiente.
205
5.1.2
Desenvolvimento de Software Baseado em Configurações-base
A GCS no Ambiente deve suportar o desenvolvimento de software baseado em
configurações-base. Itens de configuração são criados e modificados livremente pelo
responsável pelo produto na sua área de trabalho até que sejam encaminhados ao
Ambiente para serem aprovados pela qualidade, segundo critérios definidos para cada
tipo de item, e controlados, isto é, passarem a fazer parte de uma configuração-base de
projeto, na biblioteca controlada. As modificações nas configurações-base passam a ser,
então, controladas e acompanhadas pela GCS no Ambie nte.
Isto permite o apoio gerencial através do acompanhamento do desenvolvimento do
projeto pela evolução das configurações-base; após entrega do produto, através do
controle das distribuições do software, e durante todo o ciclo de vida do produto, pelo
acompanhamento de suas modificações.
5.1.3
Suporte ao Ciclo de Vida do Item de Configuração
Um item de configuração no Ambiente Integrado deve ter um ciclo de vida que consiste
de um conjunto de transições de estado, que definem qual papel um usuário da GCS
deve ter para mover o item de um estado para outro e o evento que provoca a transição.
Um produto de trabalho, ou item de configuração, depois de finalizado é identificado e
encaminhado pelo Responsável pelo Produto ao Ambiente, para ser avaliado e aprovado
pela Qualidade. Quando um marco específico do projeto é atingido, uma configuraçãobase é estabelecida com as versões atuais e aprovadas dos itens de configuração que a
compõem, que passam, então, para o controle da GCS.
Assim, o desenvolvimento continua, com os usuários e desenvolvedores tendo por base
a configuração estabelecida na biblioteca controlada. Modificações nos itens
controlados só podem ser feitas mediante um registro de uma ocorrência, através do
processo Solucionar Ocorrências.
206
5.1.4
Suporte ao Controle de Versões
O controle de versões é essencial, pois fornece o mecanismo para manter o histórico das
modificações nos itens de configuração encaminhados ao Ambiente. Para que se
estabeleça um controle sobre as diversas versões de um item de configuração, todas
devem ser armazenadas e identificadas unicamente. O esquema de identificação das
versões dos itens pode ser feito em forma de árvore, para permitir a identificação única
e das ramificações a partir de qualquer versão, ao mesmo tempo em que mantém o
histórico das versões.
5.1.4.1
Biblioteca da GCS
A biblioteca da GCS pode ser estruturada como uma hierarquia de arquivos e diretórios,
em forma de árvore, no repositório de produtos do Ambiente. Um usuário deste sistema
deve poder obter não somente a versão mais recente de um item de configuração, mas
também as anteriores. Para isto devem ser mantidos os metadados de descrição do item
de configuração e registros de histórico, que contêm informação suficiente para recriar
qualquer versão do arquivo.
A biblioteca da GCS pode ser, assim, composta por um módulo (ou mais de um) que é
uma hierarquia de diretório. Um projeto de software é identificado como um único
módulo na biblioteca.
5.1.4.2
Política Check-in/Checkout e Composição
As políticas empregadas para o armazenamento e acesso aos itens de configuração na
biblioteca controlada no Ambiente devem ser baseadas nas políticas de check-in/checkout e composição.
Operações básicas da política de check-in/check-out devem ser implementadas de
maneira a permitir que os itens de configuração sejam armazenados e acessados de
maneira controlada. Isto requer mecanismos de controle de acesso baseados em
autorizações e no estado do item, segundo o seu ciclo de vida definido.
207
A política de composição possibilita a criação de configurações-base, a partir da
biblioteca controlada, ou seja, agregações de itens de configuração identificadas por um
rótulo atribuído a todos os elementos do conjunto, em marcos específicos do
desenvolvimento do software, constituindo as configurações-base do projeto.
5.1.5
Política de Liberação
Todos os itens de configuração devem ser liberados e distribuídos pela GCS. Itens de
configuração não devem ser aceitos em qualquer situação senão diretamente da GCS.
Os desenvolvedores devem ter como objetivo o encaminhamento do item à Qualidade,
juntamente com as informações necessárias, para posterior controle pela GCS. Isto evita
problemas de inconsistência de versões na geração das distribuições e auditorias
adicionais nos produtos controlados quando forem efetivamente ent regues.
5.1.6
Suporte ao Ciclo de Vida de uma Solicitação de Modificação
Uma solicitação de modificação (SM) deve ter um ciclo de vida bem definido pela GCS
no Ambiente.
O Ambiente deve oferecer o suporte necessário a este ciclo de vida, de maneira a
agilizar o trabalho dos envolvidos nas atividades, documentar cada etapa do processo e
fornecer a visibilidade do estado da modificação, através do estado da SM.
Além disto, as Solicitações de Modificação devem ser mantidas em uma base de dados
a fim de que possam ser extraídos os relatórios de modificações e ser mantida a
rastreabilidade destas com os itens de configuração.
5.1.7
Integração com a Garantia do Produto
O processo da Garantia de Produto no Ambiente Integrado engloba as atividades de
encaminhamento, verificação e controle de produtos desenvolvidos em um projeto, após
sua confecção ou modificação.
208
Este processo, na visão da Gerência da Qualidade do Ambiente (Lahoz, 2004), consiste
no encaminhamento dos produtos de um projeto para avaliação e posterior
encaminhamento à GCS. Um produto de trabalho só será efetivamente controlado após
sua confecção ou modificação, avaliação (com parecer de conformidade satisfatório) e
armazenamento na biblioteca da GCS no repositório do Ambiente Integrado.
Este processo engloba parte da atividade de identificação da configuração, já que
quando os produtos de trabalho individuais são encaminhados pelos desenvolvedores os
metadados de identificação associados ao item são também fornecidos.
O processo de encaminhamento do produto é a interface de entrada de um item de
configuração no Ambiente.
5.2
A Implementação do Protótipo Change and Configuration Management no
Ambiente Integrado
O protótipo Change and Configuration Management foi elaborado para demonstrar
algumas das funcionalidades do processo da GCS, conforme modelado no Capítulo 4. A
elaboração do protótipo contribuiu também para a identificação dos serviços mínimos
necessários para a implementação dos processos da GCS no Ambiente Integrado.
Sendo parte essencial do processo da GCS, o gerenciamento das solicitações de
modificação foi adotado como base para a implementação do protótipo, ainda que
algumas interfaces dos outros processos da GCS tenham sido elaboradas para dar uma
idéia geral da GCS no Ambiente.
Nas seções seguintes deste Capítulo apresentam-se as definições dos requisitos mínimos
para o protótipo intitulado Change and Configuration Management, bem como os
recursos necessários, em termos de ferramentas e serviços, que o Ambiente Integrado
deve prover para que os processos da GCS possam ser implementados de forma a
atender seus objetivos.
209
5.2.1
Os Requisitos do Protótipo
Para que se possa visualizar, de uma forma gráfica, os requisitos para o protótipo
Change and Configuration Management , é utilizado o diagrama de contexto da UML
(Booch et al., 2000), conforme a Figura 5.1.
Change and Configuration
Management
Definir
Estratégias da
GCS
Planejar a
GCS
Gerente das
Modificações e da
Configuração
Gerenciar
Configuraçõesbase
Responsável pelo
Produto
Responsável
pela GCS
Gerenciar
solicitações de
Modificação
Presidente
do GCC
Cliente da
GCS
FIGURA 5.1 – Diagrama de Contexto do protótipo Change and Configuration
Management.
A seguir são descritos os componentes do diagrama de contexto apresentado
anteriormente.
210
5.2.1.1
Definir Estratégias da GCS
Através desta funcionalidade, o Gerente das Modificações e da Configuração
documenta as estratégias da GCS na organização, de maneira que estas possam ser
utilizadas para todos os projetos, incorporando também as definições, convenções e
procedimentos criados ou atualizados durante a execução dos projetos. Esta
funcionalidade pode ser detalhada conforme o diagrama de casos de uso da Figura 5.2.
Definir objetivos e
escopo da GCS
Gerente das
Modificações e da
Configuração
Definir
procedimentos e
convenções para as
atividades da GCS
Definir estratégias para
desenvolvimento
paralelo
Definir métricas para
a GCS
Definir estratégias
para o planejamento
da GCS
FIGURA 5.2 – Diagrama de Casos de Uso da Definição das Estratégias da GCS.
As Figuras C.3 a C.5 do Apêndice C ilustram algumas telas do protótipo relacionadas a
esta funcionalidade, realizadas pelo papel SCM Manager.
5.2.1.2
Planejar a GCS
Esta funcionalidade tem por objetivo auxiliar o Gerente das Modificações e da
Configuração no planejamento da GCS, através da definição: das relações com o
ambiente de projeto; das atividades, fases e marcos da GCS; das responsabilidades dos
211
envolvidos no processo e do ambiente da GCS, entre outras atividades, que permitem a
implantação da GCS com sucesso no projeto. Esta funcionalidade pode ser detalhada
conforme o diagrama de casos de uso da Figura 5.3.
Definir relações com
ambiente de projeto
Definir linhas de
desenvolvimento
Definir a atividade de
identificação da
configuração
Definir a atividade de
armazenamento e
controle
Gerente das
Modificações e da
Configuração
Definir a atividade de
avaliação da
configuração
Definir atividade d e
controle das
modificações
Definir relato da
situação
Definir Ambiente
da GCS
Definir ferramentas,
técnicas e métodos
Definir tarefas, fases
e marcos
FIGURA 5.3 – Diagrama de Casos de Uso do Planejamento da GCS.
As Figuras C.6 e C.7 do Apêndice C ilustram algumas telas desta funcionalidade
relacionadas ao papel SCM Manager.
212
5.2.1.3
Gerenciar Configurações-base
O principal objetivo desta funcionalidade é estabelecer as atividades para manter a
integridade das configurações-base de projeto e fornecer, aos envolvidos no processo da
GCS, o acesso aos itens de configuração e às informações referentes a eles. Esta
funcionalidade consiste em descrever os itens de configuração, armazená- los na
biblioteca da GCS e controlar o acesso aos mesmos, bem como controlar, registrar e
incorporar as modificações feitas neles, após a aprovação da Qualidade, e, ainda relatar
a situação da configuração e das modificações.
Durante estas atividades o item de configuração segue um ciclo de vida simplificado
que pode ser visualizado na Figura 5.4.
encaminhar produto
Encaminhado
encaminhar produto
check-in
Controlado
check-out
Sob Modificação
FIGURA 5.4 – Ciclo de Vida de um Item de Configuração.
Para entender o contexto do gerenciamento das configurações-base, é necessário
entender como deve ser feito o encaminhamento dos produtos ao Ambiente, através de
processo específico da Qualidade.
Um Responsável pelo Produto, ao terminar a confecção do seu produto de trabalho,
deve identificá- lo e encaminhá- lo ao Ambiente, formalizando assim, temporariamente, a
entrega de seu produto, ou seja, o final de sua fabricação. No encaminhamento do
213
produto, este deve ser identificado e descrito conforme definido no planejamento da
GCS. Itens modificados estão sujeitos ao mesmo procedimento de encaminhamento ao
Ambiente (Lahoz, 2004). Nesta fase, o estado do item está no estado Encaminhado.
Os itens encaminhados, antes de serem controlados pela GCS, devem sofrer uma
avaliação em marcos específicos do projeto, feita segundo o tipo e categoria dos itens,
no intuito de garantir que atendam a seus requisitos, tanto de formato como de conteúdo
e funcionalidade (Lahoz, 2004).
Quando é atingido o marco de projeto específico, conforme planejamento da GCS, uma
configuração-base é criada na biblioteca da GCS, contendo todos os itens de
configuração que a compõem e estão aprovados pela Qualidade, que passam para o
estado Controlado e a pertencer à biblioteca controlada. A partir daí, a configuraçãobase fica sujeita ao controle da GCS. Registros de históricos devem ser mantidos, de
maneira que as modificações e o acesso aos itens de configuração e as distribuições dos
mesmos sejam mantidos.
Quando uma solicitação de modificação em um item é aprovada para implementação, o
item de configuração é retirado da biblioteca controlada para a área de trabalho do
desenvolvedor (check-out) e tem seu estado atualizado para Sob modificação,
impedindo que outras operações de check-out sejam realizadas. Quando o item retirado
é encaminhado novamente para o Ambiente, após a aprovação da implementação pela
Qualidade, o item é colocado de volta na biblioteca (checked-in), este tem seu estado
atualizado para Controlado, e uma nova versão do mesmo é criada. Operações get
efetuadas sobre itens que estão sob modificação são registradas para que os usuários
sejam informados depois que a nova versão do item obtido foi colocado na biblioteca.
As operações de check-in/out na biblioteca da GCS são realizadas pelo Responsável
pela GCS.
Esta funcionalidade pode ser detalhada conforme o diagrama de casos de uso da Figura
5.5. O papel de Cliente da GCS representa, nesse diagrama, todos os clientes da GCS,
incluindo gerentes, desenvolvedores, clientes externos e demais envolvidos no processo
214
que têm permissão para obter produtos de trabalho da GCS, como itens de configuração
e relatórios.
Descrever item
de configuração
Responsável pelo
Produto
Criar
Configuraçõesbase
Incorporar
modificações às
configuraçõesbase
Responsável pela
GCS
Liberar IC para
modificação
Obter IC
para
utilização
Obter situação da
configuração e das
modificações
Cliente da GCS
Registrar
distribuição de
configuraçãobase
FIGURA 5.5 – Diagrama de Casos de Uso do Gerenciamento das Configurações-base.
5.2.1.3.1
Caso de Uso Descrever Item de Configuração
Neste caso de uso o Responsável pelo Produto registra no formulário de
encaminhamento do produto as informações referentes à identificação do item de
215
configuração, que serão armazenados na biblioteca controlada. Este caso de uso é
realizado quando o produto é encaminhado ao Ambiente.
5.2.1.3.2
Caso de Uso Criar Configurações-base
Este caso de uso permite que o Responsável pela GCS crie uma configuração-base a
partir da biblioteca da GCS, através da seleção dos itens que fazem parte da
configuração-base e da identificação e descrição da configuração-base criada. A criação
de uma nova configuração-base deve ser automaticamente comunicada a todos os
Clientes da GCS. Uma lista de composição da configuração-base deve ser emitida e
associada à configuração-base, indicando todos os itens que fazem parte da
configuração-base, com suas respectivas versões (Figura C.28).
5.2.1.3.3
Caso de Uso Liberar IC para Modificação
Através deste caso de uso o Responsável pela GCS realiza a operação de check-out ou
retirada de um ou mais itens de configuração para a área de trabalho do Responsável
pelo Produto para que as modificações sejam implementadas. O Responsável pelo
Produto ou desenvolvedor designado para implementar a modificação deve ser
informado de que o item está disponível na sua área de trabalho. Esses itens, que ficam
no estado Sob Modificação, não podem ser retirados novamente para modificação até
que as modificações já aprovadas para implementação sejam incorporadas à
configuração-base. Os itens podem ser obtidos para utilização somente, pelos Clientes
da GCS, que, no entanto, devem ser informados do estado do item. Se o cliente optar
pela obtenção do item, ele deve ser informado da atualização da versão do item na
configuração-base, quando esta ocorrer.
5.2.1.3.4
Caso de Uso Incorporar Modificações nas Configurações-base
Este caso de uso permite que o Responsável pela GCS incorpore a uma configuraçãobase os itens de configuração que foram modificados. O Responsável pela GCS deve
216
inicialmente selecionar a configuração-base à qual os itens serão incorporados (o default
é a configuração-base atual) e indicar a localização dos mesmos. A operação de checkin é realizada: os itens de configuração têm o estado atualizado para Controlado, os
contadores de número de versão são incrementados, tanto dos itens quanto da
configuração-base a que pertence. O Responsável pela GCS registra as informações
referentes ao histórico da modificação (Figura C.26).
5.2.1.3.5
Caso de Uso Obter IC para Utilização
Através deste caso de uso, um Cliente da GCS pode obter um item de configuração da
biblioteca controlada para utilização. Este caso de uso deve inicialmente permitir ao
Cliente da GCS selecionar a configuração-base (a default deve ser a atual). O esquema
de autorizações existente deve restringir o acesso aos itens para determinados clientes
ou partes da configuração. O cliente deve ter a opção de selecionar o(s) item(ns)
desejado(s), indicar o local onde deseja colocar (o default deve ser a sua área de
trabalho no Ambiente) e efetuar a operação. O cliente deve ser informado se o item
estiver sob modificação, para que tenha a opção de cancelar a operação. O cliente deve
ser solicitado a entrar com o motivo da retirada do item, para o registro de histórico (que
retém informações de quem obteve o item, quando e porque).
5.2.1.3.6
Caso de Uso Obter Situação da Configuração e das Modificações
Este caso de uso trata da obtenção do estado da configuração e das modificações, tanto
através de relatórios periódicos ou obtidos a qualquer mome nto para um determinado
propósito, quanto daqueles gerados automaticamente durante as operações realizadas na
biblioteca da GCS, como a informação da existência de um novo item de configuração
ou configuração-base na biblioteca.
Os relatórios periódicos são obtidos pelo Responsável pela GCS e disponibilizados para
as Gerências pertinentes (qualidade, projeto) e outros envolvidos no projeto.
217
Os relatórios automáticos devem ser gerados quando operações são realizadas na
biblioteca da GCS, como a informação de que um novo item foi inserido na biblioteca.
5.2.1.3.7
Registrar Distribuição de Configuração-base
Através desta funcionalidade as distribuições das configurações-base, geralmente as
configurações-base de produto, são registradas através do preenchimento de uma
solicitação de liberação, para que se tenha um controle sobre elas. Uma distribuição
pode ser liberada a um cliente específico em marcos definidos no planejamento, como
após o estabelecimento da primeira configuração-base de produto, ou quando solicitada
por um cliente autorizado. Consiste na ação de copiar a configuração-base selecionada
para uma área do repositório do Ambiente ou meio físico selecionado, com a verificação
da permissão de liberação do solicitante e o registro da solicitação de liberação
(informações sobre identificação da configuração-base, solicitante, localização de
destino, data da solicitação, data da liberação, responsável pela liberação e o motivo)
(Figura C.27).
5.2.1.4
Gerenciar Solicitações de Modificação
Esta funcionalidade tem por objetivo principal estabelecer as atividades relativas ao
gerenciamento das solicitações de modificação nos itens de configuração, desde sua
abertura até seu fechamento.
Uma modificação em um item de configuração surge como conseqüência de um evento
detectado após o estabelecimento da primeira configuração-base do projeto, que pode
ser uma mudança de requisitos, introdução de novas funcionalidades ou correção de
erros, por exemplo, registrado em um Relatório de Ocorrência, encaminhado ao
Responsável pela GCS, pelo Solucionador da Ocorrência. Uma Solicitação de
Modificação (SM) é então identificada e registrada, quando aberta pelo Responsável
pela GCS, para cada item de configuração afetado pela modificação descrita no
Relatório de Ocorrência e segue um ciclo de vida definido, conforme a Figura 5.6.
218
Todos esses passos são acompanhados pelo Ambiente que altera o estado do processo,
conforme o fluxo do trabalho. O Ambiente deve se encarregar de avisar, na forma de
uma mensagem eletrônica e registro na área de trabalho do Responsável pela GCS, bem
como dos demais envolvidos, das ocorrências, SMs e produtos encaminhados a eles.
Durante este processo o estado da SM varia conforme o andamento do processo, sendo
mudado, até atingir o final do processo de gerenciamento da solicitação de modificação.
Aberta
Fechada
Sob Avaliação
Verificada
Rejeitada
Aprovada
Implementada
Aprovadapara
Implementação
Encaminhada
para
Implementação
FIGURA 5.6 – Ciclo de Vida de uma Solicitação de Modificação (SM).
Os requisitos para o gerenciamento das solicitações de modificação podem ser
visualizados no diagrama de casos de uso da Figura 5.7.
219
Avaliar
Modificação
Presidente
do GCC
Membro do
GCC
Agendar
Modificação
Abrir Solicitação
de Modificação
Verificar
Modificação
Responsável pela
GCS
Registrar
Aprovação do
Item Modificado
Registrar
Implementação da
Modificação
Responsável pelo
Produto
FIGURA 5.7 – Diagrama de Casos de Uso do Gerenciamento das Solicitações de
Modificação.
5.2.1.4.1
Caso de Uso Abrir Solicitação de Modificação
Neste caso de uso, o Responsável pela GCS abre uma Solicitação de Modificação para
cada item de configuração a ser modificado em conseqüência da modificação sugerida
como solução para a ocorrência relatada no Relatório de Ocorrência recebido por ele.
Após preencher os campos do formulário pertinentes, inclusive a identificação do
Relatório de Ocorrência que o originou, o Responsável encaminha as SMs ao Presidente
220
do GCC para avaliação. As Figuras C.10, C.11 e C.12 do Apêndice C ilustram algumas
das telas relacionadas a este caso de uso.
5.2.1.4.2
Caso de Uso Avaliar Modificação
Neste caso de uso, o Presidente do GCC irá registrar individualmente, em cada SM
aberta, os resultados da avaliação da modificação relativos a uma ocorrência, que deve
ser analisada em conjunto pelos membros do GCC, cuja composição foi definida no
planejamento. O Presidente poderá valer-se dos recursos do módulo Meeting Support do
Ambiente para realização das reuniões do GCC. Documentos relevantes para a
realização da avaliação, como o check-list de avaliação de impacto da modificação entre
outros, podem ser enviados em anexo à comunicação da reunião para que os membros
do GCC possam ter subsídios para o seu parecer. Quando reuniões formais não forem
necessárias, o Serviço de Comunicação Assíncrona do Ambiente pode ser utilizado para
a comunicação entre os membros do GCC.
Através de pesquisa dos relacionamentos do item de configuração na biblioteca da GCS,
o Presidente do GCC deve certificar-se de que todos os itens impactados pela
modificação têm uma SM aberta.
Após a conclusão da avaliação, a modificação é aprovada ou rejeitada, de acordo com a
disponibilidade de recursos e impacto no projeto. O resultado deve ser registrado, assim
como o esforço estimado para implementação da modificação em cada item, seu grau de
impacto no projeto e a prioridade de sua execução. Se aprovada, a SM é então
encaminhada para ser age ndada. As Figuras C.14, C15 e C.16 apresentam algumas telas
relacionadas a este caso de uso.
5.2.1.4.3
Caso de Uso Agendar Modificação
Neste caso de uso o Presidente do GCC registra na SM o responsável pela
implementação da modificação aprovada, de acordo com a prioridade da SM e o
planejamento do projeto, conforme decisão do GCC tomada em conjunto. Para isto,
221
recursos do módulo Project Management são utilizados para verificação da
disponibilidade de recursos para alocação à tarefa. De acordo com essa disponibilidade
e o seu impacto, a modificação pode ser adiada ou encaminhada para implementação na
configuração-base atual ou na próxima a ser estabelecida. O Responsável pela GCS é
informado do estado das SMs e retira da biblioteca controlada para a área do
desenvolvedor designado para a implementação da modificação os itens que tiveram a
modificação aprovada para implementação, através do caso de uso Liberar IC para
Modificação. As Figuras C.17 e C.18 ilustram este caso de uso.
5.2.1.4.4
Caso de Uso Registrar Implementação da Modificação
Neste caso de uso o Responsável pelo Produto ou desenvolvedor designado para
implementação da modificação registra o resultado da implementação da modificação e
o esforço realmente despendido na realização do trabalho, encaminhando a SM para
registro do resultado da avaliação do item pela qualidade, após encaminhamento do
produto modificado ao Ambiente. As Figuras C.20 e C.21 apresentam telas do protótipo
relacionadas a este caso de uso.
5.2.1.4.5
Caso de Uso Registrar Aprovação do Item Modificado
Através deste caso de uso é feito o registro da aprovação da implementação da
modificação no item de configuração pela Qualidade. Um item modificado passa, assim,
pelas atividades de verificação e validação conforme seu tipo, e só volta a ser colocado
na biblioteca controlada depois de aprovado pela Qualidade, a fim de que a integridade
da configuração-base seja mantida. As Figuras C.22 e C.23 apresentam as telas do
protótipo referentes a este caso de uso.
5.2.1.4.6
Caso de Uso Fechar SM
Neste caso de uso, o Presidente do GCC fecha uma SM, registrando o resultado da
revisão da modificação, ou seja, a conclusão do GCC referente ao atendimento da
222
modificação implementada aos objetivos definidos e os resultados desejados. As
Figuras C.24 e C.25 apresentam telas do protótipo rela tivas a este caso de uso.
5.3
Os Recursos do Ambiente Necessários para os Processos
Com base nos requisitos apresentados na seção anterior e do protótipo desenvolvido, é
possível definir quais são os recursos necessários, em termos de serviços e ferramentas,
que o Ambiente Integrado deve prover para o suporte e automação dos processos da
GCS apresentados no Capítulo 4.
Para o suporte e automação dos processos da GCS, o Ambiente Integrado deve fornecer
uma infra-estrutura que permita: a manutenção das informações, a automatização ou
execução de atividades do processo e a definição clara do papel de cada participante no
processo. A implementação de serviços que auxiliem a condução e controle do processo
permitirá uma fácil interação com os usuários e um controle efetivo sobre os produtos
de trabalho gerados e utilizados por eles. Isto é possível através da arquitetura lógica
oferecida pelo Ambiente, apresentada no Capítulo 3, composta de três camadas: a de
armazenamento, a de serviços e a de interação com o usuário.
5.3.1
Os Recursos da Camada de Armazenamento e Acesso
Os elementos que compõem esta camada são os elementos responsáveis pelo
armazenamento e acesso às informações de projeto. É através do gerenciamento
disciplinado que estes elementos permitem a integração do ambiente. Em termos de
implementação da arquitetura, estes elementos podem estar em plataformas distribuídas
ou centralizadas, mas devem, de qualquer forma, integrar e gerenciar as informações
dos projetos (Sant’Anna, 2000).
O Ambiente deve prover, através desta camada, o meio físico ou repositório para o
armazenamento da biblioteca da GCS, que contém os itens de configuração e seus
metadados, apresentados no Capítulo 2 (Seção 2.3.2), bem como a base de dados de
223
modificações, composta por todas solicitações de modificação abertas durante o projeto,
conforme apresentadas no protótipo.
Nesta abordagem, portanto, o repositório de produtos do Ambiente é considerado como
a entidade física que detém as bases de informações necessárias para a GCS.
Todos os mecanismos de segurança, controle de acesso físico, procedimentos de backup e restauração das informações, soluções tecnológicas e aplicativos de banco de dados
devem ser providos pela camada de armazenamento e acesso do Ambiente.
5.3.2
Os Recursos da Camada de Serviços
Os elementos que compõem a camada de Serviços trabalham de forma cooperativa
utilizando os elementos da camada de armazenamento e acesso para que as informações
de projeto sejam obtidas e disponibilizadas para a camada de interação com o usuário.
São os serviços relacionados ao trabalho cooperativo, à utilização do conceito de fluxo
de trabalho e de ambiente com conhecimento.
Dos recursos definidos para esta camada pelo Ambiente Integrado (Sant’Anna, 2000) e
necessários para a realização das atividades da GCS, considera-se:
•
O Serviço de Coordenação de Processos do Ambiente, que deve apoiar os
processos
da
GCS,
permitindo
que
sejam
modelados,
configurados,
instanciados, acompanhados e terminados. O Serviço de Coordenação deve
garantir que os processos da GCS sigam seu fluxo normal de execução, avisando
e informando os participantes envolvidos no processo sobre a atual situação das
atividades (status) ou, por exemplo, de ocorrências que o impossibilitem de
terminar.
•
O Serviço de Comunicação Assíncrona do Amb iente deve prover o serviço de
troca de mensagens entre os participantes envolvidos nos processos da GCS.
Este serviço deve ter sempre a participação de um remetente e um destinatário e
conter o assunto a ser tratado. As tarefas básicas deste serviço podem ser
224
automaticamente realizadas pelo Ambiente, como a identificação dos remetentes
e destinatários da mensagem, seus privilégios no Ambiente, endereços
eletrônicos e outras informações básicas. O Ambiente pode também, caso seja
configurado neste serviço, verificar a intervalos pré-definidos de tempo, se a
mensagem foi aberta ou respondida pelo destinatário ou mesmo encaminhar
automaticamente uma cópia de todas as mensagens de um grupo para uma
determinada gerência (todas as mensagens do Grupo de Controle da
Configuração enviadas com cópia automática para o Presidente do GCC). Listas
de discussão podem ser criadas para que os grupos do projeto possam debater
assuntos de interesse da GCS, como o impacto de alguma modificação
solicitada. Estas listas devem ser preparadas para incluir apenas os participantes
envolvidos designados para debater um determinado assunto.
•
O Serviço de Comunicação Síncrona do Ambiente deve propiciar, quando
necessário, quadros de discussão para a eventual solução de alguma dúvida ou
solicitação de sugestões para a GCS, principalmente quando a questão for
urgente ou envolver um grande número de participantes.
•
Os Serviços de Agenda devem permitir que as atividades formais da GCS, como
as reuniões do GCC possam ser agendadas eletronicamente, anexando junto o
material necessário para a realização do processo, como o check-list de avaliação
do impacto da modificação. As agendas mantêm os indivíduos informados sobre
seus compromissos com as atividades da GCS ao longo do tempo.
•
O Serviço de Compartilhamento Temporário deve permitir a autoria cooperativa
dos produtos da GCS, permitindo que mais de um indivíduo trabalhe na
confecção de um mesmo produto de forma simultânea. Independente do local de
armazenamento ou plataforma computacional, o produto deve ser colocado em
uma determinada área do repositório de informações do Ambiente (situado na
Camada de Armazenamento e Acesso) para que possa ser acessado por todos os
envolvidos nos processos da GCS. As referências e a situação dos produtos
devem ser também disponibilizadas para os participantes do processo de
225
produção dos mesmos. Deve existir na configuração deste serviço uma relação
papel versus produto de tal maneira que durante a realização de um processo
seja possível identificar quais papéis têm autorização de compartilhamento de
quais produtos (dados e informações). Após uma determinada fase especificada
no processo, este compartilhamento temporário se encerra, devendo o arquivo
ser encaminhado ao Ambiente para aprovação da Qualidade e posterior controle
pela GCS, se for um item de configuração, ou devolvido ao seu autor ou
responsável. Um Agente monitor atua regularmente neste serviço, atualizando o
estado de cada produto da GCS, através da monitoração de alguns campos prédeterminados, como o estado de uma solicitação de modificação, por exemplo, a
fim de acompanhar e monitorar o andamento deste produto durante sua vida nos
processos da GCS.
•
O Serviço de Biblioteca deve manter e disponibilizar, para os participantes
envolvidos com os processos da GCS, os documentos técnicos, relatórios, e
check-lists utilizados nas atividades de gerenciamento da configuração e das
modificações. O Serviço de Biblioteca deve manter e garantir também o acesso
às informações que têm relacionamento indireto com o processo da GCS
(políticas organizacionais ou estratégias de desenvolvimento, por exemplo)
facilitando a busca de informações nestas publicações.
•
O Serviço de Lembrança, ou Agenda Pessoal deve informar os envolvidos com a
GCS sobre suas tarefas cotidianas, sobre as datas importantes como reuniões
pré-estabelecidas do GCC, cronograma de projeto e a data de entrega de um item
modificado, no caso de desenvolvedores. Cabe a este serviço permitir que os
envolvidos com a GCS possam registrar algo para ser lembrado, e manter seus
registros.
•
O Serviço de Dicionário e Enciclopédia deve permitir que todos os participantes
envolvidos com a GCS (na organização e nos projetos) possam manter e
consultar termos e conceitos utilizados por esta área de conhecimento. Além dos
conceitos relacionados diretamente à GCS, os conceitos e termos relacionados
226
ao próprio Ambiente devem também ser descritos. Este serviço deve ser ágil e
de fácil manutenção, para que possa ser atualizado e revisado constantemente.
•
O Serviço de Documentação de Escritório deve permitir aos participantes
envolvidos com a GCS manter e recuperar a documentação administrativa
endereçada à equipe. Isto pode incluir memorandos, circulares internas,
solicitações, ou qualquer documento de cunho administrativo que de alguma
forma afete as atribuições e as tarefas da GCS nos projetos ou na organização.
Através de uma base de dados de documentos de escritório, este serviço pode ser
uma forma segura e rápida de tramitar os documentos administrativos da GCS.
O serviço de me nsagens eletrônicas pode ser utilizado em conjunto com este
serviço para avisar um participante de um novo documento disponível, por
exemplo.
•
O Serviço de Atendimento ao Usuário deve permitir que todos os envolvidos
com a GCS possam apresentar suas críticas, sugestões e dúvidas com relação a
qualquer tópico relacionado à GCS, ao projeto ou ao Ambiente Integrado. O
usuário pode, através deste serviço, colocar suas críticas de forma construtiva e
sugerir adaptações às atividades da GCS no Ambiente.
•
O Serviço de Segurança deve permitir que qualquer envolvido nos processos da
GCS tenha disponíveis os serviços e produtos da GCS no Ambiente, através de
uma identificação de uma senha, que o habilitará ao acesso, com privilégios
relativos ao papel que desempenha relacionado à GCS (nos projetos e na
organização). Este serviço deve garantir que as informações e produtos não
públicos sejam disponibilizados apenas por pessoas devidamente credenciadas e
autorizadas.
•
Ferramenta de controle de versões dos itens de configuração, para o suporte ao
processo de gerenciamento da configuração, utilizada para controlar o
armazenamento e o acesso às versões dos itens de configuração e às informações
referentes a eles na biblioteca da GCS, contida no repositório de produtos do
227
Ambiente, durante todo o ciclo de vida do projeto. Deve oferecer também
suporte ao controle da distribuição das configurações-base para usuários dentro
do ambiente de desenvolvimento e distribuições para clientes externos. Devem
ser fornecidos mecanismos que permitam as seguintes ações sobre a biblioteca:
o Colocar novos itens de configuração.
o Obter os itens de configuração.
o Versionar seqüencialmente os itens de configuração armazenados.
o Registrar e atualizar informações de descrição dos itens de configuração
e das modificações realizadas sobre eles.
o Criar e manter as configurações-base de projeto e distribuições.
Para isto devem ser implementadas no mínimo as operações ou funcionalidades
identificadas a seguir:
•
Check-out: ler/copiar a (última) versão de um arquivo guardada no sistema. Esta
operação muda o estado do item retirado para Sob modificação até que seja
efetuada uma operação de check-in no item retirado.
•
Check-in: enviar as modificações para a biblioteca. Ação de inserir/atualizar o
conteúdo de um item na biblioteca, que resulta no incremento do número de
versão do item e no registro do histórico de modificações do item (informações
sobre data, hora, autor e descrição sucinta da modificação, incluindo a
identificação da solicitação de modificação associada)
•
Get: obter um arquivo ou vários para utilização somente. Ação de retirar um ou
vários itens da biblioteca para uma área de trabalho do Cliente da GCS para
utilização, após verificação da permissão de acesso ao item e resultando no
registro de histórico do item (informações sobre data, hora, autor e motivo da
retirada do item).
228
•
Criar Configuração-base: atribuir uma identificação de configuração-base a
um conjunto de versões selecionadas de itens pertencentes à biblioteca
controlada, que resulta na criação de um novo item de configuração-base que é
composto por outros itens de configuração.
5.3.3
Os Recursos da Camada de Interação com o Usuário
Os elementos que compõem a Camada de Interação com o Usuário, ou Camada de
Execução, serão responsáveis pela comunicação do usuário com os processos da GCS
no Ambiente a partir de qualquer ponto de uma rede de computadores, permitindo seu
trabalho remoto e cooperativo. Esta camada deverá permitir que os aplicativos que
implementam os serviços da GCS no Ambiente sejam executados e possam realimentar
os processos com a conclusão das atividades e a confecção dos produtos da GCS
executados pelos participantes envolvidos.
Dos recursos definidos para esta camada pelo Ambiente Integrado (Sant’Anna, 2000) e
necessários para a realização das atividades da GCS, consideram-se:
•
O acesso aos processos da GCS deve ser feito em locais que possuam recursos
de rede (local ou distribuída) através de navegadores (browsers) proporcionando
a facilidade de uso em modo gráfico e ambiente de janelas e que possam ser
executados a partir de diversas plataformas (Windows, Unix, Macintosh).
•
A apresentação das telas relacionadas aos processos da GCS deve ser feita de
acordo com o padrão de janelas do Ambiente Integrado.
229
230
CAPÍTULO 6
CONCLUSÕES
A implantação do processo da GCS é essencial para as organizações desenvolvedoras de
software que desejam obter melhor qualidade dos seus produtos e minimizar os
problemas causados pelas modificações no software, principalmente em se tratando de
organizações responsáveis por projetos de software na área aeroespacial.
Neste trabalho foi apresentada uma abordagem para o processo da Gerência das
Modificações e da Configuração de Software (GCS) em um Ambiente Integrado para o
apoio ao desenvolvimento e gestão de projetos de software.
Esta abordagem consistiu na definição e modelagem do processo da GCS, tendo como
ponto de partida as práticas básicas deste processo apresentadas em padrões e modelos
de processo de software. Como estes padrões apresentam o que o processo deve fazer,
mas não o como, buscou-se na literatura não só o entendimento dos fundamentos da
disciplina, mas também abordagens práticas da GCS, para que os detalhes necessários
para a modelagem do processo fossem obtidos.
Quanto à disciplina GCS, foram apresentados conceitos e definições importantes, suas
atividades fundamentais e funcionalidades, bem como os mecanismos e políticas
necessárias para o suporte a estas. Ainda que a apresentação de sistemas ou ferramentas
de GCS não fosse um objetivo do trabalho, a evolução e o estado atual, uma
classificação, e também alguns critérios utilizados para avaliação das mesmas foram
apresentados, para auxiliar no levantamento das funcionalidades da GCS a serem
contempladas na abordagem proposta.
Procurou-se neste trabalho evidenciar que um sistema ou ferramenta de GCS pode
facilitar ou até mesmo viabilizar algumas de suas atividades, mas sua utilização não é
suficiente para que se garanta a integridade do produto durante seu desenvolvimento
nem que se tenha controle sobre todas as modificações feitas nele. Para isto, um
231
processo de gerenciamento das modificações e da configuração bem definido deve ser
seguido durante todo o ciclo de vida do produto de software.
Quanto ao processo de software e sua modelagem, este trabalho procurou apresentar a
importância que o processo utilizado na construção do software tem para a obtenção de
produtos com mais qualidade, que venham atender aos propósitos para os quais foram
criados. Dentro desta visão é que foram tomados os modelos e padrões de processo de
software ISO IEC 12207 e 15504 como ponto de partida para a definição do processo da
GCS proposto. Na Tabela 6.1, associadas às atividades da GCS no padrão 12207,
encontram-se as práticas básicas do 15504, bem como, a título de comparação, as
práticas específicas do CMMI. Na última coluna da tabela apresentam-se os processos
fundamentais da GCS propostos por esta abordagem, que contemplam estas práticas.
Ainda dentro desta visão, procurou-se mostrar a necessidade de formalização dos
processos através do recurso da modelagem, bem como apresentar o SPEM, da OMG,
como uma linguagem adequada para expressar os modelos dos processos. A notação
padrão UML utilizada pelo SPEM facilita a atividade de modelagem de processos, uma
vez que se podem reutilizar os conhecimentos desta linguagem obtidos na prática da
modelagem de software.
A apresentação, neste trabalho, do Ambiente Integrado para apoio ao desenvolvimento e
gestão de projetos de software teve como objetivo não somente servir de contexto para a
abordagem apresentada, mas teve também por finalidade mostrar que o suporte
automatizado de um ambiente integrado apresenta-se como facilitador para a definição e
a efetiva implantação deste processo em organizações desenvolvedoras de software, que
procuram o sucesso no seu desenvolvimento em termos de qualidade e produtividade.
Uma avaliação completa do modelo do processo apresentado, no entanto, só será
possível após sua utilização prática em algum desenvolvimento de software.
232
TABELA 6.1 - A GCS nos Padrões e no Modelo Proposto.
ATIVIDADES
ISO/IEC 12207
Implantação do
processo.
Identificação da
configuração.
Controle da
configuração.
Relato da
situação da
configuração.
Avaliação da
configuração.
Gerenciamento
da liberação e
entrega.
-
PRÁTICAS BÁSICAS
ISO/IEC 15504
PRÁTICAS
ESPECÍFICAS
CMMI
CFG.2.BP1 – Desenvolver
SP 1.2-1 –
estratégia para o gerenciamento da Estabelecer um
configuração
sistema de
CFG.2.BP4 - Estabelecer estratégia gerenciamento da
de desenvolvimento de linhas de
configuração.
desenvolvimento.
CFG.2.BP2 – Identificar os itens de SP 1.1-1 –
configuração.
Identificar itens de
CFG2.BP3 – Estabelecer as
configuração.
estruturas e hierarquias de arquivos
e diretórios CFG.2.BP5 –
Estabelecer configurações-base
internas e distribuições.
CFG.2.BP6 – Manter descrição do
item de configuração.
CFG.2.BP7 – Controlar
SP 2.2-1 – Controlar
modificações e distribuições
itens de
CFG.2.BP6 – Manter descrição do configuração.
item de configuração.
SP 3.1-1 –
CFG.2.BP8 – Manter histórico do
Estabelecer
item de configuração.
registros do
CFG.2.BP10 – Verificar informação gerenciamento da
sobre itens controlados.
configuração.
CFG.2.BP11 – Gerenciar o backup,
armazenamento, manuseio e
distribuição dos itens controlados.
CFG.2.BP9- Relatar situação da
SP 3.1-1 –
configuração.
Estabelecer
registros do
gerenciamento da
configuração.
SP 3.2-1 – Executar
auditorias da
configuração.
CFG.2.BP5 – Estabelecer
SP 1.3-1 – Criar ou
configurações-base internas e
distribuir
distribuições.
configurações-base.
CFG.2.BP7 – Controlar
modificações e distribuições.
CFG.4 – Gerenciar solicitações de
modificação
233
SP 2.1-1 –
Acompanhar
solicitações de
modificação.
MODELO DA
GCS
PROPOSTO
Definição das
estratégias
organizacionais
da GCS.
Planejamento da
GCS.
Gerenciamento
da configuração:
Identificação da
Configuração.
Gerenciamento
da Configuração:
Armazenamento
e Controle dos
Itens de
Configuração.
Gerenciamento
da Configuração:
Relato da
Situação da
Configuração.
-
Gerenciamento
da Configuração:
Identificação da
Configuração e
Armazenamento
e Controle dos
Itens de
Configuração.
Gerenciamento
das solicitações
de modificação.
O suporte oferecido pelo Ambiente e uma ferramenta para o gerenciamento da
configuração foram apresentados como recursos facilitadores para a execução do
processo da GCS, contribuindo para o sucesso de sua implantação em uma organização.
A especificação e implementação de um protótipo para demonstração de
funcionalidades do processo, como o gerenciamento das solicitações de modificação,
mostraram-se um recurso muito útil para ilustrar e explorar as possibilidades de
automação de processo, a partir do modelo apresentado. Pode ainda servir de base para
desenvolvimento futuro e novas experimentações, como as de novos ciclos de vida para
as solicitações de modificação e para o item de configuração, por exemplo.
O modelo de processo proposto e as funcionalidades da GCS apresentadas na
especificação do protótipo certamente apresentam limitações, mesmo porque é muito
ampla a gama de funcionalidades que a GCS pode oferecer. De qualquer forma,
procurou-se cobrir as práticas básicas de um modelo de processo, como o ISO IEC
15504, e atender aos requisitos mínimos da GCS, que é controlar as configurações-base,
os itens produzidos ao longo do projeto e as modificações nestes, contribuindo, assim,
para que se atinja o objetivo de obter maiores níveis de qualidade dos produtos nas
organizações desenvolvedoras de software que porventura venham a utilizar este
modelo de processo, como o INPE e o CTA.
Ainda que a solução para a GCS apresentada neste trabalho tenha sido idealizada com a
intenção de integrá- la ao Ambiente, de maneira a tornar mais eficiente o processo de
desenvolvimento de software, esta integração não é necessária para uma implementação
da solução. O processo definido pode ser utilizado empregando-se ferramentas de
suporte disponíveis na organização, quando a utilização de uma ferramenta for um
requisito levantado para o processo.
Espera-se que uma abordagem como esta, juntamente com os avanços na automação de
processos proporcionados pelo Ambiente Integrado, sejam capazes de atender a
contento o gerenciamento da configuração e das modificações no desenvolvimento de
software, principalmente nas organizações responsáveis por aplicações aeroespaciais, no
sentido de minimizar os problemas causados pelas modificações no software.
234
Cabe ressaltar que, uma vez entendidas as melhores práticas para o gerenciamento da
configuração, é necessário também entender como aplicar com sucesso os processos da
GCS e as ferramentas para o seu suporte. Como observa White (White et al., 2000), um
erro cometido com freqüência é assumir que uma solução adotada se encaixa em
qualquer situação ou é a solução certa. Projetos diferentes apresentam requisitos para a
GCS diferentes. Um gerenciamento de configuração bem sucedido em qualquer projeto
é aquele que permite que as modificações ocorram tanto quanto possível, sem haver
perda de controle sobre o software. Existe, assim, a necessidade de que o processo da
GCS seja constantemente adequado de maneira a que a sobrecarga de trabalho
acarretada com a utilização das ferramentas de GCS satisfaça aos requisitos de
modificação do projeto em particular. A abordagem de melhoria de processo, adotada
em todo o Ambiente Integrado vai, portanto, ao encontro desta necessidade.
Cabe ainda salientar (Hass, 2002) que até mesmo o melhor sistema de GCS não é capaz
de resolver problemas de planejamento, projeto ou testes. A ordem na qual os objetos
são produzidos e colocados em uso é uma questão de planejamento, os relacionamentos
e dependências entre estes objetos é um problema de projeto e a determinação de
quando os objetos que foram finalizados podem ser utilizados nos testes de outros
objetos é um problema do planejamento dos testes. Cabe à GCS o papel, essencialmente
burocrático, de fornecer o estado dos itens de configuração, dizer como eles estão
relacionados, relatar o estado de um item e a composição das configurações-base.
Nas seções seguintes são ainda apresentadas conclusões sobre modelagem de processo e
utilização de padrões e modelos de processo. Finalmente, são feitas algumas
recomendações e sugestões de trabalhos futuros.
6.1
A modelagem de processos
A modelagem de processos ajuda os modeladores a identificar relacionamentos, efeitos
e objetos, possibilitando um exercício muito útil de simulação de decisões.
235
Os modelos de processo podem ser produzidos em quase qualquer nível de abstração,
dependendo da finalidade ou propósito para o qual são criados, como por exemplo,
entendimento, comunicação ou automação do processo.
A expectativa inicial deste trabalho, com relação ao modelo da GCS, era de chegar a um
nível de detalhe tal que proporcionasse sua execução na máquina de processos do
Ambiente Integrado, para um projeto de desenvolvimento. Esta expectativa não pôde
ser concretizada, devido a vários fatores. Primeiramente, devido à dificuldade de se
entender uma disciplina complexa como a GCS e definir um modelo de processo em tal
nível de detalhe. Depois, dada a impossibilidade de expressá- lo em uma linguagem de
modelagem que pudesse ser executada pela máquina de processos do Ambiente, ainda
em desenvolvimento.
Outras linguagens, não executáveis, foram pesquisadas como alternativa até que se
chegasse ao SPEM, que foi efetivamente utilizado, proporcionando, assim, a obtenção
de um modelo de processo da GCS, e permitindo também a identificação das
possibilidades de automação do processo.
Como um resumo da utilização de modelos de processo, pode-se ressaltar que estes:
•
Proporcionam uma documentação acurada de um processo de desenvolvimento,
que pode ser compartilhado com toda uma equipe.
•
Podem ser estudados para melhoria, avaliação de maturidade, etc.
•
Podem ser facilmente adequados para satisfazer partes diferentes da organização
ou projetos individuais.
•
Proporcionam a geração de fluxos de trabalho - as bases para a automação de
processo.
236
6.2
Processo e melhoria de processo
A GCS pode ser vista sob diferentes perspectivas. Quando uma organização começa a
considerar a implantação da GCS, a perspectiva de processo precisa ser levada em conta
primeiramente. Para sustentar o trabalho, os processos devem ser entendidos,
implementados e submetidos continuamente à melhoria.
Um processo definido e documentado é uma das exigências dos modelos de processo
para se obter um nível gerenciado. Para alcançar um Nível 3 de maturidade do padrão
ISO/IEC 15504, por exemplo, um processo deve estar documentado de maneira
padronizada, ou seja, um modelo de processo deve estar definido. A codificação das
práticas básicas permite a disseminação de metodologia por toda a organização, o que se
traduz em repetibilidade na execução dos projetos.
Não se encontram facilmente disponíveis relatos de experiências ou experimentos
controlados sobre a utilização de ferramentas ou melhoria do processo da GCS em
organizações nacionais. No entanto, em (Hass, 2002) são apresentados alguns relatórios
de companhias que experimentaram a introdução da GCS, encontrados no site na Web
do European Software Institute. As conclusões destes relatórios indicam que a
introdução do processo da GCS em uma organização traz grandes vantagens, mas o
suporte gerencial é essencial. Daí a importância das atividades de suporte ao
gerenciamento, enfocado na abordagem proposta. Outra conclusão é que a introdução
da GCS em uma organização é uma tarefa difícil, e deve ser feita gradualmente, em
projetos-piloto, antes de ser disseminada em larga escala na organização.
6.3
Recomendações e Trabalhos futuros
A modelagem de processos é um recurso essencial para a melhoria de processo. O fato
dos modelos de processo tratarem fundamentalmente de objetos e interações entre eles
os torna uma maneira muito útil e dinâmica de descrever os processos. Não existe,
ainda, uma metodologia para a modelagem de processos. Nesta dissertação a
representação dos modelos da GCS foi feita através de diagramas da UML. Para
237
representação de um processo completo de software, por exemplo, a representação pode
ser feita através de uma lista hierárquica de alto nível de uma Work Breakdown
Structure (WBS). A WBS de um modelo de processo descreve o trabalho a ser
executado, e o fluxo geral de atividades, que podem ser representadas em diferentes
níveis de detalhe através do conjunto de elementos do SPEM, como Lifecycle, Phase,
Iteration, WorkDefinition e Activity. Um exercício desta representação, feita com o
processo de Gerenciamento das Solicitações de Modificação é apresentado no Apêndice
B. Assim, abordagens ou uma metodologia para a modelagem de processo, utilizando o
SPEM, devem ser mais exploradas e a experiência relatada em artigo técnico.
O modelo da GCS apresentado como resultado deve ser colocado em prática, suas
lacunas e inconsistências devem ser detectadas, possibilitando, assim, sua revisão e
melhoria, que são, afinal, alvos da tecnologia de processo de software.
Inicialmente, segundo a abordagem proposta nesta dissertação, as funcionalidades da
GCS devem contemplar o armazenamento controlado dos itens de configuração, através
da política de check-in e check-out e composição, permitindo o gerenciamento de
configurações-base, até o estabelecimento da configuração-base de produto, que serve
de base para as distribuições, com acompanhamento das solicitações de modificação.
Entre as várias limitações do modelo do processo apresentado neste trabalho estão o
processo de construção (build) de sistema e o controle de áreas de trabalho, que devem
ser tratados pelos desenvolvedores, e o gerenciamento das distribuições. O enfoque é
dado para a manutenção da integridade dos itens de configuração, como código e
documentação associada, durante a fase de desenvolvimento do produto; o
gerenciamento das distribuições deve envolver um controle sobre as distribuições do
produto e situações mais complexas de modificações, quando várias versões do produto
final estão em uso. No entanto, para aplicações da área espacial, como no caso das
desenvolvidas no INPE e IAE, o número das distribuições é limitado, dadas as
características não comerciais das aplicações.
Por outro lado, deve-se considerar a complexidade do software desenvolvido nestas
organizações, nem tanto, às vezes, pela quantidade de linhas de código produzidas, mas
238
pela natureza crítica da aplicação e pelas interfaces com outros sistemas, como no caso
do SOAB, um sistema veículo lançador de satélites. Assim, estudos devem ser
conduzidos no sentido de se obter um melhor controle sobre as modificações nas
interfaces do software, bem como sobre a configuração dos amb ientes de testes e
simulação.
Um suporte mais efetivo ao desenvolvimento paralelo, o gerenciamento de áreas de
trabalho e o suporte à construção (build)/distribuição são áreas que também podem ser
exploradas em trabalhos futuros.
A GCS é um processo dentre os vários suportados pelo Ambiente Integrado. Existe a
necessidade de se fazer com que todos estes processos interoperem com redundância
mínima, para cobrir de maneira consistente o espectro completo de processos de uma
organização. Um trabalho a ser realizado, sem dúvida, é a harmonização da GCS a
todos os demais processos suportados pelo Ambiente.
239
240
REFERÊNCIAS BIBLIOGRÁFICAS
Abdala, M.; Lahoz, C.; Sant’Anna, N. Um estudo para a definição de processos das
gerências da qualidade e da configuração em um ambiente integrado para apoio ao
desenvolvimento e gestão de projetos de software. In: Workshop em Computação
Aplicada, 2., (Workcap), São José dos Campos, Brasil, nov. 2002. Resumos... São José
dos Campos: INPE, 2002. p.11.
Abdala, M.; Lahoz, C.; Sant’Anna, N. Utilizando o SPEM para a modelagem dos
processos da qualidade e do gerenciamento da configuração em um ambiente integrado.
In: Simpósio Internacional de Melhoria de Processo de Software, 5. (SIMPROS), nov.
2003, Recife. Anais... Recife: SIMPROS, 2003. p.91-102.
Abdala, M.; Sant’Anna, N. Modelagem do processo de gerenciamento da configuração
de software para um ambiente integrado, in: Workshop em Computação Aplicada, 3.,
(Workcap), Nov. 2003, São José dos Campos. Anais... São José dos Campos: INPE,
2003.
Acuña, S. T.; Ferré, X. Software Process Modelling. In: World Multiconference on
Systemics, Cibernetics and Informatics, 5. (SCI), July 2001, Orlando, Florida.
Proceedings... Orlando, 2001. p.237-242.
Acunã, S.; Barchin, G.; Laserre, C.; Silva, A.; Sosa, M.; Quincoces, V. Software
engineering and knowledge engineering software process: formalizing the who’s who.
In: International Conference on Software Engineering and Knowledge Engineering, 12.,
July 2000, Chicago, USA. Proceedings... Orlando: 2000. p.221-230.
Ambriola, V.; Conradi, R.; Fuggetta, A. Assessing process-centered software
engineering environments. ACM Transactions on Software Engineering and
Methodology, v.6, n.3, p.283–328, July 1997.
241
American National Standard Institue/Intitue of Electrical and Electronics Engineers.
ANSI/IEEE 1042. Guide to Software Configuration Management, New York, Sept.,
1987.
Bandinelli, S.; Di Nitto, E.; Fuggetta, A. Supporting cooperation in SPADE-1
environment. IEEE Transactions on Software Engineering, v.22, n.12, p.841-865,
1996.
Benali, K.; Derniame, J. C. Software processes modeling: what, who, and when. In:
European Workshop on Software Process Technology, 2., Sept. 1992, Trondheim,
Norway. Proceedings… Trondheim, 1992. p.21-25.
Ben-Shaul, I.; Kaiser, G. E. A paradigm for decentralized process modeling and its
realization in the Oz environment. In: Internationa l Conference on Software
Engineering ,16. (ICSE), May 1994, Sorrento, Italy. Proceedings… Sorrento, 1994.
p.179-188.
Bendix, L.; Dattolo, A.; Vitali, F. Software configuration management in software and
hypermedia engineering: a survey. In: Chang, S. K. (ed). Handbook of Software
Engineering and Knowledge Engineering. [S.l]: World Scientific Publishing, 2001.
v.1, p.523-548.
Bersoff, E.; Henderson, V.; Siegel, S. Software configuration management, an
investment in product integrity. Englewood Cliffs, EUA: Prentice-Hall, 1980. 385p.
Booch, G.; Rumbaugh, J.; Jacobson, I. The Unified Modeling Language: user guide.
Massachusetts, USA: Addison-Wesley, 2000. 482p.
Bounds, N. M.; Dart, S. Configuration Management (CM) Plans : the beginning to
your CM solution. Pittsburgh, USA: Carnegie Mellon Software Engineering Institute
(SEI), 1993. Disponível em:
http://www.sei.cmu.edu/legacy/scm/papers/CM_Plans/CMPlans.MasterToC.html.
Acesso em: 5 dez. 2001.
242
Configuration Management Body of Knowledge (CMBoK). Configuration Mange ment
Wiki Web Site. Disponível em: http://www.cmbok.com/. Acesso em: 10 jun. 2003.
Cederqvist, P. Version management with CVS for CVS 1.10. Copyright 1992, 1993
Signum Support AB. Disponível em: http://www.opencores.org/cvs.pdf. Acesso em: 7
jul. 2002.
Cereja Jr., M. G. O serviço de coordenação de processos para o ambiente “eWebProject”. 2002. Proposta de dissertação (Mestrado em Computação Aplicada) Instituto Nacional de Pesquisas Espaciais, São José dos Campos, 2002.
Cereja Jr., M. G.; Sant’Anna, N.; Borrego Filho, L. F. Modelando um processo de
gestão de problemas em projeto – UML e PML uma exploração de abordagens para a
modelagem de processos. In: Simpósio Internacional de Melhoria de Processo de
Software (SIMPROS), 4., Nov. 2002. Resumos... Recife: SIMPROS, 2002.
Capability Maturity Model for Software (CMM-SW), - version 1.1, Pittsburgh:
Software Engineering Institute, Technical Report CMU/SEI-93-TR-24, Feb. 1993.
Capability Maturity Model Integration (CMMI), Version 1.1, CMMI for Software
Engineering (CMMI-SW), V1.1, Continuous Representation, CMU/SEI-2002-TR-028
- ESC-TR-2002-028, Aug. 2002.
Conallen, J. Building web applications with UML. Massachusetts, EUA: AddisonWesley, 2000. 320 p.
Conradi, R.; Westfechtel, B. SCM: status and future challenges. In: International
Symposium on System Configuration Management, 9. (SCM-9), Sept. 1999, Toulouse,
France. Proceedings… Toulouse, 1999. p.228-231.
Conradi, R.; Fernström, C.; Fuggetta, A. Concepts for evolving software processes. In:
Finkelstein, A.; Kramer, J.; Nuseibeh, B. (ed.). Software process modeling and
technology. Taunton, UK: Research Studies Press, 1994. cap.2, p.9-31.
243
Conradi, R.; Liu, C. Process modeling languages: one or many? In: European Workshop
Software Process Technology (EWSPT'95), 4., Apr. 1995, Noordwijkerhout, The
Netherlands. Proceedings… Noordwijkerhout : [S.n], 1995. p.98-118.
Crnkovic, I. Why do some mature organizations not use mature CM? In: Symposium on
Software Configuration Management, 9. (SCM-9), Sept. 1999, Toulouse, Franc e.
Proceedings… London: Springer-Verlag, Lecture Notes in Computer Science, 1999.
v.1675, p.50-65.
Cruz, T. Workflow: a tecnologia que vai revolucionar processos. São Paulo: Atlas,
1998. 232p.
Cugola, G.; Ghezzi, C. Software processes: a retrospective and a path to the future.
Software Process Improvement and Practice, v.4, n.3, p.101-123, 1998.
Curtis, B.; Kellner, M; Over, J. Process modeling. Communications of the ACM, v.35,
n.9, p.75-90, Sept. 1992.
Dart, S. Concepts in configuration management systems. In: International Workshop on
Software Configuration Management, 3., 1991, Trondheim, Norway. Proceedings…
New York: ACM Press, 1991. p.1-18.
Dart, S. The past, present, and future of configuration management. In: World
Computer Congress on Algorithms, Software, Architecture - Information Processing,
12., 1992, Madrid, Spain. Proceedings… Netherlands: North-Holland, 1992. v.1,
p.244-251.
Dart, S. Not all tools are created equal. Application Development Trends , p.7, Oct.
1996.
Dart, S. The urgent need for configuration management and benefits of automation.
Disponível em: http://www.susandart.com.au/print/. Acesso em: 14 nov. 2002.
Department of Defense (DoD), Military Standard - Defense System Software
Development STD, 2167A, Washington DC, Feb. 1988.
244
Di Nitto,E; Lavazza, L; Schiavoni, M; Tracanella, E; Trombetta, M. Deriving
executable process descriptions from UML. In: International Conference on Software
Engineering, 24., 2002., Orlando, USA. Proceedings… New York: ACM Press, 2002.
p.155–165.
Ellmer, E. Process-centered software engineering environments as the next generation
of CASE tools. In: European Workshop on Next Generation of CASE Tools (NGCT95),
Finland, 1995. Proceedings… Disponível em:
http://citeseer.ist.psu.edu/ellmer95processcentered.html. Acesso em: 4 dez. 2002.
Estublier, J. Software configuration management: a roadmap In: Conference on The
future of Software Engineering, 2000, Limerick, Ireland. Proceedings… New York:
ACM Press, 2000. p.279-289.
Estublier, J. et al. Impact of the research community on the field of software
configuration management: summary of an impact project report. In: Symposium on
the Foundations of Software Engineering (FSE-9), 9., 2001, Vienna, Austria.
Proceedings… New York: ACM Press, Sept. 2002. ACM SIGSOFT Software
Engineering Notes, v.27, n.5, p.31-39.
Estublier, J.; Dami, S.; Amiour, M. High level process modeling for SCM systems. In:
Workshop on System Configuration Management (SCM-7), 7., 1997, Boston, USA.
Proceedings… London: Springer-Verlag, 1997. Lecture Notes In Computer Science,
v.1235, p.81-97.
Feiler, P. H. Configuration Management models in commercial environments,
Technical Report CMU/SEI-91-TR-7, Software Engineering Institute, 1991. Disponível
em: http://www.sei.cmu.edu/legacy/scm/abstracts/abscm_models_TR07_91.html.
Acesso em: 15 out. 2002.
Feiler, P. H.; Humphrey, W. S. Software process development and enactment: concepts
and definitions. In: International Conference on Software Process, 2., Berlin, Germany,
Feb. 1993. Proceedings... Berlin: 1993. p.28-40.
245
Finkelstein, A.; Kramer, J. B.; Nuseibeh, B. Software process modeling and
technology. Taunton: Research Studies, 1994. 384p.
Franch, X.; Ribó, J. M. Using UML for modeling the static part of a software process.
In: UML International Conference, 2., Fort Collins, USA, Oct. 1999. Proceedings...
Fort Collins: [S.n], 1999. p.292-307.
Frühauf, K.; Zeller, A. Software configuration management: state of the art, state of the
practice. In: International Symposium on System Configuration Management (SCM-9),
9., 1999. Proceedings…London: Springer-Verlag, 1999. Lecture Notes In Computer
Science, v.1675, p.217-227.
Fuggetta, A. Software process: a roadmap. In: Future of Software Engineering.
Limerick, Ireland, 2000. Proceedings... New York: ACM Press, 2000. 630 p.
Futrell, R.; Shafer, D.; Shafer, L. Quality software project management. Indianapolis,
USA: Prentice Hall PTR, Jan. 2002. 1680p.
Hass, A. Configuration management principles and practice. Boston, USA: Person
Education, Dec. 2002. 432p.
Hoen, P.J.; Ter Beek, M. H. A conflict-free strategy for team-based model development.
In: International Workshop on Process support for Distributed Team-based Software
Development, 2., (PDTSD'00), World MultiConference on Systemics, Cybernetics and
Informatics (SCI 2000), 4., Orlando, Florida, 2000. Proceedings… Orlando:
International Institute of Informatics and Systemics, 2000. p.720-725.
Institute of Electrical and Electronics Engineers (IEEE), Computer Society, Guide to the
Software Engineering Body of Knowledge (SWEBOK), Trail Version 1.00, May 2001.
Institute of Electrical and Electronics Engineers (IEEE). IEEE 610.12 Standard
Glossary of Software Engineering Terminology, Dec.1990. Standard.
Institute of Electrical and Electronics Engineers (IEEE). IEEE 828 Standard for
Software Configuration Management Plans , 1998. Standard.
246
International Organization of Standardization/ International Electrotechnical
Commission (ISO/IEC). ISO/IEC 12207 International standard for information
technology - software life cycle processes. Geneva, Switzerland, 1995. Standard.
International Organization of Standardization/ International Electrotechnical
Commission (ISO/IEC). ISO/IEC 12207 International standard for information
technology - software life cycle processes. Geneva, Switze rland, 2001. Amendment 1.
International Organization of Standardization/ International Electrotechnical
Commission (ISO/IEC), ISO/IEC 15504-2. Information technology — process
assessment: part 2: - performing an assessment. Geneva, Switzerland, 2003.
International Standard.
International Organization of Standardization/ International Electrotechnical
Commission (ISO/IEC), ISO/IEC 15504-5. Information technology – process
assessment: part 5: - an exemplar process assessment model. Geneva, Switzerland,
2003. Committee Draft.
Jaccheri, M. L.; Picco, G. P.; Lago, P. Eliciting software process models with the E3
language. ACM Transactions on Software Engineering and Methodology, v.7, n.4,
p.368-410, 1998.
Jaccheri, M. L., Baldi, M., Divitini, M. Evaluating the requirements of software process
modeling languages and systems. In: Process Support for Distributed Team-based
Software Development, Florida, USA.1999. Proceedings… London: Springer-Verlag,
2000. p.96-108.
Jäger, D.; Schleicher, A.; Westfechtel, B. Using UML for software process modeling.
In: European Software Engineering Conference, 7., Toulouse, France, Nov. 1999.
Proceedings… London: Springer-Verlag, 1999. p.91-108.
Jalote, P. CMM in Practice: process for executing software projects at Infosys,
Massachusetts: Addison Wesley Longman, 1999. 372p.
247
Jennings, C. G. Combining object-oriented systems and software configuration
management. Selected Topics in Object-Oriented Programming, Computer Science
770, McMaster University, Dec. 2000.
Jézéquel, J. M. Reifying Configuration Management for object-oriented software. In:
International Conference on Software Engineering, Kyoto, Japan, 1998. Proceedings…
Washington: IEEE Computer Society, 1998. p.240-249.
Joeris, G. Change management needs integrated process and configuration management.
In: European Software Engineering Conference, 6., Zürich, Swiss, 1997.
Proceedings… New York: Springer-Verlag, 1997. p.125-141.
Kulkarni, D. Causes of software accidents due to change, 1996. Disponível em:
http://ic.arc.nasa.gov/ic/projects/safety-maint/softmaint.failures.html. Acesso em: 18
fev. 2003.
Lahoz, C.; Abdala, M.; Sant’Anna, N. O processo de auditar produtos: uma pesquisa
referente à sua definição e modelagem para a garantia da qualidade no e-WebProject.
In: Simpósio Internacional de Melhoria de Processo de Software (SIMPROS), 4., set.
2002, Recife. Resumos... Recife, 2002.
Lahoz, C. Uma abordagem para a gerência da qualidade em um ambiente de
engenharia de software centrado em processo. 2004. 309p. (INPE-11550-TDI/958).
Dissertação (Mestrado em Computação Aplicada) – Instituto Nacional de Pesquisas
Espaciais, São José dos Campos, 2004.
Larsson, M.; Crnkovic, I. Component Configuration Management. In: ECOOP
Conference, Workshop on Component Oriented Programming, 5., Nice, France, 2000.
Proceedings.... Disponível em:
http://www.mrtc.mdh.se/index.phtml?choice=publications&id=0209. Acesso em: 19
set. 2002.
Leveson, N. G. Safeware: System Safety and Computers . Reading: Addison-Wesley
Publishing Company, 1995. 671p.
248
Ministério da Ciência e Tecnologia/ Secretaria de Política de Informática
(MCT/SEPIN). Qualidade e produtividade no setor de software brasileiro (1999 e
2001). Disponível em: http://www.mct.gov.br/sepin. Acesso em: 3 maio 2003.
Moura, C. A. T.; Lahoz, C.; Abdala, M. A practical approach to quality assurance in
critical systems. In: Latin American Dependable Computing (LADC), 1., São Paulo,
Brasil, Oct. 2003. Proceedings... New York: Springer, 2003. v.2847. p.369-370.
Moura, C.; Melnikoff, S. S. S.; Lahoz, C.; Abdala, M.; Fernandes, M. O. S. Uma
abordagem da garantia de qualidade de software no projeto do veículo lançador de
satélite brasileiro. In: Symposium on Software Technology (SoST), Buenos Aires,
Argentina, 1999. Proceedings… Buenos Aires: SADIO,1999. p.13-17.
Nascimento, C. J. A Evolução da Qualidade no Setor de Software Brasileiro: Quatro
Biênios Medindo e Acompanhando Indicadores de Gestão. In: Encontro para a
Qualidade nas Tecnologias de Informação e Comunicações (QUATIC'01), 4., Lisboa,
Portugal, 2001. Resumos eletrônicos ...
http://www.mct.gov.br/Temas/info/Dsi/palestra/QuartoEncontroQuali.htm. Acesso em:
11 out. 2002.
Oliveira, A.; Primo, F.; Cruz, J.; Martino, W. Gerência da Configuração de Software
- evolução de software sob controle, ITI, Ministério da Ciência e Tecnologia, jun.
2001. Disponível em:
http://www.psphome.hpg.ig.com.br/downloads/Apostila_curso_GCS.pdf. Acesso em:
29 set. 2003.
Osterweil, L. J. Understanding process and the quest for deeper questions in software
engineering research. In: ______. ACM SIGSOFT Software Engineering Notes. New
York, USA: ACM Press, Sept. 2003. v.28, p.6-14.
Osterweil, L. J. Software processes are software too. In: International Conference on
Software Engineering, 9., Monterey, California, USA, Mar 1987. Proceedings… Los
Alamitos: IEEE Computer Society Press, 1987. p.2-13.
249
Project Management Institute (PMI). A guide to the project management body of
knowledge. Charlotte N. C: Project Management Institute, 1996. 216p.
Pressman, R. Software engineering - a practioner’s approach. 3.ed. New York:
McGraw Hill, 1992. 880p.
Rocha, A.N.C.; Maldonado, J. C.; Weber, K. C. Qualidade de software: teoria e
prática. São Paulo: Prentice-Hall, 2001.
Rochkind, M. J. The source code control system. IEEE Transactions on Software
Engineering, v.4, p.364-370, 1975.
Sant’Anna, N.; Cereja Jr., M. G.; Borrego Filho, L. F.; Luque, L.; Casilo, B. H. eWebProject - um ambiente integrado para o apoio ao desenvolvimento e gestão de
projetos de software, Congresso Internacional de Tecnologia de Software: Qualidade e
Produtividade no Gerenciamento de Projetos, 13., Curitiba, Brasil, jun. 2002. Anais...
Curitiba, 2002. p.163-174.
Sant'Anna, N. Um ambiente integrado para apoio ao desenvolvimento e gestão de
projetos de software para sistemas de controle de satélites. 2000. 225p. (INPE-8306TDI/765). Tese (Doutorado em Computação Aplicada) – Instituto Nacional de
Pesquisas Espaciais, São José dos Campos, 2000.
Sant’Anna, N.; Lahoz, C.; Abdala, M. Um ambiente integrado para suporte a projetos
de engenharia de software. In: Comdex, Ago. 2003, São Paulo. Tutorial... São Paulo,
2003.
Sayko, M. Creating an SCM Plan to support iterative software development.
Crossroads News, Feb. 2003. Disponível em:
http://www.cmcrossroads.com/newsletter/articles/msfeb03.html. Acesso em: 2 fev.
2003.
Schleicher, A.; Westfechtel, B.; Jäger, D. Modeling dynamic software process in UML.
In: Technical Report AIB 98-11, RWTH Aachen, Germany, 1998.
250
Schleicher, A.; Westfechtel, B. Beyond stereotyping: metamodeling approaches for the
UML. In: Hawaiian International Conference on System Sciences (HICSS-34), 34.,
Island of Maui, 2001. Proceedings… Los Alamitos: IEEE Computer Society Press,
2001, v.3, p.3051.
Sharon, D.; Anderson, T. A complete software engineering environment. IEEE
Softwa re, p.123-127, Mar./Apr. 1997.
Software Process Engineering Metamodel Specification (SPEM ), Version 1.0,
Needham, USA: Object Management Group, formal 02-11-14, Nov. 2002.
Sommerville, I. Software engineering. 6.ed. Reading: Person Education Limited, 2001.
693p.
Software Process Improvement and Capability dEtermination (SPICE). Software
Process Assessment – Part 2, A model for process management, Version 1.0, 1995.
Starbuck, R. A. Software Configuration Management: don’t buy a tool first. CrossTalk
– The Journal of Defense Software Engeneering, Nov 1997. Disponível em:
http://www.stsc.hill.af.mil/crosstalk/1997/11/index.html. Acesso em: 2 jun. 2003.
Tichy, W. F. RCS - A System for Version Control. Software - Practice and
Experience, v.15, n.7, p.637-654, 1985.
Unhelkar, B. Process quality assurance for UML-based projects. Boston, USA:
Addison-Wesley, Oct. 2002. 432p.
Van Brunt, E. Implementing a Flexible Software Configuration Management
Process. Software Engineering II (Relatório Técnico), 1996. Disponível em:
www.ecse.rpi.edu/Courses/S96/35678/vanBrunt.ps. Acesso em: 2 ago. 2002.
Van Der Hoek, A.; Hall, R. S.; Heimbigner, D.; Wolf, A. L. Software Release
Management. In: European Conference on the Foundations of Software Engineering, 6.,
1997. Proceedings… New York: Springer-Verlag, 1997. p.159-175.
251
Van Der Hoek, A.; Heimbigner, D.; Wolf, A. L. Does configuration management
research have a future?. In: Lecture Notes In Computer Science, Selected papers from
the ICSE SCM-4 and SCM-5 Workshops, on Software Configuration Management.
London: Springer-Verlag, 1995. v.1005, p.305 – 309.
Van Der Hoek, A.; Mikic-Rakic, M.; Roshandel, R.; Medvidovic, N.,Taming
Architectural Evolution. In: European Software Engineering Conference, 8., ACM
SIGSOFT international symposium on Foundations of software engineering, 9.,
(ESEC/FSE), Vienna, Austria, 2001. Proceedings… New York: ACM Press, 2001. p.110.
Van Der Lingen, R.; Van Der Hoek, A. Dissecting Configuration Management Policies.
In: ICSE Workshop SCM 2003, Portland, OR, USA, May 2003. Proceedings…
Springer-Verlag GmbH, 2003. v.2649, p.177-190.
White, B. Software Configuration Management Strategies and Rational
ClearCase®: A Practical Introduction. Boston: Addison Wesley Professional, 2000.
336p.
Zamli, K. Z.; Lee, P. A. Ta xonomy of process modeling languages. In: International
Conference on Computer Systems and Applications, Beirut, June 2001. Proceedings…
IEEE Digital Library, 2001. p.435-437.
252
BIBLIOGRAFIA COMPLEMENTAR
Berczuk, S. Pragmatic Software Configuration Management. IEEE Software , p.15-17,
Mar. 2003.
Kidd, C. The case for configuration management. IEEE Review, p.37-41, Sept. 2001.
Lyon, D. Practical CM: best configuration management practices for the 21st
century. 3.ed. Pittsfield: RAVEN Publishing Company (Electronic Version), Jan. 2001.
174p.
Marshall, A. Software configuration management: function or discipline?, STSC
Crosstalk, Oct. 1995. Disponível em:
http://www.stsc.hill.af.mil/crosstalk/1995/10/index.html. Acesso em: 9 abr. 2002.
Mikkelsen, T.; Pherigo, S. Practical Software Configuration Management : The
latenight Developers´s Handbook. New Jersey, USA: Prentice Hall, 1997. 301p.
Vanhanen, J. Improving configuration management processes of a software
product. 1997. 62p. Thesis (Master) - Department of Computer Science, Laboratory of
Information Processing Science, Helsinki University of Technology, Helsinki, 1997.
Westfechtel, B; Conradi, R. Software Architecture and Software Configuration
Management. In: International Workshop on Software Configuration Management, 10.,
(SCM-10), Toronto, Canadá, May 2001. Proceedings… Toronto: IEEE Computer
Society, 2001. p.19-26.
Westfechtel, B; Munch, B. P.; Conradi, R. A layered architecture for uniform version
management, IEEE Transactions on Software Engineering, v.27, n. 12, p.1111-1133,
Dec. 2001.
253
254
APÊNDICE A
A UTILIZAÇÃO DO SPEM NA MODELAGEM DE PROCESSOS 1
Neste trabalho, as atividades da GCS identificadas foram agrupadas em um Diagrama
de Pacote (Package Diagram) composto por outros pacotes, da mesma forma que uma
Discipline. Isto permitiu representar, em alto nível, o agrupamento de atividades
correlatas do processo da GCS.
Aspectos dinâmicos do processo foram representados através de Diagramas de
Atividades, com os respectivos fluxos de produtos de trabalho, nos seus diversos
estados assumidos durante o processo.
WorkDefinitions foram utilizadas em um Diagrama de Caso de Uso para representar
grupos de Activities. Esta pode ser uma maneira útil para encapsular as atividades de um
processo, tornando o diagrama menor e mais fácil de ser visualizado.
A utilização dos Diagramas de Caso de Uso, no entanto, pode não ser muito adequado
para documentar modelos de processos com um grande número de atividades. A
principal razão é que para qualquer processo de tamanho significativo, o Diagrama de
Caso de Uso rapidamente se torna grande e difícil de ser navegado. Na realidade, sua
utilização depende do nível de abstração em que as atividades são modeladas. No caso
da abordagem apresentada neste trabalho foi feita uma definição em alto nível.
O SPEM 1.0 não oferece uma notação padronizada para representação dos processos,
nem exige que o modelador se prenda à notação UML. Pode-se, então, utilizar os
diagramas da UML como se apresentam na linguagem, ou adaptá-los para utilização
própria e usar a semântica padrão da UML para elementos como as dependências, por
exemplo, entre outros.
1
O material contido neste Apêndice foi baseado em uma apresentação (Process Engineering and
Modeling, SPIN de Montreal, Nov 2003) fornecida por Vivienne Suen, da Osellus Inc. e também em emails trocados com a mesma, a respeito da utilização do SPEM. Vivienne trabalha em Análise de
Sistemas e Consultoria de Processos e tem feito apresentações sobre modelagem e automação de
processos em reuniões do SPIN (Software Process Improvement Network ) no Canadá. Participou da
finalização do SPEM 1.0 e trabalha atualmente na definição da próxima versão do SPEM.
255
Uma outra abordagem para a modelagem de um processo completo de software consiste
na utilização de uma lista hierárquica de alto nível da Work Breakdown Structure
(WBS), como por exemplo:
Phase: Requisitos
Iteration: Primeira Iteração de Análise
WorkDefinition: Identificar Requisitos
Activity: Reunir requisitos dos envolvidos, etc.
WorkDefinition: Refinar Requisitos
Etc.
Diagramas de atividade, como definidos pela UML ou adaptados a uma maneira
particular de utilização, podem ser empregados para modelar a WBS, em diferentes
níveis de abstração: o primeiro mostraria as Fases, o segundo mostraria um
detalhamento da primeira Fase, e assim por diante.
Resumidamente, o metamodelo SPEM consistem em:
•
Elementos básicos: External Description, Guidance.
•
Dependências: Categorizes, Impacts, Import, Precedes, RefersTo, Trace.
•
Estrutura
de
Processo:
WorkProduct,
WorkDefinition,
Activity,
Step,
ProcessRole.
•
Componentes de Processo: Package, ProcessComponent, Process, Discipline.
•
Ciclo de vida do Processo: Lifecycle, Phase, Iteration, Precondition, Goal.
Uma WBS é modelada com Lifecycles, Phases, Iterations, WorkDefinitions e Activities.
Os artefatos e papéis são modelados como WorkProducts e ProcessRoles,
respectivamente entradas/saídas e performers/assistants para as Atividades.
Os Packages podem ser utilizados para se obter modularidade dos processos e facilitar a
reutilização dos mesmos.
256
Pode-se também começar a modelagem com elementos concretos – WorkProducts
(deliberables) e ProcessRoles.
Os WorkProducts são os artefatos de um processo – qualquer pedaço tangível de
informação produzido, consumido ou modificado pelo processo. Podem estar em
qualquer formato ou meio e WorkProductKinds podem ser utilizados para distingui- los.
Os produtos de trabalho podem ser agregações de outros e terem máquinas de estados
para descrever sua dinâmica no processo.
Os ProcessRoles não são descrições ou títulos de trabalho, nem pessoas, mas sim um
conjunto significativo de habilidades e responsabilidades a serem desempenhadas no
processo. Os ProcessRoles têm uma classe pai, o ProcessPerformer. No SPEM não
existem associações entre ProcessRoles e WorkDefinitions. A idéia é que os
ProcessPerformers deveriam ser associados a WorkDefinitions (e Iterations, Phases,
Lifecycles). Os ProcessPerformers (PP) podem ter sido introduzidos para integridade do
modelo, de maneira que um ProcessRole tivesse uma classe pai assim como uma
WorkDefinition (WD) é a classe pai de uma Activity. Por exemplo, um PP bem genérico
pode ser descrito, como “Time de Análise” e ser designado como o executante de
Iterations, etc. Isto pode ser feito quando já existe na organização um conceito muito
forte de responsabilidades abstratas e de alta granularidade que ainda podem ser
decompostas em tarefas discretas, do tipo de uma Activity. Assim, neste caso, o “Time
de Análise” pode ser designado para uma iteração, e as sub-atividades designadas para
serem executadas por ProcessRoles, como Analistas de Sistema, Arquitetos de
Software, etc. Deve-se ressaltar que, como a associação WD-PP não é obrigatória, não
existe a necessidade de agrupar os ProcessRoles apenas para formar um
ProcessPerformer no modelo, pois nem sempre existe uma correspondência entre os
dois.
A WBS de um modelo de processo descreve o trabalho a ser executado e o fluxo geral
de atividades. O SPEM identifica um conjunto de elementos da WBS, em níveis
variados de detalhe: Lifecycle, Phase, Iteration, WorkDefinition e Activity.
257
O elemento de mais baixo nível da WBS é a Activity. Uma Activity é um pedaço de
trabalho executado por um único ProcessRole. Não existem regras com relação ao
“tamanho” de uma Activity, somente que deve ser uma tarefa de um único ator com um
ProcessRole evidente que a executa, com um número qualquer de assistentes. Portanto,
o “tamanho” das Activities é grandemente influenciado pelo “tamanho” dos seus
ProcessRoles. Não existem requisitos para o número de passos (Steps) das atividades:
pode-se ter nenhum ou muitos, e, é importante ressaltar, que o fluxo de passos poderia
ser representado por gráficos de atividade da UML. Assim, uma Activity de alto nível de
abstração poderia encapsular um fluxo bem complicado de eventos nos seus passos. Os
WorkProducts são as entradas e saídas para uma Activity, através de uma classe de
associação.
Já como elementos de mais alto nível na WBS tem-se: WorkDefinitions, que descrevem
um conjunto composto de Activities; Iterations, que são WorkDefinitions compostas
com um marco (milestone) menor no projeto; Phases, que delimitam o espaço de tempo
entre dois marcos (que têm critérios de entrada e saída específicos), sem sobreposição; e
Lifecycle, que descreve o comportamento de um processo completo a ser executado em
um projeto em particular (série de Phases).
O fluxo de trabalho pode ser definido com a utilização de Preconditions, Goals e
Precedes na construção da WBS. A combinação de regras baseadas no término das
atividades e em condições é um recurso flexível e poderoso. Preconditions e Goals são
expressos em termos de estados dos WorkProducts. Expressões booleanas podem ser
utilizadas, como:
Documento de Arquitetura == aprovado && Modelo de Caso de Uso == pronto
A dependência Precede pode ser: Fim-Início, Fim-Fim, Início-Início. As Phases, por
exemplo, são ligadas através de dependências do tipo Fim-Início, já que não podem se
sobrepor.
Uma comparação entre fluxos de trabalho, com estas representações pode ser vista na
FIGURA A.1:
258
FIGURA A.1- Comparação entre Fluxos de Trabalho.
As dependênc ias Impacts podem ser utilizadas para demonstrar as dependências de
produtos de trabalho e a dependência Trace pode ser utilizada para rastrear o fluxo dos
requisitos do sistema por todo o modelo.
Guidances não são WorkProducts, nem são produzidas ou modificadas pelo processo.
Um artefato não pode ser Guidance e WorkProduct no mesmo processo. Qualquer
elemento pode ter qualquer número de Guidances associadas. Guidances devem ter um
GuidanceKind: Technique, UMLProfile, Checklist, ToolMentor, Guideline, Template,
Estimate, Technology Roadmap).
Uma vez tendo o modelo definido no nível elementar/estrutural, o gerenciamento do
modelo ajuda a facilitar o caminho para a adequação e evolução do processo.
Os Packages do SPEM, como na UML, são recipientes que tanto podem possuir como
importar elementos de definição de processo. Um ProcessComponent é um pedaço de
descrição de um processo que é auto-contido e internamente consistente, e pode ser
composto. Um Process é um processo completo. Uma Discipline é uma especialização
de um Package usado para categorizar as Activities de acordo com um tema comum,
como foi feito nesta dissertação com a GCS.
259
260
APÊNDICE B
EXERCÍCIO DE MODELAGEM – PROCESSO DE GERENCIAMENTO DAS
MODIFICAÇÕES
Process: Gerenciamento das Solicitações de Modificação
Subactivities
Activity: Identificar e Registrar Solicitação de Modificação
ProcessRole: Responsável pela GCS
ActivityParameters {kind : input}
WorkProduct: Relatório de Ocorrência
ActivityParameters {kind : output}
WorkProduct: Solicitação de Modificação
{state: Aberta}
Steps
Step: Registrar data da abertura
Step: Registrar identificação única da Solicitação de
Modificação
Step: Registrar identificação do Projeto/Subsistema
Step: Registrar identificação do Item de Configuração
Step: Referenciar Relatório de Ocorrência que originou a
solicitação
Step: Estabelecer relacionamentos com outras Solicitações de
Modificação
Step: Registrar tipo de modificação
Step: Registrar sugestões de solução
Step: Encaminhar
SM
ao
Presidente
do
GCC
Activity: Avaliar Modificação
ProcessRole: Presidente do GCC
ActivityParameters {kind : input}
WorkProduct: Solicitação de Modificação
{state: Aberta}
Guidance: Guia para avaliação de impacto da
modificação
{kind : checklist }
ActivityParameters {kind : output}
WorkProduct: Solicitação de Modificação
{state: Sob Avaliação}
Steps
261
Conduzir a avaliação do impacto da modificação,
cumprindo o check-list de Avaliação de Impacto da
Modificação
Step: Avaliar recursos necessários
Step: Avaliar benefícios da modificação
Step: Registrar resultado da avaliação
Step: Atribuir prioridade à Solicitação de Modificação
Step:
Activity: Aprovar modificação
ProcessRole: Presidente do GCC
ActivityParameters {kind : input}
WorkProduct: Solicitação de Modificação
{state: Sob Investigação}
ActivityParameters {kind : output}
WorkProduct: Solicitação de Modificação
{state: Aprovada para Implementação/Rejeitada}
Steps
Step: Verificar existência de recursos
Step: Aprovar SM de acordo com o resultado da avaliação e
prioridade dada ou Rejeitar a SM
Step: Registrar parecer
Activity: Agendar modificação
ProcessRole: Presidente do GCC
ActivityParameters {kind : input}
WorkProduct: Solicitação de Modificação
{state: Aprovada para Implementação}
ActivityParameters {kind : output}
WorkProduct: Solicitação de Modificação
{state: Encaminhada para Implementação/Adiada}
Steps
Step: Verificar adequação ao orçamento e disponibilidade dos
recursos
Step: Definir detalhes da implementação
Activity: Registrar Implementação da Modificação
ProcessRole: Responsável pelo Produto
ActivityParameters {kind : input}
WorkProduct: Solicitação de Modificação
{state: Aprovada para Implementação}
ActivityParameters {kind : output}
WorkProduct: Solicitação de Modificação
262
{state: Implementada}
Steps
Step: Registrar informações da implementação
Activity: Registrar Resultado da Avaliação de Item Modificado
ProcessRole: Responsável pela Qualidade
ActivityParameters {kind : input}
WorkProduct: Solicitação de Modificação
{state: Implementada}
ActivityParameters {kind : output}
WorkProduct: Solicitação de Modificação
{state: Verificada}
Steps
Step: Registrar parecer da avaliação
Activity: Revisar Modificação Implementada
ProcessRole: Membro do GCC
ActivityParameters {kind : input}
WorkProduct: Solicitação de Modificação
{state: Verificada}
ActivityParameters {kind : output}
WorkProduct: Solicitação de Modificação
{state: Fechada}
Steps
Step: Registrar parecer da verificação da implementação
Activity: Relatar Situação das Modificações
ProcessRole: Responsável pela GCS
ActivityParameters {kind : input}
WorkProduct: Solicitação de Modificação
{state: Fechada}
ActivityParameters {kind : output}
WorkProduct: Relatório de Controle de Modificação
Steps
Step: Emitir Relatório de Controle de Modificação
263
264
APÊNDICE C
TELAS DO PROTÓTIPO SOFTWARE CHANGE AND CONFIGURATION
MANAGEMENT - SCM
Neste Apêndice apresentam-se as telas extraídas do protótipo “Change and Configuration
Management” – SCM. O protótipo visa apresentar funcionalidades da GCS no Ambiente, e,
principalmente, representar a seqüência das atividades que cada papel deve desempenhar no
processo de gerenciamento das solicitações de modificação e o registro das informações
relacionadas a estas atividades na Solicitação de Modificação (SM).
A FIGURA C.1 apresenta a tela de trabalho do usuário, com as notícias (janela News)
remetidas ao mesmo. Observa-se o recurso que permite a qualquer usuário participar das
atividades da GCS, através da opção Change and Configuration Management (tela
Cooperative Tools). A barra de opções Support (barra à direita mais acima) permite o
acesso dos envolvidos com a GCS, entre eles os membros do GCC, às atividades de
gerenciamento da configuração e gerenciamento das solicitações de modificação. A opção
ProjectManagement, dá acesso ao Gerente das Modificações e da Configuração às suas
atividades.
265
FIGURA C.1 - Tela de Trabalho do Usuário.
A FIGURA C.2 ilustra a tela referente às opções ProjectManagement que, entre outros
serviços permite o acesso do Gerente das Modificações e da Configuração às atividades de
gerenciamento da GCS.
266
FIGURA C.2 – Tela de Acesso do Gerente das Modificações e da Configuração.
A FIGURA C.3 ilustra a tela inicial das atividades de definição de estratégias
organizacionais e do planejamento da GCS, denominadas Definir Estratégias e Planejar a
GCS.
267
FIGURA C.3 – Tela Inicial das Atividades do Gerente das Modificações e da
Configuração.
268
As FIGURAS C.4 e C.5 apresentam telas referentes às opções de definição de estratégias
da GCS para o projeto selecionado, mostrando algumas convenções para identificação de
itens de configuração e para formação de um GCC durante a fase de desenvolvimento, na
organização. O menu de abas permite também outras opções, que são: objetivo e escopo da
GCS, procedimentos e convenções para as atividades da GCS, desenvolvimento paralelo,
métricas e planejamento da GCS.
FIGURA C.4 – Tela de Convenção para Identificação Única para Documentos.
269
FIGURA C.5 - Tela de Convenções para Formação dos GCCs.
270
A FIGURA C.6 ilustra a tela referente à lista de projetos instanciados para a atividade de
planejamento da GCS com algumas informações pertinentes ao projeto e com a
possibilidade de inclusão ou exclusão desta atividade pelo usuário responsável.
FIGURA C.6 - Tela Referente à Lista de Projetos Instanciados.
271
A FIGURA C.7 apresenta a tela referente às opções de planejamento da GCS para o projeto
selecionado, mais especificamente mostra a opção da tela de escolha dos membros do GCC
na fase de desenvolvimento. Isto permitirá a inclusão destes membros nas listas de
comunicação das reuniões do GCC. Este menu de abas permite também outras opções do
planejamento da GCS para definição de: relações com o ambiente de projeto; atividades de
identificação da configuração, armazenamento e controle, avaliação da configuração,
controle das modificações e relato da situação; ferramentas, técnicas e métodos; linhas de
desenvolvimento; tarefas, fases e marcos da GCS e ambiente da GCS.
FIGURA C.7 - Tela de Escolha de Membros para o GCC-Des.
272
A FIGURA C.8 ilustra a tela referente às opções de Support que, entre outros serviços
permite o acesso dos envolvidos às atividades de gerenciamento da configuração e das
modificações.
FIGURA C.8 - Tela de Acesso dos Envolvidos com a GCS.
273
A FIGURA C.9 ilustra a tela inicial do Responsável pela GCS, que apresenta as opções de
gerenciamento das modificações e da configuração disponíveis. Nesta tela aparece mais à
esquerda a opção de abertura de uma Solicitação de Modificação (Abrir SM), atividade
inicial do Gerenciamento das Solicitações da Modificação.
FIGURA C.9 - Tela Inicial da Atividade de Gerenciamento das Solicitações de
Modificação.
274
A FIGURA C.10 ilustra a tela de acompanha mento das SMs abertas no Ambiente, referente
à opção Abrir SM. Como o Responsável pela GCS não abriu uma SM ainda, o número de
registros é zero. Esta tela possui alguns campos, como identificação e status da SM para um
melhor acompanhamento do processo.
FIGURA C.10 - Tela de Acompanhamento das SMs.
275
A FIGURA C.11 ilustra a tela do Formulário de Solicitação de Modificação, mostrada
quando o usuário insere um novo formulário de SM, que contém as informações relativas à
SM aberta pelo Responsável pela GCS, referente ao relatório de ocorrência recebido
(EWPJ_RO_001). Ao final da tela, o usuário tem a opção de “Encaminhar” ou “Cancelar”
o encaminhamento da SM ao Presidente do GCC.
FIGURA C.11 - Tela de Abertura da SM.
276
A FIGURA C.12 ilustra a tela de acompanhamento das SMs encaminhadas após a abertura
pelo Responsável pelo GCS. O campo status mostra a situação do produto após esta
primeira atividade do processo.
FIGURA C.12 - Tela de Acompanhamento das SMs com o Status atualizado para
“Aberta”.
277
A FIGURA C.13 ilustra a tela referente às atividades do GCC, que incluem a avaliação, o
agendamento da modificação, o registro da aprovação pela qualidade e o fechamento das
solicitações de modificação.
FIGURA C.13 - Tela Inicial das Atividades do GCC.
278
A FIGURA C.14 ilustra a tela de acompanhamento das SMs abertas e encaminhadas para
avaliação no Ambiente. Esta tela possui alguns campos, como identificação e status da SM
para um melhor acompanhamento do processo.
FIGURA C.14 - Tela de Acompanhamento das SMs Encaminhadas para Avaliação.
279
A FIGURA C.15 ilustra uma tela referente à atividade de avaliação da modificação,
acessível após selecionar o link da SM. Nela são registradas as informações referentes aos
resultados da ava liação da SM pelo GCC, como o esforço estimado para realização da
modificação, o impacto da modificação e o parecer. Ao final da tela, não visível na figura, o
usuário tem a opção de “Aprovar” ou “Rejeitar” a Solicitação de Modificação, após
registrar o parecer da avaliação e observações.
FIGURA C.15 - Tela de Avaliação da Modificação.
280
A FIGURA C.16 ilustra a tela de acompanhamento das SM após a aprovação pelo
Presidente do GCC. O campo status mostra a situação do produto após esta atividade do
processo.
FIGURA C16 - Tela de Acompanhamento das SM com o Status
“Aprovada para Implementação”.
281
Atualizado para
As FIGURAS C.17 e C.18 ilustram algumas telas da atividade de agendar a solicitação de
modificação. A tela inicial mostra as SMs que foram aprovadas para implementação. A
seguir, aparece a tela onde são acrescentadas as informações pertinentes ao
encaminhamento da SM para o Responsável pelo Produto ou outro desenvolvedor
designado para implementação da modificação. Estas informações serão apresentadas após
ativar o link referente à SM na tela inicial. Após a SM ser encaminhada para
implementação ela tem seu status atualizado para "Encaminhada para Implementação".
FIGURA C.17 - Tela Inicial da Atividade de Agendar SM.
282
FIGURA C.18 - Tela da Atividade Agendar SM.
A FIGURA C.19 ilustra a tela referente a algumas atividades do Cliente da GCS, que
incluem o registro da implementação das modificações nos itens de configuração e a
obtenção de itens de configuração para utilização.
283
FIGURA C.19 - Tela Inicial das Atividades Cliente da GCS.
As FIGURAS C.20 e C.21 ilustram as telas referentes ao registro da implementação da
modificação no item de configuração pelo Responsável pelo Produto. A tela inicial do
cliente da GCS, que no caso é o Responsável pelo Produto ou desenvolvedor, apresenta as
SMs que foram encaminhadas para implementação. Após a implementação da modificação
no item, que foi disponibilizado pelo Responsável pela GCS na sua área de trabalho, o
desenvolvedor deve encaminhar o item modificado para aprovação da modificação pela
284
Qualidade, registrar na SM as informações pertinentes e encaminhá- la. Depois disto, a SM
tem seu status atualizado para "Implementada".
FIGURA C.20 - Tela Inicial do Registro da Impleme ntação da Modificação.
285
FIGURA C.21 - Tela da Atividade Registro da Implementação da Modificação.
As FIGURAS C.22 e C23 ilustram as telas referentes ao registro da aprovação da
modificação no item de configuração pela qualidade. A tela inicial apresenta as SMs que
foram implementadas e aguardam aprovação pela qualidade. Após as atividades de
avaliação e revisão, a aprovação da qualidade deve ser registrada na SM, através da
referência aos relatórios das atividades de aprovação do item modificado, conforme a
FIGURA C.23. Para isto, o Presidente do GCC deve ter acesso ao relatório da aprovação do
286
item que deve ser referenciado na SM. Depois disto, a SM deve ter seu status atualizado
para "Verificada".
FIGURA C.22 - Tela Inicial do Registro da Aprovação da Modificação pela Qualidade.
287
FIGURA C.23 - Tela da Atividade Registro da Aprovação pela Qualidade.
As FIGURAS C.24 e C.25 ilustram as telas relativas ao fechamento da SM, após a revisão
da modificação implementada pelo GCC. São registradas na SM as informações referentes
288
ao fechamento da SM, e após a ativação da opção "Fechar", o status da SM é atualizado
para "Fechada".
FIGURA C.24 - Tela Inicial do Fechamento da SM.
289
FIGURA C.25 - Tela de Fechamento da SM.
290
A seguir são apresentadas algumas figuras mostrando exemplos de registros que devem ser
feitos durante as atividades de Gerenciamento da Configuração, como os registros das
modificações e das distribuições, e também um exemplo de relatório da configuração.
Registro de Histórico das Modificações
Identificação do Item de Configuração:
Responsável pela Modificação:
SM Associada:
Data: 20/01/2004 - 10:03:22
Descrição da Modificação:
FIGURA C.26 - Registro de Histórico das Modificações.
291
Registro de Solicitação de Liberação
Identificação da Distribuição:
Solicitante:
Data: 20/01/2004
Selecionar itens:
Responsável pela Distribuição: MADA
Descrição da Distribuição:
Registrar
Cancelar
FIGURA C.27 - Registro de Solicitação de Liberação.
Lista de Composição de Item
Configuração-Base: EWPJ_CBProduto 1.1
Marco de Projeto: Término dos Testes de Integração
Versão: 1.1
Data: __/__/_____
Responsável: RBP
Item de Configuração
Versão Estado
Data
Responsável
EWPJ_ERS.DOC
1.4
Controlado 10/11/2003
LAN
EWPJ_EPD.DOC
1.3
Controlado 23/11/2003
MRA
EWPJ_PPJ.DOC
2.3
Controlado 05/11/2003
JLM
....
Subsistema EWPJ_XXXX
>>>Componente EWPJ_Comp_A
1.3
..............
...
....
......
FIGURA C.28 - Lista de Composição.
292