The paper proposes a framework of various tasks involved in the software maintenance process. The work reported in this paper disassembles the complex process of software maintenance into tasks as to aid in the allocation of resources, acquisition of appropriate tools, and distributing responsibilities of the software maintenance process. The associated toolsets, methods, input-output sources, and communication protocols between tasks are addressed in this paper. This work is intended to conveying a high-level understanding of the software maintenance process and its dimensions. Software maintenance can be viewed in various ways depending on its purposes, nature and characteristics. We also show that software maintenance and development ar...