Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
Entendendo a Manutenção de Software
1. Entendendo a ManutençãoEntendendo a Manutenção
Qual a origem maior do trabalho deQual a origem maior do trabalho de
manutenção?manutenção?
Quais são as maiores dificuldades naQuais são as maiores dificuldades na
realização da manutenção?realização da manutenção?
O que torna um software acessível ou difícilO que torna um software acessível ou difícil
de manter?de manter?
Manutenção de Software
2. Definições de ManutençãoDefinições de Manutenção
““Qualquer trabalho no software feito depoisQualquer trabalho no software feito depois
que ele se torna operacional ou passa paraque ele se torna operacional ou passa para
a produção” - Parikha produção” - Parikh
Correção de Erros;Correção de Erros;
Revisão dos Requisitos Originais;Revisão dos Requisitos Originais;
Aumento de função e performance.Aumento de função e performance.
Manutenção de Software
3. Definições de ManutençãoDefinições de Manutenção
Modificação de um software com objetivo de corrigir falhas,Modificação de um software com objetivo de corrigir falhas,
aperfeiçoar ou adaptar o software;aperfeiçoar ou adaptar o software;
Mecanismo de combate à deterioração do software queMecanismo de combate à deterioração do software que
pode tornar o software desestruturado, precário epode tornar o software desestruturado, precário e
resistente à alterações;resistente à alterações;
Modificação de um programa existente para refletir novasModificação de um programa existente para refletir novas
obrigações ou características adicionais;obrigações ou características adicionais;
Adaptação do software para constante modificação àsAdaptação do software para constante modificação às
necessidades de trabalho;necessidades de trabalho;
Ação de fazer com que o software que foi liberado sejaAção de fazer com que o software que foi liberado seja
mantido em funcionamento de uma maneira satisfatória.mantido em funcionamento de uma maneira satisfatória.
Manutenção de Software
4. Sinônimos de ManutençãoSinônimos de Manutenção
Modificação;Modificação;
Acréscimos;Acréscimos;
Refinamentos;Refinamentos;
Remoção de defeitos;Remoção de defeitos;
Adições no sistema;Adições no sistema;
Remendos e correções;Remendos e correções;
Suporte;Suporte;
Evoluções;Evoluções;
Ajustes;Ajustes;
Extensão;Extensão;
Expansão;Expansão;
Revisão;Revisão;
Atualização;Atualização;
Re-programação;Re-programação;
Re-desenvolvimento;Re-desenvolvimento;
Melhorias;Melhorias;
Alterações.Alterações.
Manutenção de Software
5. Tipos de ManutençãoTipos de Manutenção
(Causa)(Causa)
Corretiva:Corretiva:
Deficiência;Deficiência;
Adaptativa:Adaptativa:
Mudança de Ambiente;Mudança de Ambiente;
Aperfeiçoadora:Aperfeiçoadora:
Requisição de manutenção do usuário.Requisição de manutenção do usuário.
Manutenção de Software
6. Manutenção PreventivaManutenção Preventiva
Prevenir futuras manutenções (3 tipos)Prevenir futuras manutenções (3 tipos)
Melhorar a capacidade de manutenção -Melhorar a capacidade de manutenção -
manutenibilidademanutenibilidade
Manutenção de Software
7. Estudos sobre ManutençãoEstudos sobre Manutenção
Lieth e Swanson:Lieth e Swanson:
19801980
487 Empresas487 Empresas
Dinardo:Dinardo:
19881988
25 empresas c/25 empresas c/
Mainframe IBMMainframe IBM
Corretiva: 17%Corretiva: 17%
Adaptativa: 70%Adaptativa: 70%
AperfeiçoadoraAperfeiçoadora: 13%: 13%
Corretiva: 20%Corretiva: 20%
Adaptativa: 25%Adaptativa: 25%
AperfeiçoadoraAperfeiçoadora: 55%: 55%
Manutenção de Software
8. Fatores que afetam o trabalho
de manutenção
Tamanho do Sistema;Tamanho do Sistema;
Idade do Sistema;Idade do Sistema;
Experiência e Conhecimento dosExperiência e Conhecimento dos
Mantenedores.Mantenedores.
Manutenção de Software
9. Atividades Típicas doAtividades Típicas do
MantenedorMantenedor
Estudar especificações e projetos do sistema;Estudar especificações e projetos do sistema;
Interagir com os usuários;Interagir com os usuários;
Examinar programas e sua documentação;Examinar programas e sua documentação;
Descobrir erros e deficiências nos programasDescobrir erros e deficiências nos programas
fontes;fontes;
Projetar uma alteração em programa;Projetar uma alteração em programa;
Modificar um programa;Modificar um programa;
Revalidar um programa;Revalidar um programa;
Atualizar a documentação do programa.Atualizar a documentação do programa.
Manutenção de Software
10. Funções Básicas naFunções Básicas na
Alteração de SoftwareAlteração de Software
a) Entender o software e a mudança a sera) Entender o software e a mudança a ser
feita (50%);feita (50%);
b) Modificar o software para incorporar ab) Modificar o software para incorporar a
mudança (25%);mudança (25%);
c) Revalidar o software (25%).c) Revalidar o software (25%).
Manutenção de Software
11. Custos do SoftwareCustos do Software
Desenvolvimento ................ 30 - 40 %Desenvolvimento ................ 30 - 40 %
Manutenção ........................ 70 - 60 %Manutenção ........................ 70 - 60 %
Manutenção de Software
12. Alternativas para Reduzir aAlternativas para Reduzir a
Manutenção de SoftwareManutenção de Software
Não fazer nada. Apenas continuar como está;Não fazer nada. Apenas continuar como está;
Adicionar mais pessoal para o desenvolvimento eAdicionar mais pessoal para o desenvolvimento e
manutenção para reduzirmanutenção para reduzir BackLogBackLog;;
Planejar a manutenção de software focalizandoPlanejar a manutenção de software focalizando
novas tecnologias para construir sistemas maisnovas tecnologias para construir sistemas mais
fáceis de se manter e gradativamente substituir osfáceis de se manter e gradativamente substituir os
atuais;atuais;
Adotar um plano agressivo para reescrever sistemasAdotar um plano agressivo para reescrever sistemas
atuais o quanto possível;atuais o quanto possível;
Adotar ferramentas automatizadas para melhorar aAdotar ferramentas automatizadas para melhorar a
manutenção e tecnologia dos sistemas atuais.manutenção e tecnologia dos sistemas atuais.
Manutenção de Software
13. Modelo de ManutençãoModelo de Manutenção
CONTROLE DAS REQUISIÇÕESCONTROLE DAS REQUISIÇÕES
CONTROLE DAS MUDANÇASCONTROLE DAS MUDANÇAS
CONTROLE DE VERSÕESCONTROLE DE VERSÕES
Manutenção de Software
14. Controle das RequisiçõesControle das Requisições
Coletar informações sobre cada requisição;Coletar informações sobre cada requisição;
Definir mecanismos para categorização dasDefinir mecanismos para categorização das
requisições;requisições;
Utilizar análise de impacto para avaliar requisiçõesUtilizar análise de impacto para avaliar requisições
em termos de custos X benefícios;em termos de custos X benefícios;
Determinar grau de prioridade para cada requisição.Determinar grau de prioridade para cada requisição.
Manutenção de Software
15. Controle das MudançasControle das Mudanças
Selecionar uma atividade de mudança necessária daSelecionar uma atividade de mudança necessária da
lista de prioridades;lista de prioridades;
Reproduzir o problema;Reproduzir o problema;
Analisar a especificação e o código-fonte;Analisar a especificação e o código-fonte;
Projetar as mudanças e testes;Projetar as mudanças e testes;
Realizar atividades de garantia de qualidadeRealizar atividades de garantia de qualidade
(revisões e inspeções).(revisões e inspeções).
Manutenção de Software
16. Controle de VersõesControle de Versões
Determinação da Versão;Determinação da Versão;
Construção de uma nova versão (gerência deConstrução de uma nova versão (gerência de
configuração)configuração)
Testes completos;Testes completos;
Distribuição do programa;Distribuição do programa;
Teste de Aceitação.Teste de Aceitação.
Manutenção de Software
17. Indicadores de ManutençãoIndicadores de Manutenção
Tempo utilizado para resolver uma mudança;Tempo utilizado para resolver uma mudança;
Programas mais afetados;Programas mais afetados;
Requisições atendidas e em aberto;Requisições atendidas e em aberto;
Usuários mais atendidos;Usuários mais atendidos;
Estimativa de tempo e complexidade da manutençãoEstimativa de tempo e complexidade da manutenção
(FPA).(FPA).
Manutenção de Software
18. Exercício 1Exercício 1
Quais as principais dificuldades naQuais as principais dificuldades na
realização das atividades de manutençãorealização das atividades de manutenção
de software?de software?
Apresente um conjunto de ações paraApresente um conjunto de ações para
amenizar estas dificuldades.amenizar estas dificuldades.
Que outros indicadores poderiam serQue outros indicadores poderiam ser
utilizados para monitorar a manutenção?utilizados para monitorar a manutenção?
Manutenção de Software
19. Premissas da ReengenhariaPremissas da Reengenharia
Sistemas existentes são uma vantagemSistemas existentes são uma vantagem
valiosa da qual a corporação depende evaliosa da qual a corporação depende e
portanto deveriam ser apropriadamenteportanto deveriam ser apropriadamente
gerenciados;gerenciados;
A manutenção de software poderá ser maisA manutenção de software poderá ser mais
efetiva e eficientemente realizada com ajudaefetiva e eficientemente realizada com ajuda
de ferramentas poderosas;de ferramentas poderosas;
É uma manutenção automatizada;É uma manutenção automatizada;
Fundamentos da Reengenharia
20. Premissas da ReengenhariaPremissas da Reengenharia
Envolve a melhoria dos processos deEnvolve a melhoria dos processos de
manutenção de software e melhoria dosmanutenção de software e melhoria dos
sistemas atuais pela aplicação de novassistemas atuais pela aplicação de novas
tecnologias e ferramentas para atecnologias e ferramentas para a
manutenção de software;manutenção de software;
Sugere um estratégia de manutenção aSugere um estratégia de manutenção a
longo prazo ao invés de simplesmentelongo prazo ao invés de simplesmente
procurar por uma imediata mudança naprocurar por uma imediata mudança na
manutenção de Software;manutenção de Software;
Oferece uma maneira de organizar oOferece uma maneira de organizar o
software e mantê-lo organizado.software e mantê-lo organizado.
Fundamentos da Reengenharia
21. ConceitoConceito
““Reengenharia é o processo de examinarReengenharia é o processo de examinar
software existente e/ou modificá-lo comsoftware existente e/ou modificá-lo com
ajuda de ferramentas automatizadas para:ajuda de ferramentas automatizadas para:
Melhorar sua futura manutenção;Melhorar sua futura manutenção;
Atualizar sua tecnologia;Atualizar sua tecnologia;
Estender sua expectativa de vida;Estender sua expectativa de vida;
Aumentar a produtividade da manutenção.Aumentar a produtividade da manutenção.
Fundamentos da Reengenharia
22. Outros ConceitosOutros Conceitos
““É o estudo e alteração de um determinado sistemaÉ o estudo e alteração de um determinado sistema
para reconstruí-lo numa nova forma e subseqüentepara reconstruí-lo numa nova forma e subseqüente
implementação dessa nova forma”;implementação dessa nova forma”;
““Modificação em código e estrutura de dadosModificação em código e estrutura de dados
existentes usando os princípios de engenharia deexistentes usando os princípios de engenharia de
software atuais para aumentar a capacidade desoftware atuais para aumentar a capacidade de
manutenção e capacidade de adaptação do sistema”.manutenção e capacidade de adaptação do sistema”.
““Combinação de técnicas e ferramentas que facilitamCombinação de técnicas e ferramentas que facilitam
a análise, melhoria, redesenho e reutilização dea análise, melhoria, redesenho e reutilização de
sistemas existentes para suportar as necessidades desistemas existentes para suportar as necessidades de
informação”;informação”;
Fundamentos da Reengenharia
23. Outros ConceitosOutros Conceitos
““Meio para melhorar sistemas existentes sem causarMeio para melhorar sistemas existentes sem causar
impactos na sua funcionalidade atual, plataforma ouimpactos na sua funcionalidade atual, plataforma ou
arquitetura técnica”;arquitetura técnica”;
““Conjunto de técnicas e ferramentas orientadas àConjunto de técnicas e ferramentas orientadas à
avaliação, reposicionamento e transformação deavaliação, reposicionamento e transformação de
sistemas existentes, com o objetivo de estender-lhes asistemas existentes, com o objetivo de estender-lhes a
vida útil e ao mesmo tempo, proporcionar-lhes umavida útil e ao mesmo tempo, proporcionar-lhes uma
melhor qualidade técnica e funcionalidade” (Furlan);melhor qualidade técnica e funcionalidade” (Furlan);
Fundamentos da Reengenharia
24. Objetivos da ReengenhariaObjetivos da Reengenharia
Criar um inventário dos sistemas existentes;Criar um inventário dos sistemas existentes;
Fornecer assistência automatizada para aFornecer assistência automatizada para a
manutenção;manutenção;
Reduzir custos e erros de manutenção;Reduzir custos e erros de manutenção;
Tornar o sistema mais fácil de compreender,Tornar o sistema mais fácil de compreender,
modificar e testar.modificar e testar.
Fundamentos da Reengenharia
25. Objetivos da ReengenhariaObjetivos da Reengenharia
Facilitar a conversão e migração do sistema;Facilitar a conversão e migração do sistema;
Reforçar a aderência a padrões;Reforçar a aderência a padrões;
Melhorar a resposta às solicitações deMelhorar a resposta às solicitações de
manutenção;manutenção;
Melhorar o ânimo do pessoal de manutenção;Melhorar o ânimo do pessoal de manutenção;
Proteger e estender a vida do sistema;Proteger e estender a vida do sistema;
Utilizar CASE para suportar sistemas atuais;Utilizar CASE para suportar sistemas atuais;
Reutilizar componentes de sistemas existentes.Reutilizar componentes de sistemas existentes.
Fundamentos da Reengenharia
26. Razões para ReengenhariaRazões para Reengenharia
Freqüentes falhas de produção;Freqüentes falhas de produção;
Problemas de desempenho;Problemas de desempenho;
Tecnologia obsoleta;Tecnologia obsoleta;
Problemas de integração de sistemas;Problemas de integração de sistemas;
Qualidade técnica ruim;Qualidade técnica ruim;
Dificuldades para testar e caro paraDificuldades para testar e caro para
manter;manter;
Problemas crescentes no sistema.Problemas crescentes no sistema.
Fundamentos da Reengenharia
27. Razões para se refazer oRazões para se refazer o
sistema (Engenharia)sistema (Engenharia)
Não confiável;Não confiável;
Algoritmos ruins ou incorretos;Algoritmos ruins ou incorretos;
Não atende as necessidades dosNão atende as necessidades dos
usuários.usuários.
Fundamentos da Reengenharia
28. Sistemas Candidatos àSistemas Candidatos à
ReengenhariaReengenharia
São de importância crítica da empresa;São de importância crítica da empresa;
São alvo de manutenção freqüente eSão alvo de manutenção freqüente e
requerem um grande percentual de recursosrequerem um grande percentual de recursos
de manutenção;de manutenção;
São compreensíveis e podem seguramenteSão compreensíveis e podem seguramente
ser modificados por poucos membros daser modificados por poucos membros da
equipe de software;equipe de software;
Contém erros que ninguém pode encontrar;Contém erros que ninguém pode encontrar;
Requerem uma melhoria considerável.Requerem uma melhoria considerável.
Fundamentos da Reengenharia
29. Exercício 2Exercício 2
Que sistemas poderiam ser alvo deQue sistemas poderiam ser alvo de
reengenharia? Justifique.reengenharia? Justifique.
Quais as principais razões paraQuais as principais razões para
Reengenharia ou Engenharia?Reengenharia ou Engenharia?
Manutenção de Software
30. Áreas de Atuação daÁreas de Atuação da
ReengenhariaReengenharia
Análise;Análise;
Reestruturação;Reestruturação;
Engenharia Reversa;Engenharia Reversa;
Migração;Migração;
Reutilização.Reutilização.
Fundamentos da Reengenharia
31. AnáliseAnálise
É o processo de examinar osÉ o processo de examinar os
sistemas atuais a fim desistemas atuais a fim de
compreender os componentes docompreender os componentes do
sistema e como seus programassistema e como seus programas
funcionam.funcionam.
O propósito principal é identificarO propósito principal é identificar
programas prioritários paraprogramas prioritários para
Reengenharia e medir suaReengenharia e medir sua
qualidade.qualidade.Fundamentos da Reengenharia
32. ReestruturaçãoReestruturação
É o processo de alterar a forma doÉ o processo de alterar a forma do
software (Ex: definição e nomessoftware (Ex: definição e nomes
de dados e código do programa)de dados e código do programa)
sem alterar sua funcionalidade.sem alterar sua funcionalidade.
O propósito principal é tornar oO propósito principal é tornar o
programa mais fácil de serprograma mais fácil de ser
compreendido.compreendido.
Fundamentos da Reengenharia
33. Engenharia ReversaEngenharia Reversa
É o processo de analisar o software paraÉ o processo de analisar o software para
reconstruir uma descrição de seusreconstruir uma descrição de seus
componentes e seus relacionamentos.componentes e seus relacionamentos.
Uma descrição de alto nível doUma descrição de alto nível do
programa é obtida a partir doprograma é obtida a partir do
programa físico.programa físico.
O propósito éO propósito é redocumentarredocumentar o sistema eo sistema e
descobrir informações do projeto comdescobrir informações do projeto com
o auxílio na melhoria da compreensãoo auxílio na melhoria da compreensão
do programa.do programa.
Fundamentos da Reengenharia
34. MigraçãoMigração
É o processo de converter um softwareÉ o processo de converter um software
de uma linguagem para outra, moverde uma linguagem para outra, mover
de um ambiente operacional parade um ambiente operacional para
outro ou atualizar sua tecnologia.outro ou atualizar sua tecnologia.
O propósito principal é amenizar oO propósito principal é amenizar o
impacto de adoção de novosimpacto de adoção de novos
ambientes e tecnologias.ambientes e tecnologias.
Fundamentos da Reengenharia
35. ReutilizaçãoReutilização
É o processo de sistematicamenteÉ o processo de sistematicamente
reaproveitar os diversos elementosreaproveitar os diversos elementos
criados durante o desenvolvimento decriados durante o desenvolvimento de
software (código, projeto,software (código, projeto,
especificações, documentação).especificações, documentação).
O propósito principal é acelerar oO propósito principal é acelerar o
desenvolvimento de novos sistemas edesenvolvimento de novos sistemas e
melhorar sua qualidade.melhorar sua qualidade.
Fundamentos da Reengenharia
36. Exercício 3Exercício 3
Que experiências de reengenharia vocêQue experiências de reengenharia você
conhece? Classifique-as.conhece? Classifique-as.
Quais as principais dificuldadesQuais as principais dificuldades
enfrentadas nestas experiências ?enfrentadas nestas experiências ?