Was ist der Standard für die Modellierung moderner Anwendungen vor der Entwicklung?

9

Ich übernehme meine erste Anwendung auf Unternehmensebene und möchte, dass mein Team die gesamte ASP.NET MVC C # -Anwendung modelliert, bevor wir überhaupt eine Codezeile abtippen.

UPDATE: Dies war keine philosophische Diskussion darüber, wann eine Anwendung dokumentiert / modelliert werden soll. Bitte geben Sie nur Antworten für "wie" zu dokumentieren / modellieren.

Die Wahrheit ist, dass ich in dieser Abteilung immer gespart habe und noch nie eine Anwendung modelliert habe. Was ist der Standardweg, um dies zu tun? Welche Art von Diagrammen sollte verwendet werden und wie würde die Dokumentation aussehen? Links zu Beispieldiagrammen und Dokumentationen sind willkommen.

Bei der Suche kann ich zahlreiche Dinge im Internet finden, aber ich wollte sehen, ob es derzeit einen modernen Konsens darüber gibt, wie dies zu tun ist.

Danke im Voraus!

Schlusserklärung

Ich hatte keine Ahnung, dass dies ein so heikles Thema war. Vielen Dank an alle, die die offensichtliche Kontroverse beiseite legen und nützliche Antworten geben konnten. Es war eine interessante Diskussion, um es gelinde auszudrücken :)

Ein weiterer nützlicher Link, den ich entdeckt habe, ist folgender: /programming/61487/do-you-use-uml-in-agile-development-practices/61519#61519

Chev
quelle
6
Du willst einen Wasserfall machen?
Etienne de Martel
1
@ Etienne, Wasserfall? Wenn das eine Art snarky Referenz ist, dann verstehe ich es nicht. Konstruktive Kritik / Vorschläge wird geschätzt. Anstatt einen nutzlosen Kommentar zu bewerten, fügen Sie Ihre eigenen Kommentare hinzu, damit ich das Problem besser verstehe.
6
"Ich möchte, dass mein Team die gesamte ASP.NET MVC C # -Anwendung modelliert, bevor wir überhaupt eine Codezeile abtippen." Ich hasse es, das zu sagen, aber Sie begehen sich fast zum Scheitern, bevor Sie überhaupt anfangen. Der volle Umfang der Benutzerfreundlichkeit, Benutzeranforderungen und Wartbarkeit ist vollständig unsichtbar, bis Sie tatsächlich mit dem Schreiben von Code beginnen. Wenn Sie im Vorfeld auf einem großen Design bestehen, werden Sie viel mehr Zeit damit verbringen, Ihre Designs zu aktualisieren, als Ihre Bewerbung zu schreiben. High-Level-Designs sind in Ordnung , aber die gesamte App dokumentieren? Absolut nicht.
Julia
3
@Chevex: Waterfall ist eine Entwicklungsmethode, die viel Design im Voraus beinhaltet. In der Softwareentwicklungsgemeinschaft scheint es durchaus akzeptiert zu sein, dass diese Entwicklungsmethode bestenfalls schlecht funktioniert.
Quentin-Starin
1
touche @Chevex, touche ... geht leise weg
mcgrailm

Antworten:

6

ein aktueller moderner Konsens

Die Wahrheit ist: Derzeit fehlt der modernen Softwareentwicklung etwas - ein Konsens über die Modellierung. UML scheint eine Art kleinster gemeinsamer Teiler zu sein, aber in Wirklichkeit besteht nur Konsens über die Notation, nicht über die Semantik. Es gibt Dutzende verschiedener Meinungen darüber, wie UML interpretiert werden sollte, um Code zu erstellen (vielleicht finden Sie eine Interpretation, die für Ihr Team in Ordnung ist).

Auf der anderen Seite gibt es einen heiligen Krieg zwischen diesen "agilen" Leuten, die sagen "mache keine formalen Modelle, schreibe besser Arbeitscode" und diesen "BDUF" (Big Design im Voraus) Leuten, die an Werkzeuge denken wie " MDA "(Model Driven Architecture) sind die Lösung.

Andere Leute (entdeckten) die flussbasierte Programmierung für modernes Software-Design als Alternative für UML. Lesen Sie hier und hier , um mehr darüber zu erfahren.

