SlideShare una empresa de Scribd logo
1 de 36
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
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
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
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
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
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
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
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
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
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
Custos do SoftwareCustos do Software
Desenvolvimento ................ 30 - 40 %Desenvolvimento ................ 30 - 40 %
Manutenção ........................ 70 - 60 %Manutenção ........................ 70 - 60 %
Manutenção de Software
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Á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
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
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
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
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
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
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 ?

Más contenido relacionado

La actualidad más candente

X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareAlexandreBartie
 
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa CertificadaQualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa CertificadaVinicius_Nunes
 
Apresentação qualidade og day
Apresentação qualidade og dayApresentação qualidade og day
Apresentação qualidade og dayRafael Silva
 
Qualidade de Software - OpenGEO Day2010
Qualidade de Software - OpenGEO Day2010Qualidade de Software - OpenGEO Day2010
Qualidade de Software - OpenGEO Day2010Raphael Reis
 
Visão geral da engenharia de software qualidade de software
Visão geral da engenharia de software   qualidade de softwareVisão geral da engenharia de software   qualidade de software
Visão geral da engenharia de software qualidade de softwarejordanavy
 
Slide apresentação CMMI-TOGAF
Slide apresentação CMMI-TOGAFSlide apresentação CMMI-TOGAF
Slide apresentação CMMI-TOGAFEdton Lemos
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareRonney Moreira de Castro
 
Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de softwareDanilo Gois
 
Introdução a Qualidade de Software
Introdução a Qualidade de SoftwareIntrodução a Qualidade de Software
Introdução a Qualidade de SoftwareIgor Takenami
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoJoeldson Costa Damasceno
 

La actualidad más candente (20)

Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de Software
 
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa CertificadaQualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
Qualidade de Software e normas ISO 15504, 12207, MPS.BR e Empresa Certificada
 
Abnt nbr iso_12207
Abnt nbr iso_12207Abnt nbr iso_12207
Abnt nbr iso_12207
 
Apresentação qualidade og day
Apresentação qualidade og dayApresentação qualidade og day
Apresentação qualidade og day
 
Qualidade de Software - OpenGEO Day2010
Qualidade de Software - OpenGEO Day2010Qualidade de Software - OpenGEO Day2010
Qualidade de Software - OpenGEO Day2010
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Aula 02
Aula 02Aula 02
Aula 02
 
Visão geral da engenharia de software qualidade de software
Visão geral da engenharia de software   qualidade de softwareVisão geral da engenharia de software   qualidade de software
Visão geral da engenharia de software qualidade de software
 
Slide apresentação CMMI-TOGAF
Slide apresentação CMMI-TOGAFSlide apresentação CMMI-TOGAF
Slide apresentação CMMI-TOGAF
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de software
 
Qualidade
QualidadeQualidade
Qualidade
 
Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de software
 
Introdução a Qualidade de Software
Introdução a Qualidade de SoftwareIntrodução a Qualidade de Software
Introdução a Qualidade de Software
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
Qualidade do Software
Qualidade do SoftwareQualidade do Software
Qualidade do Software
 
iso
isoiso
iso
 
CMMI
CMMICMMI
CMMI
 
152191 11993
152191 11993152191 11993
152191 11993
 

Similar a Entendendo a Manutenção de Software

Introdução Qualidade de Software
Introdução Qualidade de SoftwareIntrodução Qualidade de Software
Introdução Qualidade de SoftwareWellington Oliveira
 
Fábrica de Software
Fábrica de SoftwareFábrica de Software
Fábrica de SoftwareVenki
 
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Renato Leal
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareElaine Cecília Gatto
 
1 Qss
1 Qss1 Qss
1 Qsslcbj
 
Senac QSS - 1) Intro
Senac QSS - 1) IntroSenac QSS - 1) Intro
Senac QSS - 1) Introlcbj
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareelliando dias
 
Trabalho qualidade de_software
Trabalho qualidade de_softwareTrabalho qualidade de_software
Trabalho qualidade de_softwarestefaniak2004
 
Qualidade de Software, Conceitos Modelos e Situação Atual
Qualidade de Software, Conceitos Modelos e Situação AtualQualidade de Software, Conceitos Modelos e Situação Atual
Qualidade de Software, Conceitos Modelos e Situação AtualSidnei Viana Dos Santos
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processocrc1404
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de softwareFelipe Bugov
 
Filosofia De Desenvolvimento De Software
Filosofia De Desenvolvimento De SoftwareFilosofia De Desenvolvimento De Software
Filosofia De Desenvolvimento De SoftwareSérgio Luiz Jordão
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxRoberto Nunes
 
GCS - Aula 01 - Introdução
GCS - Aula 01 - IntroduçãoGCS - Aula 01 - Introdução
GCS - Aula 01 - IntroduçãoMisael Santos
 
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...Rafael Kanaoka
 
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...Joao Galdino Mello de Souza
 

Similar a Entendendo a Manutenção de Software (20)

Introdução Qualidade de Software
Introdução Qualidade de SoftwareIntrodução Qualidade de Software
Introdução Qualidade de Software
 
Fábrica de Software
Fábrica de SoftwareFábrica de Software
Fábrica de Software
 
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
Curso de Introdução a Engenharia de Software - CJR/UnB - Aula 1
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de Software
 
1 Qss
1 Qss1 Qss
1 Qss
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Senac QSS - 1) Intro
Senac QSS - 1) IntroSenac QSS - 1) Intro
Senac QSS - 1) Intro
 
Processo de Software
Processo de SoftwareProcesso de Software
Processo de Software
 
Ferramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de softwareFerramenta de apoio a gerência de configuração de software
Ferramenta de apoio a gerência de configuração de software
 
Trabalho qualidade de_software
Trabalho qualidade de_softwareTrabalho qualidade de_software
Trabalho qualidade de_software
 
Qualidade de Software, Conceitos Modelos e Situação Atual
Qualidade de Software, Conceitos Modelos e Situação AtualQualidade de Software, Conceitos Modelos e Situação Atual
Qualidade de Software, Conceitos Modelos e Situação Atual
 
Aula1 introducao engsw
Aula1 introducao engswAula1 introducao engsw
Aula1 introducao engsw
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de software
 
Filosofia De Desenvolvimento De Software
Filosofia De Desenvolvimento De SoftwareFilosofia De Desenvolvimento De Software
Filosofia De Desenvolvimento De Software
 
Gerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptxGerenciamento da Qualidade de Software 2.pptx
Gerenciamento da Qualidade de Software 2.pptx
 
Engenharia de software
Engenharia de software Engenharia de software
Engenharia de software
 
GCS - Aula 01 - Introdução
GCS - Aula 01 - IntroduçãoGCS - Aula 01 - Introdução
GCS - Aula 01 - Introdução
 
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
 
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...Performance e Capacidade de Aplicação e Infraestrutura - Qualidade do Código ...
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 ?