Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Das Open/Closed-Prinzip im operativen, taktischen und strategischen Softwaredesign

Das Open/Closed-Prinzip im operativen, taktischen und strategischen Softwaredesign

Agile Softwareentwicklung lebt von Veränderung. "Heisse Anforderungsänderungen selbst spät in der Entwicklung willkommen" heißt es im agilen Manifest.
In den ersten Sprints werden oft Eingeständnisse bzgl. Design und Implementierung gemacht, um ein Minimal-Viable-Product zu erreichen, die später nachgebessert werden müssen. Darüber hinaus können zwischen den Sprints Anforderungen hinzukommen oder verändert werden. Das sollte nicht als Problem, sondern als potentieller Wettbewerbsvorteil angesehen werden.
Aber wie kann man dieser Forderung nach Veränderbarkeit in der Praxis gerecht werden? Hier kann das Open/Closed Prinzip Abhilfe verschaffen. Die grundlegende Idee dahinter lautet: designe deine Software so, dass sie offen für Erweiterungen und geschlossen gegenüber Modifikationen ist.
Meist wird dieses Prinzip nur im Kontext der konkreten Umsetzung im Code berücksichtigt. In diesem Vortrag wollen wir die Perspektive erweitern und es auch im taktischen und strategisch Design anwenden. Anhand von konkreten Code-Beispielen wird das Open/Closed Prinzip vorgestellt und dessen Anwendung in den verschiedenen Design-Ebenen erklärt.

Christian Nockemann

July 03, 2019
Tweet

More Decks by Christian Nockemann

Other Decks in Programming

Transcript

  1. 03.07.2019 © viadee 3 A late change in requirements is

    a competitive advantage. Mary Poppendieck (vgl. [Fow18])
  2. 03.07.2019 © viadee 6 When I summarize agile to people,

    I usually say there‘s two main pieces to it. [...] but the other is our ability to change rapidly, to be able to deal with change easily. Martin Fowler [Fow18]
  3. 03.07.2019 © viadee 11 Modules should be both open and

    closed. [...] A module is said to be open if it is still available for extension. [...] A module is said to be closed if it is available for use by other modules. Bertrand Meyer [Mey88]
  4. 03.07.2019 © viadee 19 Every single design methodology can be

    encapsulated in one sentence: A good design is easier to change than a bad design. Dave Thomas
  5. QUELLEN • [Fow18] M. Fowler, The State of Agile Software

    in 2018, siehe: https://martinfowler.com/articles/agile-aus-2018.html • [MEY88] Bertrand Meyer: Object Oriented Software Construction. Prentice Hall, 1988, S. 57–61. • [MAR13] Robert C. Martin: An Open and Closed Case. https://blog.cleancoder.com/uncle- bob/2013/03/08/AnOpenAndClosedCase.html • [MAR1] Robert C. Martin: The Open-Closed Principle. https://www2.cs.duke.edu/courses/fall07/cps108/papers/ocp.pdf • [EVA03] Eric Evans: Domain-Driven Design. Tackling Complexity in the Heart of Software. Addison-Wesley, 2003