Introduction


Software evolution is a phase in the software life cycle in which major changes are made. It is based on iterative enhancements to the software [Rajlich+2000], called "mall releases" in [Beck2000]. Each small release adds new functionality previously not available and results in a working program. The strategy of small releases is to provide valuable feedback to programmers, managers, and customers and give them the opportunity to adjust future direction, goals, schedule, and budget [Beck2000].

Software methodologies have been used for a long time in initial development, which starts from scratch and ends with the first working version of software. There are a great variety of methodologies for initial development, supporting diverse software engineering processes and resulting in diverse software architectures.

In software evolution, the type of change that has been extensively studied and supported by methodologies and tools is software refactoring [Fowler1999; Fanta+1999]. Refactoring is a special kind of change that modifies the software's structure but does not affect the software's functionality. It is an important ingredient of software evolution because it enables programmers to restructure software and keep it understandable and evolvable. However, it is obvious that software evolution cannot consist of refactoring only; the thrust and purpose of evolution is to change software functionality and properties.

The change that modifies software functionality and other software properties is incremental change. It is the basic building block of software evolution, far surpassing in importance all other kinds of change. However, at this time, there are no integrated methodologies for incremental change. Instead, incremental change is largely a self-taught art that programmers learn by trial and error, sometimes at great cost. This chapter is a step toward a methodology and presents an outline of a methodology and a case study. It emphasizes the role of domain concepts in incremental change.



Extreme Programming Perspectives
Extreme Programming Perspectives
ISBN: 0201770059
EAN: 2147483647
Year: 2005
Pages: 445

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net