Software
Evolution &
Emerging
Trends
Software Engineering
Agenda
Evolution processes
Program evolution dynamics
Software maintenance
Legacy system management
Sample footer text 3/1/20XX 2
Introduction
The objectives of this chapter
are to explain why software
evolution is an important part of
software engineering and to
describe software evolution
processes.
Software development does not
stop when a system is delivered
but continues throughout the
lifetime of the system.
3/1/20XX 3
Evolution
Process
Sample footer text 3/1/20XX
4
Evolution Process
+ You should think of software
engineering as a spiral
process with requirements,
design, implementation, and
testing going on throughout
the lifetime of the system
Sample footer text 3/1/20XX 5
Dynamics of
Evolution
Sample footer text 3/1/20XX
6
Program Evolution Dynamics
+ Program evolution dynamics is the study of system
change.
+ A study was done on software evolution by Lehman &
Belady
+ A law was proposed and established about system
change.
7
First Law
+ The first law states that system maintenance is an
inevitable process. As the system’s environment changes,
new requirements emerge and the system must be
modified. When the modified system is reintroduced to the
environment, this promotes more environmental changes,
so the evolution process starts again.
8
Second Law
+ The second law states that, as a system is changed, its
structure is degraded. The only way to avoid this
happening is to invest in preventative maintenance
9
Third Law
+ It suggests that large systems have a dynamic of their own
that is established at an early stage in the development
process. This determines the gross trends of the system
maintenance process and limits the number of possible
system changes.
10
Fourth Law
+ The law suggests that most large programming projects
work in a ‘saturated’ state. That is, a change to resources
or staffing has imperceptible effects on the long-term
evolution of the system. This is consistent with the third
law, which suggests that program evolution is largely
independent of management decisions
11
5th Law
+ Lehman’s fifth law is concerned with the change
increments in each system release. Adding new
functionality to a system inevitably introduces new system
faults. The more functionality added in each release, the
more faults there will be.
12
Summary
+ We should be considered when planning the maintenance
process.
13
Software
Maintenance
Sample footer text 3/1/20XX
14
Definition
+ Software maintenance is the general process of changing
a system after it has been delivered. The term is usually
applied to custom software in which separate development
groups are involved before and after delivery.
15
Why is it important
+ maintenance is inevitable: system requirements are likely
to change during development because the environment is
changing. Systems are tightly coupled with their
environment. Systems must be maintained if they are to
remain useful in an environment
Sample footer text 3/1/20XX 16
Types of software maintenance
+ Fault repairs Coding errors are usually
relatively cheap to correct; design errors
are more expensive as they may involve
rewriting several program components.
Requirements errors are the most
expensive to repair because of the
extensive system redesign which may be
necessary.
+ Environmental adaptation This type of
maintenance is required when some
aspect of the system’s environment such
as the hardware, the platform operating
system, or other support software
changes. The application system must be
modified to adapt it to cope with these
environmental changes.
17
+ Functionality addition This
type of maintenance is
necessary when the system
requirements change in
response to organizational
or business change. The
scale of the changes
required to the software is
often much greater than for
the other types of
maintenance.
Software maintenance takes up a
higher proportion of IT budgets
than new development (roughly
two-thirds maintenance, one-third
development). They also agree
that more of the maintenance
budget is spent on implementing
new requirements than on fixing
bugs
18
Maintenance Effort Distribution
Reality of Software Maintenance
Preventive Effort
+ Good software engineering techniques, such as precise
specification, the use of object-oriented development, and
configuration management, contribute to maintenance cost
reduction.
19
Ways to maintain software better
+ Maintenance Prediction
+ Software Reengineering
+ Preventive Maintenance By Refactoring
20
Maintenance Prediction is the way
+ Managers hate surprises, especially if these result in
unexpectedly high costs. You should therefore try to
predict what system changes might be proposed and what
parts of the system are likely to be the most difficult to
maintain. You should also try to estimate the overall
maintenance costs for a system in a given time period
21
Maintenance Prediction
22
3 Ways:
• Predicting Maintainability
• Predicting System Changes
• Prediction Maintenance Cost
Software Reengineering
+ However, many systems, especially older legacy systems, are
difficult to understand and change. The programs may have been
optimized for performance or space utilization at the expense of
understandability, or, over time, the initial program structure may
have been corrupted by a series of changes. To make legacy
software systems easier to maintain, you can reengineer these
systems to improve their structure and understandability.
Reengineering may involve redocumenting the system, refactoring
the system architecture, translating programs to a modern
programming language, and modifying and updating the structure
and values of the system’s data.
23
Activities of Software Reengineering
+ Source code translation Using a translation tool, the program is converted from an old
programming language to a more modern version
+ Reverse engineering The program is analyzed and information extracted from it. This helps to
document its organization and functionality. Again, this process is usually completely
automated.
+ Program structure improvement The control structure of the program is analyzed and modified
to make it easier to read and understand.
+ Program modularization Related parts of the program are grouped together and, where
appropriate, redundancy is removed. In some cases, this stage may involve architectural
refactoring (e.g., a system that uses several different data stores may be refactored to use a
single repository). This is a manual process.
+ Data reengineering The data processed by the program is changed to reflect program changes.
This may mean redefining database schemas and converting existing databases to the new
structure. You should usually also clean up the
Sample footer text 3/1/20XX 24
Preventive Maintenance By
Refactoring
+ Although reengineering and refactoring are both intended to make
software easier to understand and change, they are not the same
thing. Reengineering takes place after a system has been maintained
for some time and maintenance costs are increasing. You use
automated tools to process and reengineer a legacy system to create
a new system that is more maintainable. Refactoring is a continuous
process of improvement throughout the development and evolution
process. It is intended to avoid the structure and code degradation
that increases the costs and difficulties of maintaining a system.
Sample footer text 3/1/20XX 25
Legacy
System
Maintenance
Sample footer text 3/1/20XX
26
Strategies to Legacy Systems
+ Scrap the system completely (when there is no business
sense)
+ Leave the system unchanged and continue with regular
maintenance
+ Reengineer the system to improve its maintainability
+ Replace all or part of the system with a new system
Sample footer text 3/1/20XX 27
Legacy Systems Assessment
+ High Business
Value, Low Quality
+ High Business Value
High Quality
+ Low Business Value
Low Quality
+ Low Business Value
High Quality
28
Note: Assessment is done if you have around
10 systems to maintain and need to make
decision on the next course of actions
How to Assess Business Value
+ The use of the system If systems are only used occasionally or by a small number of people,
they may have a low business value. A legacy system may have been developed to meet a
business need that has either changed or that can now be met more effectively in other ways
+ The business processes that are supported When a system is introduced, business processes
are designed to exploit the system’s capabilities. If the system is inflexible, changing these
business processes may be impossible. However, as the environment changes, the original
business processes may become obsolete.
+ The system dependability System dependability is not only a technical problem but also a
business problem. If a system is not dependable and the problems directly affect the business
customers or mean that people in the business are diverted from other tasks to solve these
problems, the system has a low business value.
+ The system outputs The key issue here is the importance of the system outputs to the
successful functioning of the business. If the business depends on these outputs, then the
system has a high business value. Conversely, if these outputs can be easily generated in
some other way or if the syst
29
How to Assess Quality
+ The number of system change requests System changes usually corrupt the
system structure and make further changes more difficult. The higher this
accumulated value, the lower the quality of the system.
+ The number of user interfaces This is an important factor in forms-based
systems where each form can be considered as a separate user interface.
The more interfaces, the more likely that there will be inconsistencies and
redundancies in these interfaces.
+ The volume of data used by the system The higher the volume of data
(number of files, size of database, etc.), the more likely that it is that there
will be data inconsistencies that reduce the system quality.
Sample footer text 3/1/20XX 30
Software &
Tech
Emerging
Trends
Refer to links provided
2023
+ https://www.linkedin.com/pulse/top-10-tech-trends-watch-2023-
andrew-bolwell/
Sample footer text 3/1/20XX 32
Thank you
33
Quiz 1
+ Processes for evolving a software product depend on:
a) Type of software to be maintained
b) Development processes used
c) Skills and experience of the people involved
d) All of the mentioned
Sample footer text 3/1/20XX 34
Quiz 2
+ Which technique is applied to ensure the continued evolution of legacy
systems ?
a) Forward engineering
b) Reverse Engineering
c) Reengineering
d) Reverse Engineering and Reengineering
Sample footer text 3/1/20XX 35
Quiz 3
+ What is not included in preventive costs?
a) Quality Planning
b) Formal Technical Reviews
c) Test Equipment
d) Equipment Calibration and maintenance
Sample footer text 3/1/20XX 36
Quiz 4
+ Software maintenance is so important because….
Sample footer text 3/1/20XX 37
Quiz 5
+ What happens if there is no software maintenance for a
software?
Sample footer text 3/1/20XX 38

