Skip to content

Commit 2c5eed5

Browse files
committed
Add Lehman Laws slides
1 parent 695bec0 commit 2c5eed5

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
---
2+
title: "Advanced Software Engineering"
3+
layout: notes
4+
---
5+
6+
# Lehman's Laws of SE
7+
* Originally (1974) based on observations of a few, commercially-developed systems
8+
* 3 to 8 laws
9+
* Are these really "laws"?
10+
* Limited data, however, important start
11+
12+
# Types of Systems
13+
* *S-type* - Specified formally, no changes needed
14+
* *P-type* - Requires iterative process to find
15+
* *E-type* - Must evolve over time
16+
17+
* The laws apply to *E-type*
18+
* Hypothesis: Everything is *E-type*
19+
20+
# Law I: Continuing Change
21+
> A program that is used must be continually adapted else it becomes progressively less satisfactory
22+
23+
* Mismatches are between the *software* and its *operational environment*
24+
* Changes in the *operational environment* invalidate assumptions made in the *software*
25+
* Need for continuing adaptation and evolution is intrinsic to *software* in an *operational environment*
26+
* Development, installation, and operation of software changes both the *software* and the *operational environment*
27+
* Evolution is achieved in a feedback-driven maintenance process
28+
* If evolution is not allowed to occur, degree of satisfaction declines
29+
30+
# Law II: Increasing Complexity
31+
> As a program is evolved its complexity increases unless work is done to maintain or reduce it
32+
33+
* Instance of [Second Law of Thermodynamics](http://en.wikipedia.org/wiki/Second_law_of_thermodynamics) (entropy)
34+
* As the *software* adapts to changing *operational environment*, the *software* gets more complex
35+
* Interactions between parts of the software increase in an unstructured way leading to an increase in entropy
36+
* Increased complexity → more resources required to make changes
37+
* Reducing complexity → less resources to make changes
38+
* Must balance *change* and *complexity*
39+
40+
# Law III: Self Regulation
41+
> The program evolution process is self regulating with close to normal distribution of measures of product and process attributes
42+
43+
* Development team is part of a larger organization, so the interests and goals of the larger organization include more than this *software*
44+
* Feedback (allocation of resources, pay, pats on back) from all levels of the larger organization work to keep *software* projects inline
45+
* Over time, all *iterations* will start to have the same characteristics (bugs, complexity, etc), and all *software* projects will start to have the same characteristics
46+
* If *software* products have good characteristics, this is a good thing, if not, then this is bad
47+
48+
# Law IV: Conservation of Organisational Stability
49+
> The average effective global activity rate on an evolving system is invariant over the product life time
50+
51+
* Rate of development (features, tasks, etc.) doesn't change much over the long-term life of the *software*
52+
* Counter-intuitive as people (especially managers) believe that managers make decisions that effect activity
53+
* Managers do control what is to be done, and the resources to do it
54+
* However, managers are constrained by union rules, lack of skills in available personnel, etc.
55+
* Also constrained by *software* characteristics, e.g., complexity
56+
* Providing additional resources may reduce overall effectiveness, i.e., [The Mythical Man-Month](http://en.wikipedia.org/wiki/The_Mythical_Man-Month) [Brooks]
57+
58+
# Law V: Conservation of Familiarity
59+
> During the active life of an evolving program, the content of successive releases is statistically invariant
60+
61+
* Good progress is made when everyone is familiar with the *goals*
62+
* The more changes/additions to software, more difficult it is for everybody to be familiar with all the goals
63+
* Larger the change, less likely everybody is familiar (comfortable, understands)
64+
* Trigger points at which this occurs, e.g., 3
65+
66+
# Law VI: Continuing Growth
67+
> Functional content of a program must be continually increased to maintain user satisfaction over its lifetime
68+
69+
* Appears same as Law I: Continuing Change, but isn't
70+
* Scenario: Requirements are stated, but due to resources (budget, time, etc), not all requirements are implemented
71+
* Eventually, unimplemented requirements requested by users
72+
73+
# Law VII: Declining Quality
74+
> ... programs will be perceived as of declining quality unless rigorously maintained and adapted to a changing operational environment
75+
76+
* Scenario:
77+
* Software performs satisfactorily for a long period of time
78+
* Suddenly, unexpected, previously unobserved behavior occurs
79+
* Gap between *software* and the *operational environment*
80+
* *Operational environment* is always changing, not certain how the *software* will respond
81+
* This uncertainty about software increases with time unless actions are taken during maintenance
82+
* Familiarity breeds contempt, user satisfaction will change over time
83+
84+
# Law VIII: Feedback System
85+
> Programming Processes constitute Multi-loop, Multi-level Feedback systems and must be treated as such to be successfully modified or improved
86+
87+
* All other parts of this set of laws include feedback
88+
* *multi-loop* iterations
89+
* *multi-level* development team, testing, management, critics, users

0 commit comments

Comments
 (0)