
on the portfolio, the low CMM level of many client organizations, the abundance of
competing standards within a single organization, local conventions and idioms that are
not rigorously enforced, remnants of failed or obsolete projects, and more.
Thus, the capabilities required from the software engineers that perform the monthly
iterations is not merely to operate the toolkit, but also to adapt and extend it within a
very short time frame. In fact, we advocate adoption of an extreme programming atti-
tude toward legacy system analysis tools [?]. In particular, we recommend unit testing
as an efficient and pragmatic means of guarding the performance and behavior of the
various toolkit components when they undergo adaptation and extension. Also, to meet
the strong demand of robustness, generality, scalability, and speed of development re-
quired from the components of the toolkit, the software engineers must master advanced
implementation techniques (see also Section 3).
Quarterly iteration.
Every three months, the technical data gathered in the inner iter-
ations is interpreted and evaluated by software engineering experts. Also, the data is
related to business goals as formulated by IT management. The findings are presented
to IT management together with recommendations about how to react to the findings.
By interpretation, we mean that various selections of the data are combined and con-
trasted to discover for instance trends, correlations, and outliers. For example, based on
the fact that certain modules have exceeded a certain complexity threshold, an engineer
might hypothesize that these modules implement several related functions in a tangled
fashion. He might discover that the database dependency information for these modules
corroborates his hypothesis. Finally, he may take a small sample from these modules,
read their code and verify that his hypothesis is indeed true.
By evaluation, we mean that the engineer makes value judgments about the software
portfolio. The judgments will not be a reflection of his personal taste. Rather, he will
base them on best practices reported in the literature, on published quality standards,
comparisons with industry best and average, and so on. In other words, he will need
to access general knowledge about software engineering practice, as formulated in the
past by others.
During the course of the quarterly iteration, the monitoring experts conduct inter-
views with the CIO and other individual members of the IT Management. The purpose
of these interviews is to formulate the tactic and strategic business goals and their IT-
related consequences. Additionally, a workshop with several members of the IT man-
agement can be organized to supplement the interviews.
The evaluation and interpretation of the technical data, as well as recovery of IT-
related business goals are instrumental in the most important element of the quarterly
iteration: the drafting of recommendations. These recommendations can be of various
kinds. They can be highly detailed, short-term recommendation, such as redesigning a
particular interface, migrating particular persistent data from hierarchical to relational
storage, or upgrading a particular third-party component. On the other hand, some rec-
ommendations may have a more general, long term character, such as integrating two
functionally similar, but technically distinct systems, or reducing the procedural char-
acter of the object-oriented portions of the portfolio.
In some cases, the monitoring data are not sufficient to warrant concrete recom-
mendations. They reveal a problem, but do not suggest a solution yet. In these cases,
121