SE - Lecture 13 - Software Evolution and Tech Trends.pptx

  • 1.
  • 2.
    Agenda Evolution processes Program evolutiondynamics Software maintenance Legacy system management Sample footer text 3/1/20XX 2
  • 3.
    Introduction The objectives ofthis chapter are to explain why software evolution is an important part of software engineering and to describe software evolution processes. Software development does not stop when a system is delivered but continues throughout the lifetime of the system. 3/1/20XX 3
  • 4.
  • 5.
    Evolution Process + Youshould think of software engineering as a spiral process with requirements, design, implementation, and testing going on throughout the lifetime of the system Sample footer text 3/1/20XX 5
  • 6.
  • 7.
    Program Evolution Dynamics +Program evolution dynamics is the study of system change. + A study was done on software evolution by Lehman & Belady + A law was proposed and established about system change. 7
  • 8.
    First Law + Thefirst law states that system maintenance is an inevitable process. As the system’s environment changes, new requirements emerge and the system must be modified. When the modified system is reintroduced to the environment, this promotes more environmental changes, so the evolution process starts again. 8
  • 9.
    Second Law + Thesecond law states that, as a system is changed, its structure is degraded. The only way to avoid this happening is to invest in preventative maintenance 9
  • 10.
    Third Law + Itsuggests that large systems have a dynamic of their own that is established at an early stage in the development process. This determines the gross trends of the system maintenance process and limits the number of possible system changes. 10
  • 11.
    Fourth Law + Thelaw suggests that most large programming projects work in a ‘saturated’ state. That is, a change to resources or staffing has imperceptible effects on the long-term evolution of the system. This is consistent with the third law, which suggests that program evolution is largely independent of management decisions 11
  • 12.
    5th Law + Lehman’sfifth law is concerned with the change increments in each system release. Adding new functionality to a system inevitably introduces new system faults. The more functionality added in each release, the more faults there will be. 12
  • 13.
    Summary + We shouldbe considered when planning the maintenance process. 13
  • 14.
  • 15.
    Definition + Software maintenanceis the general process of changing a system after it has been delivered. The term is usually applied to custom software in which separate development groups are involved before and after delivery. 15
  • 16.
    Why is itimportant + maintenance is inevitable: system requirements are likely to change during development because the environment is changing. Systems are tightly coupled with their environment. Systems must be maintained if they are to remain useful in an environment Sample footer text 3/1/20XX 16
  • 17.
    Types of softwaremaintenance + Fault repairs Coding errors are usually relatively cheap to correct; design errors are more expensive as they may involve rewriting several program components. Requirements errors are the most expensive to repair because of the extensive system redesign which may be necessary. + Environmental adaptation This type of maintenance is required when some aspect of the system’s environment such as the hardware, the platform operating system, or other support software changes. The application system must be modified to adapt it to cope with these environmental changes. 17 + Functionality addition This type of maintenance is necessary when the system requirements change in response to organizational or business change. The scale of the changes required to the software is often much greater than for the other types of maintenance.
  • 18.
    Software maintenance takesup a higher proportion of IT budgets than new development (roughly two-thirds maintenance, one-third development). They also agree that more of the maintenance budget is spent on implementing new requirements than on fixing bugs 18 Maintenance Effort Distribution Reality of Software Maintenance
  • 19.
    Preventive Effort + Goodsoftware engineering techniques, such as precise specification, the use of object-oriented development, and configuration management, contribute to maintenance cost reduction. 19
  • 20.
    Ways to maintainsoftware better + Maintenance Prediction + Software Reengineering + Preventive Maintenance By Refactoring 20
  • 21.
    Maintenance Prediction isthe way + Managers hate surprises, especially if these result in unexpectedly high costs. You should therefore try to predict what system changes might be proposed and what parts of the system are likely to be the most difficult to maintain. You should also try to estimate the overall maintenance costs for a system in a given time period 21
  • 22.
    Maintenance Prediction 22 3 Ways: •Predicting Maintainability • Predicting System Changes • Prediction Maintenance Cost
  • 23.
    Software Reengineering + However,many systems, especially older legacy systems, are difficult to understand and change. The programs may have been optimized for performance or space utilization at the expense of understandability, or, over time, the initial program structure may have been corrupted by a series of changes. To make legacy software systems easier to maintain, you can reengineer these systems to improve their structure and understandability. Reengineering may involve redocumenting the system, refactoring the system architecture, translating programs to a modern programming language, and modifying and updating the structure and values of the system’s data. 23
  • 24.
    Activities of SoftwareReengineering + Source code translation Using a translation tool, the program is converted from an old programming language to a more modern version + Reverse engineering The program is analyzed and information extracted from it. This helps to document its organization and functionality. Again, this process is usually completely automated. + Program structure improvement The control structure of the program is analyzed and modified to make it easier to read and understand. + Program modularization Related parts of the program are grouped together and, where appropriate, redundancy is removed. In some cases, this stage may involve architectural refactoring (e.g., a system that uses several different data stores may be refactored to use a single repository). This is a manual process. + Data reengineering The data processed by the program is changed to reflect program changes. This may mean redefining database schemas and converting existing databases to the new structure. You should usually also clean up the Sample footer text 3/1/20XX 24
  • 25.
    Preventive Maintenance By Refactoring +Although reengineering and refactoring are both intended to make software easier to understand and change, they are not the same thing. Reengineering takes place after a system has been maintained for some time and maintenance costs are increasing. You use automated tools to process and reengineer a legacy system to create a new system that is more maintainable. Refactoring is a continuous process of improvement throughout the development and evolution process. It is intended to avoid the structure and code degradation that increases the costs and difficulties of maintaining a system. Sample footer text 3/1/20XX 25
  • 26.
  • 27.
    Strategies to LegacySystems + Scrap the system completely (when there is no business sense) + Leave the system unchanged and continue with regular maintenance + Reengineer the system to improve its maintainability + Replace all or part of the system with a new system Sample footer text 3/1/20XX 27
  • 28.
    Legacy Systems Assessment +High Business Value, Low Quality + High Business Value High Quality + Low Business Value Low Quality + Low Business Value High Quality 28 Note: Assessment is done if you have around 10 systems to maintain and need to make decision on the next course of actions
  • 29.
    How to AssessBusiness Value + The use of the system If systems are only used occasionally or by a small number of people, they may have a low business value. A legacy system may have been developed to meet a business need that has either changed or that can now be met more effectively in other ways + The business processes that are supported When a system is introduced, business processes are designed to exploit the system’s capabilities. If the system is inflexible, changing these business processes may be impossible. However, as the environment changes, the original business processes may become obsolete. + The system dependability System dependability is not only a technical problem but also a business problem. If a system is not dependable and the problems directly affect the business customers or mean that people in the business are diverted from other tasks to solve these problems, the system has a low business value. + The system outputs The key issue here is the importance of the system outputs to the successful functioning of the business. If the business depends on these outputs, then the system has a high business value. Conversely, if these outputs can be easily generated in some other way or if the syst 29
  • 30.
    How to AssessQuality + The number of system change requests System changes usually corrupt the system structure and make further changes more difficult. The higher this accumulated value, the lower the quality of the system. + The number of user interfaces This is an important factor in forms-based systems where each form can be considered as a separate user interface. The more interfaces, the more likely that there will be inconsistencies and redundancies in these interfaces. + The volume of data used by the system The higher the volume of data (number of files, size of database, etc.), the more likely that it is that there will be data inconsistencies that reduce the system quality. Sample footer text 3/1/20XX 30
  • 31.
  • 32.
  • 33.
  • 34.
    Quiz 1 + Processesfor evolving a software product depend on: a) Type of software to be maintained b) Development processes used c) Skills and experience of the people involved d) All of the mentioned Sample footer text 3/1/20XX 34
  • 35.
    Quiz 2 + Whichtechnique is applied to ensure the continued evolution of legacy systems ? a) Forward engineering b) Reverse Engineering c) Reengineering d) Reverse Engineering and Reengineering Sample footer text 3/1/20XX 35
  • 36.
    Quiz 3 + Whatis not included in preventive costs? a) Quality Planning b) Formal Technical Reviews c) Test Equipment d) Equipment Calibration and maintenance Sample footer text 3/1/20XX 36
  • 37.
    Quiz 4 + Softwaremaintenance is so important because…. Sample footer text 3/1/20XX 37
  • 38.
    Quiz 5 + Whathappens if there is no software maintenance for a software? Sample footer text 3/1/20XX 38

Editor's Notes

  • #35 D
  • #36 C
  • #37 D
  • #38 maintenance is inevitable: system requirements are likely to change during development because the environment is changing. Systems are tightly coupled with their environment. Systems must be maintained if they are to remain useful in an environment
  • #39 Software maintenance is done after the product has launched for several reasons including improving the software overall, correcting issues or bugs, to boost performance, and more. Software maintenance is a natural part of SDLC (software development life cycle)