- •Identify architectural archetypes (collection of abstractions that must be modeled if the system is to be constructed)
- •Infrastructure components are responsible for functions needed to support the processing required in a domain application
- •Verification and Validation
- •Is the cause of the bug reproduced in another part of the program?
- •Is the system particularly sensitive to certain input values?
- •Volatility (likelihood a design component will change)
- •Interface design metrics (e.G., layout appropriateness)
- •Inheritance
OO design metrics
Size (population, volume, length, functionality)
Complexity (how classes interrelate to one another)
Coupling (physical connections between design elements)
Sufficiency (how well design components reflect all properties of the problem domain)
Completeness (coverage of all parts of problem domain)
Cohesion (manner in which all operations work together)
Primitiveness (degree to which attributes and operations are atomic)
Similarity (degree to which two or more classes are alike)
Volatility (likelihood a design component will change)
Class-Oriented Metrics
Chidamber and Kemerer (CK) Metrics Suite
weighted metrics per class (WMC)
depth of inheritance tree (DIT)
number of children (NOC)
coupling between object classes (CBO)
response for a class (RFC)
lack of cohesion in methods (LCOM)
Harrison, Counsel, and Nithi (MOOD) Metrics Suite
method inheritance factor (MIF)
coupling factor (CF)
polymorphism factor (PF)
Lorenz and Kidd
class size (CS)
number of operations overridden by a subclass (NOO)
number of operations added by a subclass (NOA)
specialization index (SI)
Component-level design metrics
Cohesion metrics (data slice, data tokens, glue tokens, superglue tokens, stickiness)
Coupling metrics (data and control flow, global, environmental)
Complexity metrics (e.g., cyclomatic complexity)
Operation-Oriented Metrics
Average operation size (OSavg)
Operation complexity (OC)
Average number of parameters per operation (NPavg)
Interface design metrics (e.G., layout appropriateness)
Halstead's Metrics (Source Code Metrics)
Overall program length
Potential minimum algorithm volume
Actual algorithm volume (number of bits used to specify program)
Program level (software complexity)
Language level (constant for given language)
Testing Metrics
Metrics that predict the likely number of tests required during various testing phases
Function-based metrics (e.g., function points)
Architectural design metrics
Cyclomatic complexity can target modules that are candidates for extensive unit testing
Halstead effort
Metrics that focus on test coverage for a given component
Cyclomatic complexity lies at the core of basis path testing
Object-Oriented Testing Metrics
Encapsulation
Lack of cohesion in methods (LCOM)
Percent public and protected (PAP)
Public access to data members (PAD)
Inheritance
Number of root classes (NOR)
Fan in (FIN)
Number of children (NOC)
Depth of inheritance tree (DIT)
Class complexity
Weighted metrics per class (WMC)
Coupling between object classes (CBO)
Response for a class (RFC)
Maintenance Metrics
Software Maturity Index (IEEE Standard 982.1-1988)
SMI approaches 1.0 as product begins to stabilize
