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
quelle
Antworten:
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.
quelle
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?
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.
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.
quelle
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.
quelle
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.
quelle
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:
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.
quelle