SCM – Software Configuration Management
Questões
● Como é o desenvolvimento de software na sua
empresa em relação a processos de
desenvolvimento ?
● Quais os problemas mais comuns no
desenvolvimento de software ?
● O que você entende por Gestão de
Configuração de Software (SCM) e qual a finalidade de SCM ?
● O que SCM tem a ver com Qualidade de
Desenv. Software
● Principais problemas (Yourdon - 1990) – Produtividade – Confiabilidade – ManutenibilidadeDesenv. Software
● Problemas Essenciais (Brooks,1987)
– Complexidade
● Dificuldade de compreender uma entidade
abstrata
– Conformidade
● Atender necessidades do cliente
– Mudanças
● Semelhante à constatação de Yourdon em
relação à manutenção
Mudanças
●
”Nada é permanente, exceto a
mudança” (Heráclito, 500 a.C)
●
Mudança é algo totalmente comum
no desenvolvimento de software. Ao
invés de combatê-la, é preciso ter
mecanismos para gerenciá-las da
melhor maneira possível.
Mudanças
●
Origens das mudanças
– Requisitos não muito bem definidos – Restrição de prazos de entrega,
corte de escopo, mudança nas prioridades
– Correção de defeitos
– Novas necessidades do cliente
Mudanças
● Cenários de ambientes sem controle
– Imagine que após um dia inteiro de
trabalho de manutenção de código, você descobre que alterou a versão errada. Imagine se você descobre que não tem guardado os fontes da versão anterior, ou que estavam no seu pen-drive, aquele mesmo que você usou no dia anterior p/
Mudanças
● Cenários de ambientes sem controle
– Sim, fui eu que alterei o código, mas já
faz tanto tempo que nem me lembro o motivo.
– Eu alterei este programa, mas esta já
era a vigésima alteração no mesmo programa, e este erro que apareceu não é meu.
Efeitos da Mudança
●
O aspecto fundamental da mudança
é o “efeito dominó“
– Muito difícil uma mudança causar
um impacto único.
– Na grande maioria das vezes, a
Efeitos da Mudança
●
Uma mudança simples
– Mudança
● Todos os campos Nome de Sistema
cujo tamanho é de 20 caracteres, passaria a ser de 30 devido a
constantes reclamações dos usuários.
– Impacto
Efeitos da Mudança
●
Uma mudança simples
– Afeta
● Equipe de banco de dados ● Usuários
● Equipe de testes
– Uma mudança simples pode levar a
Efeitos da Mudança
●
Uma mudança complexa
– Um fornecedor online tem recebido
diversas reclamações dos
consumidores e dos supervisores internos a respeito do site. Os
executivos resolveram revisar seus processos internos para atender as reclamações. Foram detectadas
Efeitos da Mudança
●
Uma mudança complexa
– Mudanças identificadas:
● Os códigos dos produtos devem
coincidir com os códigos entregues
● Cadastro não pode mais ser
cancelado após 30 dias
● O sistema permitirá alteração do tipo
de produto
● Cada usuário interno deverá ser
Efeitos da Mudança
●
Uma mudança complexa
– Alguns problemas
● Mudanças afetam código e processos
internos
● Em geral, as regras de negócio estão
espalhadas em várias aplicações, muitas delas sem documentação
● Identificação dos artefatos a serem
Dificuldades sem SCM
●
Falta de gerenciamento nas
alterações
– Qualquer um pode fazer alterações – Dificuldade na rastreabilidade
●
Muito tempo gasto com retrabalho
●Mudanças tendem a ser um
“problema”, quando deveriam ser
situação natural no des. de software.
Dificuldades sem SCM
● Os cenários apresentados anteriormente
refletem a realidade de muitas empresas
● Mesmo com tantos avanços, muitos ainda
ignoram processos e procedimentos de gestão
● Existem soluções complexas e simples,
porém, não existe bala de prata
● É preciso entender o problema, conhecer
SCM
Processo para organizar e controlar (gerenciar) modificações ao software, bem como estabelecer e manter a integridade dos produtos do projeto de software ao longo do seu ciclo de vida com objetivo principal de maximizar produtividade e minimizar os enganos.
Por que SCM?
●
Dinâmica dos negócios aumentou em
função da demanda de TI
●
A Internet forçou que TI
acompanhasse os negócios
●
Outros aspectos, tais como,
globalização, avanço tecnológico,
pressão competitiva, mostram que as
empresas tem que operar de forma
Por que SCM?
●
A área de TI e o desenvolvimento de
software vêm criando novos
processos, metodologias e
ferramentas
– Mudanças na forma de trabalho – Leis e normas de regulamentação
– Novos Processos de desenvolvimento
Por que SCM?
●
Desenvolvimento Iterativo e
Incremental
– Avanço em relação aos modelos
anteriores (ex. Cascata)
● Tolerância às mudanças de requisitos ● Elementos integrados
progressivamente
Por que SCM?
●
Desenvolvimento Iterativo e
Por que SCM?
●
Desenvolvimento Iterativo e
Incremental
Por que SCM?
●
Desenvolvimento Iterativo e
Incremental
– As vantagens tem um preço...
● Equipes trabalhando no mesmo
projeto em funcionalidades e/ou componentes distintos que
compartilham objetos
● Muitas vezes, equipes distribuídas
Por que SCM?
●
Qualidade de Software
– “Qualidade é a conformidade com os
requisitos“ (Philip B. Crosby)
● Quem determina a qualidade é o
cliente...
● mas.... a que custo ?!
– A satisfação do cliente é importante,
mas não pode ser o único fator a ser considerado
Por que SCM?
●
Qualidade de Software
– Para empresa que desenvolve, vários
fatores podem afetar a qualidade
● Baixa produtividade ● Retrabalho
● Esforço além do estimado ● Custo além do previsto
Por que SCM?
●
Qualidade de Software
– Controle de Qualidade
● Atividades operacionais para
monitoramento de processos e eliminação de desempenho
insatisfatório
● No desenvolvimento de software,
monitoramento dos processos de gestão, desenvolvimento e
Por que SCM?
Por que SCM?
●
Qualidade de Software
– Medições para processos de
desenvolvimento
● Visa fundamentalmente a remoção de
defeitos nos produtos gerados ao longo do processo
● Relatórios gerados por ferramentas
de SCM servem de insumos para estas medições
Por que SCM?
●
Qualidade de Software
– Medições importantes
● Progresso na remoção de defeitos
– No. cumulativo de defeitos
identificados
● Defeitos restantes
– Pode ser um número púro, ou seja,
quantidade de defeitos ainda abertos
Por que SCM?
●
Qualidade de Software
– Medições importantes
● Composição de tipos de defeitos ● Composição de defeitos por fase ● Distribuição por modulos
● Tempo médio para correção de
defeitos
Por que SCM?
●
Motivos apresentados anteriormente
impulsionaram a utilização de
processos de SCM nos últimos anos
●
Muitas ferramentas de apoio vem
sendo desenvolvidas
●
SCM não é a bala de prata, mas
contribui muito para minimizar
Fundamentos
●
SCM é uma área bastante
abrangente.
●
Iremos tratar neste curso como três
macro-processos
– Gestão de Configuração – Gestão de Mudança
Gestão de Configuração
●
Definições
– Processo para organizar e controlar
modificações ao software
– Estabelecer e manter a integridade
dos produtos do projeto de
software ao longo do seu ciclo de vida
– Maximizar produtividade e minimizar
Gestão de Configuração
●
Definições
– Jacobson, Booch e Rumbaugh
● Tarefa de definir e manter
configurações e versões dos
artefatos. Isto inclui linhas de base, versionamento, status e
Gestão de Configuração
●
Atividades
– Definir ambiente de desenvolvimento – Definir políticas de controle
– Definir procedimentos p/ mudanças – Identificar e controlar mudanças
– Manter rastreabilidade
– Garantir a implementação da
Gestão de Configuração
●
GC e Qualidade de Software
– Qualidade de Software, pontos de
vistas diferentes
● Para um diretor, se o software
funciona, tem qualidade
● Para o desenvolvedor, código-fonte
deve ser organizado e de fácil
manutenção. Se este é assim, então o código tem qualidade
Gestão de Configuração
Gestão de Configuração
●
GC e Qualidade de Software
– A GCS desempenha um papel central
neste processo,
● permitirá que cada item de
configuração de software seja especificado, projetado,
construído, testado, avaliado, medido e controlado
Gestão de Mudança
●
Relacionamento direto com Gestão
de Configuração
●
Processo para avaliar, coordenar e
decidir sobre a realização de
mudanças em itens de configuração
●
Mudanças aprovadas são
implementadas em todos os artefatos
relacionados
Gestão de Mudança
●
Benefícios
– Controle sobre escopo do projeto – Controle sobre o planejamento do
que deve ser feito
– Qualidade no desenvolvimento, visto
que toda mudança passa por análise de impácto
Distribuição de Software
●
Processo para empacotamento de
aplicações (geração de build)
●
Controle de liberação, ou seja, quais
artefatos/componentes foram
liberados e em que versões
SCM - Abrangência
●
Começa quando o projeto tem início
●Continua durante todo o
desenvolvimento e versões
posteriores
●
Só termina quando o software sai de
SCM – QA
●
QA → Como garantir que uma
mudança foi adequadamente
implementada
– Dependendo do grau de formalismo
exigidos
● Revisão técnica formal ● Auditoria
SCM - QA
●
Revisão Técnica Formal
– Foco na exatidão técnica dos objetos
de configuração
● Normalmente onde existe a maior
probabilidade de falha
– Avalia-se consistência, omissões e
SCM – QA
●
Auditoria
– Deve responder:
● A mudanças especificada foi feita ? ● Padrões foram seguidos ?
● A mudança foi registrada ?
● Todos os itens de configuração foram
atualizados ?
● Mudanças adicionais necessárias
SCM - Benefícios
●
Maior rapidez na identificação e
correção de problemas
●
Garante rastreabilidade entre
produtos de software e suas partes
(artefatos)
●