Title :
Software cultures and evolution
Author :
Raijlich, V. ; Wilde, Norman ; Buckellew, Michelle ; Page, Henry
Author_Institution :
Dept. of Comput. Sci., Wayne State Univ., Detroit, MI, USA
fDate :
9/1/2001 12:00:00 AM
Abstract :
To work effectively with legacy code, software engineers need to understand a legacy computer program´s culture - the combination of the programmer´s background, the hardware environment and the programming techniques that guided its creation. Software systems typically pass through a series of stages. During the initial development stage, software developers create a first functioning version of the code. An evolution stage follows, during which developmental efforts focus on extending system capabilities to meet user needs. During the servicing stage, only minor repairs and simple functional changes are possible. In the phase-out stage, the system is essentially frozen, but it still produces value. Finally, during the close-down stage, the developers withdraw the system and possibly replace it. Most of the tasks in the evolution and servicing phases require program comprehension nderstanding how and why a software program functions in order to work with it effectively. Effective comprehension requires viewing a legacy program not simply as a product of inefficiency or stupidity, but instead as an artifact of the circumstances in which it was developed. This information can be an important factor in determining appropriate strategies for the software program´s transition from the evolution stage to the servicing or phase-out stage
Keywords :
reverse engineering; software engineering; software management; close-down stage; evolution stage; functional changes; functioning version; hardware environment; inefficiency; initial development stage; legacy code; phase-out stage; program comprehension; programmer background; programming techniques; servicing stage; software cultures; software engineering; software evolution; software repairs; system capabilities extension; system replacement; system withdrawal; user needs; value; Art; Computer science; Ethics; Genetic programming; Hardware; Humans; Printers; Programming profession; Software systems; Solid modeling;