# Índice de Manutenibilidade ## Introdução O índice de manutenibilidade(Maintainability Index - MI) criado por por Oman em 1994, e modificado pelo SEI em 1997. Tem como objetivo medir quantativamente a manuteibilidade de um sistema, onde combina diversas métricas já existentes em uma única métrica para representar o esforço sobre a diminuição dos custos de manuntenção. ## Medição Para o cálculo do valor do MI, algumas medidas são utilizadas, tais como, as medidas de Halstead e Complexidade Ciclomática de McCabe. Segundo o SEI a equação utilizada para calcular é: ![calc](https://i.imgur.com/PmRpBxt.jpg) onde: * aveV = Volume de Halstead por módulo; * aveV(g’) = Complexidade Ciclomática de McCabe por módulo; * aveLOC = Linhas de código por módulo; * perCM = Percentual de linhas de comentários do produto por módulo. No entanto, para identificar o impacto do MI, é necessário conhecer a influência da construção da métrica, pois foi utilizado métricas já existes que expressam o entendimento sobre manutenibilidade. Assim temos que conhece mais sobre as expressões aveV, aveV(g’), aveLOC e perCM no MI. * Medidas de Halstead. As medidas de Halstead são compostas por cinco medidas: * n, vocabulário do programa; * N, extensão do programa; * V, volume; * D, dificuldade; * E, esforço. Para compor essas equações. ## Avaliação Quanto maior a classificação de um índice de um sistema maior é a sua manutenibilidade, onde pode ser dito que um sistema com pontuação de 85 pode ser considerado de alta manutenibilidade e com menos de 65 de baixa manutenibilidade. Sempre é recomendada a calibração dos valores para que seja possível adequar de forma mais eficiente os coeficientes que classificam o código. ## Valores Caracteristicos ## Exemplo de uso da medida para melhorar um software Como o índice de manutenibilidade utiliza uma gama de métricas para gera uma única métrica que possa retornar o esforço da manutenabilidade, como por exemplo a métrica de código fonte, de acordo com o índice adquirido pelo cálculo é possível observar qual área do processo não está atendendo aos requisitos necessários para a manutenabilidade