Kapitel 15. Die Kritiken

Inhaltsverzeichnis

15.1. Einleitung
15.1.1. Terminologie
15.1.2. Design-Mangel
15.2. Unkategorisiert
15.3. Klassenauswahl
15.3.1. Datentyp verbergen
15.3.2. Veringere die Anzahl der Klassen im Namensraum <Namensraum>
15.3.3. Diagramm aufräumen
15.4. Benennung
15.4.1. Assoziations-Namenskonflikt auflösen
15.4.2. Überarbeite die Attributnamen, um einen Konflikt zu vermeiden
15.4.3. Ändere Namen oder Signaturen in einem Modellelement
15.4.4. Doppelte End- (Rollen-) Namen in einer Assoziation
15.4.5. Rollenname steht im Konflikt mit einem Element
15.4.6. Einen Namen auswählen (Klassen und Schnittstellen)
15.4.7. Namenskonflikt in einem Namensraum
15.4.8. Wählen Sie einen eindeutigen Namen für ein Modellelement aus (Klassen und Schnittstellen)
15.4.9. Wählen Sie einen Namen aus (Attribute)
15.4.10. Wählen Sie einen Namen aus (Operationen)
15.4.11. Wählen Sie einen Namen aus (Zustände)
15.4.12. Wählen Sie einen eindeutigen Namen für ein (zustandsbehaftetes) Modellelement aus.
15.4.13. Ändern Sie den Namen, um eine Konfusion zu verhindern
15.4.14. Wählen Sie einen gültigen Namen aus
15.4.15. Ändern Sie den Namen des Modellelementes in ein nicht-reserviertes Wort
15.4.16. Wählen Sie einen besseren Namen für die Operation aus
15.4.17. Wählen Sie einen besseren Attributnamen aus
15.4.18. Klassenname groß schreiben
15.4.19. Paketname überarbeiten
15.5. Speicher
15.5.1. Überarbeiten Sie die Attributnamen, um einen Konflikt zu vermeiden
15.5.2. Fügen Sie Instanzvariablen zu einer Klasse hinzu
15.5.3. Fügen Sie der Klasse einen Konstruktor hinzu
15.5.4. Reduzieren Sie die Zahl der Attribute in der Klasse
15.6. Geplante Erweiterungen
15.6.1. Operationen in Schnittstellen müssen public sein
15.6.2. Schnittstellen dürfen nur Operationen haben
15.6.3. Entferne die Referenz auf die spezifische Subklasse
15.7. Zustandsautomaten
15.7.1. Reduzieren Sie die Anzahl der Transitionen im <Zustand>
15.7.2. Reduzieren Sie die Anzahl der Zustände im Automaten <Automat>
15.7.3. Fügen Sie dem <Zustand> Transitionen hinzu
15.7.4. Fügen Sie dem Modellelement <Modellelement> ankommende Transitionen hinzu
15.7.5. Fügen Sie dem Modellelement <Modellelement> abgehende Transitionen hinzu
15.7.6. Entfernen Sie den zusätzlichen Initialzustand
15.7.7. Fügen Sie einen initialen Zustand ein
15.7.8. Fügen Sie der Transition ein Signal oder einen Wächter hinzu
15.7.9. Ändere Vereinigungs-Transitionen
15.7.10. Ändere Gabelungs-Transitionen
15.7.11. Fügen Sie Entscheidungs-/Kreuzungstransitionen hinzu
15.7.12. Fügen Sie der Transition einen Wächter hinzu
15.7.13. Das Diagramm aufräumen
15.7.14. Eine Kante sichtbarer machen
15.7.15. Zusammengesetztes Assoziationsende mit der Kardinalität >1
15.8. Designmuster
15.8.1. Ziehen Sie Nutzung des Singleton-Musters für eine <class> in Betracht.
15.8.2. Singleton Stereotyp-Verletzung in <Klasse>
15.8.3. Knoten haben normalerweise keine Hülle
15.8.4. Knoteninstanzen haben normalerweise keine Hülle
15.8.5. Komponenten befinden sich normalerweise innerhalb von Knoten
15.8.6. Komponenteninstanzen befinden sich normalerweise innerhalb von Knoten
15.8.7. Klassen befinden sich normalerweise innerhalb von Komponenten
15.8.8. Schnittstellen befinden sich normalerweise innerhalb von Komponenten
15.8.9. Objekte befinden sich normalerweise innerhalb von Komponenten
15.8.10. Verknüpfungsenden haben nicht die gleiche Ebene
15.8.11. Klassifizierung einstellen (Verteilungsdiagramm)
15.8.12. Return-Aktionen werden vermisst
15.8.13. Vermisse Aufruf(Sende)-Aktion
15.8.14. Kein Auslöseimpuls bei diesen Verknüpfungen
15.8.15. Klassifizierung einstellen (Sequenzdiagramm)
15.8.16. Falsche Position dieses Auslöseimpulses
15.9. Beziehungen
15.9.1. Zirkuläre Assoziation
15.9.2. <Assoziation> navigierbar machen
15.9.3. Entferne die Navigation von der Schnittstelle via <Assoziation>
15.9.4. Fügen Sie dem <Modellelement> eine Assoziation hinzu
15.9.5. Entfernen Sie die Referenz auf die spezifische Subklasse
15.9.6. Reduzieren Sie die Assoziationen des <Modellelementes>
15.9.7. Kante sichtbarer machen
15.10. Instanzen bilden
15.11. Modularität
15.11.1. Der Klassifizierer befindet sich nicht im Namensraum seiner Assoziation.
15.11.2. Fügen Sie Elemente zum Paket <Paket> hinzu.
15.12. Erwartete Verwendung
15.12.1. Diagramm aufräumen
15.13. Methoden
15.13.1. Ändere Namen oder Signaturen im <Modellelement>
15.13.2. Die Klasse muß abstrakt sein
15.13.3. Fügen Sie der <Klasse> Operationen hinzu
15.13.4. Reduzieren Sie die Anzahl der Operationen im <Modellelement>
15.14. Code-Generierung
15.14.1. Ändern Sie die Mehrfachvererbung in Schnittstellen
15.15. Stereotypen
15.16. Vererbung
15.16.1. Überprüfen Sie die Attributnamen, um einen Konflikt zu vermeiden.
15.16.2. Entfernen Sie die zirkuläre Vererbung der Klasse <Klasse>
15.16.3. Die Klasse muß abstrakt sein
15.16.4. Entfernen Sie das Schlüsselwort final oder entfernen Sie Subklassen
15.16.5. Illegale Generalisierung
15.16.6. Enferne unnötige Realisierungen aus der Klasse <Klasse>
15.16.7. Definiere eine konkrete (Sub-)Klasse
15.16.8. Definieren Sie eine Klasse, um die Schnittstelle <Schnittstelle> zu implementieren
15.16.9. Ändere Mehrfachvererbung in Schnittstellen
15.16.10. Machen Sie die Kante sichtbarer
15.17. Containment
15.17.1. Entferne zirkuläre Komposition
15.17.2. Duplizieren Sie den Parameternamen
15.17.3. Zwei Aggregatenden (Rollen) in binärer Assoziation
15.17.4. Aggregatende (Rolle) in 3-Wege (oder mehr) Assoziation
15.17.5. Verbergen Sie den Datentyp

