REGINALDO PEREIRA DE SOUZA
CMM
Práticas de Gerência de Configuração
Universidade São Francisco
Itatiba – 2004
ii
REGINALDO PEREIRA DE SOUZA
CMM
Práticas de Gerência de Configuração
Pesquisa desenvolvida sob
orientação do professor
Adalberto Nobiato Crespo
para obtenção do título de
graduação do curso de
Análise de Sistemas da
USF - Itatiba
Universidade São Francisco
Itatiba – 2004
iii
CMM
Práticas de Gerência de Configuração
REGINALDO PEREIRA DE SOUZA
Monografia defendida e aprovada em 06 de dezembro de 2004 pela Banca
Examinadora assim constituída:
Prof. Adalberto Nobiato Crespo (Orientador)
USF – Universidade São Francisco – Itatiba – SP.
Prof. Alencar de Melo Júnior (Membro Interno)
USF – Universidade São Francisco – Itatiba – SP.
Prof. Rodrigo Prado (Membro Interno)
USF – Universidade São Francisco – Itatiba – SP.
iv
RESUMO
Esta pesquisa tem como objetivo principal, descrever as atividades de SCM –
Software Configuration Manager (Gerência de Configuração de Software), utilizando as
práticas de Nível 2 do modelo de qualidade de software CMU/SEI-CMM Carnegie Mellon
University/ Software Engineering Institute-Capability Maturity Model, também conhecido
como CMM, mostrando as vantagens do desenvolvimento paralelo, componentização e a
economia que se faz ao contemplar o modelo. Desta pesquisa, resulta um modelo contendo
os procedimentos que possam ser implementados em uma software house que queira incluir
SCM no seu processo de desenvolvimento de software.
Portanto, os passos para atingir os benefícios de SCM formam o escopo principal
desta pesquisa, mas para tais conclusões fez-se necessário estudar todo o modelo
CMU/SEI-CMM Carnegie Mellon University/ Software Engineering Institute-Capability
Maturity Model, com seus 5 (cinco) níveis de maturidade e suas áreas chaves, além do
processo de engenharia de software RUP – Rational Unified Process.
ABSTRACT
This research has as its main goal to describe the SCM - Software Configuration
Manager activities using the practices of Level 2 in the model of software quality
CMU/SEI-CMM Carnegie Mellon University/Software Engineering Institute-Capability
Maturity Model, also known as CMM, showing the advantages of the parallel development,
componentization and the economy made when contemplating the model. From this
research results a model containing the procedures that can be deployed in a software house
that would like to include SCM in its software development process.
Therefore, the steps to reach the SCM benefits make the main scope of this
research. But, for such conclusions, it was necessary to study the entire model CMU/SEICMM Carnegie Mellon University/ Software Engineering Institute-Capability Maturity
Model with its five (5) levels of maturity and its key areas, besides the software engineering
process RUP - Rational Unified Process.
v
SUMÁRIO
1.
INTRODUÇÃO....................................................................................................................................... 7
2.
MODELOS DE REFERÊNCIA .............................................................................................................. 8
2.1. CMM – Capability Maturity Model ........................................................................................................ 8
2.1.1.
Nível 1 – Inicial ................................................................................................................... 10
2.1.2.
Nível 2 – Repetível .............................................................................................................. 11
2.1.3.
Nível 3 – Definido ............................................................................................................... 13
2.1.4.
Nível 4 – Gerenciado ........................................................................................................... 15
2.1.5.
Nível 5 – Em Otimização..................................................................................................... 16
2.2. RUP - Rational Unified Process............................................................................................................ 17
3.
SCM – SOFTWARE CONFIGURATION MANAGER....................................................................... 20
3.1. Conceito ................................................................................................................................................ 20
3.2. Metas (Goals)........................................................................................................................................ 21
3.3. Atividades ............................................................................................................................................. 21
3.4. Artefatos................................................................................................................................................ 23
3.4.1. Plano de Gerência de Configuração .............................................................................................. 23
3.4.2. Itens de Configuração (ICs) .......................................................................................................... 23
3.4.3. Requisição de Mudança ................................................................................................................ 24
3.4.4. Relatório de Balanço..................................................................................................................... 24
3.4.5. Release Notes ................................................................................................................................ 24
4.
FERRAMENTAS .................................................................................................................................. 25
4.1. Rational ClearCase................................................................................................................................ 26
4.2. CVS - Concurrent Versions System...................................................................................................... 27
4.3. StarTeam ............................................................................................................................................... 27
4.4. Microsoft Visual SourceSafe ................................................................................................................ 27
4.5. Rational ClearQuest .............................................................................................................................. 28
4.6. +1CR..................................................................................................................................................... 28
5.
MODELO DE PROCESSO DE GERÊNCIA DE CONFIGURAÇÃO E MUDANÇA........................ 28
5.1. Fluxo de Atividades .............................................................................................................................. 29
5.1.1. Estabelecer Gerência de Configuração ......................................................................................... 29
5.1.2. Criar Ambiente de Configuração .................................................................................................. 30
5.1.3. Gerenciar Mudanças ..................................................................................................................... 30
5.1.4. Gerenciar Itens de Configuração................................................................................................... 32
5.1.5. Gerenciar Baseline e Release ........................................................................................................ 32
5.1.6. Monitorar Subcontratada............................................................................................................... 33
6.
CONSIDERAÇÕES FINAIS ................................................................................................................ 34
7.
GLOSSÁRIO......................................................................................................................................... 35
8.
REFERÊNCIAS BIBLIOGRAFICAS................................................................................................... 38
9.
BIBLIOGRAFIA ................................................................................................................................... 38
vi
10.
APÊNDICES ........................................................................................................................................... 38
Apêndice A – Template de Plano de Gerência de Configuração ................................................................. 38
Apêndice B – Template de Relatório de Balanço de Configuração ............................................................. 38
Apêndice C – Template de Release Notes ................................................................................................... 38
Apêndice D – Template de Formulário de Requisição de Mudança............................................................ 38
7
1. INTRODUÇÃO
A necessidade de sobrevivência comercial em um mercado sem fronteiras faz com
que as empresas vivam um processo de transformação contínua. Especificamente, as
empresas de software são umas das mais afetadas por estas transformações, dada a
dinâmica dos componentes envolvidos num projeto de software. Neste contexto, a
Engenharia de Software tem por finalidade auxiliar na construção de softwares da melhor
maneira possível.
Embora vários esforços no sentido de se produzir software com maior produtividade
e qualidade tenham ocorrido em décadas anteriores, foi nos anos 90 que se iniciou um
movimento de entendimento e solução de problemas crônicos que afetam a indústria de
software, principalmente os relacionados ao não cumprimento de prazos, orçamentos e
funcionalidades requeridas em seus produtos. Foi reconhecido que vários desses problemas
estariam baseados no fato da construção de software estar sendo conduzida por métodos
improvisados e de maneira artesanal, muitas vezes, mais dependente do talento profissional
e de esforços heróicos individuais, do que de processos formais orientados ao
gerenciamento e à engenharia de software.
Com isso, os modelos de qualidade do processo de software ganharam visibilidade
mundial. Em especial, o CMU/SEI-CMM Carnegie Mellon University/ Software
Engineering Institute-Capability Maturity Model ou, simplesmente, CMM [1].
Uma das áreas-chaves desse processo é a SCM – Software Configuration Manager
(Gerência de Configuração de Software), que tem como objetivo estabelecer e manter a
integridade dos produtos do projeto de software ao longo de todo o ciclo de vida de
software do projeto.
8
2. MODELOS DE REFERÊNCIA
A seguir serão apresentados o Modelo de Capacitação de Maturidade (Capability
Maturity Model – CMM) e o Processo Unificado da Rational (Rational Unified Process –
RUP), de grande aceitação em nível internacional e que foram utilizados como referência
para a elaboração desta pesquisa.
2.1. CMM – Capability Maturity Model
O CMM é uma iniciativa do SEI para avaliar e melhorar a capacitação de empresas
que produzem software. O projeto CMM foi apoiado pelo Departamento de Defesa do
governo dos Estados Unidos (DOD), que é um grande consumidor de software e precisava
de um modelo formal que permitisse selecionar os seus fornecedores de software de forma
adequada. Embora não seja uma norma emitida por uma instituição internacional como a
ISO ou o IEEE, este modelo tem tido uma grande aceitação mundial. O CMM é um guia
designado a ajudar as organizações de software a selecionar estratégias de melhoria de
processos[2].
O objetivo deste modelo é que o processo de software possa ser repetido, controlado
e medido e estabelecer uma compreensão comum entre clientes e a equipe de
desenvolvimento de software sobre a necessidade dos clientes, o CMM leva a organização
em direção a uma visão integrada onde as necessidades técnicas devem ser mantidas
consistentes com as atividades desenvolvidas e com o planejamento do projeto[3]. Para
efetuar este processo, os requisitos do software devem ser documentados e revistos pelos
gerentes de software e grupos afetados, incluindo representantes dos clientes e da
comunidade de usuários.
O modelo auxilia as organizações a implementarem um processo de melhoria
gradativa, baseado em níveis de maturidade. O termo maturidade está associado ao grau de
conhecimento, controle e sistemática de execução de um processo de software atingido por
9
uma organização[1]. O CMM se divide em cinco níveis conforme pode se observar na
figura 2.1 apresentada abaixo:
processo em
melhoria contínua
processo
previsível
processo
padronizado
processo
disciplinado
Pouco
Controlado
Em otimização (5)
Gerenciado (4)
Definido (3)
Repetível (2)
Inicial (1)
Figura 2.1
Cada nível especifica um conjunto de processos que devem ser estabelecidos para se
atingir a maturidade correspondente ao nível. Adicionalmente, cada nível serve de base
para o estabelecimento dos processos do nível seguinte.
Os cinco níveis do CMM são organizados em áreas chave (KPA). Ao todo, o
modelo possui 18 áreas chave. Cada área chave possui 5 características comuns:
•
Compromisso em realizar
•
Capacidade de realizar
•
Atividades realizadas
•
Medição e Análise
•
Verificação da Implementação
Cada área chave possui práticas chave (KP). Ao todo, o modelo possui 316 práticaschave.
10
As áreas chave do processo constituem a primeira divisão sistemática dentro dos
níveis de maturidade de uma organização. Esses grupos de atividades, quando executadas
em conjunto, satisfazem um conjunto de metas relevantes para a melhoria da capacitação
do processo. O CMM considera cada área chave um processo particular.
Os níveis de maturidade descrevem os problemas mais predominantes daquele
nível. Uma organização migra de um nível a outro sempre que consegue operacionalizar
todas as áreas-chave específicas de um nível.
2.1.1.
Nível 1 – Inicial
O processo de software é considerado como desorganizado, e ocasionalmente
também caótico. Poucos processos são definidos e as qualidades alcançadas pelo software,
os processos e o conhecimento pertencem às pessoas e não aos projetos.
No primeiro nível do modelo destacam-se as seguintes características:
•
Estágios das atividades mal definidos;
•
Dificuldade de visualizar e gerenciar o progresso e as atividades do projeto;
•
Os requisitos fluem no processo de uma forma não controlada e há um
“produto” resultante;
•
O cliente somente verifica se os seus requisitos foram atendidos na entrega do
produto.
Áreas-chave de Processo:
•
Este nível não possui áreas-chave de processos.
11
2.1.2. Nível 2 – Repetível
Processos básicos de gerenciamento de projetos são estabelecidos para
monitoramento de custo, prazo e funcionalidade. A necessária disciplina do processo é
adequada para repetir sucessos anteriores em projetos com aplicações similares.
No nível de maturidade definido como repetível, as políticas de gerenciamento do
software e os procedimentos detalhados para sua implementação estão estabilizados. O
planejamento e o gerenciamento dos novos projetos são baseados na experiência adquirida
em projetos similares anteriormente executados.
Um dos objetivos a ser alcançado no CMM Nível 2 é tornar corporativos todos os
processos de gerenciamento de software, o que permitirá à organização repetir
sistematicamente as melhores práticas internas estabelecidas pelas várias experiências
adquiridas em projetos anteriores.
Um efetivo processo de gerenciamento de software deve ser praticado,
documentado, garantido, treinado, medido e constantemente melhorado.
Projetos em organizações com CMM Nível 2 têm controles básicos de
gerenciamento de software. As estimativas de tempo, recursos e custos do software são
baseadas nos históricos dos projetos anteriores e projetadas através dos requisitos
estabelecidos no atual projeto. Os gerentes de software possuem um controle de
rastreabilidade em relação aos custos, cronogramas, funcionalidades e defeitos. Os
problemas são identificados na mesma etapa em que são gerados, evitando a propagação de
erros para fases posteriores.
Os requisitos de software e todos os produtos gerados durante o desenvolvimento
são sistematicamente monitorados, possibilitando um acompanhamento da evolução do seu
tamanho e complexidade. Os padrões de desenvolvimento do software são definidos e a
organização garante que estão sendo sistematicamente seguidos.
12
As organizações CMM Nível 2 que empregam terceiros (subcontratados) para todo
ou parte dos processos de desenvolvimento de um software, devem estruturar políticas
claras e padronizadas de como estabelecer vínculos precisos e transparentes no
relacionamento cliente-fornecedor.
O processo de software de uma organização CMM Nível 2 pode ser entendido como
um processo disciplinado, pois as políticas de planejamento e rastreamento do projeto de
software estão estáveis e as práticas aplicadas a determinados projetos podem ser
convenientemente repetidas corporativamente. O processo de software está sob o controle
de um consolidado modelo de gerenciamento de projetos regido por planos objetivos e
realistas, estimados a partir das experiências de projetos anteriores.
No segundo nível do modelo destacam-se as seguintes características:
•
As atividades, medições, pontos e verificação estão definidos;
•
Requisitos do cliente e produtos do trabalho são controlados;
•
É possível medir qualidade, custo e cronograma;
•
O processo de desenvolvimento de software permite o gerenciamento entre pontos
de transição (“milestones”);
•
O cliente pode analisar o produto durante o processo de software (“checkpoints”);
•
Existem mecanismos formais para a correção de desvios;
•
Os processos pertencem aos projetos e não às pessoas.
Áreas chave de Processo:
RM – Gerência de Requisitos
SPP – Planejamento de Projeto de Software
SPTO – Acompanhamento e Supervisão do projeto de Software
13
SSM – Gerenciamento de subcontratado de software
SQA – Garantia da qualidade de software
SCM – Gerência da configuração de software
2.1.3. Nível 3 – Definido
O processo de software para as atividades de gerenciamento e engenharia é
documentado, padronizado e integrado no âmbito da organização e todos os projetos são
adaptados deste processo.
No nível de maturidade classificado como Definido, os diversos processos
padronizados de desenvolvimento de software estão adequadamente documentados.
Os processos de gerenciamento do software estão convenientemente integrados aos
processos de engenharia de software, tornando o modelo de processos único e integrado às
diversas áreas organizacionais. Os processos estabelecidos em organizações CMM Nível 3
são usados e ajustados para auxiliar os gerentes e profissionais de software a ganharem
mais produtividade.
A organização busca as melhores práticas de engenharia de software quando
padronizam seus processos de software. Há um grupo responsável por estabelecer e
documentar as atividades do processo de software denominado SEPG (Software
Engineering Process Group). Um amplo programa de treinamento corporativo deverá ser
implementado para desenvolver gerentes e profissionais e capacitá-los a desempenhar
melhor suas funções, empregando uma política contínua de transferência do conhecimento
e adequado desenvolvimento e aprimoramento de habilidades.
As organizações CMM Nível 3 conseguem gerenciar processos dinâmicos de
desenvolvimento de software. A partir de um processo padrão desenvolvimento, essas
organizações podem acrescentar, modificar ou eliminar atividades, dependendo das
14
características e riscos envolvidos no projeto, possibilitando a criação de um processo de
desenvolvimento “customizado” a cada situação. A equipe do SEPG estabelece os pontos
de processo que possibilitam a “customização” e estabelece os critérios de flexibilização e
em quais situações serão empregadas. Um processo bem definido inclui pré-requisitos para
início das fases do projeto, artefatos obrigatórios e opcionais, padrões e modelos de
referência, procedimentos de execução dos trabalhos, mecanismos de verificação de
documentos, artefatos de saída e critérios de finalização das etapas. Nesse nível, é possível
visualizar claramente como cada projeto em execução está evoluindo.
O processo de software de uma organização CMM Nível 3 pode ser entendido como
padronizado e consistente porque ambas as atividades de engenharia e desenvolvimento
estão estáveis e replicáveis. Todos os aspectos relativos a um produto de software como
custos, atividades e funcionalidades estão sob controle e a qualidade é medida e registrada.
Existe uma visão corporativa do processo de desenvolvimento, um entendimento
claro sobre as atividades e responsabilidades estabelecidas neste processo de software.
No terceiro nível do modelo destacam-se as seguintes características:
•
As atividades no processo definido de projeto de software são visíveis;
•
Os processos utilizados estão estabelecidos e padronizados em toda a organização;
•
Como estão estáveis, os processos podem ser medidos quantitativamente;
•
Gerentes e engenheiros entendem suas atividades e responsabilidades no processo;
•
Gerenciamento preparado pró-ativamente para possíveis riscos;
•
O cliente pode obter status atualizado, rapidamente e corretamente, com detalhe
entre as atividades;
•
Os processos pertencem agora a organização e não aos projetos.
15
Áreas chave de Processo:
OPF – Foco no processo da organização
OPD – Definição do processo da organização
TP – Programa de treinamento
ISM – Gerência Integrada de Software
SPE – Engenharia de Produto de Software
IC – Coordenação entre grupos
PR – Revisões técnicas formais
2.1.4. Nível 4 – Gerenciado
Medições detalhadas do processo de software e qualidade do produto são coletadas.
Ambos são quantitativamente entendidos e controlados. O gerenciamento quantitativo do
processo tem o seu foco no processo e a capacidade do processo é conhecida
quantitativamente. Quando o desempenho cai fora dos limites, deve-se identificar a razão e
a realizar ações corretivas adequadas.
Controle quantitativo no CMM significa qualquer técnica quantitativa ou baseada
em
métodos
estatísticos.
As
palavras
“estatística”
e
“quantitativa”
envolvem
necessariamente dados (números). Gerenciamento baseado em dados (fatos) resulta em
decisões objetivas.
No Nível 2, o foco da qualidade é “conformidade com os requisitos”, já no Nível 4,
há uma ênfase na compreensão das necessidades do cliente, do usuário final e da
organização. No Nível 4 dados são coletados e analisados nos diversos projetos da
organização, metas mensuráveis de qualidade de produto são definidas e utilizadas.
16
No quarto nível do modelo destacam-se as seguintes características:
•
Medidas de qualidade e produtividade são coletadas em todos os projetos;
•
Gerentes possuem uma base de dados para tomadas de decisões;
•
A habilidade de prever resultados é maior e a variabilidade do processo é menor;
•
O cliente pode estabelecer um entendimento quantitativo da capacidade do processo
e riscos antes do projeto iniciar;
Áreas chave de Processo:
QPM – Gestão quantitativa dos processos
SQM – Gestão da qualidade de software
2.1.5. Nível 5 – Em Otimização
Processo contínuo de melhoria é possível pela realimentação quantitativa do
processo e da condução de idéias inovadoras e tecnológicas. O processo de melhoria no
Nível 5 pode ser considerado como um “estilo de vida” da organização. Nas organizações
maduras todos estão envolvidos nas atividades de melhoria.
Uma das finalidades no Nível 5 é identificar a causa dos defeitos e evitar que eles
aconteçam novamente. Envolve analisar defeitos que foram encontrados no passado,
realizar ações específicas para evitar a ocorrência desses tipos de defeitos no futuro.
No Nível 5 existe um grande foco na analise das causas, por exemplo, verifica-se
porque o processo permitiu que o defeito ocorresse; o que no processo necessita ser
corrigido para prevenir a ocorrência do defeito no futuro.
17
Existe no Nível 5 também uma preocupação com a identificação de novas
tecnologias (ex. ferramentas, métodos e processos) e transferi-las para a organização de
uma forma disciplinada. Envolve identificar, selecionar e avaliar novas tecnologias.
Outra preocupação do Nível 5 é a de melhorar continuamente os processos de
software utilizados na organização com o objetivo de melhorar a qualidade de software,
aumentando a produtividade e diminuindo o ciclo de desenvolvimento do produto.
No quinto nível do modelo destacam-se as seguintes características:
•
Melhoria contínua do processo objetivando produtividade e qualidade;
•
Gerentes são aptos a estimar e monitorar a eficácia das mudanças;
•
Forte relação de parceria com o cliente.
Áreas chave de Processo:
DP – Prevenção de não-conformidades
TCM – Gestão de Mudança Tecnológica
PCM – Gestão de Mudança do Processo
2.2. RUP - Rational Unified Process
O padrão CMM especifica detalhadamente “O QUÊ” deve ser feito. O mercado
muitas vezes, se perguntou “COMO” fazê-lo. Uma das empresas que se habilitou a
responder esta questão foi a Rational Software Corporation que desenvolveu, com esta
finalidade, o processo de engenharia de software Rational Unified Process (RUP).
O Rational Unified Process é um processo de engenharia de software, cujas
principais características são um desenvolvimento iterativo e incremental, orientado a
objetos, com foco na criação de uma arquitetura robusta, análise de riscos, e a utilização de
casos de uso para o desenvolvimento. O RUP foi desenvolvido para ser aplicável a uma
18
grande classe de projetos diferentes e pode ser considerado como um modelo genérico para
processos de desenvolvimento. Isso significa que ele deve ser configurado para ser usado
eficientemente [4].
Alguns conceitos do RUP definem: o ator - cujas responsabilidades e
comportamentos podem ser aplicados a diversos indivíduos - a atividade, a unidade de
trabalho de um determinado ator e os artefatos, que são elementos utilizados, criados ou
modificados pela ação do ator durante a atividade. A atuação em uma atividade ao longo do
tempo é denominada tarefa, e gera, na coletividade um workflow, isto é, uma seqüência que
produz um resultado observável.
Figura 2.1
A figura 2.1 mostra a arquitetura geral do RUP.
O RUP tem duas dimensões:
•
O eixo horizontal representa o tempo e mostra os aspectos do ciclo de vida do
processo à medida que se desenvolve;
•
O eixo vertical representa as disciplinas, que agrupam as atividades de maneira
lógica, por natureza.
19
A primeira dimensão representa o aspecto dinâmico do processo quando ele é
aprovado e é expressa em termos de fases, iterações e marcos. A segunda dimensão
representa o aspecto estático do processo, como ele é descrito em termos de componentes,
disciplinas, atividades, fluxos de trabalho, artefatos e papéis do processo.
O gráfico mostra como a ênfase varia através do tempo. Por exemplo, nas iterações
iniciais, dedicamos mais tempo aos requisitos. Já nas iterações posteriores, gastamos mais
tempo com implementação.
O RUP se encontra definido em quatro fases: Concepção, Elaboração, Construção e
Transição, cada uma com objetivos específicos. Na fase de Concepção, deve-se estabelecer
o escopo e a viabilidade econômica do projeto. Na Elaboração, o objetivo é eliminar os
principais riscos e estabelecer uma arquitetura estável a partir da qual o sistema poderá
evoluir. Na fase de Construção, um produto completo é desenvolvido de maneira iterativa
até que esteja pronto para ser passado aos usuários, o que ocorre na fase de Transição, onde
uma versão beta do sistema é disponibilizada. No final da Transição pode ser iniciado um
novo ciclo de desenvolvimento para a evolução do produto, o que envolveria todas as fases
novamente. Todas as fases têm ao final um marco (milestone) de verificação de quais
objetivos da fase foram alcançados [4].
Estas fases geram, cada uma, artefatos e revisões nos requisitos de construção do
software. Dentre os vários workflows do modelo RUP, tem destaque o de Gerência de
Configuração e Mudança, representante da KPA de SCM, que mantém a integridade dos
artefatos do projeto.
Este workflow, por si próprio, gera como artefatos o plano de Gerência de
Configuração e as solicitações de alterações, além de atas de reuniões sobre a infraestrutura do projeto. Conforme observado na figura 2.1, este processo é continuo desde o
inicio do projeto, com um crescimento constante das atividades.
20
3. SCM – SOFTWARE CONFIGURATION MANAGER
3.1. Conceito
A área chave SCM – Software Configuration Manager (Gerência de Configuração e
Mudança) é a disciplina que gerencia e controla a evolução de um software através,
basicamente, de controle formal de versões e solicitações de mudança. Esta área chave
permite que gerentes, analistas, programadores, testadores e usuários entendam o sistema
não apenas em seu estado atual, mas também em seus estados anteriores e, devido às
mudanças em curso, em um estado futuro.
A adoção de SCM por uma empresa envolve custos e benefícios que devem ser
considerados. Os principais benefícios decorrentes da aplicação estão entre a facilidades
para acomodar mudanças, o maior controle sobre os produtos, a economia de tempo de
desenvolvimento, a facilidades na geração de versões diferentes de um mesmo produto de
software (customização), a manutenção de históricos de produtos e a facilidades de se
voltar a situações anteriores. Os principais custos, por outro lado, são o treinamento e os
investimentos para a implementação, que englobam recursos humanos e computacionais.
Entre os conceitos fundamentais de SCM está o conceito de “Itens de
Configuração”, que pode ser definido como “cada um dos elementos de informação que
são criados durante o desenvolvimento de um produto de software, ou que para este
desenvolvimento sejam necessários, que são identificados de maneira única e cuja
evolução é passível de rastreamento”[2].
Outro importante conceito é o de baseline (Configurações-Base). Por baseline,
entende-se um conjunto bem definido de Itens de Configuração que representam um estágio
do desenvolvimento, que é passível de modificações apenas mediante um mecanismo
formal de alterações[1]. Portanto, se podem medir as quatro atividades principais de SCM
como sendo:
•
Identificação de Itens de Configuração
21
•
Controle de configuração das baselines
•
Administração de estado das baselines (processo formal de mudanças)
•
Auditagem desta configuração
Todas essas atividades levam a um objetivo final, o controle de versões, que
engloba a automatização do rastreamento de arquivos, a prevenção de conflitos entre
desenvolvedores, permitindo o desenvolvimento paralelo, a recuperação de versões prévias
para manutenção ou upgrade e a agregação de novos módulos, funcionalidades ou
requisitos.
3.2. Metas (Goals)
Meta 1
As atividades de Garantia da Qualidade de Software são planejadas.
Meta 2
A aderência dos produtos de software e das atividades aos padrões,
aos procedimentos e aos requisitos estabelecidos é verificada
objetivamente.
Meta 3
As atividades e os resultados das atividades de Garantia da
Qualidade de Software são informados às pessoas e aos grupos
afetados.
Meta 4
As questões de não conformidade, que não podem ser resolvidas
internamente ao projeto, são levadas ao conhecimento da gerência
superior.
3.3. Atividades
Atividade 1
É elaborado um plano de GCS para o projeto de software, de acordo
com procedimentos documentados.
22
Atividade 2
Um plano de GCS documentado e aprovado é utilizado como base
para a realização das atividades de GCS.
Atividade 3
Um sistema de biblioteca para gerência de configuração é
estabelecido como repositório para as configurações básicas
(baselines) de software.
Atividade 4
Os produtos de trabalho de software a serem colocados sob Gerência
de configuração são identificados.
Atividade 5
As solicitações de alterações e relatórios de problemas para todos os
itens/unidades de configuração são iniciados, revisados, aprovados e
encaminhados de acordo com um procedimento documentado.
Atividade 6
As alterações das configurações básicas (baselines) são controladas
de acordo com um procedimento documentado.
Atividade 7
Os produtos são criados a partir da biblioteca de configuração básica
do software (baseline) e suas versões são controladas de acordo com
um procedimento documentado.
Atividade 8
A situação dos itens/unidades de configuração é registrada de acordo
com um procedimento documentado.
Atividade 9
Os relatórios padrão que documentam as atividades da GCS e o
conteúdo da configuração básica (baseline) do software são
desenvolvidos e disponibilizados para as pessoas e para os grupos
afetados.
Atividade 10
As auditorias na configuração básica (baseline) do software são
conduzidas de acordo com um procedimento documentado.
23
3.4. Artefatos
Considera-se artefato todo conjunto de informações produzidas, modificadas ou
utilizadas por um processo. Um artefato pode ser um modelo, um componente de um
modelo ou um documento. Um artefato pode conter outros artefatos.
Serão apresentados a seguir os artefatos gerados durante o processo de Gerência de
Configuração.
3.4.1. Plano de Gerência de Configuração
O Plano de Gerência de Configuração deve descrever todas as atividades
relacionadas à gerência de configuração e controle de mudança do projeto a serem
realizados ao longo do ciclo de vida do produto. Deve relacionar as responsabilidades dos
membros da equipe do projeto e recursos necessários de hardware, software e humanos.
3.4.2. Itens de Configuração (ICs)
São considerados ICs todos os elementos necessários para o desenvolvimento e
geração dos produtos de software, conforme lista abaixo.
•
Códigos fonte do projeto
•
Documentos de especificação de requisitos
•
Documentos de análise e projeto
•
Documentos de testes
•
Manuais do produto de software
Os ICs com características diferentes dos critérios para seleção, descritos acima,
podem ser considerados como IC do projeto usando os seguintes critérios :
•
O item é entregue ao cliente e faz parte do pacote de software do projeto.
•
O item é essencial para a geração do produto de software do projeto.
24
3.4.3. Requisição de Mudança
Mudanças nos artefatos desenvolvidos podem ser solicitadas através de uma
Requisição de Mudança, conforme definido explicitamente no Plano de Gerência de
Configuração do projeto. Este artefato pode ser utilizado para documentar e rastrear
defeitos encontrados no produto, solicitações de melhoria ou qualquer outro tipo de
solicitação que demande alguma alteração nos produtos do projeto.
3.4.4. Relatório de Balanço
O relatório de balanço de configuração pode ser obtido visualmente através da
ferramenta de gerência de configuração ou ser um documento gerado. O conteúdo mínimo
do relatório de balanço de configuração das baselines é o seguinte :
•
Nova versão da baseline
•
Versão anterior da baseline
•
Lista de requisitos acordados/implementados
•
Lista de solicitações de alteração acordadas/implementadas
•
Diferença da baseline atual em relação à anterior
3.4.5. Release Notes
O Release Notes deve ser um documento gerado e considerado parte integrante da
release a ser entregue ao cliente.
Devem constar na Release Notes no mínimo as seguintes informações:
•
nome do produto
•
versão do produto
•
data de liberação
25
•
contato para suporte técnico
•
referência para o procedimento de instalação
•
lista das novas funcionalidades
•
lista das solicitações implementadas
4. FERRAMENTAS
Uma vez identificadas as boas práticas e definido um processo de Gerência de
Configuração, o uso de uma ferramenta auxilia em muito o gerenciamento. Tais
ferramentas devem ter como foco facilitar o acesso às informações, garantir a integridade
dos dados, controlar versões dos artefatos e acompanhar as requisições de mudanças. Estas
ferramentas estão se tornando essenciais para agilizar o desenvolvimento, pois através delas
é que o paralelismo se torna viável e controlado, além de garantir o acompanhamento do
ciclo de vida do software através dos históricos das mudanças.
Em suma, uma boa ferramenta de Gerência de Configuração deve:
•
Possuir um repositório seguro e escalonável;
•
Controlar o versionamento dos itens de configuração;
•
Integrar equipes de desenvolvimento;
•
Permitir alterações concorrentes, garantindo a integridade do software;
•
Possuir mecanismos de comparação e mesclagem de itens concorridos;
•
Rastrear solicitações de mudança, bem como atividades atribuídas aos desenvolvedores;
•
Controlar e auditar o acesso e mudanças realizadas pelas equipes em itens de
configuração;
26
•
Permitir a retomada do projeto em qualquer momento do ciclo de vida, garantindo a
integridade de todos os seus itens naquele dado momento.
Como exemplo, serão apresentadas a seguir algumas ferramentas disponíveis
atualmente no mercado, descrevendo suas características e qual sua aplicabilidade e
contribuição para a Gerência de Configuração.
4.1. Rational ClearCase
É uma ferramenta shareware de gerência de artefatos de software, desenvolvida
pela IBM Rational Software, que oferece recursos e processos que podem ser
implementados e personalizados sob demanda. Ela unifica o processo de mudança sobre o
ciclo de vida de desenvolvimento e é escalonável a todo tamanho de empresa, sem
mudança de ferramentas ou processos. Possui as seguintes funções principais:
•
Dá suporte ao desenvolvimento paralelo, mesmo em times distribuídos;
•
Oferece controle de versão, gerenciamento de área de trabalho, gerenciamento de
compilação (build) e configuração do processo;
•
Versiona os artefatos de software desenvolvidos;
•
Provê acesso global a dados de forma transparente, podendo ser via interface Web;
•
Habilita o processo baseado em atividades da Rational para UCM (Unified Change
Management);
•
Integrável com algumas IDE´s, ferramentas de desenvolvimento e autoria;
•
Suporta times de pessoas distribuídos;
•
Oferece recurso de Checkin/checkout;
•
Versionamento de diretórios, subdirectórios e todos os objetos do sistema de arquivo.
27
4.2. CVS - Concurrent Versions System
O CVS (Concurrent Versions System) é uma ferramenta open-source de apoio ao
desenvolvimento de software cuja principal função é controlar as modificações realizadas
nos arquivos de um projeto. Possui um mecanismo automatizado para identificar e
controlar as modificações realizadas nos arquivos de um projeto ao longo do tempo,
garantindo a integridade e a rastreabilidade das modificações.
O CVS é visto como uma extensão natural do processo de desenvolvimento,
permitindo que se possam realizar modificações paralelas de forma coerente e padronizada,
especialmente em se tratando de equipes geograficamente dispersas.
4.3. StarTeam
Desenvolvido pela Borland, o StarTeam é um software shareware que fornece um
sistema de gerenciamento de configuração automatizado e abrangente, para apoiar o
gerenciamento de recursos e tarefas do ciclo de vida da aplicação.
O StarTeam é um sistema de gerenciamento de alterações automatizado que coloca
nas mãos das equipes de projeto o controle do processo de desenvolvimento, fornecendo
aos usuários acesso a todos os recursos do projeto através de um repositório central apoiado
por um fluxo de trabalho customizável e gerenciamento de processo.
O StarTeam oferece um ambiente integrado para o gerenciamento de requerimentos
e alterações, rastreamento de defeitos e discussões para o gerenciamento das tarefas
necessárias para o gerenciamento efetivo do projeto.
4.4. Microsoft Visual SourceSafe
Sistema shareware de controle de versão que trabalha junto com outro produto da
Microsoft, o Visual Studio .NET, controla arquivos-fonte que podem ser classificados
como valiosos, controla o uso concorrente de arquivos, “etiquetação” de arquivos para
controle de versão, controle de mudanças ao nível de linhas de código, etc.
28
4.5. Rational ClearQuest
Ferramenta shareware desenvolvida pela IBM Rational Software, parte integrante
da Suite Rational, que tem como função controlar mudanças. Uma de suas principais
características é a flexibilidade que possibilita ser customizada de acordo com as
necessidades de cada projeto. Um outro fator importante deste software é a possibilidade de
integração com as demais ferramentas Rational, principalmente o Rational ClearCase.
4.6. +1CR
Software shareware desenvolvido pela Plus-one Software Engeneering, com o
objetivo de controlar requisições de mudanças referentes ao projeto. Armazena descrição
do problema, versão, status, prioridade, categoria, entre outros. Gera relatórios sobre
mudanças no projeto.
5. MODELO DE PROCESSO DE GERÊNCIA DE CONFIGURAÇÃO E
MUDANÇA
Na seqüência, será apresentado um modelo de processo de Gerência de
Configuração, que se adotado num desenvolvimento de software, estará seguindo todas as
metas determinadas pela KPA de SCM – Software Configuration Manager, portanto de
acordo com as exigências do modelo CMM.
Portanto, seguindo o processo e sub-processos representados no fluxograma a seguir
(Figura 5.1), observam-se todo o fluxo de atividades necessárias para um bom
acompanhamento de projeto no ponto de vista da Gerência de Configuração e Mudança.
29
Estabelecer
Configuração
Criar Ambiente
de
Configuração
Gerenciar Requisitos
Gerenciar
Mudança
Gerenciar
Itens de
Configuração
Planejar Projeto
Acompanhar Projeto
Gerenciar Baselines
e
Releases
Figura 5.1
Monitorar
Subcontratada
(Se aplicável)
Inicialmente, deve-se elaborar o Plano de Gerência de Configuração (Atividade
Estabelecer Configuração). O ambiente de projeto definido no Plano de Gerência de
Configuração é então criado num repositório (atividade Criar Ambiente de Configuração).
Após estas atividades, pode-se tanto acompanhar uma solicitação de mudança (atividade
Gerenciar Mudanças) como evoluir o sistema (atividade Gerenciar Itens de Configuração).
5.1. Fluxo de Atividades
5.1.1. Estabelecer Gerência de Configuração
O Plano de Gerência de Configuração é elaborado nesta atividade. O Plano de
Desenvolvimento de Software descreve os artefatos a serem produzidos no projeto e
auxiliam na definição dos itens de configuração (os artefatos que são submetidos a um
30
controle formal de versão e mudança). Esta atividade é usualmente feita no início do
projeto.
Compreende as seguintes atividades:
•
Listar os itens de configuração a serem considerados
•
Definir baselines e seu conteúdo (ICs)
•
Elaborar Plano de Gerência de Configuração
•
Planejamento das auditorias de configuração
5.1.2. Criar Ambiente de Configuração
Um dos papéis do Plano de Gerência de Configuração é definir a estrutura de
diretórios de um projeto e os artefatos que estarão sob um controle de versão formal. Esta
atividade apresenta a criação do ambiente definido no Plano de Gerência de Configuração
no repositório do projeto.
Compreende as seguintes atividades:
•
Criar o ambiente de Configuração
•
Definir ferramentas de apoio
5.1.3. Gerenciar Mudanças
Após a liberação inicial da informação de configuração de produto (baseline), todas
as alterações devem ser controladas.
O potencial de impacto de uma alteração, requisitos do cliente e da baseline afetará
o grau de controle necessário para processar uma alteração proposta ou concessão.
31
Uma requisição de mudança pode ser feita por qualquer responsável (porém,
usualmente, o usuário faz a maioria das solicitações). Um comitê analisa e avalia o impacto
da mudança e, eventualmente, aprova ou rejeita a requisição e aloca recursos para
implementá-la (em caso de aprovação). Durante a evolução do estado da mudança, outros
responsáveis (como programadores, por exemplo) atualizam o artefato Requisição de
Mudança (que registra todo o histórico de uma mudança). Os estados possíveis percorridos
por uma mudança devem ser definidos no Plano de Gerência de Configuração.
Portanto o objetivo deste sub-processo é assegurar que as mudanças na configuração
feitas em um projeto sejam consistentes com as solicitações de alterações selecionadas,
analisando o impacto gerado e informando os envolvidos.
Compreende as seguintes atividades:
•
Requisitar Mudanças
•
Atualizar Requisição de Mudança
•
Avaliar e Aprovar Mudança
É conveniente que o processo para controlar as mudanças seja documentado e é
conveniente que inclua o seguinte:
•
descrição, justificativa e registro da alteração;
•
categorização da alteração em termos de complexidade, recursos e programação;
•
a avaliação das conseqüências da alteração;
•
detalhes de como a alteração deve ser disposta;
•
detalhes de como a alteração deve ser implementada e verificada.
32
5.1.4. Gerenciar Itens de Configuração
Esta atividade descreve as diferentes etapas de manipulação de um item de
repositório. O check-out copia arquivos do repositório para a Área de Trabalho para ser
alterado. A atividade de check-in atualiza arquivos do repositório com versões mais atuais
contidas na Área de Trabalho. A atividade Atualizar Área de Trabalho copia arquivos do
repositório para a Área de Trabalho para ser consultado (read-only). Eventualmente, o
Integrador marca (rotula, aplica label) um conjunto de artefatos que compõe um baseline
ou uma Unidade de Implantação (release). Estas atividades devem ser executadas de
acordo com as políticas contidas no Plano de Gerência de Configuração.
Compreende as seguintes atividades:
•
Check-out
•
Check-in
•
Atualizar Área de Trabalho
•
Estabelecer Baseline
•
Criar Unidade de Implantação (Release)
5.1.5. Gerenciar Baseline e Release
Uma baseline consiste da informação de configuração de produto aprovada que
representa a definição do produto. Configurações básicas e alterações desta configuração
básica aprovadas representam a configuração básica atual.
É conveniente que as configurações básicas sejam estabelecidas sempre que
necessário durante o ciclo de vida do produto para definir uma referência para atividades
posteriores.
O nível de detalhe em que o produto é definido numa configuração básica depende
do grau de controle requerido.
33
5.1.6. Monitorar Subcontratada
As atividades de monitoramento de gestão de configuração de software da
subcontratada são planejadas no Plano de Gestão de Configuração do Projeto e a
profundidade das monitorações deve levar em consideração o nível de maturidade da
subcontratada.
Esse planejamento define:
•
Periodicidade: deve ser estabelecida em função das datas marco do projeto.
•
Envolvidos: um membro do Grupo de Gerência de Configuração (GGC) do
projeto entra em contato com o responsável por gestão de configuração da
subcontratada.
•
Mecanismo: pode ser troca de e-mail, relatórios solicitados, acesso remoto ao
repositório da subcontratada, áudio/vídeo conferência, reunião presencial.
•
Resultado: relatório com o resultado do monitoramento, o qual será
encaminhado ao gerente de projeto.
•
Responsabilidades da subcontratada em resolver os problemas: a subcontratada
é responsável por resolver os problemas encontrados.
•
Atividades: revisar documentos, registros e padrões associados à gestão de
configuração da subcontratada; assegurar que os produtos entregues pela
subcontratada possam ser prontamente integrados e incorporados no ambiente
local estabelecido para Gerência de Configuração (GC) do projeto (devem ser
seguidos os critérios de aceitação de produto estabelecidos em contrato);
monitorar o repositório da subcontratada, para garantir que os padrões e
procedimentos para GC estão sendo seguidos.
34
6. CONSIDERAÇÕES FINAIS
A pesquisa buscou mostrar que quando os projetos de software são planejados e
executados com maiores níveis de previsibilidade, os riscos são mais conhecidos e
melhores gerenciados, garantindo-se assim um melhor controle dos resultados esperados.
Portanto pode-se concluir que um dos objetivos fundamentais do modelo CMM
corresponde à idéia de se prever com precisão cada vez maior os prazos e custos dos
projetos de software, assim como os níveis de qualidade e produtividade a serem obtidos,
sempre com o objetivo da melhoria contínua, ou seja, tentar aprender com as falhas e
corrigí-las nos projetos seguintes.
O CMM diz o que deve ser feito, mas não diz como fazer.
Apesar dos debates sobre vantagens e desvantagens do CMM, ele tem sido usado há
mais de 10 anos, tempo suficiente para que muitas companhias possam verificar o aumento
da qualidade de seus produtos e a diminuição de seus custos de produção. Numa era de
crescente aumento de competitividade, qualquer melhora na produtividade do software não
pode ser ignorada.
Com isso, o objetivo principal desta pesquisa é evidenciar as vantagens e melhoras
que a Gerência de Configuração proporciona no decorrer do desenvolvimento do software,
pois através do controle das alterações se possibilita um desenvolvimento totalmente
mapeado, integração entre as equipes envolvidas, maior controle do cronograma do projeto,
menos esforços em manutenção e principalmente, garante a integridade do software
aproximando-se da satisfação do cliente.
Por fim, ao seguir o modelo de processo de Gerência de Configuração apresentado,
utilizando os artefatos sugeridos na forma de templates, contando com uma equipe
motivada e ferramentas adequadas se torna viável a implantação satisfatória da Gerência de
Configuração contemplando todas as práticas de nível 2 da KPA de SCM – Software
35
Configuration
Manager,
resultando
no
aumento
da
produtividade
dos
desenvolvedores, com a redução do retrabalho e a possibilidade de paralelismo.
7. GLOSSÁRIO
Análise
(UML) Parte do processo de desenvolvimento de software
em que o principal objetivo é construir um modelo do
domínio do problema. A análise foca no “o quê” fazer. O
projeto foca no “como” fazer.
Arquitetura
Organização ou estrutura dos componentes significativos de
um sistema e das interações entre eles através de interfaces.
Os componentes podem ser decompostos em componentes e
interfaces menores sucessivamente.
Artefato
Conjunto de informações produzidas, modificada ou
utilizada por um processo.
Atividade
Unidade de trabalho que determinado membro da equipe
pode ser solicitado a realizar.
Baseline
Versão revista e provada de um artefato, constituindo uma
base estável para futuras evoluções do mesmo, que só pode
ser modificado através de um processo formal.
Build
Versão operacional de um sistema ou parte dele que
demonstra um conjunto das funcionalidades a serem
oferecidas pelo produto final.
Caso de Uso
(RUP) Uma seqüência de ações que um sistema deve realizar
para apresentar um resultado de valor mensurável para o
usuário. (UML) Especificações de uma seqüência de ações,
incluindo suas variações, que um sistema (ou outra entidade)
pode realizar, interagindo com seus atores.
CMM
Capability Maturity Model
36
Configuração
Requisitos, projeto e implementação que definem uma
versão específica de um sistema ou componente.
Controle de mudança
Atividade de controlar e rastrear as modificações aos
artefatos.
Escopo do produto
(PMBOK 96) Aspectos e funções que devem ser incluídas
no produto ou serviço.
Escopo do projeto
(PMBOK 96) Trabalho que deve ser feito com a finalidade
de entregar um produto de acordo com os aspectos e as
funções especificados.
Fase
Espaço de tempo entre dois marcos significativos do projeto,
durante o qual objetivos são atingidos, artefatos elaborados e
decisões sobre passar ou não para a próxima fase são
tomadas.
Funcionalidade (feature)
(RUP) Serviço oferecido por um sistema, observável
externamente, que satisfaz uma certa necessidade do
stakeholder.
Gerência de Configuração
Processo de apoio cujo objetivo é identificar, definir e
estabelecer baselines de itens de configuração.
Itens de configuração
Artefato de configuração que satisfaz uma função específica
e pode ser unicamente identificado em um determinado
momento de referência.
KPA
Key Process Area (Área Chave do Processo)
Modelo
Descrição completa de um sistema sob determinada
perspectiva (por completa entenda-se que não é necessária
nenhuma outra informação para a compreensão daquela
perspectiva do sistema).
Papel
Definição de comportamento e responsabilidades de um
indivíduo ou grupo de indivíduos trabalhando juntos como
uma equipe, no contexto de uma organização de engenharia
37
de software.
Processo
Conjunto de passos relativamente ordenados executados com
a intenção de se atingir um objetivo.
Produto
Software resultante do desenvolvimento de alguns dos
artefatos
relacionados
(documentação,
material
de
treinamento, etc.).
Projeto
(UML) Parte do processo de desenvolvimento de software
em que o principal objetivo é decidir como o sistema será
implementado.
Release
Todo ou parte do produto final, objetivo de avaliação ao
final de uma fase do processo de desenvolvimento. É
composto por uma versão estável e executável do produto,
junto com os artefatos necessários à sua utilização, podendo
ser interna ou externa.
Repositório
(UML) Local de armazenamento de documentos, modelos,
interfaces e implementações.
Requisição de mudança
Termo utilizado para qualquer solicitação de alteração em
um artefato por um stakeholder do projeto. As informações
de uma solicitação de mudança podem ser documentadas no
artefato Requisição de Mudança.
RUP
Rational Unified Process (Processo Unificado Rational).
Stakeholder
Indivíduo afetado materialmente pelo resultado do sistema.
Template
Gabarito. Estrutura pré-definida para um artefato.
UML
Unified Modeling Language (Linguagem de Modelagem
Unificada). Linguagem para visualizar, especificar, construir
e documentar artefatos de um sistema de software.
Visão
Ponto de vista do cliente ou usuário do produto a ser
desenvolvido, especificada no nível de necessidades do
usuário e funcionalidades do sistema.
38
8. REFERÊNCIAS BIBLIOGRAFICAS
[1]
PAULK, Mark C.et all. "Capability Maturity Model for Software, Version 1.1",
Software Engineering Institute, CMU/SEI-93-TR-24, DTIC Number ADA263403,
February 1993.
[2]
PRESSMAN, R. S., Engenharia de Software, Makron Books, 1995.
[3]
WESLEY Addison, The Capability Maturity Model – Guidelines for Improving
the Software Process. The SEI Series in Software Engineering.
[4]
KRUCHTEN, Philippe, Introdução ao RUP: Rational Unified Process, Ciência
Moderna, April 2003.
9. BIBLIOGRAFIA
BURWICK Diane M., How to Implement The CMM. BPS Pubs.
FURLAN, José Davi: Melhorando a qualidade de software através do CMM.
http://www.sucesusp.org.br/html/menuarti/artigos/artigo_jose_davi_furlan.html
WHITE Brian A., Software Configuration Management Strategies and Rational
ClearCase. Addison-Wesley, April 2001.
10. APÊNDICES
Apêndice A – Template de Plano de Gerência de Configuração
Apêndice B – Template de Relatório de Balanço de Configuração
Apêndice C – Template de Release Notes
Apêndice D – Template de Formulário de Requisição de Mudança
Download

CMM Práticas de Gerência de Configuração