Ich habe in den letzten Semestern einige Software-Design-Kurse besucht, und obwohl ich den Nutzen in vielen Formalismen sehe, habe ich das Gefühl, dass sie mir nichts über das Programm selbst sagen:
- Sie können anhand der Anwendungsfallspezifikation nicht sagen, wie das Programm funktionieren soll, obwohl darin erläutert wird, was das Programm tun kann.
- Aus dem Anforderungsdokument können Sie nichts über die Benutzererfahrung ablesen, obwohl es Qualitätsanforderungen enthalten kann.
- Sequenzdiagramme sind eine gute Beschreibung der Funktionsweise der Software als Aufrufstapel, jedoch sehr begrenzt und geben einen sehr teilweisen Überblick über das Gesamtsystem.
- Klassendiagramme eignen sich hervorragend zur Beschreibung des Systemaufbaus, sind jedoch völlig nutzlos, um herauszufinden, wie die Software aussehen muss.
Wo in all diesem Formalismus steht das Fazit: Wie sieht das Programm aus, funktioniert es und welche Erfahrungen gibt es? Ist es nicht sinnvoller, daraus zu entwerfen? Ist es nicht besser, über einen Prototyp herauszufinden, wie das Programm funktionieren soll, und danach zu streben, es tatsächlich umzusetzen?
Ich weiß, dass ich wahrscheinlich darunter leide, von Theoretikern Ingenieurwissenschaften unterrichtet zu werden, aber ich muss fragen, ob sie dies in der Branche tun. Wie finden die Leute heraus, was das Programm eigentlich ist und nicht, was es erfüllen sollte? Machen die Leute viel Prototypen oder verwenden sie meistens formale Tools wie UML, und ich habe es einfach noch nicht verstanden, sie zu verwenden?
quelle
Antworten:
Wenn wir eine GUI-Anwendung erstellen, erstellen wir fast IMMER einen Prototyp oder POC (Proof-of-Concept). Wir werden das visuelle Vokabular der App festlegen. Normalerweise binden wir unsere Kunden auf halbem Weg durch den POC ein und stellen sicher, dass sie verstehen, was der Zweck ist und worauf sie sich konzentrieren sollten. Es hat mir nie leid getan, dass ich einen Prototyp hergestellt habe. Stellen Sie nur sicher, dass Sie nicht versuchen, den Prototypcode in den Produktionscode umzuwandeln. Starten Sie den Produktionscode von Grund auf neu, basierend auf dem, was Sie aus dem Prototyp gelernt haben.
Trotzdem erstellen wir fast nie Prototypen für serverseitige Anwendungen (Dienste, Middleware usw.). Ich sehe nicht wirklich den Return on Investment dafür (es sei denn, Sie machen eine neue Technologie und müssen andere Konzepte beweisen).
quelle
In der Geschäftswelt ist das sehr wichtig
Auch ich denke das, bis du in die Geschäftswelt kommst. Dann ist es nicht mehr einfach genug, nur die Anforderungen zu erfüllen und zu bauen.
Im Geschäftsleben sind Flussdiagramme und Lo-Fi-Prototypen wirklich sinnvoll.
Wie das "Programm" funktioniert, ist wahrscheinlich der einfache Teil. In LOB-Apps (Line Of Business) ist das meiste nur CRUD. Die Herausforderung liegt in der Geschäftslogik und den Regeln . Hier werden Benutzerflussdiagramme und Geschäftsprozessabläufe äußerst wichtig, um effektiv zu verstehen und zu planen.
quelle
Was meinst du damit, wie das Programm "funktioniert"? Sie scheinen nach genauen Implementierungsdetails in etwas anderem als der spezifischen endgültigen Implementierung zu suchen, was keinen Sinn ergibt. Übergeordnete Elemente sollen die Implementierung leiten, nicht bestimmen.
Nach meiner Erfahrung ist Prototyping etwas ungewöhnlich. Mir wurde es sicherlich in Verbindung mit Spezifikationen, Anforderungen, Architektur usw. beigebracht, und es kann sehr nützlich sein.
Was "was die Software sein muss" betrifft, so sind dies die Anforderungen. Sie scheinen den ganzen Punkt zu verpassen.
Schnittstellen werden häufig im Voraus skizziert, und Anwendungsfälle können für den "Fluss" der Schnittstelle verwendet werden. Die Benutzererfahrung fehlt überhaupt nicht. Wenn Sie der Meinung sind, dass ein Element fehlt, tun Sie etwas anderes, das Ihre Professoren nicht erwähnt haben. Design besteht nicht aus klaren Regeln, die vom Himmel überliefert wurden.
quelle
Meine persönliche Beobachtung ist, dass das Prototyping viel Lippenbekenntnis erhält, aber allzu oft wird der Prototyp, sobald er Lebenszeichen zeigt, einfach in "Beta" oder, noch schlimmer, in Version 1.0 umbenannt.
quelle
Es gibt zwei Arten von Prototypen - drei tatsächlich:
Wir bauen Prototypen, um das Design zu verfeinern und Risiken zu reduzieren, bevor wir mit der "echten" Codierung beginnen (Engineering).
Wir bauen das Projekt als eine Reihe von raffinierten Prototypen (Agile)
Wir bauen einen Prototyp und versenden ihn, sobald er funktioniert (Cowboy)
quelle
Was Sie suchen, heißt Spezifikation - eine Beschreibung finden Sie hier in einem von Joels Artikeln
http://www.joelonsoftware.com/articles/fog0000000035.html
quelle
Ein Prototyp kann auch als "Iteration 0" dessen angesehen werden, was Sie tun müssen. Es erfüllt mehrere Dinge:
Alles in allem sollte der Prototyp mit hoher Wahrscheinlichkeit für die Erstellung des Endprodukts nützlich sein, es sei denn, Sie haben festgestellt, dass ein völlig anderer Ansatz erforderlich ist.
quelle