Module Code - Title:
CS5709
-
SOFTWARE ENGINEERING EVOLUTION
Year Last Offered:
2025/6
Hours Per Week:
Grading Type:
N
Prerequisite Modules:
Rationale and Purpose of the Module:
Many reports since the late '80s suggest that the majority of software development occurs after delivery of the 'finished' product. This phase of development deals with redressing faults in the original system or, more commonly, evolving the system in line with changing business contexts and requirements. However undergraduate and graduate courses seldom incorporate this (possibly infinite) phase of the software lifecycle explicitly. The aim of this module is to focus on the tools, technologies, theories and practices of software evolution. In doing so, it will make students aware of the wide range of software evolution challenges faced by the software industry today and will equip students to meet these challenges.
Syllabus:
Topics presented include:
- Review of Taxonomies of Software Evolution;
- Introduction to prevalent issues in Software Evolution, such as bug triaging, version control, concept location (information seeking), change impact analysis, and architectural drift;
- Analysis of Software Evolution processes;
- Cost Estimation issues in software evolution;
- Evaluating Program Comprehension strategies and techniques;
- Automated Approaches to Concept Location (Plan Recognition, Natural Language, AI);
- Evaluation and measurement of Software Change;
- Reverse engineering, Reengineering and Re-documentation of legacy systems;
- Assessing Architectural conformance;
- Techniques for Change Impact Analysis;
- Software Evolution Tools;
- Visualization of Software Evolution;
- Empirical Studies of Software Evolution.
Learning Outcomes:
Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)
On successful completion of this module, students should be able to:
1. Review and appraise taxonomies of Software Evolution.
2. Analyse Software Evolution processes.
3. Evaluate Program Comprehension strategies and techniques and techniques for Change Impact Analysis.
4. Apply automated approaches to Concept Location.
5. Describe and discuss approaches to reverse engineering, reengineering and re-documentation of legacy systems and tools for software evolution.
6. Assess Architectural conformance.
Affective (Attitudes and Values)
On successful completion of this module, students should be able to:
1. Demonstrate an appreciation for the importance and role of software evolution over the lifetime of software systems.
2. Justify the choice of technique or tool when undertaking soft
Psychomotor (Physical Skills)
How the Module will be Taught and what will be the Learning Experiences of the Students:
Research Findings Incorporated in to the Syllabus (If Relevant):
Prime Texts:
T. Mens and S. Demeyer (2008)
Software Evolution
, Springer
N. H. Madhavji, M. M. Lehmann and D. Perry (2005)
Software Evolution and Feedback: Theory and Practice
, Wiley
F. Brooks (1998)
The Mythical Man-Month (Essays on Software Engineering)
, Addison Wesley
Other Relevant Texts:
Programme(s) in which this Module is Offered:
Semester(s) Module is Offered:
Module Leader:
salim.saay@ul.ie