Entwurfsmuster – Design Pattern
Bei der objektorientierten Entwicklung der Software-Architektur, des Software-Designs und der objektorientierten Programmierung (OOP) einer strukturierten Software-Entwicklungsmethode stößt man immer wieder auf gleichartige Aufgaben und Entwurfsprobleme, die durch den Einsatz von wiederverwendbaren Entwurfsmustern (praxisbewährte Lösungs-Schablonen) einen sich wiederholenden Software-Programmieraufwand verhindern. Mit dieser Methode lassen sich Programmierzeit einsparen und obendrein Fehler vermeiden, die bei einer Doppelprogrammierung auftreten könnten.
Die wichtigsten Aspekte der Entwurfsmuster (Design Pattern)
- Grad der Wiederverwendung von Software steigt
- Dokumentation von vorhandenen und erprobten modularen Lösungsansätzen
- Reduktion der Systementwurfs- und Programmierzeit
- Durch Anpassung lässt sich das Einsatzgebiet der Entwurfsmuster (Design Pattern) auf das konkrete Problem adaptieren.
- Verbesserung der Software-Verständlichkeit
Eine Beschreibung eines Entwurfsmusters sollte folgende Elemente enthalten:
Name des Entwurfsmusters
bestehend aus ein bis zwei Worten, steht als Handler für die Beschreibung des Problems.
Beschreibung des Entwurfsproblems und dessen Kontext
Enthält die Information, wann und wo dieses Entwurfsmuster eingesetzt werden sollte (Intention/ Motivation/ Applikation des Design Pattern). Es erklärt die Problemstellung und dessen Kontext, wie z.B. die Beschreibung des Design-Problems und eine Liste der Bedingungen, die für eine sinnfällige Anwendung erfüllt sein müssen.
Lösungsbeschreibung Entwurfsmusters
Enthält eine Auflistung der Elemente (z.B. Klassen und Objekte) und wie deren Anordnung aussehen kann, den Entwurf, die Beziehungen zu anderen Elementen, die Verantwortlichkeiten (z.B. bei einem Architekturentwurf) und die Zusammenarbeit. Diese Beschreibung sollte einen allgemein anwendbaren Ansatz des Entwurfsmusters darstellen.
Ergebnisbeschreibung und Bewertung (Konsequenz(en)) der Anwendung des Entwurfsmusters
Dient der Evaluierung von Kosten und Nutzen dieses Pattern. Sie informiert z.B. über den Speicher- und Zeitaufwand und kann für eine Abschätzung der Ressourcennutzung von CPU-Zeit vs. Speicheraufwand verwendet werden.
Entwurfsmuster lassen sich zu Entwurfsfamilien zusammenfassen, die jeweils eine Gruppe bilden, für die diese Methode bei der Erstellung der Software-Architektur und die objektorientierten Programmierung (OOP) eingesetzt werden können. Je nach Problemstellung ist das passende Entwurfsmuster aus der passenden Entwurfsfamilie auswählbar.
Typische Entwurfsfamilien
Erzeugendes Muster (Creational Design Pattern)
befasst sich mit der Objekt-Erzeugung.
Strukturelles Muster (Structural Design Pattern)
beschreibt die Komposition von Klassen und Objekten.
Verhaltensmuster (Behavioral Design Pattern)
beschreibt die interaktive Kommunikation zwischen Objekten, das generische/ individuelle Verhalten eines Objektes und die Verteilung der Verantwortlichkeiten.
Der Geltungsbereich des Entwurfsmusters definiert deren Anwendung:
- Klassen oder
- Objekte
- Modul
Zielplattform von Entwurfsmustern (Design Pattern)
Entwurfsmuster können auf verschiedenen Plattformen angewendet werden:
- PC-basierende Systeme
- Embedded-Systeme
Bei eingebetteten Systemen (z.B. Prozess-Steuerungssoftware, die in Mikrocontrollern mit Realzeit-Anforderungen abgearbeitet wird) ist ein wichtiger Aspekt beim Einsatz der Entwurfsmuster der Ressourcen-Verbrauch in Form von CPU-Rechenzeit und dem dazu benötigtem Speicherplatz (Programm- und Datenspeicher).
Liste von Entwurfsmustern (Design Pattern)
Erzeugungsmuster
- Entwurfsmuster Fabrikmethode (Factory Method Design Pattern)
- Entwurfsmuster Abstrakte Fabrik (Abstract Factory Design Pattern)
- Entwurfsmuster Prototyp (Prototype Design Pattern)
- Entwurfsmuster Singleton (Singleton Design Pattern)
Strukturmuster
- Entwurfsmuster Adapter (Adapter Design Pattern)
- Entwurfsmuster Dekorierer (Decorator Design Pattern)
- Entwurfsmuster Proxy (Proxy Design Pattern)
Verhaltensmuster
- Entwurfsmuster Beobachter (Observer Design Pattern)
- Entwurfsmuster Befehl (Command Design Pattern)
- Entwurfsmuster Zustand (State/Event Design Pattern)
- Entwurfsmuster Schablonenmethode (Template Method Design Pattern)
Weitere Muster
- Entwurfsmuster Fassade (Facade Design Pattern)
- Entwurfsmuster Kompositum (Composite Design Pattern)
- Entwurfsmuster Memento (Memento Design Pattern)
- Entwurfsmuster Zuständigkeitskette (Chain of Responsibility Design Pattern)
- Entwurfsmuster Fliegengewicht (Flyweight Design Pattern)
- Entwurfsmuster Iterator (Iterator Design Pattern)
- Entwurfsmuster Vermittler (Mediator Design Pattern)
Viele UML (Unified Modeling Language) Tools liefern bereits eine Auswahl bekannter Patterns mit, die direkt in der Software bzw. im Software-Modell verwendbar sind.
Bild 1: Design Patterns (Entwurfsmuster)
Sie sind auf der Suche nach Beispielen für Anwendung von Entwurfsmustern wie …
- Adapter: Multithreading
- Synchronisations-, Schutz-, virtueller und Remote-Proxy
- Smart-Pointer
- Timer
- Zustandsautomat
- Benutzerdefinierte Speicherverwaltung
- Partition und Partition Manager
- Flexible Speicherverwaltung mithilfe unterschiedlicher Manager
- Dynamisch änderbare Speicherzuteilungsstrategie
- Entwurfsmuster-Strategie (Design Pattern Strategie)
- Algorithmen mit festgelegter Grundstruktur
- Verhaltensmuster in C und C++
- Portierung von Verhaltensmustern von C nach C++
- Speicherplatz- und Laufzeitmessungen
- Entwurfsmuster als Mittel zur Leistungssteigerung
- Patterneinsatz für Debugging-Zwecke ...?
Dann sind Sie richtig bei MicroConsult. Wir bieten Ihnen die Möglichkeit, in einem Workshop für Design Patterns die oben genannten Entwurfsmuster, den Aufbau und die richtige Anwendung kennenzulernen.
Beispiele aus der Praxis und viele Übungen führen Sie an dieses Thema heran:
Workshop: Design Patterns (nicht nur) für Embedded-Systeme
In diesem Workshop erfahren Sie, unter welchen Bedingungen klassische Entwurfsmuster auch in ressourcenlimitierten Embedded-Systemen gewinnbringend eingesetzt werden können.
In unserem Training "Design Patterns mit Python" erlernen Sie die Anwendung der wichtigsten Design Patterns. Diese schließt vor allem die besondere Charakteristik der objektorientierten Programmiersprache Python ein.
MicroConsult unterstützt Sie zudem mit weiteren Trainings & Coachings rund um das Thema Entwurfsmuster / Design Pattern, z.B. zu folgenden Themen:
- Software-Architekturen für Embedded-Systeme und Echtzeitsysteme
- OOP-Grundlagen: Sprachunabhängiger Einstieg in die objektorientierte Programmierung
- UML-Grundlagen und Einstieg in die modellbasierte Softwareentwicklung
- UML-Praxis-Workshop: Praktischer Einsatz modellbasierter Softwareentwicklung für Embedded- und Echtzeit-Systeme
- Design Patterns (nicht nur) für Embedded-Systeme
- Design Patterns mit Python
- Embedded-Software-Design und Patterns mit C
Training & Coaching zu den weiteren Themen unseren Portfolios finden Sie hier.
Senden Sie uns Ihre Fragen, Wünsche und Anforderungen! Zum Kontaktformular
Autor:
Dipl.-Ing. (FH) Thomas Batt ist gebürtiger Freiburger. Nach seiner Ausbildung als Radio- und Fernsehtechniker studierte er Nachrichtentechnik an der Fachhochschule in Offenburg. Thomas Batt war in der Entwicklung in den Bereichen Leistungselektronik, Medizinelektronik und CompactPCI/VME-Bus CPU- und Peripherie-Boards tätig. Heute verantwortet er bei MicroConsult GmbH als Trainer und Coach die Themenbereiche Software Engineering für Embedded-/Realtime-Systeme sowie Entwicklungsprozess-Beratung.