Software complexity evaluation based on functional size components
Luca Santillo · 2004
This work introduces a self-consistent model for software complexity, based on information which can be typically collected at early stages of software lifecycle, e.g. in the functional specification phase, when a functional size measurement is also usually performed. The proposed model considers software complexity as structured into three bottom-up stages of the software architecture (from internal complexity of each base functional component to the overall structural complexity of the software system). Conceptually, complexity can be considered as proportional to dimensionality = scale × diversity, hence any complexity factor can be seen as an issue either of scale or of diversity, originating a corresponding specific factor of implementation difficulty, or complexity driver; such mapping suggests which factors could be referred to software structure and size, while other factors should be referred more adequately to the software development process. For each stage of the model, a description an one or more specific metrics – at different detail level – are proposed in order to provide an overall software complexity indicator to support in distinguish software systems from a complexity perspective. Moreover, it’s shown how some or all of the complexity factors – at various stages – can be integrated with typical functional size measures (COSMIC, IFPUG) in order to normalize the latter in a more realistic software estimation process. A weighted profile scheme, or complexity mask, is also proposed to take into account the intrinsic differences when evaluating the complexity for systems of different type or domain.