Arie van deursen software engineering in theory and practice. Improving code quality with visual studio code metrics. A new maintainability index model is proposed with a new set of predictor metrics. 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. Apr 20, 2016 maintainability, or lack thereof, has significant business impact. Think twice before using the maintainability index arie. Maintainability means fixing, updating, servicing and to modify the system or update the software for performance improvements or for the correction of faults. Software maintainability free demo video explanation. We employ the maintainability index, technical debt ratio and a maintainability model based on the arisa compendium. Think twice before using the maintainability index. Ultimately the maintainability index is what works for your specific case. Can we apply the maintainability index calculation formula for the.
Even if a metric is not a measurement metrics are functions, while measurements are the numbers obtained by the application of. How does visual studios calculate the maintainability index. This is a quick note about the maintainability index, a metric aimed at assessing software maintainability, as i recently run into developers and. It was proposed by oman and hagemeister in the early nineties 1. Refactoring and reengineering are practices to improve a software s maintainability. Maintainability index calculates an index value between 0 and 100 that represents the relative ease of maintaining the code. Sep 03, 2011 a smaller number of statistical distributions is used for maintainability analysis than for reliability analysis. Mission objectives include safety, mission success and sustainability criteria. Maintainability index is a software metric which measures how maintainable easy to support and. The history of the maintainability index goes back to 1992, and was included in visual studio in 2007. Typically, maintainability measures are validated using expert judgments about thestate of.
Longitudinal evaluation of opensource software maintainability. The software metrics study was initiated to propose metrics of the maintainability of the software produced by the mdsf project. Maintainability index maintainability index is a software metric which measures how maintainable easy to support and change the source code is. 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. What is a good maintainability index using visual studio 2008. 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. Software maintainability index revisited researchgate. Software maintainability is important because it is approximately 75% of the cost related to a project. Calculate code metrics visual studio microsoft docs. In software development, the maintenance phase of a software system often spans 10 years or more. Maintainability index mi has been proposed to calculate a single number that expresses the maintainability of a system.
Maintainability index range and meaning code analysis team blog. To validate the method measuring maintainability index software mmis. Can we apply the maintainability index calculation formula for the objectoriented software. The maintainability index mi is a compound metric designed at the university of idaho in 1991 by oman and hagemeister. Can we apply the maintainability index calculation formula.
Collectively, they affect economic lifecycle costs of a system and its utility. Look at fault detection and fault isolation fdfi coverage and the impact on repair time lines. Maintainability, or lack thereof, has significant business impact. In 1991 oman and hagemeister introduced a composite metric for quantifying software maintainability. Measuring software maintainability is nontrivial and there exists no single metric to measure it accurately. Maintainability index is a software metric which measures how maintainable easy to support and change the source code is. Look for opportunities to gather maintainability and testability data during all test phases. Cqse blog why we dont use the software maintainability index. The software maintainability index revisited citeseerx. To have a good maintainability index in your code you should have a couple of metrics measured up. Sei maintanability index objectscriptquality cachequality. 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. For this reason, many applications are replaced simply because the overhead to modify them becomes prohibitive. Software maintenance is an expensive activity that consumes a major portion of the cost of the total project.
This may be due to the fact that maintainability has traditionally lagged reliability theory in development. Abstractthe maintainability of the software system is becoming a very important characteristic due to growth in demand of quality software system. Also consider and address software maintenance activity in the field as patches, upgrades, and new software revisions are deployed. Why we dont use the software maintainability index. After nearly a decade of use, mi continues to provide valuable insight into soft. Mi is calculated as a factored formula consisting of lines of code loc, cyclomatic complexity ccand halstead volume hv.
For more information, see generate code quality metrics. 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. 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. An approach to find out at which maintainability metric, software maintenance cost is less c. An approach to find out at which maintainability metric. Various activities carried out during maintenance include the addition of new features, deletion of obsolete code, correction of errors, etc. The most commonly used distributions for maintainability analysis have been the normal, lognormal, and exponential. Maintainability index range and meaning code analysis. Reliability, availability, and maintainability sebok.
This maintainability index mi has evolved into numerous variants and has been successfully applied to a number of industrial strength software systems. To date, it is included in visual studio since 2007, in the. In software engineering, these activities are known as software maintenance cf. May 26, 2011 maintainability index calculates an index value between 0 and 100 that represents the relative ease of maintaining the code. Cqse blog why we dont use the software maintainability. 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. Why we dont use the software maintainability index cqse blog. This document is a first step towards the construction of a maintainability prediction model. 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. Welker idaho national engineering and environmental laboratory.
Software maintainability is defined as the degree to which an application is understood, repaired, or enhanced. A high value of the maintainability index means better code maintainability. Reliability, availability, and maintainability ram are three system attributes that are of tremendous interest to systems engineers, logisticians, and users. You can upload the results of a local verification or remote verification. 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 maintainability index is computed by combining four traditional. Observations as mentioned earlier, numerous papers have been written describing the successful application of mi as part of the software development process or within a software the software maintainability index revisited kurt d. 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. Remediation cost development cost which can be restated as. Color coded ratings can be used to quickly identify trouble spots in your code. Maintainability index with comments mi maintainability index which does not contain comments miwoc.
Bioinspired information and communications technologies, 2014. The software maintainability index mi is a singlevalue indicator for the maintainability of a software system. Plus, we back it up with our unmatched customer service. Maintainability and flexibility at the software level are of predominant importance to drive innovation at the business process level. Nov 20, 2007 the maintainability index has been reset to lie between 0 and 100. The maintainability index is calculated as a factored formula consisting of lines of code, cyclomatic complexity and halstead volume. Maintainability index is a software metric that indicates how maintainable easy to support and change the source code is. Maintainability index mi mi is a singlenumber value for estimating the relative maintainability of the code. The maintainability index is computed by combining four traditional metrics. The primary aim of the metric is to determine how easy it will be to maintain a particular body of code. 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. A proposed new model for maintainability index of open. An essential part of keeping a software s maintainability at a desired level or. Relyence maintainability prediction bestinclass software.
Maintainability is a multifaceted quality attribute each of the facets must be analyzed to objectively measure it. The maintainability index is calculated as a factored formula consisting of lines. Different color codes are used to signify the maintainability index. The other model is the sig maintainability model, proposed by the software improvement group, where this thesis research was carried out. How to effectively define and measure maintainability. 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. Based on the numbers given per method in the source code, one can easily tell if the code is complex or not. 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. Maintainability is defined as the probability of performing a successful repair action within a given time.
Mi and minc maintainability index virtual machinery. The maintainability index mi is a software maintainability model proposed by oman and hagemeister at the university of idaho 1991, originally presented at. The cyclomatic complexity also affects other software metrics, like code maintainability index. A method can be complex but as long as there are unit tests for it, it is much simpler to maintain. The maintainability index is calculated with certain formulae from linesofcode measures, mccabe measures and halstead complexity measures. For information about how to generate code metrics data in visual studio, see how to. Comparison of the sig maintainability model and the. Software maintainability means the ease with which these operations can be carried out.
Chug, software maintainability prediction using machine learning algorithms, softw. Both angles are discussed in the next two sections. The following list shows the code metrics results that visual studio calculates. Essentially, with cyclomatic complexity, higher numbers are bad and lower numbers are good. 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. The halsteadsource code measures proposed in the seventies,31 have been used for describing maintainability 31,32 see section 3. 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. Reliasoft offers software blocksim and training that address the topic of system maintainability analysis. In this paper, we present a new method to find mi with respect to loc only.
Maintainability is an enabler for other quality characteristics. Developing maintainable software software sustainability. Code metrics maintainability index the ultimate visual. The software engineering institute promoted this alternate formula in their 1997 c4 software technology reference. Writing elegant code and the maintainability index. The maintainability index is calculated as a factored formula consisting of sloc source lines of code, cyclomatic complexity and halstead volume. The tools calculate maintainability index for functions and classstruct definitions, for files and for the whole software. The mdemo would be implemented to continue reading. A smaller number of statistical distributions is used for maintainability analysis than for reliability analysis. A software metric is a standard of measure of a degree to which a software system or process possesses some property. Empirical studies by others led to a series of variants, and calculation of the maintainability index.
The maintainability index was introduced at the international conference on software maintenance in 1992. 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. Reliability, availability, and maintainability the mitre. Why dont you consider unit testing coverage to be a part of the maintability index. Developing maintainable software helps reduce technical debt. 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. This is not a fixed industry set of rules, but rather a combination of them that works for the requirement of. It identifies a set of software measures based on correlations published in empirical studies. Software that is written without maintainability in mind requires about four times as much effort to maintain than it did to develop. 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. Ability of a computer program to be retained in its original form, and to be restored to that form in case of a failure.
201 118 332 420 610 648 1305 529 196 1436 1478 242 30 130 716 487 86 244 745 795 284 912 1420 815 781 1523 277 1031 1185 70 285 1063 1203 474 385