Software Quality Model
Encyclopedia
Software quality can be defined as 'conformance to requirements' and/or 'fitness of use'. Quality achievements start with a clear definition of what "quality of source code" means to the organization or project. In simple terms all the stakeholders must be well informed of what is expected, what the goals to be achieved are, what the evaluation criteria will be and how they can contribute to achieve the goal.
This solves the first level of ambiguity, but the job of defining software quality has just begun. The very next step is to determine what predicates a quality goal. There can be several factors which can influence a particular goal positively or negatively, these factors can be predicates of a goal and these predicates can be as simple as a naming convention to be followed or as complex as a desired "useful" comments percentage per class. In general these predicates are nothing but the "best practices" to be followed and standard "software metrics" which are collected to determine different quality aspects of the software solution.
" has considerable influence on the testability
of a function, module and eventually the software as a whole. In simple terms cyclomatic complexity increases as the number of conditional constructs in a function increases, which actually mean that more testing effort is needed. So, cyclomatic complexity is a predicate for the goal "testability", and as CC increases, testability becomes tougher (decreases).
Procedure
The first step in this direction is to decide the goals and their definitions, for example the following are some of the common goals of any software development / maintenance project.- Testability: Ease of testing.
- Maintainability: The ease of change.
This solves the first level of ambiguity, but the job of defining software quality has just begun. The very next step is to determine what predicates a quality goal. There can be several factors which can influence a particular goal positively or negatively, these factors can be predicates of a goal and these predicates can be as simple as a naming convention to be followed or as complex as a desired "useful" comments percentage per class. In general these predicates are nothing but the "best practices" to be followed and standard "software metrics" which are collected to determine different quality aspects of the software solution.
Goal-oriented measurement
The software metric "cyclomatic complexityCyclomatic complexity
Cyclomatic complexity is a software metric . It was developed by Thomas J. McCabe, Sr. in 1976 and is used to indicate the complexity of a program. It directly measures the number of linearly independent paths through a program's source code...
" has considerable influence on the testability
Software testability
Software testability is the degree to which a software artifact supports testing in a given test context....
of a function, module and eventually the software as a whole. In simple terms cyclomatic complexity increases as the number of conditional constructs in a function increases, which actually mean that more testing effort is needed. So, cyclomatic complexity is a predicate for the goal "testability", and as CC increases, testability becomes tougher (decreases).