Objektorientiertes Design



Nach der Analysephase, das konzeptionelle Modell wird weiter in einer objektorientierten Modell mit objektorientiertes Design (OOD) entwickelt. In OOD sind die technologieunabhängige Konzepte im Analysemodell auf implementierenden Klassen zugeordnet, Engpässe identifiziert und Schnittstellen sind so konzipiert, was zu einem Modell für die Lösung Domäne. Auf den Punkt gebracht, ist eine detaillierte Beschreibung konstruiert Angabe, wie das System ist, sich auf konkrete Technologien gebaut werden

Die Stufen für die objektorientierte Design kann als identifiziert werden:

  • Definition der Kontext des Systems
  • Entwerfen Systemarchitektur
  • Identifizierung der Objekte im System
  • Bau von Designmodellen
  • Angabe von Objektschnittstellen

Object-Oriented System Design

System Design

Objektorientiertes System-Design beinhaltet die Definition der Kontext eines Systems, gefolgt von der Entwicklung der Architektur des Systems.

  • Kontext: Der Kontext eines Systems hat einen statischen und einen dynamischen Teil. Die statischen Kontext des Systems wird mit einem einfachen Blockdiagramm die in eine Hierarchie von Teilsystemen erweitert wird das ganze System ausgelegt. Das Subsystem Modell wird durch UML-Pakete dargestellt. Die dynamischen Kontext beschreibt, wie das System mit seiner Umwelt interagiert. Es wird mit Anwendungsfalldiagrammen modelliert .

  • System Architecture: Die Systemarchitektur basiert auf der Grundlage der Kontext des Systems in Übereinstimmung mit den Prinzipien der architektonischen Gestaltung, sowie Fachwissen gestalten. Typischerweise wird ein System in Schichten aufgetrennt, und jede Schicht wird zerlegt, um die Untersysteme zu bilden.

Objektorientierte Zersetzungs

Zersetzung bedeutet Aufteilen eines großen komplexen Systems in eine Hierarchie von kleineren Bauteilen mit geringerer Komplexität, auf den Grundsätzen der Teile-und-herrsche. Jede Hauptkomponente des Systems wird als Subsystem. Objektorientierte Zersetzungs identifiziert einzelne autonome Objekte in einem System und die Kommunikation zwischen diesen Objekten.

Die Vorteile der Zersetzung sind:

  • Die einzelnen Komponenten sind von geringerer Komplexität, und so mehr verständlicher und überschaubar.

  • Es ermöglicht Teilung Arbeitsplatz aufweist speziellen Fähigkeiten.

  • Es ermöglicht Subsysteme ersetzt oder modifiziert werden, ohne dass andere Subsysteme.

Identifizieren Concurrency

Concurrency ermöglicht mehreren Objekten, an Veranstaltungen zur gleichen Zeit und mehr als eine Aktivität, um gleichzeitig ausgeführt werden empfangen. Concurrency identifiziert und in das dynamische Modell vertreten.

Um den gemeinsamen Zugriff zu ermöglichen, wird jedes gleichzeitige Element einen separaten Thread der Kontrolle zugewiesen. Wenn die Parallelität ist auf Objektebene, dann zwei gleichzeitigen Aufgaben werden zwei verschiedene Threads der Steuerung zugeordnet. Wenn zwei Operationen eines einzelnen Objekts sind gleichzeitige in der Natur, dann wird das Objekt unter verschiedenen Threads aufgeteilt.

Concurrency ist mit den Problemen der Datenintegrität, Deadlock, und Hunger verbunden. Also eine klare Strategie muss gemacht, wenn Parallelität erforderlich ist. Außerdem Parallelität erfordert, um in der Planungsphase selbst identifiziert werden, und kann nicht für die Umsetzung der Bühne gelassen werden.

Identifizieren von Mustern

Bei der Gestaltung von Anwendungen, einige allgemein akzeptierte Lösungen für einige Kategorien von Problemen angenommen. Dies sind die Muster des Designs. Ein Muster kann als der schriftlich niedergelegten Bausteine, die in bestimmten Arten von Anwendungsentwicklungsprobleme verwendet werden können definiert werden.

Einige häufig verwendete Entwurfsmuster sind:

  • Fassadenmuster
  • Modellansicht Trennungsmuster
  • Observer-Muster
  • Modell-View-Controller-Muster
  • Veröffentlichen Abonnieren Muster
  • Proxy-Muster

Controlling Events

Während der Systementwurf, die Ereignisse die in den Objekten des Systems auftreten können brauchen zu identifizieren und entsprechend zu behandeln.

Ein Ereignis ist eine Spezifikation eines signifikanten Ereignis, das eine Position im Raum und Zeit hat.

