|
| 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 | +==== |
0 commit comments