Skip to content

Commit 10d889e

Browse files
authored
Merge pull request #437 from raifdmueller/add-lehmans-classification
feat: add Lehman's Software Classification anchor (#436)
2 parents e4aa952 + d96a997 commit 10d889e

8 files changed

Lines changed: 156 additions & 6 deletions

File tree

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
= Lehman's Software Classification
2+
:categories: software-architecture
3+
:roles: software-architect, requirements-engineer, team-lead, educator
4+
:related: arc42, cohesion-criteria
5+
:proponents: Meir M. Lehman
6+
:tags: classification, software-evolution, requirements, maintenance, s-type, p-type, e-type
7+
:tier: 2
8+
9+
[%collapsible]
10+
====
11+
Full Name:: Lehman's Classification of Software (S-/P-/E-type) and Laws of Software Evolution
12+
13+
Also known as:: SPE Classification, Lehman's SPE Taxonomy
14+
15+
[discrete]
16+
== *Core Concepts*:
17+
18+
Three software types, classified by their relationship to the real world:
19+
20+
S-type (Specification)::
21+
Software whose problem can be fully and formally specified. Correctness is provable against the specification. The world outside the program is irrelevant to its validity. Example: a sorting algorithm, a compiler for a formally defined language.
22+
23+
P-type (Problem)::
24+
Software that addresses a real-world problem which cannot be fully specified, only approximated. The specification is a model of the real problem; the solution must be validated against the actual problem, not just the spec. Example: a chess-playing program, a weather forecasting system.
25+
26+
E-type (Embedded)::
27+
Software that becomes part of the real world and changes it through its use. This use in turn changes the environment and thereby the requirements — creating a feedback loop. Most business and organizational software is E-type. A "correct" E-type system drifts out of correctness over time even if nothing in it changes.
28+
29+
Laws of Software Evolution::
30+
Lehman derived eight laws from observing E-type systems, including *Continuing Change* (E-type systems must be continually adapted or become progressively less satisfactory), *Increasing Complexity* (complexity increases unless work is done to reduce it), *Self-Regulation*, *Conservation of Organisational Stability*, *Conservation of Familiarity*, *Continuing Growth*, *Declining Quality*, and *Feedback System*.
31+
32+
Key Proponents:: Meir M. Lehman ("Programs, life cycles, and laws of software evolution", Proceedings of the IEEE, 1980); later developed with Laszlo Belady ("Program Evolution: Processes of Software Change", 1985).
33+
34+
[discrete]
35+
== *When to Use*:
36+
37+
* Explaining why "finished" business software still needs ongoing investment
38+
* Deciding how much effort to spend on formal specification vs. validation with users
39+
* Framing requirements discussions — E-type means requirements will keep changing by nature, not by failure
40+
* Reasoning about why TDD and formal proofs map cleanly onto S-type but are subtler for E-type
41+
* Estimating maintenance budgets and justifying them to stakeholders
42+
* Architectural trade-offs: E-type systems need change-friendliness above all
43+
44+
[discrete]
45+
== *Related Anchors*:
46+
47+
* <<arc42,arc42>> - Documentation template well suited for evolving E-type systems
48+
* <<cohesion-criteria,Cohesion Criteria>> - High cohesion reduces the cost of continuing change in E-type systems
49+
====
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
= Lehmans Software-Klassifikation
2+
:categories: software-architecture
3+
:roles: software-architect, requirements-engineer, team-lead, educator
4+
:related: arc42, cohesion-criteria
5+
:proponents: Meir M. Lehman
6+
:tags: klassifikation, software-evolution, requirements, wartung, s-type, p-type, e-type
7+
8+
[%collapsible]
9+
====
10+
Vollständiger Name:: Lehmans Software-Klassifikation (S-/P-/E-Type) und Gesetze der Software-Evolution
11+
12+
Auch bekannt als:: SPE-Klassifikation, Lehmans SPE-Taxonomie
13+
14+
[discrete]
15+
== *Kernkonzepte*:
16+
17+
Drei Software-Typen, klassifiziert nach ihrer Beziehung zur realen Welt:
18+
19+
S-Type (Specification)::
20+
Software, deren Problem vollständig und formal spezifizierbar ist. Korrektheit ist gegen die Spezifikation beweisbar. Die Welt außerhalb des Programms ist für seine Gültigkeit irrelevant. Beispiel: ein Sortieralgorithmus, ein Compiler für eine formal definierte Sprache.
21+
22+
P-Type (Problem)::
23+
Software, die ein reales Problem löst, das nicht vollständig spezifiziert, sondern nur approximiert werden kann. Die Spezifikation ist ein Modell des realen Problems; die Lösung muss gegen das echte Problem validiert werden, nicht nur gegen die Spec. Beispiel: ein Schachprogramm, ein Wettervorhersagesystem.
24+
25+
E-Type (Embedded)::
26+
Software, die Teil der realen Welt wird und diese durch ihren Einsatz verändert. Dieser Einsatz verändert wiederum die Umgebung und damit die Anforderungen — es entsteht eine Rückkopplungsschleife. Die meiste Business- und Organisationssoftware ist E-Type. Ein "korrektes" E-Type-System wird mit der Zeit inkorrekt, selbst wenn sich in ihm nichts ändert.
27+
28+
Gesetze der Software-Evolution::
29+
Lehman leitete acht Gesetze aus der Beobachtung von E-Type-Systemen ab, darunter *Continuing Change* (E-Type-Systeme müssen kontinuierlich angepasst werden, sonst werden sie zunehmend unbefriedigend), *Increasing Complexity* (Komplexität wächst, sofern nicht aktiv reduziert), *Self-Regulation*, *Conservation of Organisational Stability*, *Conservation of Familiarity*, *Continuing Growth*, *Declining Quality* und *Feedback System*.
30+
31+
Schlüsselvertreter:: Meir M. Lehman ("Programs, life cycles, and laws of software evolution", Proceedings of the IEEE, 1980); später mit Laszlo Belady weiterentwickelt ("Program Evolution: Processes of Software Change", 1985).
32+
33+
[discrete]
34+
== *Wann zu verwenden*:
35+
36+
* Um zu erklären, warum "fertige" Business-Software laufende Investitionen braucht
37+
* Entscheidung, wie viel Aufwand in formale Spezifikation vs. Validierung mit Nutzern fließen soll
38+
* Rahmen für Requirements-Diskussionen — E-Type bedeutet, dass Anforderungen ihrer Natur nach weiter wandern, nicht weil etwas schiefgelaufen ist
39+
* Argumentation, warum TDD und formale Beweise sauber auf S-Type passen, aber bei E-Type subtiler sind
40+
* Wartungsbudgets schätzen und gegenüber Stakeholdern rechtfertigen
41+
* Architektur-Trade-offs: E-Type-Systeme brauchen Änderungsfreundlichkeit vor allem anderen
42+
43+
[discrete]
44+
== *Verwandte Anker*:
45+
46+
* <<arc42,arc42>> - Dokumentationstemplate, gut geeignet für evolvierende E-Type-Systeme
47+
* <<cohesion-criteria,Kohäsionskriterien>> - Hohe Kohäsion senkt die Kosten kontinuierlicher Änderungen in E-Type-Systemen
48+
====

