Seng 203 Part1
Seng 203 Part1
• Explanatory (What/Why):
Examples:
• A program That play chess.
• Numerical problems, except computations with
integers and rational numbers, are resolved through
approximations
• Lehman’s laws were not meant to be used in a mathematical sense, as, say, Newton’s laws are
used in physics.
• The term “laws” was used because the observed phenomena were beyond the influence of
managers and developers.
• The laws were an attempt to study the nature of software evolutions and the evolutionary
trajectory likely taken by software.
E-Type software evolution
• Lehman and his colleagues studied large-scale proprietary software system or CSS
and postulated eight laws for evolution of E-type software system:
1. Continuing change
2. Increasing complexity
3. Self-regulation
4. Conservation of organizational stability
5. Conservation of familiarity
6. Continuing growth
7. Declining/Reducing quality
8. Feedback systems
Laws of Software Evolution
First Law Continuing change: E-type programs must be continually adapted, else they become
progressively less satisfactory.
• As the program evolves, its complexity grows because of the imposition of changes after changes
on the program.
• In order to incorporate new changes, more objects, modules, and sub-systems are added to the
system.
• These changes lead to a decline in the product quality, unless additional work is performed to arrest
the decline.
• The only way to avoid this from happening is to invest in preventive maintenance.
• In preventive maintenance, one spends time to improve the structure of the software without adding
to its functionality.
Laws of Software Evolution
Third Law Self regulation: The evolution process of E-type programs is self regulating, with the
time distribution of measures of processes and products being close to normal.
• This law states that large programs have a dynamics of their own.
• Attributes such as size, time between releases, and the number of reported faults are
approximately invariant from release to release.
• The various groups within the large organization apply constraining information controls
and reinforcing information controls influenced by past and present performance indicators.
• Their actions control, check, and balance the resource usage, which is a kind of feedback-
driven growth and stabilization mechanism.
• This establishes a self-controlled dynamic system whose process and product parameters
are normally distributed as a result of a huge number of largely independent
implementation and managerial decisions.
Laws of Software Evolution
Fourth Law Conservation of organizational stability: The average effective global activity rate
in an evolving E-type program is invariant over the product’s lifetime.
• This law suggests that most large software projects work in a “stationary” state, which
means that changes in resources or staffing have small effects on long-term evolution of the
software.
The law suggests that one should not include a large number of features in a new release without taking
into account the need for fixing the newly introduced faults.
Conservation of familiarity implies that maintenance engineers need to have the same high level of
understanding of a new release even if more functionalities have been added to it.
Laws of Software Evolution
Sixth Law Continuing growth: To maintain user satisfaction with the program over its
lifetime, the functional content of an E-type program must be continually increased.
• It is important to distinguish this law from the first law which focuses on “Continuing
Change.”
• The first law captures the fact that an E-type software’s operational domain undergoes
continual changes.
• Those changes are partly driven by installation and operation of the system and partly
by other forces.
• An example of other forces is human desire for improvement and perfection.
• These two laws – the first and the sixth – reflect distinct phenomena and different
mechanisms.
• When phenomena are observed, it is often difficult to determine which of the two laws
underlies the observation.
Laws of Software Evolution
Seventh Law Declining quality: An E-type program is perceived by its stakeholders to have
declining quality if it is not maintained and adapted to its environment.
• This law directly follows from the first and the sixth laws.
• An E-Type program must undergo changes in the forms of adaptations and extensions
to remain satisfactory in a changing operational domain.
• Those changes are very likely to degrade the performance and will potentially inject
more faults into the evolving program.
• In addition, the complexity of the program in terms of interactions between its
components increases, and the program structure deteriorates.
• The term for this increase in complexity over time is called entropy.
• The average rate at which software entropy increases is about 1-3 percent per calendar
year.
Laws of Software Evolution
Seventh Law Declining quality: An E-type program is perceived by its stakeholders to have
declining quality if it is not maintained and adapted to its environment.
The code is said to have decayed if it is very difficult to change it, as reflected by the
following three key responses:
(i) the cost of the change, which is effective only on the personnel cost for the developers
who implement it;
(ii) the calendar or clock time to make the changes; and
(iii) the quality of the changed software.
It is important to note that code decay is antithesis of evolution in the sense that while the
evolution process is intended to make the code better, changes are generally
degenerative thereby leading to code decay.
Laws of Software Evolution
Eighth Law Feedback system: The evolution processes in E-type programs constitute multi-
agent, multi-level, multi-loop feedback systems.
The eighth law is based on the observation that evolution process of the E-type software
constitutes a multi-level, multi-loop, multi-agent feedback system:
(i) multi-loop means that it is an iterative process;
(ii) multi-level refers to the fact that it occurs in more than one aspect of the software and
its documentation; and
(iii) a multi-agent software system is a computational system where software agents
cooperate and compete to achieve some individual or collective tasks. Feedback will
determine and constrain the manner in which the software agents communicate among
themselves to change their behavior.