-
- Toward a New Theory of Software:
- Acknowledging Software Variance
and Heterogeneity
-
- I. Levendel - Motorola
- 1303 East Algonquin Road, Annex 2
- Schaumburg, IL 60196-1065, USA
- E-mail: ail003 @ email.mot.com
Contrary to many other industrial processes, software production
is characterized by an unusually high variance. This directly
results from the significant role of the human factor in all
its phases. As a result, measurements and modeling, which
are predicated on the homogeneous nature of software, do not
provide dependable means of process control and analysis.
This points at the need to develop a new model of software that
better represents software behavior. The approach is based on
the empirical evidence that software defects tend to congregate
to "design holes" which are deficiencies analogous
to poles in linear systems (software instabilities). The new
model is derived from the "fingerprints" left by software
changes on the software map (see example next).
|
|
c1 |
c2 |
c3 |
c4 |
c5 |
c6 |
c7 |
c8 |
c9 |
c10 |
c11 |
c12 |
c13 |
c14 |
|
f1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
f2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
f3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
f4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
f5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
f6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
f7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
f8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
f9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
.... |
The rows represent software functionalities fi
and the columns represent the timeline of software changes cj.
The self-correlation chains (repeated changes of the same functionality)
c1-c3-c4, c4-c6,
c6-c8-c11, and c2-c6
affect functionalities f3, f5, f7
and f8, respectively. These 4 self-correlation chains
are cross-correlated by software changes c4 and c6
(affecting multiple modules) to create a composite correlation
graph. We construct matrix C that integrates all of the
self- and cross-correlation chains and provides a relative measure
of self-correlation of functionalities and cross-correlations
between them. An example of matrix C is given on page
2. The values on and outside the diagonal indicate the degree
of functionality self-correlation and cross-correlation, respectively.
The C Matrix and Software Instabilities: Functionalities
with a high level of self-correlation definitely represent areas
of the software, which are subjected to a high level of repeated
software changes (software instability areas). Furthermore, a
cluster of several functionalities, each one being strongly
cross-correlated with other functionalities inside the cluster
and weakly cross-correlated with functionalities outside
the cluster, will form a strongly self-correlated cluster, which
represents a larger area of software instability.
Evaluation of Software Architecture "Goodness":
Matrix C provides a graphical description of relationships
between software functionalities from the failure viewpoint.
In other words, functionality i "does not exists" if
it never fails (Cii = 0), and functionalities, i and j, "are
not connected" if their link never fails (Cij + Cji = 0).
Conversely, if Cij + Cji is very large, then functionalities,
i and j, are strongly connected because both need to be repaired
when one of them fails. As a result, matrix C can be used to
assess the goodness of the software architecture. In principle,
two strongly connected functionalities, i and j, are really one
functionality, and this strong connection contributes a demerit
to the software architecture. Conversely, two weakly connected
functionalities, i and j, contribute to a figure of merit of
the software architecture.
Test Budgeting: The C matrix can be used to
budget testing for new software proportionately to the size of
the self-correlation (for functional testing) and of the cross-correlation
(for interaction testing).
An example of (partial) C matrix
|
|
f1 |
f2 |
f3 |
f4 |
f5 |
f6 |
f7 |
f8 |
f9 |
f10 |
f11 |
f12 |
f13 |
f14 |
|
f1 |
5 |
4 |
0 |
25 |
0 |
0 |
1 |
0 |
21 |
0 |
2 |
2 |
0 |
.... |
|
f2 |
0 |
3 |
1 |
6 |
0 |
0 |
1 |
0 |
3 |
2 |
1 |
0 |
0 |
.... |
|
f3 |
0 |
3 |
7 |
6 |
0 |
0 |
1 |
0 |
4 |
2 |
2 |
0 |
0 |
.... |
|
f4 |
0 |
0 |
0 |
6 |
0 |
0 |
0 |
0 |
2 |
0 |
0 |
0 |
0 |
.... |
|
f5 |
0 |
8 |
5 |
56 |
4 |
1 |
7 |
1 |
21 |
8 |
6 |
1 |
0 |
.... |
|
f6 |
0 |
9 |
1 |
8 |
0 |
2 |
2 |
1 |
8 |
11 |
7 |
1 |
0 |
.... |
|
f7 |
0 |
1 |
0 |
6 |
0 |
0 |
5 |
1 |
3 |
1 |
1 |
0 |
0 |
.... |
|
f8 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
.... |
|
f9 |
0 |
2 |
0 |
13 |
0 |
0 |
1 |
0 |
8 |
1 |
3 |
0 |
0 |
.... |
|
f10 |
0 |
2 |
0 |
5 |
0 |
0 |
0 |
0 |
2 |
4 |
1 |
0 |
0 |
.... |
|
f11 |
0 |
0 |
0 |
2 |
0 |
0 |
0 |
0 |
1 |
0 |
2 |
0 |
0 |
.... |
|
f12 |
0 |
7 |
2 |
19 |
1 |
0 |
3 |
1 |
9 |
6 |
5 |
4 |
0 |
.... |
|
f13 |
0 |
7 |
0 |
9 |
0 |
0 |
1 |
0 |
7 |
5 |
2 |
1 |
0 |
.... |
|
f14 |
0 |
3 |
0 |
8 |
1 |
0 |
3 |
0 |
5 |
2 |
1 |
0 |
0 |
.... |
|
f15 |
0 |
2 |
0 |
9 |
0 |
0 |
1 |
0 |
4 |
0 |
2 |
0 |
0 |
.... |
|
f16 |
0 |
4 |
1 |
20 |
1 |
0 |
1 |
0 |
8 |
2 |
1 |
0 |
0 |
.... |
|
f17 |
0 |
3 |
1 |
9 |
0 |
0 |
1 |
0 |
5 |
2 |
3 |
0 |
0 |
.... |
|
f18 |
0 |
0 |
0 |
2 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
.... |
|
f19 |
0 |
3 |
1 |
11 |
0 |
0 |
2 |
0 |
5 |
2 |
3 |
0 |
0 |
.... |
|
f20 |
0 |
1 |
0 |
4 |
0 |
0 |
0 |
0 |
2 |
0 |
1 |
0 |
0 |
.... |
|
f21 |
0 |
1 |
0 |
2 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
.... |
|
f22 |
0 |
1 |
0 |
4 |
0 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
.... |
|
f23 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
.... |
|
f24 |
0 |
1 |
0 |
3 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
.... |
|
f25 |
0 |
0 |
0 |
2 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
.... |
|
f26 |
0 |
12 |
1 |
20 |
1 |
0 |
3 |
1 |
16 |
11 |
4 |
3 |
0 |
.... |
|
f27 |
0 |
1 |
0 |
2 |
0 |
0 |
0 |
0 |
2 |
2 |
0 |
0 |
0 |
.... |
|
f28 |
0 |
1 |
0 |
5 |
0 |
0 |
0 |
0 |
2 |
1 |
2 |
0 |
0 |
.... |
|
f29 |
0 |
1 |
0 |
5 |
0 |
0 |
1 |
0 |
2 |
1 |
1 |
0 |
0 |
.... |
|
f30 |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
|
f31 |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
.... |
|