Doc Brown
quelle
Großartiger Scott! Dies ist bei weitem die beste Antwort auf diese Frage. Ein schöner kurzer Überblick über die Modellierung in der Branche und wo sie steht. Danke doc! +1,21 Jiggawatt!
7

Ich möchte, dass mein Team die gesamte ASP.NET MVC C # -Anwendung modelliert, bevor wir überhaupt eine Codezeile abtippen

Das Problem, das ich normalerweise bei einem solchen Ansatz finde, ist, dass mein Verständnis der Lösung am Anfang immer unvollständig ist. Nur durch Verfeinerung im Laufe der Arbeit komme ich zu einer endgültigen Lösung.

Der Versuch, die gesamte App im Voraus zu entwerfen, bevor Code (mit Ausnahme der einfachsten Apps) verwendet wird, ist normalerweise Unsinn.

Glauben Sie wirklich, dass Sie jede Klasse, Methode und Datenstruktur im Voraus detailliert darstellen können?

Ich möchte nur einige gute Modellierungslösungen kennenlernen.

Was die tatsächlichen Tools zum Erstellen von Modellen angeht, habe ich einige ausprobiert und bin immer wieder bei Microsoft Visio gelandet.

Von allen Produkten, die ich ausprobiert habe, scheint es das einfachste und tatsächlich stabilste zu sein (meine Erfahrung mit Modellierungswerkzeugen ist, dass sie sehr fehlerhaft sind). Um fair zu sein, ich modelliere sehr wenig, also nimm diese Empfehlung mit einem Körnchen Salz.

EDIT: Eigentlich sollte ich sagen, dass der größte Teil meiner Modellierung auf einem Notizblock erfolgt, der sich auf meinem Schreibtisch befindet. Da ich wenig modelliere, versuche ich, es leicht und auf den Punkt zu bringen. Das Skizzieren eines Diagramms mit Stift und Papier ist für mich viel effizienter als die Verwendung von Software.

Möglicherweise finden Sie handgeschriebene Diagramme hilfreich, um Ihre Ideen zu formulieren, bevor Sie sie in einer Diagrammsoftware auslegen.

Welche Art von Diagrammen sollte verwendet werden und wie würde die Dokumentation aussehen?

Das meiste, was ich heutzutage modelliere, sind Interaktionsdiagramme. Auch hier mache ich nicht viel Modellieren - nur dort, wo ich wirklich das Gefühl habe, dass das Zeichnen des Modells mein Verständnis festigt.

Quentin-Starin
quelle
Wir können unsere Modellierung jederzeit anpassen. Das ist sowieso nicht der Punkt, ich möchte nur einige gute Modellierungslösungen kennenlernen.
Sie möchten also versuchen, Ihre Modelle und Ihren Code synchron zu halten. Dies funktioniert bei den meisten nicht. Sie werden unweigerlich auseinander gehen und die Diskrepanzen werden Probleme verursachen. Außerdem werden Sie viel Zeit damit verbringen, es zu versuchen
Quentin-Starin
Bitte lesen Sie die aktualisierte Frage.
@Chevex: Ich habe alles hinzugefügt, was ich in Bezug auf Ihre bearbeitete Frage konnte.
Quentin-Starin
@qes, mein Punkt war, dass Sie eine Frage beantworten, die ich nicht stellen wollte. Siehe den Abschnitt "UPDATE" der Frage.
3

UML- Diagramme sind ein guter Ausgangspunkt. Es gibt viele einfache Möglichkeiten, dies mit freier oder kostenpflichtiger Software zu tun. Ein einfaches Beispiel für ein Tool zum Erstellen einer UML sind Google Docs-Zeichnungen. Fortgeschrittenere Pakete wären Visio oder OmniGraffle.

BEARBEITEN: Wie von vielen erwähnt, bedeutet dies nicht, dass Sie alles vollständig modellieren müssen, wenn Sie den UML-Pfad beschreiten, sondern dass Sie sich darüber einig werden können, was Sie modellieren und wie detailliert die Modelle sein müssen Sein. Einfache UML-Diagramme können häufig dazu beitragen, Ihren Code vor dem Schreiben zu gestalten und einige potenzielle Probleme zu beseitigen, bevor sie auftreten.

