ABSTRACT
Two decades ago, Harrison and Cook[1] had already recog-
nized software maintenance as one of the software engi-
neering activities that spent much financial, human, and
technologic resources. In the following decade, others stu-
dies, such as Pfleeger,[2] confirmed that software mainte-
nance represented about 80% of the budget allocated to
software. Since then, much progress has been made on
software development, such as more agile processes,
more portability in computer languages, powerful CASE
tools. On the other hand, software maintenance has
received relatively little attention in the technical literature
and in the market.[3]
The systematization of software maintenance is not a
trivial task, because it is basically a reactive activity, and
hence more chaotic than software development. The neces-
sity of adapting software systems to a changing environ-
ment generates the need for software maintenance. In most
cases, these changes can neither be avoided nor can they be
much delayed; on the other hand, organizations must be
prepared to embrace these changes.