Escolar Documentos
Profissional Documentos
Cultura Documentos
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