2. Intro
The famous Greek philosopher,, stated that change is central to the universe
and that the
only constant is change. His statement implies that there is nothing
permanent except change. Being a fact
of life, change is therefore inevitable. Consequently, change is everywhere
and the main challenge is learning
how to handle it effectively
3. Software Evolution
It was in the late 60s that the phenomenon of software evolution was first identified. However, at that
time the term evolution was not used until the 70s. The process by which programs are modified and
adapted in a changing environment is referred to as software evolution. Software evolution aims at
implementing the possible major changes in the system and ensuring its reliability and flexibility. Despite
its importance, software evolution has received little attention and the amount of information available to
researchers is limited. Even Professor Meir Lehman of Imperial College London carried out an empirical
study
of software evolution within IBM with the idea of improving the company’s effectiveness. Surprisingly, the
study received little attention and thus had no expected impact on the company’s development practice.
In the course of his study, Lehman identified a number of observations of how software evolves over
time and this led to the formulation of the laws of software evolution.
4. Software development does not stop when a system is delivered but continues
throughout the lifetime of the system. After a system has been deployed, it
inevitably
has to change if it is to remain useful. Business changes and changes to user
expectations
generate new requirements for the existing software.
5. Importance
Software evolution is important because organizations have invested large
amounts of money in their software and are now completely dependent on
these systems.
Their systems are critical business assets and they have to invest in system
change to maintain the value of these assets. Consequently, most large
companies
spend more on maintaining existing systems than on new systems
development
6. Software System
Useful software systems often have a very long lifetime. For example
, large military or infrastructure systems, such as air traffic control systems,
may have a lifetime of 30 years or more.
Business systems are often more than 10 years old.
Software cost a lot of money so a company has to use a software system for
many years to get a return on its investment.
Obviously, the requirements of the installed systems change as the business
and its environment change.
Therefore, new releases of the systems, incorporating changes, and updates,
are usually created at regular intervals.
7. You should, therefore, think of software engineering as a spiral process with
requirements, design, implementation, and testing going on throughout the
lifetime of the system
This model of software evolution implies that a single organization is responsible
for both the initial software development and the evolution of the software. Most
packaged software products are developed using this approach. For custom
software,
a different approach is commonly used. A software company develops software for
a
customer and the customer’s own development staff then take over the system.
They
are responsible for software evolution. Alternatively, the software customer might
issue a separate contract to a different company for system support and evolution
9. In this case, there are likely to be discontinuities in the spiral process. Requirements
and design documents may not be passed from one company to another. Companies
may merge or reorganize and inherit software from other companies, and then find
that this has to be changed. When the transition from development to evolution is not
seamless, the process of changing the software after delivery is often called ‘software
maintenance, maintenance involves extra
process activities, such as program understanding, in addition to the normal activities
of software development.
11. Evolution
and servicing model
In this model, they distinguish between evolution
and servicing. Evolution is the phase in which significant changes to the
software
architecture and functionality may be made. During servicing, the only
changes that
are made are relatively small, essential changes
12. During evolution, the software is used successfully and there is a constant
stream of proposed requirements changes.
However, as the software is modified, its structure tends to degrade and
changes become more and more expensive.
This often happens after a few years of use when other environmental
changes, such as hardware and operating systems, are also often required.
At some stage in the life cycle, the
software reaches a transition point where significant changes, implementing
new
requirements, become less and less cost effective
13. Evolution processes
Software evolution processes vary depending on the type of software being
maintained,
the development processes used in an organization and the skills of the
people
involved. In some organizations, evolution may be an informal process where
change requests mostly come from conversations between the system users
and
developers. In other companies, it is a formalized process with structured
documentation
produced at each stage in the process.
14. Software maintenance
Maintenance does not normally involve major changes to the system’s
architecture
The system requirements are likely to change while the system is being
developed because the environment is changing. Therefore a delivered
system won't meet its requirements!
Systems are tightly coupled with their environment. When a system is
installed in an environment it changes that environment and therefore
changes the system requirements.
Systems MUST be maintained therefore if they are to remain useful in an
environment.
15. Two things in software evolution
. Software change.
. Software maintenance
16. Types of maintenance
Corrective
Maintenance to repair software faults
Adaptive
Maintenance to adapt software to a different operating environment
Perfective
Maintenance to add to or modify the system’s functionality
17.
18. Challenges.
There are several challenges that are associated with software evolution;
Software quality improvement and preservation As the software system changes,
its quality slowly and steadily degrades as a result of a slow decline in quality.
The negative social and economic effects of aging can be overcome by the
provision of more tools and techniques which will eventually ensure development
of the quality characteristics of a system irrespective of its complexity and size.
Multi- language support There is an increase in the number of languages that are
used in the software systems. In order to tackle this crucial challenge of multi-
programming languages, software evolution techniques that support multi-
language are provided.
Huge amounts of data analysis The study of software evolution is challenging due
to difficulties in collecting empirical data. Here, for proper manipulation of large
quantities of data, new techniques and tools such as data mining techniques used
by the database community are considered.
19. CONCLUSION
. This feature enables software systems to incorporate new requirements in
order to meet business objectives of the stakeholders.
In software evolution, emphasis is on preserving and improving software
quality and minimizing complexities.
The laws of software evolution as proposed by Lehman and his colleagues are
now major players in the field of software engineering and computer science.
There is the need to increase the awareness of the importance of software
evolution since evolution research is still a young field.
Greater attention should be given to such areas as open source software
evolution and unanticipated software evolution