Es gibt vier Arten von Ereignissen, die modelliert werden können, nämlich:

  • Signal-Ereignis: Eine benannte Objekt durch ein Objekt geworfen und von einem anderen Objekt gefangen.

  • Aufruf-Ereignis : Ein synchrones Ereignis darstellt Absendung von einer Operation.

  • Zeit Ereignis : Ein Ereignis darstellt Durchgang der Zeit.

  • Ändern Ereignis : Ein Ereignis repräsentieren Zustandsänderung.

Handling Randbedingungen

Die Systementwurfsphase benötigt, um die Initialisierung und Beendigung des Systems als Ganzes als auch jedes Teilsystem adressieren. Die verschiedenen Aspekte, die dokumentiert werden, sind wie folgt:

  • Die Start des Systems, dh der Übergang des Systems aus nicht initialisierten Zustand zu stabilen Zustand.

  • Die Beendigung des Systems, also die Schließung aller laufenden Threads, Aufräumen von Ressourcen, und die Nachrichten gesendet werden sollen.

  • Die ursprüngliche Konfiguration des Systems und die Neukonfiguration des Systems, wenn nötig.

  • In Erwartung Ausfälle oder unerwünschten Beendigung des Systems.

Die Randbedingungen werden mit Grenzanwendungsfälle modelliert.

Object Design

Nachdem der Hierarchie der Teilsysteme entwickelt worden, die Gegenstände in dem System identifiziert und ihre Details sind entworfen. Hier Details der Designer die während des Systemdesign gewählten Strategie. Der Schwerpunkt verlagert sich von Anwendungsdomäne Konzepte in Richtung computer. Die während der Analyse identifizierten Objekte werden für die Umsetzung mit dem Ziel, die Ausführungszeit zu minimieren, den Speicherverbrauch und Gesamtkosten geätzt.

Object Design umfasst die folgenden Phasen:

  • Objektidentifikation
  • Objektdarstellung, dh Bau von Design-Modelle
  • Klassifikation von Operationen
  • Algorithm design
  • Design für Beziehungen
  • Die Umsetzung der Steuerung für externe Interaktionen
  • Package Klassen und Assoziationen in Module

Objektidentifikation

Der erste Schritt der Objektgestaltung ist Objektidentifikation. Die in der objektorientierten Analyse-Phasen identifizierten Objekte werden in Klassen gruppiert und verfeinert, so dass sie für tatsächlichen Implementierung.

Die Funktionen dieser Phase sind:

  • Die Identifizierung und die Verfeinerung der Klassen in jedes Teilsystem oder Paket

  • die Links und Assoziationen zwischen den Klassen definieren

  • Gestaltung der hierarchischen Assoziationen zwischen den Klassen, also die Generalisierung / Spezialisierung und Erbschaften

  • Entwerfen Aggregationen

Objekt Darstellung

einst die Klassen identifiziert werden, müssen sie unter Verwendung von Objektmodellierungstechniken dargestellt werden. Diese Phase beinhaltet im Wesentlichen die Konstruktion von UML-Diagrammen.

Es gibt zwei Arten von Design-Modelle, die produziert werden müssen:

  • Statische Modelle: Um zu beschreiben, die statische Struktur eines Systems mit Klassendiagrammen und Objektdiagramme

  • Dynamische Modelle: Zur Beschreibung der dynamischen Struktur eines Systems und zeigen die Interaktion zwischen Klassen mit Interaktionsdiagramme und modernDiagramme

Klassifikation von Operationen

In diesem Schritt wird der Betrieb auf Objekten durchgeführt werden durch die Kombination der drei Modelle in der OOA Phase entwickelt definiert, nämlich Objektmodell, dynamisches Modell und Funktionsmodell. Eine Operation gibt an, was zu tun ist und nicht, wie es getan werden sollte.

Die folgenden Aufgaben werden in Bezug auf Operationen durchgeführt:

  • Die Zustandsübergangsdiagramm von jedem Objekt im System entwickelt wird.

  • Die Operationen werden für die von den Objekten empfangenen Ereignisse definiert.

  • Die Fälle, in denen ein Ereignis löst andere Events gleich oder verschieden Objekte identifiziert werden.

  • Die Untervorgänge innerhalb der Maßnahmen werden identifiziert.

  • Die wichtigsten Maßnahmen sind Datenflussdiagramme erweitert.

Algorithm Design

Die Operationen in den Objekten werden unter Verwendung von Algorithmen definiert. Ein Algorithmus ist eine schrittweise Vorgehensweise, die das Problem in einer Operation gelegt löst. Algorithmen konzentrieren, wie es getan werden muss.

