Dialog Mithilfe von Ebenendiagrammen können Sie die Architektur Ihrer Anwendung entwerfen und überprüfen, ob sich der Code ...

Dialog
Mithilfe von Ebenendiagrammen können Sie die Architektur Ihrer Anwendung entwerfen und überprüfen, ob sich der Code mit dem Entwurf deckt. Sie können die Arbeit in Verbindung mit Ihren Modellen nachverfolgen, indem Sie Team Foundation Server-Arbeitsaufgaben mit Modellelementen verknüpfen. Dadurch wird die Nachverfolgbarkeit zwischen den Modellen, der IDE und dem Code gewährleistet, ganz gleich, ob Sie eine neue Projektmappe entwerfen oder eine vorhandene Projektmappe aktualisieren. 

Betrachten wir zuerst die Architektur einer Anwendung, indem wir das zugehörige Ebenendiagramm untersuchen. 

Der Architekt des Teams hat vorgeschlagen, einen Teil dieser Anwendung umzugestalten, sodass sie sich am Entwurf im Ebenendiagramm orientiert. Diese Aufgabe befindet sich in Ihrem Rückstand und ist mit dem Ebenendiagramm verknüpft.



Aktion
Doppelklick auf die Arbeitsaufgabe in Team Explorer unter "Meine Arbeitsaufgaben" zum Öffnen. 

Klick auf die Option für weitere Links in der Arbeitsaufgabe.

Doppelklick auf den Modelllink unter "Modelllink" zum Öffnen von Petshop.layerdiagram im PetShopModels-Projekt.

Dialog
Ein Ebenendiagramm zeigt die zulässigen Abhängigkeiten zwischen Namespaces, die Ebenen zugeordnet sind. Ebenendiagramme ähneln dem Zeichnen auf einer Tafel. Sie enthalten Formen und Beziehungen zwischen diesen Formen. Wenn Ihre Projektmappe Ebenendiagramme enthält, haben Sie mehr Möglichkeiten, als nur die beabsichtigte Architektur zu beschreiben. Sie können den Code anhand eines Ebenendiagramms validieren, um ungültige Abhängigkeiten zu erkennen. Durch die Einbeziehung dieses Schritts in den Eincheck- und Buildprozess können Sie leichte Änderungen am Code erkennen, die mit dem Entwurf in Konflikt stehen.



Aktion
Auswahl von "Ebenen-Explorer" im Menü "Architektur" unter "Fenster".

Klick auf die Geschäftsebene im anderen Ebenendiagramm. Anzeigen der Artefakte im Ebenen-Explorer.

Klick mit der rechten Maustaste auf die Geschäftsebene im Ebenendiagramm. Auswahl von "Architektur überprüfen". (dies kann eine Weile dauern)

Fehler im Fenster "Fehlerliste" überprüfen (jeweils gekennzeichnet durch ein rotes X). Doppelklick auf den ersten Fehler zum Anzeigen des Codes, der diesen Fehler verursacht hat.

Dialog
Wir haben ein paar Abhängigkeiten im Code gefunden, die mit dem Entwurf in Konflikt stehen. Von der Insert-Methode in der Order-Klasse werden ungültige Aufrufe an Methoden von zwei anderen Klassen ausgeführt. Im Ebenendiagramm ist die Insert-Methode der Geschäftsebene zugeordnet, die nicht direkt mit den Ebenen für die beiden anderen Klassen kommunizieren sollte. Die Geschäftsebene sollte stattdessen mit der PaymentGateway-Ebene kommunizieren.

Die Fehler im Code wurden bei der Ebenenvalidierung verdeutlicht. Wenn diese Konflikte behoben werden, sollte eine erneute Validierung des Diagramms demnach bestätigen, dass wir die richtigen Schritte unternommen haben.



Aktion
Klick auf die PaymentGateway-Ebene im Ebenendiagramm.

Anzeige des PaymentGatway-Namespace im Ebenen-Explorer.

Erweiterung des PaymentGateway-Projekts und des PaymentProcessor-Typs im Projektmappen-Explorer und Überprüfung der Membermethoden.

Öffnen der Datei "PaymentProcessor.cs" zum Anzeigen der Membermethodendefinitionen.

Dialog
Beim Betrachten des Codes, der der PaymentGateway-Ebene zugeordnet ist, können wir einen Teil der Funktionen der Insert-Methode an die ProcessPayment-Methode delegieren. Durch das Erstellen von Sequenzdiagrammen können wir die Strukturen auf hoher Ebene vergleichen und Sequenzen für diese beiden Methoden aufrufen.



Aktion
Doppelklick auf den ersten Fehler zum Anzeigen des Codes. Die Definition der Insert-Methode wird angezeigt.

Klick mit der rechten Maustaste auf eine beliebige Stelle in der Insert-Methodendefinition. Auswahl von "Sequenzdiagramm generieren". Übernahme aller voreingestellten Optionen. Klick auf "OK".

Das Sequenzdiagramm zeigt, dass die Insert-Methode Methoden für die CreditCardService-Klasse und die OnlinePaymentService-Klasse aufruft.

Klick mit der rechten Maustaste in die ProcessPayment-Methodendefinition der Datei "PaymentProcessor.cs". Auswahl von "Sequenzdiagramm generieren". Übernahme aller voreingestellten Optionen. Klick auf "OK".

Vor- und Zurückblättern zwischen beiden Sequenzdiagrammen und vergleichen, welche Klassen die Insert-Methode und die ProcessPayment-Methode zum Ziel haben und welche Klassen nicht. Anzeigen der Gemeinsamkeiten und Unterschiede.

Dialog
Wir sehen, dass diese beiden Methoden sehr ähnlich sind und nur wenige Unterschiede aufweisen. Gestalten wir die Insert-Methode so um, dass sie ProcessPayment aufruft. Anschließend führen wir die Validierung erneut aus, um sicherzustellen, dass die Abhängigkeitskonflikte durch unsere Änderungen behoben wurden. 



Aktion
Code zwischen den folgenden Anweisungen in der Insert-Methodendefinition:

if (order.CreditCard.CardType == "CreditCardProviderA" || order.CreditCard.CardType == "CreditCardProviderB") 

and:

CalculatePaymentInfo(order);

durch folgenden Code ersetzen:

PaymentGateway.PaymentProcessor processor = new PaymentGateway.PaymentProcessor();
if (!processor.ProcessPayment(order))
{
          return OrderStatus.Failed;
}


Architektur überprüfen.




Dialog

In diesem Video haben wird gezeigt, wie mithilfe von Ebenendiagrammen die beabsichtigte Architektur einer Anwendung beschrieben werden kann und wie Sie anhand der Ebenenvalidierung Konflikte zwischen Code und Entwurf erkennen können. Außerdem haben wir gezeigt, wie Sie mithilfe von Sequenzdiagrammen den Methodenfluss zwischen verschiedenen Klassen anzeigen können. Informationen über die Verwendung von UML-Modellen zum Beschreiben der Architektur erhalten Sie in unserem entsprechenden Video.