Lecture 01-Software Evolution in software re-engineering.pdf

AleenaJamil4 4 views 15 slides Oct 29, 2025
Slide 1
Slide 1 of 15
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15

About This Presentation

Software Evolution in software re-engineering


Slide Content

Software Evolution
BY ALEENA JAMIL

What is Software Evolution?
❑Definition:Softwareevolutionisthecontinuousprocessofdeveloping,maintaining,and
adaptingsoftwaresystemsovertheirlifetimetomeetchangingbusinessneeds,technology
updates,anduserexpectations.
❑Itgoesbeyondinitialdevelopmentandincludesallactivitiesfromdeploymentuntilretirementof
thesoftware.

Software Evolution
1. Change Requests
▪Users, customers, or stakeholders request
changes.
▪Could be new features, bug fixes, or adapting to
new technology.
2. Impact Analysis
▪Each request is analyzed for feasibility, cost, risk,
and time impact.
▪Helps decide if the change is worth implementing.
3. Release Planning
▪After analysis, a plan is made to decide which
changes will go into the next release.
▪Prioritization of changes happens here.
4. Change Implementation
▪Developers modify the system: coding, refactoring,
updating documentation.
▪Changes are applied according to the plan.

Software Evolution
5. System & Regression Testing
After implementation, testing is done to ensure:
The new feature works.
No existing functionality is broken (regression
testing).
6. Release Management
Preparing the final software release.
Packaging, versioning, and deploying to production.
7. Monitoring & Feedback
Once released, the system is monitored in real-
world usage.
User feedback is collected for future
improvements.
This loops back into Change Requests, restarting
the cycle.

Terminologies
Legacy System
Refactoring
Re-engineeringReverse Engineering
Software Retirement
Lehman’s Law
Software Maintenance

Terminologies of Software Evolution
a) Software Maintenance
•Definition: The modification of a software product after delivery to correct faults, improve
performance, or adapt it to a modified environment.
•Types
•Corrective Maintenance – Fixing discovered defects or bugs.
•Adaptive Maintenance – Modifying software to run in new hardware/OS/platforms.
•Perfective Maintenance – Improving functionality, performance, or usability.
•Preventive Maintenance – Making changes to prevent future problems (e.g., refactoring for
maintainability).

Terminologies of Software Evolution
b) Legacy System
•A system that is outdated in technology but still in use because it supports critical business functions.
•Challenges: high maintenance costs, difficulty in adapting to new requirements, lack of
documentation.
c) Refactoring
•Process of restructuring existing code without altering its external behavior.
•Purpose: improve readability, reduce complexity, enhance maintainability.
•Example: Renaming poorly named variables, breaking long functions into smaller ones.

Terminologies of Software Evolution
d) Reengineering
•Definition: Analyzing and modifying existing software to improve it and transform it into a new form.
•Activities: reverse engineering, restructuring, forward engineering.
•Purpose: Extend system life, improve performance, adapt to new requirements.
e) Reverse Engineering
•The process of analyzing a software system to identify its components and interrelationships without
prior documentation.
•Used to recover lost information, understand legacy systems, or prepare for reengineering.

Terminologies of Software Evolution
f) Software Retirement
Decision to phase out software when it is no longer needed, cost-effective, or maintainable.
Steps: data migration, user training on new system, archiving for regulatory compliance.

Terminologies of Software Evolution
g) Lehman’s Laws of Software Evolution
•Lehman proposed 8 empirical laws (important for exams/interviews):
•Continuing Change – Software must adapt or it becomes less useful.
•Increasing Complexity – Unless managed, software complexity grows.
•Self-Regulation – Evolution is a self-regulating process with measures of product and process
attributes.
•Conservation of Organizational Stability – The rate of development remains roughly constant.
•Conservation of Familiarity – Developers can only handle a limited amount of change.
•Continuing Growth – Software functionality must increase to remain useful.
•Declining Quality – Without rigorous maintenance, software quality declines.
•Feedback System – Evolution must be treated as a multi-loop feedback system.

Processes of Software Evolution
Step 1: Change Identification & Proposals
•Sources: user requests, defect reports, new market requirements, regulatory changes, hardware
upgrades.
•Output: a change request document (CR).
Step 2: Impact Analysis
•Assess the effect of a change on the system (cost, time, risk).
•Questions considered:
•What modules are affected?
•Will testing effort increase?
•Does this affect other stakeholders?

Processes of Software Evolution
Step 3: Release Planning
•Decide which changes will be included in the upcoming release.
•Prioritization: based on business value, user demand, cost, and urgency.
•Results in a release schedule.
Step 4: Change Implementation
•Actual coding, modification of design, updating documentation, and performing refactoring if
needed.
•Tools: IDEs, version control systems (Git).

Processes of Software Evolution
Step 5: System Testing & Regression Testing
•Ensure new changes work correctly.
•Regression Testing: verify that existing features are not broken due to modifications.
Step 6: Release Management
Activities:
◦Building the final software version.
◦Packaging and distribution.
◦Deployment on production environment.
May include continuous integration and continuous deployment (CI/CD) pipelines.

Processes of Software Evolution
Step 7: Configuration Management
Managing multiple versions of software.
Tools: Git, SVN, Mercurial.
Ensures controlled changes and prevents conflicts in large teams.
Step 8: Monitoring & Feedback
Collect user feedback, bug reports, and performance data.
Helps in planning the next iteration of evolution.
Tags