To have a good maintainability index in your code you should have a couple of metrics measured up. Maintainability, or lack thereof, has significant business impact. Software that is written without maintainability in mind requires about four times as much effort to maintain than it did to develop. This maintainability index mi has evolved into numerous variants and has been successfully applied to a number of industrial strength software systems.
Software maintainability means the ease with which these operations can be carried out. The primary aim of the metric is to determine how easy it will be to maintain a particular body of code. Bioinspired information and communications technologies, 2014. For more information, see generate code quality metrics. Collectively, they affect economic lifecycle costs of a system and its utility. This is not a fixed industry set of rules, but rather a combination of them that works for the requirement of your organization application and team. Arie van deursen software engineering in theory and practice. The halsteadsource code measures proposed in the seventies,31 have been used for describing maintainability 31,32 see section 3.
Welker idaho national engineering and environmental laboratory. Last week, elsevier cut off thousands of scientists in germany and sweden from reading its recent journal articles, when negotiations over the cost of a nationwide openaccess agreement broke down in these negotiations, universities are trying to change academic publishing, while publishers are defending the status quo. Maintainability is a multifaceted quality attribute each of the facets must be analyzed to objectively measure it. Reliasoft offers software blocksim and training that address the topic of system maintainability analysis. Even if a metric is not a measurement metrics are functions, while measurements are the numbers obtained by the application of. Relyence maintainability prediction bestinclass software. Why dont you consider unit testing coverage to be a part of the maintability index. May 26, 2011 maintainability index calculates an index value between 0 and 100 that represents the relative ease of maintaining the code. To validate the method measuring maintainability index software mmis.
Software maintainability free demo video explanation. Reliability, availability, and maintainability ram are three system attributes that are of tremendous interest to systems engineers, logisticians, and users. Developing maintainable software helps reduce technical debt. Think twice before using the maintainability index. Improving code quality with visual studio code metrics. The maintainability index is calculated as a factored formula consisting of lines of code, cyclomatic complexity and halstead volume. In software development, the maintenance phase of a software system often spans 10 years or more. You can upload the results of a local verification or remote verification. Abstractthe maintainability of the software system is becoming a very important characteristic due to growth in demand of quality software system. Ultimately the maintainability index is what works for your specific case.
Maintainability index mi mi is a singlenumber value for estimating the relative maintainability of the code. Software maintainability means the ease with which a software system or component can be modified to correct faults, improve performance or other attributes or adapt to a changed environment. Mi and minc maintainability index virtual machinery. Typically, maintainability measures are validated using expert judgments about thestate of. The history of the maintainability index goes back to 1992, and was included in visual studio in 2007. The tools calculate maintainability index for functions and classstruct definitions, for files and for the whole software. Longitudinal evaluation of opensource software maintainability. The maintainability index is calculated as a factored formula consisting of sloc source lines of code, cyclomatic complexity and halstead volume. The maintainability index mi is a software maintainability model proposed by oman and hagemeister at the university of idaho 1991, originally presented at the international conference on software maintenance icsm 1992 and later refined in a paper that appeared in ieee computer. Sei maintanability index objectscriptquality cachequality.
This document is a first step towards the construction of a maintainability prediction model. Developing maintainable software software sustainability. Chug, software maintainability prediction using machine learning algorithms, softw. Color coded ratings can be used to quickly identify trouble spots in your code.
Maintainability index range and meaning code analysis. Both angles are discussed in the next two sections. Think twice before using the maintainability index arie van. Maintainability index mi has been proposed to calculate a single number that expresses the maintainability of a system. How does visual studios calculate the maintainability index. Maintainability means fixing, updating, servicing and to modify the system or update the software for performance improvements or for the correction of faults.
A new maintainability index model is proposed with a new set of predictor metrics. The maintainability index mi is a software maintainability model proposed by oman and hagemeister at the university of idaho 1991, originally presented at. Cqse blog why we dont use the software maintainability. Maintainability index with comments mi maintainability index which does not contain comments miwoc. Maintainability index range and meaning code analysis team blog. Sep 03, 2011 a smaller number of statistical distributions is used for maintainability analysis than for reliability analysis. The software metrics study was initiated to propose metrics of the maintainability of the software produced by the mdsf project. Nov 20, 2007 the maintainability index has been reset to lie between 0 and 100. The mdemo would be implemented to continue reading. Mission objectives include safety, mission success and sustainability criteria. How to effectively define and measure maintainability. Different color codes are used to signify the maintainability index. A method can be complex but as long as there are unit tests for it, it is much simpler to maintain.
Maintainability and flexibility at the software level are of predominant importance to drive innovation at the business process level. Maintainability index is a software metric that indicates how maintainable easy to support and change the source code is. Measuring software maintainability is nontrivial and there exists no single metric to measure it accurately. Software maintainability is important because it is approximately 75% of the cost related to a project. Maintainability index mi article cited from wikipedia maintainability index is a software metric which measures how maintainable easy to support and change the source code is. Maintainability index is calculated with certain formulae from linesofcode measurement, mccabe and halstead measurement. Essentially, with cyclomatic complexity, higher numbers are bad and lower numbers are good. In this paper, we present a new method to find mi with respect to loc only. For this reason, many applications are replaced simply because the overhead to modify them becomes prohibitive. Cqse blog why we dont use the software maintainability index. Chug, application of evolutionary algorithms for software maintainability prediction using objectoriented metric, in 8th int.
Also consider and address software maintenance activity in the field as patches, upgrades, and new software revisions are deployed. Comparison of the sig maintainability model and the. Refactoring and reengineering are practices to improve a software s maintainability. However, existing definitions of maintainability, such as the halstead volume, mccabes cyclomatic complexity or the sei maintainability index provide a very poor understanding of what maintainability is how it. This may be due to the fact that maintainability has traditionally lagged reliability theory in development. Software maintainability index revisited researchgate. Look at fault detection and fault isolation fdfi coverage and the impact on repair time lines. A smaller number of statistical distributions is used for maintainability analysis than for reliability analysis. Plus, we back it up with our unmatched customer service. Maintainability index maintainability index is a software metric which measures how maintainable easy to support and change the source code is. Mar 01, 2020 an important body of research exists linking these characteristics with software metrics, and proposing ways to automate quality assessment by aggregating software metric values into higherlevel quality models. An essential part of keeping a software s maintainability at a desired level or. Maintainability is defined as the probability of performing a successful repair action within a given time.
Ability of a computer program to be retained in its original form, and to be restored to that form in case of a failure. Maintainability index calculates an index value between 0 and 100 that represents the relative ease of maintaining the code. Can we apply the maintainability index calculation formula. The other model is the sig maintainability model, proposed by the software improvement group, where this thesis research was carried out. This is a quick note about the maintainability index, a metric aimed at assessing software maintainability, as i recently run into developers and. Look for opportunities to gather maintainability and testability data during all test phases. Can we apply the maintainability index calculation formula for the objectoriented software. The maintainability index is calculated with certain formulae from linesofcode measures, mccabe measures and halstead complexity measures. Last week, elsevier cut off thousands of scientists in germany and sweden from reading its recent journal articles, when negotiations over the cost of a nationwide openaccess agreement broke down. In software engineering, these activities are known as software maintenance cf. R syavasya department of computer science and engineering, gitam university visakhapatnam, andhra pradesh 530045, india abstract in this paper, we introduce a new process to obtain the maintenance cost by taking releaselevel model and retrieve. The following list shows the code metrics results that visual studio calculates.
The maintainability index is calculated as a factored formula consisting of lines. Since then, several papers have appeared critically discussing the index, the coefficient, the metrics it is composed of, and the difficulty of using it in practice. After nearly a decade of use, mi continues to provide valuable insight into soft. A software metric is a standard of measure of a degree to which a software system or process possesses some property. The software engineering institute promoted this alternate formula in their 1997 c4 software technology reference. It was proposed by oman and hagemeister in the early nineties 1.
The maintainability index is a combination of several metrics, including cyclomatic complexity and average lines of code, as well as computational complexity, based off the halstead volume function. Can we apply the maintainability index calculation formula for the. An approach to find out at which maintainability metric. Software maintainability is defined as the degree to which an application is understood, repaired, or enhanced. Empirical studies by others led to a series of variants, and calculation of the maintainability index. Why we dont use the software maintainability index cqse blog. To date, it is included in visual studio since 2007, in the. Writing elegant code and the maintainability index. The cyclomatic complexity also affects other software metrics, like code maintainability index.
Maintainability demonstration mdemo is a formal process conducted by the product developer and the end customer to determine whether specific maintainability contractual requirements have been achieved i. The software maintainability index revisited citeseerx. Software maintainability is defined as the ease with which a software system or a component can be modified, to correct faults, improve performance or other attributes, or adapt to a changed. The software maintainability index mi is a singlevalue indicator for the maintainability of a software system. For this purpose, software metric datasets of lucene, which is open source software of 163085 lines of code are used, and it is shown that the existing oman and hagemeister maintainability index mode model is not a good a predictor of maintainability. The discussion around this question and its various answers suggests that the maintainability index is not very intuitive see also my post on the maintainability index, discussing various problems with this metric. Based on the numbers given per method in the source code, one can easily tell if the code is complex or not. Software maintenance is an expensive activity that consumes a major portion of the cost of the total project. A proposed new model for maintainability index of open. The maintainability index is computed by combining four traditional. Apr 20, 2016 maintainability, or lack thereof, has significant business impact. Code metrics maintainability index the ultimate visual. We employ the maintainability index, technical debt ratio and a maintainability model based on the arisa compendium. This is a quick note about the maintainability index, a metric aimed at assessing software maintainability, as i recently run into developers and researchers who are still using it.
Maintainability index is a software metric which measures how maintainable easy to support and. As both models aim to indicate maintainability, one would expect the outcomes of the two maintainability models to show a high degree of positive statistical correlation. Reliasoft offers software blocksim and training that address the topic of system maintainability. Mi is calculated as a factored formula consisting of lines of code loc, cyclomatic complexity ccand halstead volume hv. A high value of the maintainability index means better code maintainability. The maintainability index mi is a compound metric designed at the university of idaho in 1991 by oman and hagemeister.
Maintainability index is a software metric which measures how maintainable easy to support and change the source code is. Remediation cost development cost which can be restated as. The maintainability index was introduced at the international conference on software maintenance in 1992. It identifies a set of software measures based on correlations published in empirical studies. Think twice before using the maintainability index arie. In 1991 oman and hagemeister introduced a composite metric for quantifying software maintainability. Calculate code metrics visual studio microsoft docs. What is a good maintainability index using visual studio 2008. Welker maintainability index the combination of multiple metrics into a single indicator of relative maintainability of a body of source code was originally defined by oman and hagemeister. Various activities carried out during maintenance include the addition of new features, deletion of obsolete code, correction of errors, etc. Maintainability is an enabler for other quality characteristics. Closely related concepts in the software engineering domain are evolvability, modifiability, technical debt, and code smells. The maintainability index is not as much a fixed value you look at, its more of an indication that code is hard to understand, test andor debug.
The maintainability index is computed by combining four traditional metrics. The most commonly used distributions for maintainability analysis have been the normal, lognormal, and exponential. Comparative study of the factors that affect maintainability. Reliability, availability, and maintainability sebok. Reliability, availability, and maintainability the mitre. Why we dont use the software maintainability index. This is not a fixed industry set of rules, but rather a combination of them that works for the requirement of. Its objectives are to define the concept of maintainability, to describe the factors influencing it and to define criteria by which maintainability can be quantitatively. Typically, maintainability measures are validated using expert judgments about thestate of different systems and. Relyence maintainability prediction provides the complete software tool you need for fully compliant milhdbk472 analyses, and includes the wealth of features found across the board in the relyence studio suite. The maintainability index is a value between 1 and 100.
771 107 806 492 146 342 711 793 187 22 1410 613 1278 712 944 254 290 1231 487 118 165 1309 1532 1153 580 224 1006 46 397 979 721 1160 701 567 1293 951 615 1340 1283