Ich habe angefangen, an einer ziemlich komplizierten Software zu arbeiten. Es ist für ein persönliches Projekt, aber ich arbeite sehr viel daran. Jetzt bin ich daran gewöhnt, an Lösungen / Entwürfen anderer Leute oder an Projekten zu arbeiten, die auf eine sehr kontrollierbare Weise wachsen.
Dieses Mal begann ich zweimal, die Grundlagen zu programmieren, und ich steckte schnell fest. Also habe ich mich ausgeruht und beschlossen, die komplette Lösung aufzuschreiben, bevor ich eine einzelne Zeile codiere. Was ich getan habe (in Reihenfolge) ist:
Jetzt werde ich in diesem ganzen Teil sehr langsam. Ich habe ein persönliches Wiki eingerichtet und verwende es, um diese Spezifikationen zu schreiben, aber ich fühle deutlich meine mangelnde Erfahrung und eine klare Methodik.
Ich bin mir bewusst, dass Software-Design ein sehr komplexes Thema ist und dass eine ganze Reihe von Büchern darüber geschrieben wurde, aber ich würde mich freuen, wenn Sie Ihre Erfahrungen / Tipps / Methoden teilen würden.
Was schreiben Sie bei persönlichen Projekten mittlerer Größe, bevor Sie mit dem Programmieren beginnen? Wie?
Vielen Dank im Voraus
Was tun Sie, wenn Sie an persönlichen, mittelgroßen Projekten arbeiten, bevor Sie mit dem Code beginnen?
Ich spezifiziere die funktionale Spezifikation:
Aus Gründen des Risikomanagements füge ich hinzu, dass einige der Entwicklungen, die ich entwickeln wollte, mit einer Software verbunden waren, mit der ich nicht vertraut war; um das damit verbundene risiko zu minimieren, habe ich auch ein paar wegwerfprotokolle angefertigt.
Wie?
Ich skizzierte eine funktionale Spezifikation mit einem Stift. Einiges von dem, was ich geschrieben habe, war High-Level (ein Business-Level "Vision" -Dokument), und einige waren niedriger, eher wie Design (einige der UI-Details). Manchmal hörte ich auf und fragte mich, wie ich es organisieren sollte, aber dann fuhr ich fort, dass jede Seite zu jedem Thema mehr oder weniger zusammenhängend ist und dass ich später darüber nachdenken kann, wie man die Seiten organisiert (ähnlich wie dein Wiki, vielleicht).
Ich habe die Software-Architektur im Vorhinein spezifiziert und nicht spezifiziert:
Ich habe eine theoretische Begründung für die Architektur, wie sie jetzt ist, aber ich habe diese Gründe nicht dokumentiert:
Wenn (wenn ich) nicht der einzige Entwickler wäre, dann könnte ich denken, dass es sich lohnt, die Architektur und ihre Gründe zu dokumentieren.
Was ich oben über die Architektur der Software gesagt habe, gilt auch für die Daten , die die Software verarbeitet.
Wie für testing , codiere ich ein bisschen und teste es dann; oder schreiben Sie einen Test und kodieren Sie dann die Funktionalität, die diesen Test bestehen wird. Ich mache keine "Big Bang Integration", d. H. Monatelanges Schreiben ohne Tests.
Eine der größten Schwächen in meinem Prozess ist die Schätzung des Aufwands im Voraus und dann die Verfolgung der Implementierung gegen die Schätzung ... das ist einer der Unterschiede zwischen diesen "persönlichen" "Projektprozess gegen ein bezahltes Projekt, das ich für jemand anderen kommerziell machen würde. Ich bezweifle jedoch, dass dies gut ist: Wenn die Schätzung eine kommerziell bewährte Methode ist, dann sollte ich es vielleicht auch bei einem persönlichen Projekt tun.
Es gibt viele Menschen mit einer besseren Erfahrung als ich, um Ihnen bei den Einzelheiten hier zu helfen, aber ich habe einen Punkt, den ich denke, dass es immer wert ist, daran zu denken.
Sie müssen es nicht beim ersten Mal 100% perfekt machen. In der Tat, wenn Sie darauf zielen, werden Sie wahrscheinlich nie fertig sein. Die Realität ist, dass Sie das Design nicht vollständig verstehen werden, bis Sie das System einmal gebaut haben.
Fangen Sie einfach an, fahren Sie weiter, behalten Sie den Überblick über die Testabdeckung, und wenn Sie das System und seine Feinheiten besser verstehen, dann stufenweise umgestalten, um es zu verbessern .
Grundsätzlich die Bildschirme. Sie sind die Schnittstelle zwischen dem Benutzer und der Software. Also versuche ich jeden Anwendungsfall zu identifizieren (der Benutzer wird nach meinem Produkt suchen - der Benutzer wird ein Produkt zu seinem Caddy hinzufügen - der Benutzer wird seinen Caddy auschecken) und ich erstelle eine Kette von Bildschirmen für jeden von ihnen.
>Beste Wünsche.
Ich finde ein leeres Stück Papier und ein Stift ist der beste Ausgangspunkt:
Verbringen Sie nicht mehr als eine halbe Stunde damit und lassen Sie sich nicht in zu vielen Dokumentationen oder Vorabversionen stecken. Starten Sie die Programmierung, sobald Sie eine vage Vorstellung davon haben, wie Sie es tun möchten. Während Sie sich weiterentwickeln, bekommen Sie ein Gefühl dafür, ob der Code gut genug ist oder nicht. Wenn Sie nicht glücklich sind, denken Sie darüber nach, was Sie nicht mögen und beginnen Sie mit diesen Lektionen im Hinterkopf. Refactor oft und bald, je früher desto besser. Wenn sich etwas nicht "richtig anfühlt", ist es wahrscheinlich nicht.
Ich würde mit einer minimalen Implementierung beginnen und in jeder Iteration weitere Funktionen hinzufügen.
Tags und Links architecture design projects-and-solutions