Es kann mehr als ein Algorithmus entsprechend einem gegebenen Betrieb sein. Sobald die alternative Algorithmen identifiziert werden, wird die optimale Algorithmus für die gegebene Problemdomäne ausgewählt. Die Kennzahlen für die Wahl des optimalen Algorithmus sind:

  • Computational Complexity :. Komplexität bestimmt die Effizienz eines Algorithmus in Bezug auf Rechenzeit und Speicherbedarf

  • Flexibilität: Flexibilität bestimmt, ob die gewählten Algorithmus kann in geeigneter Weise durchgeführt werden, ohne Verlust der Angemessenheit in verschiedenen Umgebungen

  • Verständlichkeit : Dieser legt fest, ob der gewählte Algorithmus ist leicht zu verstehen und umzusetzen

Design von Beziehungen

Die Strategie, um die Beziehungen zu implementieren muss während der Objektentwurfsphase angekreidet werden. Die wichtigsten Beziehungen, die angesprochen werden, enthalten von Assoziationen, Aggregationen und Erbschaften.

Der Designer sollte die folgenden über Verbände tun:

  • Identifizieren, ob ein Verband ist unidirektional oder bidirektional.

  • Analysieren Sie den Weg von Verbänden und aktualisieren Sie diese falls erforderlich.

  • Implementieren Sie die Verbände als eigenständige Aufgabe, im Falle der Viele-zu-viele-Beziehungen; oder als Link auf ein anderes Objekt im Falle der Eins-zu-eins oder eins-zu-viele Beziehungen.

bezüglich Erbschaften, der Designer sollte folgendes tun:

  • Einstellen Sie die Klassen und ihre Verbände.
  • Identifizieren Sie abstrakte Klassen.
  • machen Bestimmungen, so dass Verhaltensweisen werden gemeinsam genutzt, wenn nötig.

Die Umsetzung der Steuerung

Der Objektdesigner können Verfeinerungen in der Strategie des Staates-chart-Modell zu integrieren. In-System-Design, ist eine grundlegende Strategie für die Verwirklichung der dynamischen Modells gemacht. Während Objektdesign wird diese Strategie treffend für angemessene Umsetzung verziert.

Die Ansätze zur Durchführung des dynamischen Modells sind:

  • vertreten Stand als Standort innerhalb eines Programms : Dies ist das traditionelle Verfahren getriebenen Ansatz, bei dem die Lage der Steuer definiert den Programmzustand. Eine endliche Zustandsmaschine kann als ein Programm implementiert werden. Ein Übergang eine Eingangsrechnung bildet die Folge von Anweisungen bildet die Hauptsteuerpfad, die Zweige bilden die Voraussetzungen, und die Rückwärtswege bilden die Schleifen oder Iterationen.

  • State Machine Engine : Dieser Ansatz direkt vertreten eine Zustandsmaschine durch eine Zustandsmaschine Klasse. Diese Klasse ausführt die Zustandsmaschine durch eine Reihe von Übergängen und Aktionen von der Anwendung bereitgestellt.

  • System als Concurrent Aufgaben: In diesem Ansatz wird ein Objekt als eine Aufgabe in der Programmiersprache oder das Betriebssystem implementiert. Hier wird ein Ereignis als Inter-Task-Aufruf realisiert. Es bewahrt inhärente Parallelität von realen Objekten.

Verpackungsklassen

In jedem großen Projekt, ist akribische Partitionierung einer Implementierung in Module oder Pakete wichtig. Während Objektdesign, werden Klassen und Objekte in Paketen gruppiert, um mehrere Gruppen zu ermöglichen, kooperativ an einem Projekt zu arbeiten.

Die unterschiedlichen Aspekte der Verpackung sind:

  • Verstecken Interne Informationen vom Outside View : Es ermöglicht eine Klasse als eine "black box" betrachtet werden und erlaubt Klassenimplementierung auf, ohne dass irgendwelche Kunden der Klasse, die Code ändern geändert werden.

  • Kohärenz der Elemente : Ein Element, wie zum Beispiel einer Klasse, einer Operation oder eines Moduls, ist kohärent, wenn sie auf einer einheitlichen Plan organisiert und alle seine Teile sind untrennbar damit verwandte dass sie dienen einem gemeinsamen Ziel.

  • Bau von physikalischen Module: Die folgenden Richtlinien helfen beim Bau physikalischen Modulen:

    • Klassen in einem Modul sollten vertreten ähnliche Dinge oder Komponenten in der gleichen Verbundobjekt dar.

    • Eng verbunden Klassen sollten im gleichen Modul sein.

    • unverbundenen oder schwach verbunden Klassen sollten in separaten Modulen platziert werden.

    • Die Module sollten eine gute Kohäsion, dh hohe Zusammenarbeit zwischen seinen Komponenten haben.

    • Ein Modul sollte geringe Kopplung mit anderen Modulen, dh Wechselwirkung oder gegenseitige Abhängigkeit zwischen den Modulen haben sollte Minimum sein.

Design Optimization

