Manutenibilidade de Software
Manutenibilidade de Software
Manutenibilidade de Software
VALÉRIO BRUSAMOLIN
RESUMO
ABSTRACT
Maintainability is one of the software characteristics of quality, determining how easy it can be
corrected or improved. A software with a high maintainability grade needs less time and people
to be modified. This article aims to identify factors that affect the maintainability of a software
artifact and it metrics.
10
arquitetura propícia a reparos mais rápidos 5 MANUTENIBILIDADE
e baratos.
Manutenibilidade de software diz
3 CONCEITO DE MANUTENÇÃO respeito à facilidade com que o mesmo
pode ser modificado para satisfazer
Existem várias definições para requisitos do usuário ou ser corrigido
manutenção de software. Pigoski sintetiza quando deficiências são detectadas
em uma definição a sua opinião de como (PIGOSKI, 1996).
deveria ser o processo de manutenção:
“Manutenção de software é a totalidade de O IEEE (1993), estabelece que
atividades necessárias para prover, manutenibilidade é a facilidade com que
minimizando o custo, suporte a um sistema um sistema de software ou componente
de software. As atividades são executadas pode ser modificado para corrigir falhas,
tanto nos estágios pré-entrega quanto nos melhorar performance ou outros atributos,
pós-entrega. As atividades de pré-entrega ou adaptado para uma mudança de
incluem o planejamento para entrada em ambiente.
operação, suportabilidade e definição de
logística. As atividades de pós-entrega Se os softwares forem manuteníveis,
incluem modificação do software, diminui a demanda por desenvolvimento,
treinamento e operação de um help-desk” na medida que os softwares atuais podem
(PIGOSKI, 1996, p.46) evoluir para atender novas necessidades.
Por outro lado, aumentam as solicitações
4 TIPOS DE MANUTENÇÃO de manutenção (GLASS, 1993).
11
7 FATORES QUE IMPACTAM positivo do uso de linguagens orientadas a
NA MANUTENIBILIDADE objetos é grande, pois modificações mais
localizadas levam a menor degradação do
a) Arquitetura código. A degradação ocorre em função do
número de linhas acrescidas ou
O design da arquitetura influencia mais modificadas (LAND, 2003); logo,
na manutenibilidade do que o design do manutenção com feita com menos código
algoritmo (ROMBACH, 1990, p. 22). significa menos entropia. Entropia pode ser
definida como a diferença entre o todo e
A Companhia de informática do Paraná, suas partes.
no intuito de definir recomendações para o
seu processo de desenvolvimento de c) Documentação
sistemas, elaborou várias versões de um
mesmo software, com arquiteturas Quando documentação ou
diferentes e verificando os resultados de especificações de design do software não
qualidade obtidos (MARTINS, VOLPI, estão disponíveis, o mantenedor tem de
2002). investir muito tempo para compreender o
produto antes de modificá-lo (PIGOSKI,
A experiência da empresa paranaense 1996, p. 276).
baseou-se no processo unificado, na UML
e na tecnologia de componentes da d) Compreensibilidade do Programa
Microsoft (COM). Foram utilizadas as
mesmas tecnologias, variando-se apenas a Existem estimativas de que os
arquitetura em seis experimentos, que programadores ficam entre 47% e 62% do
iniciaram com uma solução em duas tempo de trabalho tentando entender a
camadas até várias arquiteturas de n documentação e lógica dos programas
camadas multithreadeds. (PIGOSKI, 1996, p.276). Portanto, a
compreensibilidade dos programas deve
Como resultado, verificou-se que o ser aumentada se desejarmos diminuir os
investimento em arquitetura de software custos de manutenção.
aprimora, entre outras características de
qualidade, a manutenibilidade. A divisão da O uso de abreviaturas na declaração de
aplicação em componentes e dos variáveis dificulta a compreensibilidade de
componentes em classes tornou cada programas fonte (LAITINEN et al, 1997).
unidade de código bem menor do que em
uma abordagem monolítica, de modo que o 8 MÉTRICAS DE MANUTENIBILIDADE
esforço para modificar o código foi pequeno
e o potencial de inclusão de erros nessa Para controlar a manutenibilidade de um
modificação foi reduzido. software, deve-se saber como medi-la.
Para isso existem as métricas, que auxiliam
b) Tecnologia na verificação do software produzido. As
métricas que aferem a manutenibilidade
Uma das preocupações que o gerente verificam a complexidade do software
deve ter é a de verificar se a tecnologia que (BANDI et Al, 2003).
vai empregar na implementação do
software permite um bom grau de 9 MÉTRICAS DE MANUTENIBILIDADE
manutenibilidade, pois a fácil proliferação A NÍVEL DE CÓDIGO
de programas pode se tornar mais tarde,
um pesadelo de manutenção. Existem muitas métricas de
manutenibilidade a nível de código. A
A hipótese de que softwares que dificuldade não reside em se encontrá-las,
utilizam tecnologias orientadas a objetos mas sim em selecionar as mais adequadas
possuam alta manutenibilidade foi objeto a determinado projeto. As métricas podem
de estudo por Sallye M. Henry e Mathew ser utilizadas isoladamente ou fazer parte
Humphey (HENRY, HUMPHREY, 1990). O de métricas híbridas.
software produzido com linguagem
orientada a objetos necessita menos
modificações no código fonte, em locais
específicos. Em grandes sistemas, que são
manutenidos por longo tempo, o impacto
12
10 MÉTRICAS DE a) Complexidade Ciclomática
COMPLEXIDADE DE HALSTED
Desenvolvida por McCabe para indicar
Halsted (HALSTEAD, 1977) a testabilidade e manutenibilidade de
desenvolveu métricas de complexidade que software, medindo o número de caminhos
ainda hoje são utilizadas para se derivar a linearmente independentes do programa
manutenibilidade de software. (ou método). Para determinar os caminhos,
representa-se o método como um grafo
As métricas de Halsted são baseadas fortemente conectado com uma única
em quatro números escalares derivados entrada e uma única saída. Os nodos são
diretamente de um programa fonte(SEI, blocos seqüenciais de código, e as arestas
2003): são decisões que causam uma ramificação.
A complexidade é dada por:
n1=número de operadores distintos
n2=número de operandos distintos CC = E –N+2
N1=número total de operadores
N2=número total de operandos Onde E = número de arestas e N =
número de nodos
A partir destes números, cinco métricas
são derivadas, como consta da tabela1. b) Fluxo de Informação
13
mediaLDC = Média de linhas de Os objetivos de qualidade são atingidos
código (LDC) por módulo atuando-se nos processos e nas métricas.
perCM = Média percentual de Somente o uso das métricas não garante o
linhas de comentários por módulo aumento da manutenibilidade, pois deve
(opcional) ser definido quando serão utilizadas, quem
fará a avaliação, quais serão as medidas
A manutenibilidade é diretamente corretivas, quais serão os índices
proporcional ao MI, ou seja, quanto maior o aceitáveis ou não.
índice, mais manutenível é o programa. Um
índice de 6, por exemplo, é de manutenção 14 CONCLUSÃO
quase impossível. Já um índice de 70 é
muito bom. A manuteniblidade de um software é
desejável que pode ser verificada.
13 PRÁTICAS DE MANUTENIBILIDADE
Como os processos de desenvolvimento
Thomas Pigoski nos dá uma pista sobre atuais não estimulam a preocupação com a
como produzir sistemas manuteníveis: manutenibilidade, e devem ser
pensar em manutenção já no levantamento aperfeiçoados para melhorar a qualidade
de requisitos (PIGOSKI, 1996, p.46). O dos produtos obtidos.
mesmo autor explica que os processos de
desenvolvimento e manutenção devem As práticas de manutenibilidade podem
evoluir e se integrar de alguma forma, ser inseridas na especificação de um
sugerindo algumas práticas que levam à processo de desenvolvimento, e a
manutenibilidade: qualidade do produto pode ser aferida
através das métricas apresentadas.
• Revisões de averiguação;
• Caminhamentos estruturados; Futuros trabalhos podem investigar o
• Uso de design orientado a objetos; aumento da manuteniblidade obtido com a
• Assegurar que cada linha de adaptação de um processo de
código tenha no máximo uma desenvolvimento de software.
declaração;
• Assegurar que comentários tenham 15 REFERÊNCIAS BIBLIOGRÁFICAS
informação útil;
• Assegurar que programação BANDI, Rajendra K, VAISHNAV, Vijay K,
“esotérica” seja evitada; TURK, Daniel E. Predicting Maintenance
• Empregar convenções de Perfformance Using Object Oriented
programação; Design Complexity Metrics. IEEE, 2003.
• Usar definições de dados comuns;
COLEMAN, Don, ASH, Dan. Using Metrics
• Estabelecer padrões para
to Evaluate Software System
desenvolvimento de procedimentos
Maintainability. IEEE, 1994.
e documentos do sistema;
• Registrar o processo de COLEMAN, Don, LOWTHER, Bruce,
desenvolvimento explicando a OMAN, Paul. The application of Software
filosofia de desenvolvimento e o Maintainability Models in Industrial Software
processo decisório; Systems. J. Systems Software, 1995; 29:3-
• Estimular a simplicidade; 16;
• Estudar possíveis mudanças
futuras e aperfeiçoamentos; GLASS, Robert L. Editor’s Corner – Which
• Medir a complexidade dos do You Think? Modern Methods Will Lead
componentes do sistema; to Less Maintenance, or More?. J. Systems
• Registrar os pontos fracos do Software. 1993; 23:209-210.
sistema e pontos problemáticos;
• Estabelecer critérios de aceitação HENRY, Sallie, SELIG, Calvin. Predicting
para avaliar a qualidade do Source-Code Complexity at Design Stage.
software, com particular atenção na IEEE, 1990.
qualidade da manutenibilidade;
• Previsão de falhas. HENRY, Sallie M, HUMPHEY, Matthew. A
controlled Experiment to Evaluate
Maintainability of Object-Oriented Software.
14
IEEE, 1990.
CHIDAMBER, Shyam R., KEMERER, Chris
LAND, Rikard. Software Deterioration And F. A metrics Suite for Object Oriented
Maintainability – A Model Proposal. Design. MIT Sloam School of Management,
Mälardalen University. 2003. 1993.
DUNKE, Reiner R., FOLTIN, Erik. Metrics- HENRY, Sallie, KAFURA, Denis. Software
based Evaluation of Object-Oriented Structure Metrics Based on Information
Software Developmente Metrics. University Flow. IEE Transactions on Software
of Magdeburg, 1996. Engineering. 1981.
15