Manutenção de
Software
Silvia M. Farani
Osborne e Chikofsky [OSB90] citam:
Manutenção de SW
A manutenção de software, é definida como qualquer
alteração de um
produto de software
, feita depois que ele se torna operacional, ou passa
para a produção
–
ambiente do cliente.
75% - 80% do custo de um sistema ocorre depois de ele ter sido colocado em operação; isto também significa que muitos defeitos só são descobertos após a entrega; Tem casos que boa parte da funcionalidade do sistema é acrescentada a ele depois do início de sua operação.
A definição de Manutenção citada em
ANSI / IEEE [ANS83] é:
A modificação
de um produto de software, depois de liberado, para corrigir falhas,
melhorar o desempenho ou outros atributos, ou para adaptar o produto a
um ambiente alterado.
A manutenção começa a partir do momento em que um software é liberado para
o cliente e instalado para seu uso operacional.
A manutenção é feita por várias razões: [MAR83]
Para corrigir erros e defeitos de projeto;
Para melhorar o design;
Para converter os programas para diferentes plataformas de hardware, software e facilidades de telecomunicações;
Para interligar o programa com outros programas;
Para fazer mudanças nos arquivos ou base de dados; etc...
Manutenção de SW
A manutenibilidade é um dos principais objetivos para um software de qualidade (mudança é inevitável), é necessário ter mecanismos para avaliar, controlar e fazer modificações.TIPOS
CAUSAS
Manutenção Corretiva - Falhas de processamento - Falhas de desempenho - Falhas de implementação
Manutenção Adaptativa - Alteração no ambiente do processamento - Alteração no ambiente dos dados
Manutenção Perfectiva - Alteração na especificação funcional Manutenção Preventiva -Melhoria na eficiência do processamento
Manutenção Corretiva = processo que inclui o diagnóstico e a correção de um ou mais
erros. Ocorre porque não é razoável presumir qual a atividade de teste de software descobrirá todos os erros latentes. Durante o uso de qualquer programa, erros ocorrerão e serão relatados ao desenvolvedor.
TIPOS MANUTENÇÃO
Manutenção Adaptativa = uma atividade que modifica o software para que ele tenha uma
interface adequada com o ambiente mutante (ocorre por causa da rápida mudança que é encontrada em cada aspecto da computação, ou mudanças de leis e regras governamentais, etc). Novas gerações de hardware parecem ser anunciadas num ciclo de 24 meses; novos sistemas operacionais ou novos lançamentos aparecem regularmente; equipamentos periféricos e outros elementos de sistemas são freqüentemente atualizados ou modificados. A vida útil dos aplicativos, por outro lado, pode facilmente ultrapassar 10 anos, vivendo mais do que o ambiente de sistemas para o qual foram originalmente desenvolvidos.
Manutenção Perfectiva = ocorre quando um pacote de software é usado,
recomendações de novas capacidades, modificações em funções existentes e ampliações gerais são recebidas de usuários. Essa atividade é responsável pela maior parte de todo o esforço despendido em manutenção de software.
Manutenção Preventiva = ocorre quando o software é modificado para melhorar a
ATIVIDADES DO PROCESSO
DE MANUTENÇÃO
1 - Entendimento do software - Isso implica a necessidade de uma boa documentação, boa relação entre os requisitos e um código bem estruturado e bem formatado.
2 - Modificação do software - Isso implica a necessidade do software, hardware e estrutura de dados fáceis de se expandir e que minimizam os efeitos colaterais das mudanças, mais uma documentação de fácil atualização.
3 - Revalidação do software - Isso implica a necessidade de estruturas de software que facilitem o reteste seletivo, além de recursos para se fazer testes mais completos e eficientes.
Quando usado no contexto da manutenção de software, o termo “efeitos colaterais” implica um erro ou outro comportamento indesejável que ocorra como resultado de uma modificação. Freedeman e Weinberg [FRE90], definem três grandes categorias para os efeitos colaterais: na codificação, nos dados e na documentação.
EFEITOS COLATERIAS DAS MANUTENÇÕES
RETESTE (não acontece devido aos prazos curtos)
Problemas na Manutenção de SW
LADO GERENCIAL
PROBLEMAS SOLUÇÕES
Altos custos da manutenção [PRE95], Gerenciamento do processo de manutenção de software,
Grande acúmulo de pedidos: os usuários, na maioria das vezes, são insatisfeitos e impacientes
Técnicas de Engenharia de software – MÉTODOS,
FERRAMENTAS E PROCEDIMENTOS (padronizados)
Maior preocupação com a Manutenção Preventiva (revisões e auditorias)
LADO HUMANO
PROBLEMAS SOLUÇÕES
Falta de compreensão por parte do usuário, treinamento inadequado,
Administração das necessidades dos clientes;
Difícil entender o programa “de outra pessoa”, Educação e treinamento dos profissionais;
Manutenção de SW
LADO TÉCNICO
PROBLEMAS SOLUÇÕES
Qualidade do produto: características do projeto, qualidade da programação original, qualidade da documentação, controle de mudanças que introduzem erros latentes no software mantido, [PRE95]
Técnicas para a manutenção;
Testes e depuração da manutenção de sistemas;
Documentação do sistema incompleta ou inexistente: a falta de documentação precisa, diminui a produtividade de manutenção.
Ferramentas, métodos e procedimentos para documentar, testar, controlar versões, revisar,
A documentação não existe ou é muito ruim. O reconhecimento de que o software deve ser documentado é um primeiro passo, mas a documentação e os comentários, devem ser compreensíveis e consistentes com o código fonte para ter algum valor, [SCH87];
Banco de Dados sobre manutenção – manter um histórico;
Freqüentemente é difícil ou impossível rastrear o processo através pelo qual o software foi criado, ou a evolução do software através de muitas versões ou lançamentos, [SCH87];
Aplicar a Manutenção Preventiva;
CONCLUSÃO
Embora sabendo que não existam soluções fáceis e instantâneas para os problemas de manutenção de software, citaremos os seguintes pontos de vista:
É preciso definir o processo de manutenção (gerenciamento de processos), para que se possa identificar as causas básicas da baixa qualidade de versões e projetos de software e identificar a porcentagem do software que causa mais desperdício, retrabalho e custo.
A maioria dos problemas associados à manutenção de software pode estar ligada à deficiências na fase de planejamento e desenvolvimento do software. A falta de controle e disciplina, e a despreocupação com a manutenibilidade futura dos sistemas nas atividades de desenvolvimento quase sempre acarreta problemas durante a manutenção do software.
REFERÊNCIAS BIBLIOGRÁFICAS
[ANS83] ANSI/IEEE - An Americam National Standard IEEE Standard Glossary of Software Enginerring Terminoly- IEEE Transaction on
Software Engineering. 1983.
[COA93] COAD, Peter and Yourdon, Edward. Projeto baseado em objeto. Campus. 1993.
[DEK92] DEKLEVA, S. - ¨Delphi Study of Software Maintenance Problems¨- Proc. IEEE
Conference on Software Maintenace, p.10-17 . 1992.
[FER95] FERNANDES, A A. Gerência de Software através de métricas. S.P. Atlas. 1995
[FOU94] FOUNIER, Roger - Guia prático para desenvolvimento e manutenção de sistemas estruturados -.trad. Flávio Deny Steffen, S.P.
Makron Books 2.ª ed.1994.
[FRE90] FREEDMAN, D. P. e G. M., Weinberg, Handbook of Workthroughs, Inspections, and technical reviews, 3.a ed. Dorset House,
1990.
[LIE81] LIENTZ, B. P. e SWASON, E.B. - ¨Problems and Application Software Maintenance ¨- Comunications of ACM, Vol. 15, n.º 5,
p.649-653.
[MAR83] MARTIN, James. - Software Maintenance , the problems and solutions. Prentice-Hall. 1983.
[OSB90] OSBORNE, W.N. e E.J. Chikosfsky, “Fitting Pieces to the maintenance puzzle” IEEE Software p. 10-11 Jan. 1990.
[PAR90] PARIKH - Reengenharia de Software - Técnicas de Manutenção de Programas e Ssitemas -LTC. R.J. 1990.
[PRE95] PRESSMAN, Roger S. - Engenharia de Software. S.P. Makron Books, 1995.
[SAN93] SANCHES, Rosely. -¨Influencia do software e de seu processo de manutenção no esforço de manutenção¨. Tese de Doutorado-
FEA/USP. 1993.
[SCH87] SCHNEIDEWIND, N. F., The dimensions of maintenance, IEEE Transaction Software Engineering, vol SE-13,no 3, março/1987,
pp.303-310.