Das Analysemodell erfasst die logische Informationen über das System, während das Design-Modell fügt Details zur effizienten Zugriff auf Informationen zu unterstützen. Bevor eine Konstruktion implementiert, sollte sie optimiert werden, um so die Durchführung effizienter zu machen. Ziel der Optimierung ist es, die Kosten in Form von Zeit, Raum und anderen Metriken zu minimieren.

Jedoch Designoptimierung sollte nicht überschüssige, wie Einfachheit der Implementierung, Wartbarkeit und Erweiterbarkeit sind ebenfalls wichtige Aspekte. Es ist oft gesehen, dass eine perfekt optimierte Design ist effizienter, aber weniger lesbar und wiederverwendbar. So muss der Entwickler eine Balance zwischen beiden zu schlagen.

Die verschiedenen Dinge, die für Design-Optimierung durchgeführt werden können, sind:

  • hinzufügen redundanten Verbände
  • wegzulassen nicht nutzbare Verbände
  • Optimierung von Algorithmen
  • Speichern abgeleiteten Attribute um eine Wiederverarbeitung von komplexen Ausdrücken zu vermeiden

Die Zugabe von Redundant Verbände

Während Design-Optimierung, wird geprüft, ob die Ableitung neuer Verbände können Zugangskosten zu reduzieren. Obwohl diese redundante Verbände können keine Informationen hinzufügen, können sie die Effizienz des Gesamtmodells zu erhöhen.

Das Weglassen nicht nutzbare Verbände

Vorhandensein von zu vielen Verbänden kann ein System machen zu entziffern und damit Verringerung der Gesamtwirkungsgrad des Systems. So, während der Optimierung sind alle nicht-verwendbare Verbände entfernt werden.

Optimierung von Algorithmen

In der objektorientierten Systemen werden die Optimierung der Datenstruktur und Algorithmen in einer kollaborativen Weise. Sobald das Klassendesign ist vorhanden, die Operationen und die Algorithmen optimiert werden müssen.

Optimierung von Algorithmen wird durch:

  • Umlagerung in der Größenordnung von Rechenaufgaben
  • Umkehrung von Ausführungsreihenfolge von Maschen aus, dass im Funktionsmodell festgelegt
  • Entfernen von toten Pfade innerhalb des Algorithmus

Lagern und Aufbewahren von Abgeleitete Attribute

Abgeleitete Attribute sind die Attribute, deren Werte in Abhängigkeit von anderen Attributen (Basisattribute ) berechnet. Wiederberechnung der Werte der abgeleiteten Attribute jedes Mal, wenn sie benötigt werden, ist eine zeitaufwendige Prozedur. Um dies zu vermeiden, können die Werte berechnet und gespeichert werden, in ihren Formen berechnet.

Allerdings kann dieses Update-Anomalien, dh Pose, eine Veränderung in den Werten der Basisattribute ohne entsprechende Änderung in den Werten der abgeleiteten Attribute. Um dies zu vermeiden, werden die folgenden Schritte unternommen:

  • Mit jedem Update der Basis-Attributwert, der abgeleitete Attribut wird auch neu berechnet.

  • Alle abgeleiteten Attribute werden neu berechnet und in regelmäßigen Abständen in einer Gruppe statt nach jedem Update aktualisiert.

Design Dokumentation

Dokumentation ist ein wesentlicher Teil einer Softwareentwicklungsprozesses, die das Verfahren zur Herstellung der Software aufzeichnet. Die Design-Entscheidungen müssen für jede nicht-triviale Software-System zur Übertragung der Entwurf, zum andere zu dokumentieren.

Verwendung bereiche

Obwohl Sekundärprodukt, ist eine gute Dokumentation unerlässlich, vor allem in den folgenden Bereichen:

  • Bei der Gestaltung Software, die von einer Reihe von Entwicklern entwickelt wird
  • In iterativen Softwareentwicklungsstrategien
  • Bei der Entwicklung nachfolgenden Versionen eines Software-Projekts
  • Für die Beurteilung einer Software
  • Zum Auffinden Bedingungen und Prüfbereiche
  • Für die Wartung der Software.

Inhalt

Ein Vorteil Dokumentation sollte umfassen im Wesentlichen folgenden Inhalt:

  • High-Level-System-Architektur : Prozessdiagramme und Moduldiagramme.

  • Key Abstraktionen und Mechanismen : Klassendiagramme und Objektdiagramme.

  • Szenarien, die das Verhalten der wichtigsten Aspekte erläutern : Verhaltensdiagramme.

Features

Die Merkmale eines guten Dokumentation sind:

  • Concise und zugleich, eindeutige, konsistente und vollständige
  • Rückführung auf die Anforderungsspezifikationen des Systems
  • Gut strukturierte
  • Schematische statt beschreibende
Advertisements