Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt
Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt
Bewertung der Qualität objektorientierter Entwürfe - Worte-Projekt
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
52 5 Ein Referenzmodell für den objektorientierten Entwurf<br />
Die Komposition von Parameter in BehavioralFeature (<strong>der</strong> Oberklassen von Operation)<br />
kann als Relation ausgedrückt werden: has(o,p) gilt genau dann, wenn es eine<br />
Instanz <strong>der</strong> Komposition gibt, bei <strong>der</strong> die Rolle type mit o und die Rolle parameter<br />
mit p belegt ist.<br />
5.3.7 Parameter<br />
M ist die Menge aller Parameter von Operationen.<br />
Attribute<br />
• name: Name. Der Name des Parameters.<br />
• kind: ParameterDirectionKind. Die Art des Parameters (in, out, inout, return). in,<br />
out und inout stehen für die Richtung <strong>der</strong> Parameterübergabe beim Aufruf (analog<br />
zur Programmiersprache Ada, vgl. ISO/IEC 8652:1995, S. 123ff.). return kennzeichnet<br />
den Pseudoparameter für die Rückgabe, mit dessen Hilfe <strong>der</strong> Rückgabetyp<br />
modelliert wird.<br />
• type: Classifier. Typ des Parameters, <strong>der</strong> sich aus <strong>der</strong> gerichteten Assoziation von<br />
Parameter mit Classifier im UML-Metamodell ableitet.<br />
5.4 Erweiterungen<br />
In diesem Abschnitt werden Erweiterungen von ODEM vorgestellt. Zunächst werden<br />
Relationen eingeführt, die aus den bereits eingeführten Relationen abgeleitet werden<br />
können. Diese Relationen vereinfachen die Definition von Metriken auf <strong>der</strong> Basis von<br />
ODEM. Dann wird diskutiert, wie Relationen gewichtet werden können. Abschließend<br />
werden verschiedene Aspekte einer Erweiterung von ODEM um parametrisierte<br />
Klassen (Templates) betrachtet.<br />
5.4.1 Abgeleitete Relationen<br />
Die allgemeine Abhängigkeitsbeziehung depends_on fasst alle Arten von Abhängigkeiten<br />
zwischen Modellelementen zusammen. Sie setzt voraus, dass tatsächlich alle<br />
Arten von Benutzung zwischen Klassen (z. B. Aufruf einer Methode, Zugriff auf ein<br />
Attribut, Benutzung als Attributtyp o<strong>der</strong> Parametertyp) im UML-Modell als Instanzen<br />
von Usage repräsentiert sind. Nur im Falle <strong>der</strong> Benutzung als Typ bei Attributen<br />
o<strong>der</strong> Parametern können uses-Beziehungen aus <strong>der</strong> vorliegenden Information automatisch<br />
abgeleitet werden. Für die an<strong>der</strong>en genannten Fälle (z. B. Zugriff auf ein<br />
Attribut) ist das nicht möglich, daher ist es wichtig, diese Arten von Benutzungsbeziehungen<br />
explizit anzugeben.<br />
depends_on(x,y) ⇔ extends(x,y) ∨ realizes(x,y) ∨ associates(x,y) ∨ uses(x,y).<br />
Von dieser Relation kann eine Relation depends_on für Paketabhängigkeiten abgeleitet<br />
werden. Ein Paket p hängt von einem Paket q genau dann ab, wenn es eine Klasse<br />
o<strong>der</strong> ein Interface c aus p gibt, das von einer Klasse o<strong>der</strong> einem Interface d aus q<br />
abhängt.<br />
depends_on(p,q) ⇔∃c,d∈C∪I: c ≠ d ∧ contains(p,c) ∧ contains(q,d) ∧ depends_on(c,d)