docs/changelog.adoc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
A chronological record of all semantic anchors added to the catalog. Community contributors are credited with thanks.
44

5+
== 2026-04-15
6+
7+
*New anchors* (proposed by Ralf D. Müller in https://github.com/LLM-Coding/Semantic-Anchors/issues/436[#436]):
8+
9+
* *Lehman's Software Classification* — Meir M. Lehman's S-/P-/E-type taxonomy and Laws of Software Evolution
10+
511
== 2026-04-12
612

713
*New anchors:*

skill/semantic-anchor-translator/references/catalog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@ Source: https://github.com/LLM-Coding/Semantic-Anchors
146146
- **Proponents:** Stefan Toth, Stefan Zörner
147147
- **Core:** Lightweight architecture description framework — describe a system through four lenses: Layers (structural decomposition), Aspects (cross-cutting concerns), Solution Strategy (key technology and design choices), Rationale (documented reasoning behind decisions); pairs naturally with arc42 and ADRs
148148

149+
### Lehman's Software Classification
150+
- **Also known as:** SPE Classification, Lehman's SPE Taxonomy
151+
- **Proponents:** Meir M. Lehman
152+
- **Core:** Three software types by relationship to reality — S-type (formally specifiable, provable), P-type (real problem, only approximable, validate against reality), E-type (embedded in the world, changes the world through use, requirements drift by nature); basis for Lehman's Laws of Software Evolution (Continuing Change, Increasing Complexity, etc.) which explain why E-type systems require ongoing maintenance
153+
149154
### OWASP Top 10
150155
- **Also known as:** OWASP Top Ten, Open Worldwide Application Security Project Top 10
151156
- **Proponents:** OWASP Foundation

website/public/data/anchors.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1977,6 +1977,37 @@
19771977
"filePath": "docs/anchors/lasr.adoc",
19781978
"tier": 3
19791979
},
1980+
{
1981+
"id": "lehmans-classification",
1982+
"title": "Lehman’s Software Classification",
1983+
"categories": [
1984+
"software-architecture"
1985+
],
1986+
"roles": [
1987+
"software-architect",
1988+
"requirements-engineer",
1989+
"team-lead",
1990+
"educator"
1991+
],
1992+
"related": [
1993+
"arc42",
1994+
"cohesion-criteria"
1995+
],
1996+
"proponents": [
1997+
"Meir M. Lehman"
1998+
],
1999+
"tags": [
2000+
"classification",
2001+
"software-evolution",
2002+
"requirements",
2003+
"maintenance",
2004+
"s-type",
2005+
"p-type",
2006+
"e-type"
2007+
],
2008+
"filePath": "docs/anchors/lehmans-classification.adoc",
2009+
"tier": 2
2010+
},
19802011
{
19812012
"id": "linddun",
19822013
"title": "LINDDUN",

website/public/data/categories.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@
159159
"hexagonal-architecture",
160160
"iso-25010",
161161
"lasr",
162+
"lehmans-classification",
162163
"madr",
163164
"tracer-bullet",
164165
"vertical-slice-architecture",

website/public/data/metadata.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
{
2-
"generatedAt": "2026-04-12T15:16:42.235Z",
2+
"generatedAt": "2026-04-15T09:23:51.831Z",
33
"version": "1.0.0",
44
"counts": {
5-
"anchors": 130,
5+
"anchors": 131,
66
"categories": 14,
7-
"roles": 12
7+
"roles": 13
88
},
99
"statistics": {
10-
"averageRolesPerAnchor": "3.14",
10+
"averageRolesPerAnchor": "3.15",
1111
"averageCategoriesPerAnchor": "1.01",
12-
"anchorsWithTags": 90,
13-
"anchorsWithRelated": 61
12+
"anchorsWithTags": 91,
13+
"anchorsWithRelated": 62
1414
}
1515
}

website/public/data/roles.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@
134134
"heros-journey",
135135
"kishotenketsu",
136136
"kiss-principle",
137+
"lehmans-classification",
137138
"mental-model-according-to-naur",
138139
"myers-briggs-type-indicator",
139140
"para-method",
@@ -212,6 +213,13 @@
212213
"testing-pyramid"
213214
]
214215
},
216+
{
217+
"id": "requirements-engineer",
218+
"name": "Requirements Engineer",
219+
"anchors": [
220+
"lehmans-classification"
221+
]
222+
},
215223
{
216224
"id": "software-architect",
217225
"name": "Software Architect",
@@ -262,6 +270,7 @@
262270
"iso-25010",
263271
"kiss-principle",
264272
"lasr",
273+
"lehmans-classification",
265274
"linddun",
266275
"llm-evaluations",
267276
"madr",
@@ -414,6 +423,7 @@
414423
"invest",
415424
"iso-25010",
416425
"lasr",
426+
"lehmans-classification",
417427
"madr",
418428
"mental-model-according-to-naur",
419429
"mikado-method",

0 commit comments

Comments
 (0)