A software life-cycle model is presented for use in a software maintenance environment. This model is independent of the programming languages used in software development because it represents only certain basic properties of software systems: control flow, data flow, and data structure. The software development process by which one phase of the software life cycle is derived from another is represented by graph rewriting rules. These rules indicate how various components of a software system have been implemented. The modeling approach permits analysis of the basic properties of a software system throughout the software life cycle. An example is given to illustrate the software life-cycle model during evolution.