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.