Give a short summary of the history of Software Evolution:
1968: First conference on Software engineering, organized by the NATO Science Committee, with the goal to establish sound engineering principles in order to obtain reliable, efficient and economically viable software.
1970: Royce proposes the waterfall life-cycle process for software development. Mantenance is seen as the final phase of the software lifecycle ( with only bug fixes and minor adjustments). did not account for the need to add funcionality due to new and changed requirements. The model had a strong and long influence on the industrial practice of software development.
Late 1970's: First atempt toward a more evolutionary process model. Identification of new activitiesm, such as impact analysis and change propagatino. In the sam eperiod, formulation of "Laws of software evolution" by Lehman
1990's: General acceptance evolution, formalization and development of evolutionary processes (Gilb's evolutionary development, boehm's spiral model, Bennet and Rajichs' staged model, agile approaches).
Software evolution is a crucial ingredient of agile software development (iterative and incremental development, embracing change!)
Describe the to dimensions of Software Evolution:
What and Why? Software evolution as a scientific discipline which studies the nature of the sotware evolution phenomenon to understand its driving factors. Keiy interests include the formulation and refinement of fundamental theories and laws of software evolution.
How?Software evolution as an engineering discipline which studies more pragmatic aspects that aid software developers and project managers in their day-tp-day tasks. Key interests include the development and validation of tools and techniques to guide, implement and control software evolution.
What are the two main activiteis of software evolution?
- Reverse Engineering
What is Reverse Engineering about?
Activity needed when trying to understand the architecture of behavior of a large software system, when the only reliable information is the source code.
Aims at building higher-level, more abstract, software models from the source code.
What is re-engineering about?
Activity needed when trying to re-structure a legacy system. In other words, systems that are still valuable, but are difficult to maintain.
Aims at producing a new system that is more evolvable.
Draw the advanced Royce model which includes the maintanence part: