Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Teile Ihrer Anwendung aus einem Modell generieren oder konfigurieren.
Das Modell stellt die Anforderungen direkt als der Code dar. Indem Sie das Verhalten der Anwendung direkt vom Modell ableiten, können Sie viel schneller und zuverlässiger auf geänderte Anforderungen reagieren als durch Aktualisieren des Codes. Obwohl einige anfängliche Arbeit erforderlich ist, um die Ableitung einzurichten, wird diese Investition zurückgegeben, wenn Sie Änderungen an den Anforderungen erwarten, oder wenn Sie mehrere Varianten des Produkts vornehmen möchten.
Generieren des Codes Ihrer Anwendung aus einem Modell
Die einfachste Möglichkeit zum Generieren von Code ist die Verwendung von Textvorlagen. Sie können Code in derselben Visual Studio-Projektmappe generieren, in der Sie das Modell beibehalten. Weitere Informationen finden Sie unter:
Generieren von Code aus einer Domain-Specific Sprache
Diese Methode ist einfach inkrementell anzuwenden. Beginnen Sie mit einer Anwendung, die nur für einen bestimmten Fall funktioniert, und wählen Sie einige Teile davon aus, die Sie vom Modell unterscheiden möchten. Benennen Sie die Quelldateien dieser Teile um, sodass sie zu Textvorlagendateien (TT) werden. An diesem Punkt wird die Quelle .cs Dateien automatisch aus den Vorlagendateien generiert, sodass die Anwendung wie zuvor funktioniert.
Anschließend können Sie einen Teil des Codes übernehmen und durch einen Textvorlagenausdruck ersetzen, der das Modell liest und diesen Teil der Quelldatei generiert. Mindestens ein Wert des Modells sollte die ursprüngliche Quelle generieren, damit Sie die Anwendung erneut ausführen können und wie zuvor funktionieren. Nachdem Sie verschiedene Modellwerte getestet haben, können Sie fortfahren, um Vorlagenausdrücke in einen anderen Teil des Codes einzufügen.
Diese inkrementelle Methode bedeutet, dass die Codegenerierung in der Regel ein risikoarmer Ansatz ist. Die resultierenden Anwendungen führen in der Regel fast genauso gut wie eine handschriftlich geschriebene Version aus.
Wenn Sie jedoch mit einer vorhandenen Anwendung beginnen, stellen Sie möglicherweise fest, dass viele Umgestaltungen erforderlich sind, um die verschiedenen Verhaltensweisen zu trennen, die vom Modell gesteuert werden, damit sie unabhängig voneinander variieren können. Es wird empfohlen, diesen Aspekt der Anwendung zu bewerten, wenn Sie die Kosten Ihres Projekts schätzen.
Konfigurieren der Anwendung aus einem Modell
Wenn Sie das Verhalten Ihrer Anwendung zur Laufzeit variieren möchten, können Sie keine Codegenerierung verwenden, die Quellcode generiert, bevor die Anwendung kompiliert wird. Stattdessen können Sie ihre Anwendung so entwerfen, dass es das Modell liest, und das Verhalten entsprechend variieren. Weitere Informationen finden Sie unter:
Vorgehensweise: Öffnen eines Modells aus Datei im Programmcode
Diese Methode kann auch inkrementell angewendet werden, aber es gibt mehr Arbeit am Anfang. Sie müssen den Code schreiben, der das Modell liest, und ein Framework einrichten, mit dem seine Werte für die Variablenteile zugänglich sein können. Das Erstellen der generischen Variablenteile ist teurer als die Codegenerierung.
Eine generische Anwendung führt in der Regel weniger gut aus als ihre spezifischen Gegenstücke. Wenn die Leistung von entscheidender Bedeutung ist, sollte Ihr Projektplan eine Bewertung dieses Risikos enthalten.
Entwickeln einer abgeleiteten Anwendung
Möglicherweise sind die folgenden allgemeinen Richtlinien hilfreich.
Beginnen Sie spezifisch, und generalisieren Sie dann. Schreiben Sie zuerst eine bestimmte Version Ihrer Anwendung. Diese Version sollte in einer Reihe von Bedingungen funktionieren. Wenn Sie zufrieden sind, dass es ordnungsgemäß funktioniert, können Sie einige davon von einem Modell ableiten. Erweitern Sie die abgeleiteten Teile schrittweise.
Entwerfen Sie beispielsweise eine Website mit einem bestimmten Satz von Webseiten, bevor Sie eine Webanwendung entwerfen, die Seiten darstellt, die in einem Modell definiert sind.
Modell der Variantenaspekte. Identifizieren Sie die Aspekte, die variieren, entweder zwischen einer Bereitstellung und einer anderen, oder im Laufe der Zeit, wenn sich die Anforderungen ändern. Dies sind die Aspekte, die von einem Modell abgeleitet werden sollten.
Wenn sich beispielsweise der Satz von Webseiten und Verknüpfungen zwischen ihnen ändert, aber der Stil und das Format der Seiten immer gleich sind, sollte das Modell die Verknüpfungen beschreiben, aber nicht das Format der Seiten.
Getrennte Bedenken. Wenn die variablen Aspekte in unabhängige Bereiche unterteilt werden können, verwenden Sie separate Modelle für jeden Bereich. Mithilfe von ModelBus können Sie Vorgänge definieren, die sich auf beide Modelle auswirken, und Einschränkungen dazwischen.
Verwenden Sie beispielsweise ein Modell, um die Navigation zwischen den Webseiten und einem anderen Modell zu definieren, um das Layout der Seiten zu definieren.
Modellen Sie die Anforderung, nicht die Lösung. Entwerfen Sie das Modell so, dass es die Benutzeranforderungen beschreibt. Entwerfen Sie die Schreibweise dagegen nicht gemäß den variablen Aspekten der Implementierung.
Beispielsweise sollte das Webnavigationsmodell Webseiten und Hyperlinks dazwischen darstellen. Das Webnavigationsmodell sollte keine Fragmente von HTML oder Klassen in Ihrer Anwendung darstellen.
Generieren oder interpretieren? Wenn sich die Anforderungen für eine bestimmte Bereitstellung selten ändern, generieren Sie Programmcode aus dem Modell. Wenn sich die Anforderungen möglicherweise häufig ändern oder in mehr als einer Variante in derselben Bereitstellung gemeinsam vorhanden sind, schreiben Sie die Anwendung so, dass sie ein Modell lesen und interpretieren kann.
Wenn Sie beispielsweise Ihr Websitemodell verwenden, um eine Reihe unterschiedlicher und separat installierter Websites zu entwickeln, sollten Sie den Code der Website aus dem Modell generieren. Aber Sie verwenden Ihr Modell, um eine Website zu steuern, die sich täglich ändert, dann ist es besser, einen Webserver zu schreiben, der das Modell liest und die Website entsprechend darstellt.
UML oder DSL? Erwägen Sie die Erstellung Ihrer Modellierungsnotation mithilfe von Stereotypen, um UML zu erweitern. Definieren Sie ein DSL, wenn kein UML-Diagramm vorhanden ist, das dem Zweck entspricht. Vermeiden Sie jedoch das Unterbrechen der Standardsemantik von UML.
Beispielsweise ist ein UML-Klassendiagramm eine Sammlung von Feldern und Pfeilen; mit dieser Schreibweise können Sie theoretisch etwas definieren. Es wird jedoch nicht empfohlen, das Klassendiagramm zu verwenden, es sei denn, Sie beschreiben tatsächlich eine Reihe von Typen. Sie können z. B. Klassendiagramme anpassen, um verschiedene Arten von Webseiten zu beschreiben.