Knowledge level
Knowledge Level ist ein w:de:Analysemuster von w:de:Martin Fowler und gehört zu den Organization Structures.
Inhaltsverzeichnis
Problem
Bei der Domänenmodellierung für ein Projekt kann es dazu kommen, dass die Komplexität der Beziehungen zwischen den Klassen nicht mehr übersichtlich mit den einfachen Organization Structure Patterns abbildbar sind.
Lösungsansatz
Um die Komplexität zu bewältigen wird zwischen zwei Ebenen unterschieden, auf denen Objekte und deren Beziehungen modelliert werden. Im „Operational Level“ werden die individuellen Beziehungen zwischen den Klassen definiert. Im „Knowledge Level“, oft auch Metaebene genannt, werden die strukturellen Zusammenhänge. Die Beziehungen der Objekte auf betrieblicher Ebene folgen den dort definierten Strukturregeln.
Beispiel
Auf Metaebene wird eine Klasse Mitarbeitertyp definiert. Jedem Mitarbeitertyp wird eine bekannte Kombination aus Rentenplan und Vergütungsart zugewiesen.
Sollte sich eine neue Art der Rentenplan/Vergütungsart ergeben wird ein neuer Mitarbeitertyp generiert. Dieser Typ steht dann zur Verfügung, um die Entlohnungsmethode für den Mitarbeiter festzulegen.
Knowledge Level
Durch die Einführung einer Metaebene (Knowledge Level) werden die strukturellen Abhängigkeiten von den betrieblichen Beziehungen getrennt. Es soll das Wissen um die komplexen strukturellen Abhängigkeiten der Klassen dynamisch angepasst werden können. Die Schwierigkeit bei der Einführung eines Knowledge Levels ist, herauszufinden, welche Klassen sich strukturell zusammenfassen lassen um Erweiterungen und Änderungen ohne, oder zumindest ohne große Veränderung am Quellcode vornehmen zu können.
Verwendungszweck
Die Verwendung von Knowledge Level erleichtert spätere Änderungen und Erweiterungen und führt zu einer besseren Wartbarkeit des Programms. Im Idealfall können Änderungen sogar ohne Quellcodeanpassung vorgenommen werden. Des weiteren wird durch die Trennung von „operational level“ und „knowledge level“ Komplexität aus dem Entwurf genommen und die Verständlichkeit verbessert. Eine Gefahr bei der Verwendung von Knowledge Leveln ihre Flexibilität. Durch die einfache Art der Anpassung des Knowledge Levels wird gern vernachlässigt, dass auch hier das Resultat getestet und auf seine Sinnhaftigkeit geprüft werden muss.
Weblinks
--Kraus-a75 12:35, 3. Aug. 2007 (CEST)