15.1. Einleitung

Die Schlüsselfunktion, die ArgoUML von anderen UML-Werzeugen unterscheidet, ist die Verwendung von Konzepten der kognitiven Psychologie. Die dahinter stehende Theroie ist in Jason Robbins' PhD Dissertation http://argouml.tigris.org/docs/robbins_dissertation/ beschrieben.

Kritiken sind einer der Hauptarten mit denen diese Ideen implementiert wurden. Im Hintergrund laufend, bieten Sie dem Designer Ratschläge an, die akzeptiert oder ignoriert werden können. Der Schlüsselpunkt ist, dass sie keine Entscheidung des Designers ausschliessen.

[Anmerkung]Anmerkung

Die Kritiken sind asynchrone Prozesse, die parallel zu ArgoUML ablaufen. Änderungen benötigen eine oder zwei Sekunden, bis die Kritiken erneut erzeugt wurden.

15.1.1. Terminologie

Die Kritiken sind Hintergrundprozesse, die das aktuelle Modell anhand verschiedener „guter“ Designkriterien überprüfen. Es gibt eine Kritik für jedes Designkriterium.

Die Ausgabe einer Kritik ist eine Kritik - eine Anweisung über einige Aspekte des Modelles, die nicht der guten Designpraxis folgen.

Natürlich wird eine Kritik nur vorschlagen, wie der gefundene Designmangel behoben werden kann, in dem es ein Zu-Bearbeiten-Element erzeugt.

15.1.2. Design-Mangel

ArgoUML kategorisiert Kritiken entsprechend der von ihnen adressierten Designmängel (einige Kritiken können in mehr als einer Kategorie erscheinen). Aktuell gibt es 16 solcher Kategorien.

In diesen Handbuch sind die Beschreibungen der Kritiken entsprechend ihres Designmangels in Abschnitten gruppiert.