Mudança de Software
“Mudança é o processo de mover-se de um estado definido a outro.”
•
•
•
Dinâmica da evolução de programas;
Evolução arquitetural;
Manutenção de software;
Mudança de software é inevitável
• Novos requisitos surgem quando o software é usado;
• O ambiente do negócio muda;
• Erros podem acontecer;
Estratégias de mudança de software
•
Manutenção de software - Mudanças são feitas em resposta a requisitos
modificados, mas a estrutura fundamental do Software é estável; (Os padrões
arquiteturais expressam a estrutura fundamental de um esquema de software. Alguns exemplos
de padrão arquitetural são: Camadas (layers), pipes e filtros e o padrão modelo visão controle MVC)
•
Transformação arquitetural - A arquitetura do sistema é modificada
geralmente de uma centralizada p/ uma distribuída (exemplo, cluster, Load Balance,
•
utilizar recursos de hardware da maquina. Memória, IO em disco)
Re-engenharia de software – Refactoring; (Nenhuma funcionalidade é adicionada ao
sistema, mas ele é re-estruturado e re-organizado p/ facilitar mudanças futuras (Estas
estratégias podem ser aplicadas conjunta ou separadamente)
Dinâmica de evolução de programas
• A dinâmica de evolução de programas é o estudo dos processos de mudança
do sistema;
• Depois de um estudo empírico, Lehman e Belady propuseram que há um
número de leis que são aplicadas a todos os sistemas enquanto eles evoluem;
Leis de Lehman
• 1 - Mudança contínua; (Software tem que ser modificado ou se tornará menos útil)
• 2- Complexidade crescente; (Com a evolução do programa sua estrutura tende a ficar
mais complexa)
•
3 - Auto-regulação; (Evolução de software de grande porte - É um processo auto-regulado:
tamanho, tempo entre releases, número de erros, tendem a se manter constantes)
4 - Conservação da estabilidade organizacional; (Estado Saturado - Durante o tempo
de duração de um programa, taxa de desenvolvimento é constante)
• 5 - Conservação da familiaridade; (Durante a vida produtiva de um programa em
evolução, o índice de alterações em versões sucessivas é estatisticamente invariante)
• 6 - Crescimento Contínuo; (Durante o tempo de duração de um sistema, mudanças
incrementais em cada release são constantes)
• 7 – Qualidade descrescente; (Programas apresentarão qualidade decrescente a menos
que sejam rigorosamente mantidos e adaptados às mudanças no ambiente operacional)
• 8 – Sistema de retorno; (Processos de programação de software constituem sistemas de
multi-loop, multi-level e devem ser tratados como tais para serem modificados e melhorados
com sucesso)
•
Aplicabilidade das leis de Lehman
•
São aplicadas a sistemas de larga escala desenvolvidos por grandes organizações
•
Não está claro como podem ser adaptadas para
Sistemas que incorporam um número significante de componentes COTS
Pequenas organizações;
Sistemas de médio porte;
Evolução da arquitetura
• Há uma necessidade de evoluir a arquitetura de um sistema. Exemplo:
Converter sistemas legados de uma arquitetura centralizada para uma
cliente-servidor;
•
Razões:
Custos de Hardware;
Evolução Tecnológica;
A idade do sistema;
Manutenção de software
• Alterações efetuadas no software depois de sua liberação;
• As razões para as alterações determinam a categoria da manutenção;
Categoria da manutenção:
• Manutenção Corretiva – Identifica e Corrige falhas de software; (Corrigir uma
falha analisando a lista de Requisitos)
•
•
•
Manutenção Adaptativa - Adapta o software a um ambiente operacional
diferente (Hardware, SO, etc.) da sua implementação inicial;
Manutenção Evolutiva (Perfectiva) - Adiciona ou modifica a funcionalidade do
sistema, para satisfazer novos requisitos;
Manutenção Preventiva – Melhora a manutenibilidade para futuros
melhoramentos;
Fase de Manutenção
• Fase mais problemática do Ciclo de Vida de Software;
• Migração para novas plataformas;
• Sistemas mal estruturados;
• Melhoramentos para Atender novas necessidades;
• Codificação, Lógica e Documentação ruins;
Atividade de Manutenção
• Análise da documentação;
• Análise de impacto das modificações;
• Projeto é modificado e revisado;
• Código é modificado;
• Testes de regressão são aplicados;
Custos de manutenção
• Geralmente maior do que o custo de desenvolvimento (de duas a cem vezes,
dependendo da aplicação)
•
•
•
Aumenta enquanto o software é mantido;
Software antigos podem ter custos de manutenção altos;
O custo esta ligado aos fatores:
Estabilidade da equipe;
Conhecimento da equipe;
Idade do sistema, quanto mais velho, mais caro;
Problemas de Manutenção
• Deficiência da maneira como o software foi planejado e desenvolvido;
• As alterações não são adequadamente documentadas;
• É difícil traçar o processo através do qual o software foi criado;
• A maioria dos softwares não foram projetados para suportar alterações;
• A manutenção não é vista como um trabalho “glamouroso”;
Manutenabilidade
A Manutenibilidade pode ser definida qualitativamente como a facilidade com
que o software pode ser entendido, corrigido, adaptado e ou melhorado;
Facilidade de Manutenção:
Facilidade pode ser prevista utilizando métricas do processo:
• Número de pedidos de manutenção corretiva; (Se número de relatorios de falhas
aumenta, pode indicar que erros estão sendo introduzidos)
•
•
•
Tempo médio para análise de impacto; (Em geral reflete o número de omponentes
afetados; se aumenta, facilidade está diminuindo)
Tempo médio para implementar mudança requerida; (Se aumentar, pode indicar
declínio da facilidade de manutenção)
Número de pedidos de modificações importantes; (Se aumentar, pode indicar
declínio da facilidade de manutenção)
Fatores de qualidade de Software
(Norma ISO 9126) Os fatores de qualidade de software focalizam três aspectos
importantes do software produto;
Padrões de Manutenção:
• IEEE 1219 - Software Maintenance
• ISO 14764 - Software Maintenance
• IEEE 1042 - Software Configuration Management
• IEEE 828 - Software Configuration Management Plans
MEDIDAS de DESEMPENHO e MANUTENÇÃO (Swanson)
• Número médio de falhas de processamento por execução do programa;
• Pessoas-horas despendido em cada categoria de manutenção;
• Número médio de pessoas-horas despendido por comando fonte adicionado
ou retirado devido a manutenção;
• Tempo médio de processamento para um pedido de manutenção;
• Porcentagem de pedidos de manutenção por tipo;
Download

Mudança de Software “Mudança é o processo de mover