Software complexity measures and methods
Software Complexity: Measures and Methods by Horst Zuse
The term complexity stands for state of events or things, which have multiple interconnected links and highly complicated structures. In software programming, as the design of software is realized, the number of elements and their interconnections gradually emerge to be huge, which becomes too difficult to understand at once. Software design complexity is difficult to assess without using complexity metrics and measures. Let us see three important software complexity measures. In , Mr. Maurice Howard Halstead introduced metrics to measure software complexity.
Empirical Software Engineering. Previously, much emphasis has been put on creating code complexity measures and applying these measures in practical contexts. To date, most measures are created based on theoretical frameworks, which determine the expected properties that a code complexity measure should fulfil. Fulfilling the necessary properties, however, does not guarantee that the measure characterizes the code complexity that is experienced by software engineers. Subsequently, code complexity measures often turn out to provide rather superficial insights into code complexity. This paper supports the discipline of code complexity measurement by providing empirical insights into the code characteristics that trigger complexity, the use of code complexity measures in industry, and the influence of code complexity on maintenance time. Results of an online survey, conducted in seven companies and two universities with a total of respondents, show that among several code characteristics, two substantially increase code complexity, which subsequently have a major influence on the maintenance time of code.
Cyclomatic Complexity Measures
The problem is the issues that comprise software complexity — legacy system remnants, antiquated code, overwritten and rewritten code, the integration of formerly proprietary applications, et al — are the same things that make measuring it difficult. With multiple system interfaces and complex requirements, the complexity of software systems sometimes grows beyond control, rendering applications and portfolios too costly to maintain and too risky to enhance. Left unchecked, software complexity can run rampant in delivered projects, leaving behind bloated, cumbersome applications. Fortunately, there have been many methods developed for measuring software complexity. While some may differ slightly from others, most break down software complexity according to the following metrics:. Programs with more conditional logic are more difficult to understand, therefore measuring the level of cyclomatic complexity unveils how much needs to be managed.
Programming complexity or software complexity is a term that includes many properties of a piece of software, all of which affect internal interactions. According to several commentators, there is a distinction between the terms complex and complicated. Complicated implies being difficult to understand but with time and effort, ultimately knowable. Complex, on the other hand, describes the interactions between a number of entities. As the number of entities increases, the number of interactions between them would increase exponentially, and it would get to a point where it would be impossible to know and understand all of them. Similarly, higher levels of complexity in software increase the risk of unintentionally interfering with interactions and so increases the chance of introducing defects when making changes.