Brett
quelle
Ich habe von UML gehört. Haben Sie Empfehlungen für einen Einstieg? Irgendwelche guten Werkzeuge, die Sie empfehlen?
@Chevex - habe gerade eine schnelle Google-Suche durchgeführt und dies gefunden: agilemodeling.com/artifacts/classDiagram.htm Scheint ein anständiger Ausgangspunkt zu sein
Brett
@qes - Abhängig davon, wie viel Zeit / Interesse / Investition er hat, um einen solchen Weg einzuschlagen, könnte dies sowohl eine gute Lernerfahrung sein als auch ihm helfen, einige Teile seines Codes zu verstehen, bevor er ihn schreibt (selbst wenn dies der Fall ist) nur eine einfache UML) ... Aber ich stimme zu, er sollte wahrscheinlich genügend Zeit und persönliches Interesse daran haben.
Brett
@qes, bitte lesen Sie die aktualisierte Frage.
2
@Chevex - Sie möchten wahrscheinlich zunächst etwas über die Diagrammtypen und deren Kommunikation lesen. UML ist eine Modellierungssprache, die sehr beschreibend sein kann, aber auch viele Nuancen aufweist. UML auf den Punkt gebracht hat mir ziemlich geholfen ( oreilly.com/catalog/9781565924482 ). Davon abgesehen kommt man oft mit reduzierten Versionen des vollständigen Diagrammsatzes aus. Solange sich die Personen, die die Diagramme erstellen, und die Personen, die die Diagramme lesen, einig sind, was sie bedeuten.
2

Wie @Brett vorgeschlagen hat, sind UML-Diagramme am besten. Mit UML ist es gut, Klassendiagramme und Arbeitsablaufdiagramme zu haben. Diese beiden würden die meisten Designanforderungen abdecken.

Mit dem Klassendiagramm können Sie die Mitglieder jeder Entität, ihre Sicherheitsstufe usw. modellieren.

Mit dem Arbeitsablaufdiagramm können Sie modellieren, welche Methode welche Aufrufe aufruft, was das Ergebnis des Arbeitsablaufs ist und welche Ausnahme möglicherweise herausspringt.

SaravananArumugam
quelle
Vielen Dank für diese Antwort. Nützliche Tools empfehlen? Unterstützt Visual Studio UML in irgendeiner Weise?
Visual Studio bietet Hilfe beim Erstellen eines Klassendiagramms. Es ist nicht gut für den Workflow. Rationale Tools eignen sich am besten für ein solches UML-Design / Modellierung. Rationaler Software-Modellierer ist mir vertraut. Ich habe gehört, dass Rational Rose ein weiteres großartiges Werkzeug wäre.
2

Obwohl ich fest davon überzeugt bin, vor dem Schreiben von Code einige grundlegende Architekturzeichnungen zu erstellen, halte ich das Erstellen einer detaillierten Zeichnung der gesamten App für zu aufwendig.

Normalerweise erstelle ich in Visio einige Umrissbilder, wobei ich häufig die "Flussdiagramm" -Bausteine ​​verwende, um zu visualisieren, was ich meine. Die Verwendung von UML fühlt sich oft formalisiert an und lädt zu zu vielen Details ein. Die Visio-Zeichnungen zeigen die Grundbausteine ​​der Anwendung und welche Art von Funktionalität wohin geht. Wenn Sie das MVC-Framework verwenden, müssen Sie meistens nur eine Beispielzeichnung aus dem Web entnehmen und kopieren.

Eine gute Idee ist es, einige Zeichnungen aus anderen Blickwinkeln zu machen. Anstatt alles zu zeichnen, ziehe ich es oft vor, eine bestimmte Funktion des Systems zu übernehmen und sie dann zu visualisieren als:

  • Anwendungsfalldiagramm (UML)
  • Flussdiagramm oder UML-Schwimmbahn (sehr hoch)
  • Übersicht über Architekturkomponenten.

Dann fangen wir an zu codieren. Während des Codierens verwende ich Doxygen mit der Punktintegration, um On-the-Fly-Klassendiagramme, Vererbung usw. zu erhalten. Das Anzeigen der von Doxygen generierten Übersicht ist oft eine sehr gute Möglichkeit, die Codestruktur anzuzeigen.

Anders Abel
quelle