Sie arbeiten im Design / Skizze / eine Entwicklungslösung zuerst zeichnen und dann entwickeln? Wenn das so ist, wie? [geschlossen]

StackOverflow https://stackoverflow.com/questions/155948

  •  03-07-2019
  •  | 
  •  

Frage

Ich arbeite viel mit Entscheidern weisende Technologie verwenden besser in ihren Unternehmen. Ich habe festgestellt, dass Ein Bild sagt mehr als tausend Worte und in einem Diagramm von einigen Arten ein System Prototyping immer viel zu einer Diskussion verleihen. Ich habe Visio, UML (etwas), Mind Maps, Flussdiagramme und verspottet WinForms verwendet, um die Vision zu beginnen für diese Sponsoren, um sicherzustellen, dass alle auf der gleichen Seite. Ich zu sein scheinen immer auf der Suche nach diesem gemeinsamen Prozess verwendet werden, können die Business-Vision in den Entwicklungsprozess zu stricken, so dass wir alle am gleichen Ende landen, „ Etwas funktionelle, das ein Problem löst “.

Ich suche Anregungen oder Cliff stellt fest, wie den Design-Prozess zu nähern, so dass es für Anwendungen verwendet wird, nur eine Woche dauern kann zu entwickeln, sondern kann auch größere Projekte verwendet werden, als auch umfassen.

Ich weiß, dass dies in den Bereich der UML eintaucht, aber ich habe festgestellt, dass ich eine harte Zeit, einen Leitfaden zu finden, die verschiedenen Diagrammtypen in geeigneter Weise zu verwenden, geschweige denn Hilfe Business-Anwender verstehen die Diagramme lassen und auf sie beziehen.

Was tun Sie, um dann vor den Sponsoren eines Projekts eine Vision eines Systems / Anwendung zu erfassen? (Alle, bevor Sie eine einzige Zeile Code schreiben) ...

War es hilfreich?

Lösung

Papier oder Whiteboard!

Für den einsamen deveoper, würde ich Papier empfehlen. zunächst zumindest, schließlich können Sie es mit UML formalisieren, aber ich glaube nicht, seine erforderlich.

Für eine Gruppe von Entwicklern, die zusammenarbeiten (physisch), würde ich ein Whiteboard empfehlen. Auf diese Weise seine für jedermann sichtbar und jeder verbessern kann und beitragen. Auch hier können Sie an dieser Stelle formalisieren, aber ich denke immer noch nicht seine notwen

Als ich zuerst tun OOP gestartet (oder einen Algorithmus entwerfen), habe ich alles in meinem Kopf tun würde, während Codierung. Aber nach einem paar vernünftigen komplexen Projekten zu tun ich auf jeden Fall den Vorteil sehen, in die Interaktionen zwischen verschiedenen Objekten in einem System herausgezogen wird.

ich Projekte von mir, so dass ich viele Karteikarten für Klassen und Papier für ihre Interaktionen zu entwerfen. Der Punkt ist, es einfach sein, muss sich ändern. Ich habe mit Dia, ein Diagrammeditor gespielt, für UML zu tun, aber Änderungen ist zu schwierig. Ich möchte schnell Änderungen vornehmen zu können, in der Lage sein, so kann ich herausfinden, was am besten funktioniert.

Es lohnt sich, dass TDD zu erwähnen und zu tun "Spike" [1] Projekte können helfen, wenn ein System entwerfen, zu.

[1] Von Extreme Programming Adventures in C #, Seite 8:

  

"Spike" ist ein Begriff Extreme Programming   "Experiement" bedeutet. Wir verwenden das Wort   weil wir denken, von einer Spitze als   schnell, Experiment fast Brute-Force   auf das Lernen nur eine Sache gerichtet.   Denken Sie an einen großen Nagel durch eine drving   Brett.

Andere Tipps

Für kleine oder sehr begrenzte Aufgaben, ich glaube fast überall Entwickler einig, dass jede Art von Diagramm ein unnötiger Schritt.

Allerdings, wenn sie mit einem größeren, komplizierteren System zu tun, vor allem, wenn zwei oder mehr Prozessen zu interagieren oder komplexe Business-Logik erforderlich ist,

Informieren Sie sich über Kruchten 4 + 1 Ansichten .

Hier ist eine Art und Weise Sie fortfahren können.

  1. Anwendungsfälle in einem Anwendungsfalldiagramm sammeln. Dies wird Akteure und Anwendungsfälle zeigt. Das Diagramm nicht mit vielen Details beginnen.

  2. die Anwendungsfälle Priorisieren auf hochwertige Anwendungsfälle zu konzentrieren.

  3. Schreiben Erzählungen. Wenn Sie möchten, können Sie Aktivitätsdiagramme zeichnen.

Die oben ist vollständig nicht-technisch. UML erlegt ein paar Regeln für die Formen verwendet werden, aber anders als das, Sie Dinge in Endbenutzers Terminologie darstellen können.

  1. Sie können Substantiv Analyse tun, Zeichnung Klassendiagramme, die die Entitäten und Beziehungen zu illustrieren. Zunächst wird diese in Benutzer Terminologie sein. Kein geeky technischer Inhalt.

  2. Sie können die Aktivitätsdiagramme erweitern oder Sequenzdiagramme fügen Sie das Verarbeitungsmodell zu zeigen. Dies wird mit Endbenutzers, nicht-technischen Darstellungen der Verarbeitung beginnen.

  3. Sie können die Klasse und Aktivitätsdiagramme durchlaufen von der Analyse zu bewegen zu entwerfen. Irgendwann werden Sie aus der Analyse und in Engineering-Modus bewegen. Benutzer wollen nicht alle diese Bilder sehen zu können.

  4. Sie können Komponentendiagramme für die Entwicklung Ansicht und Verteilungsdiagramme für die physische Ansicht ziehen. Diese werden auch als iterieren Ihre Konzeption des Systems erweitert und verfeinert.

Bei der Gestaltung einer Anwendung (I hauptsächlich Web-Anwendungen erstellen, aber für andere gilt), schaffe ich normalerweise Benutzer Geschichten genau zu bestimmen, was der Endbenutzer wirklich braucht. Diese bilden die typischen "Business-Anforderungen".

Nachdem die User Stories sind genagelt, erstelle ich Flußdiagramme, die die Pfade zu legen, dass die Menschen nehmen, wenn die App.

Danach Schritt (die manchmal einen Genehmigungsprozess wird) erstellen I-Schnittstelle Skizzen (Stift / Bleistift & Millimeterpapier), und das Layout der Datenbanken beginnen. Dies, und der nächste Schritt sind in der Regel die meiste Zeit raubender Prozess.

Der nächste Schritt ist die Skizzen nehmen und sie in aufgeräumt Wireframes. Ich benutze OmniGraffle für diesen Schritt -. Es ist Lichtjahre voraus Visio

Danach können Sie typische UML-Diagramme tun wollen, oder eine anderes Objekt-Layout / Funktionalität Organisation, aber die Geschäftsleute sind nicht so viel los kümmern sich um diese Art von Detail:)

Wenn ich einen Entwurf setzen zusammen, ich bin besorgt, mit den Ideen sauber und einfach an das Publikum vermitteln. Das Publikum besteht aus (in der Regel) unterschiedlich Leute mit unterschiedlichen Hintergründen gemacht. Was ich will, ist, nicht tun bekommen in „Lernmodus“ für ein bestimmtes Design-Modell. Wenn ich meine Kunden verbringen viel Zeit zu sagen, was der Pfeil mit dem festen Kopf bedeutet und wie es unterscheidet sich von der, die hohl ist oder was ein Quadrat bedeutet, im Vergleich zu einem Kreis, bin ich nicht Fortschritte machen - zumindest nicht den Fortschritt ich will.

Wenn es angemessen ist informell, ich werde es auf einem Whiteboard skizzieren oder auf einem Papier - Block und einfachen Pfeile am meisten. Der Punkt des rauen Designs ist an dieser Stelle zu sorgen, dass wir auf der gleichen Seite sind. Es wird jedoch durch den Kunden variieren.

Wenn es formal ist, könnte ich ein UML-Werkzeug herausziehen und einige Diagramme zusammen, aber vor allem meine Kunden nicht schreiben Software und sind wahrscheinlich nur am Rande interessant in den Innereien. Wir halten es in der „Blase und Linie“ Ebene und könnte einige Aufzählungen zusammengestellt, wo Klarstellung erforderlich ist. Mein Kunde nicht will, Klassendiagramme oder so etwas zu sehen, in der Regel.

Wenn wir einig GUI-Interaktion zeigen müssen, werde ich werfen zusammen ein paar einfachen Fenster Prototypen in Visual Studio - es ist schnell und einfach. Ich habe festgestellt, dass der Kunde, dass ziemlich leicht beziehen kann.

Auf den Punkt gebracht, produziere ich einfache Zeichnungen (in einigen Format), die das Design an die betroffenen Parteien und Interessengruppen kommunizieren können. Ich stelle sicher, ich weiß, was ich tun möchte, und was noch wichtiger ist - was sie es brauchen zu tun, und reden. Es geht normalerweise nicht in das Unkraut, weil die Leute dort verloren und ich es nicht gut finden Zeit damit verbracht, alles zu dem n-ten Grad, um Diagramm. Letztendlich, wenn der Kunde und ich (und alle anderen betroffenen Parteien) auf der gleichen Seite sind, nachdem sie durch das Design sprechen, ich bin ein glücklicher Kerl.

Ich bin ein Agile Kerl, so neige ich dazu nicht viel Zeit in diagramming zu setzen. Sicherlich gibt es Zeiten, in denen etwas auf einem weißen Brett oder einer Serviette skizziert wird dazu beitragen, sicherzustellen, dass Sie ein bestimmtes Problem oder eine Anforderung zu verstehen, aber nichts wirklich schlägt funktionierende Software vor einem Kunden, der damit sie sehen, wie es funktioniert. Wenn Sie in einer Situation sind, wo Ihre Kunden häufige Wiederholungen und Demos über vorne Design akzeptieren würde, sage ich für ihn gehen. Es ist sogar besser, wenn sie in Ordnung sind zu früh Feedback in Form von Leiteinheit oder Integrationstests (so etwas wie Fit hier funktioniert gut).

Ich mag nicht allgemein Prototypen, weil viel zu oft der Prototyp das Endprodukt wird. Ich hatte das Pech an einem Projekt zu arbeiten, die im Grunde wurde ein kommerzielles Angebot erstreckt, die ein „proof of concept“ entpuppte, der bekam verpackt und verkauft. Das Projekt wurde abgebrochen, nachdem mehr als 1000 Mängel gegen die Kernanwendung angemeldet wurden (keine Erweiterungen oder Anpassungen zählen wir zur Zeit gearbeitet haben).

Ich habe versucht, mit UML, und fand, dass es sei denn, die Person an den Diagrammen suchen UML versteht, sie wenig hilfreich sind. Screen-Mock-ups sind in der Regel keine schlechte Idee, aber sie zeigen nur die Seite der Anwendung, die den Benutzer direkt bewirkt, so dass Sie nicht viel Meilenzahl für etwas bekommen, die nicht Präsentation ist. Seltsamer Tools wie die Workflow-Designer in Visual Studio produzieren ziemlich klar, Diagramme, die einfach für Nicht-Entwickler zu verstehen, so macht es ein gutes Werkzeug für die Kernanwendung Workflow zu erzeugen, wenn die Anwendung komplex genug ist, um davon zu profitieren.

Dennoch aller Ansätze, die ich im Laufe der Jahre gearbeitet haben, geht nichts über ein Benutzer seine Hände auf etwas zu bekommen damit Sie wissen, wie gut Sie das Problem zu verstehen.

Ich schlage vor, Joels Artikel über „Painless Functional Specifications“ zu lesen. Teil 1 ist unter dem Titel "Warum das Ganze?" .

Wir verwenden Mockup Screens bei der Arbeit ( "Quick and Easy Screen Prototypen"). Es ist einfach, Bildschirme zu verändern und die Skizzen machen deutlich, dass dies nur ein Entwurf.

Die Mockups werden dann in einem Word-Dokument enthält die Spezifikation enthalten.

Von Conceptual BlockBusting: Ein Leitfaden für bessere Ideen von James L. Adams:

  

Intellectual Blöcke ergeben ein   ineffiziente Wahl der psychischen Taktik   oder ein Mangel an intellektuellen   Munition. . . . 1. Lösen der   Problem eine falsche Sprache mit   (Verbal, mathematisch, visuell) - als   bei dem Versuch, ein Problem zu lösen   mathematisch, wenn es sich leichter   erreicht visuell

(pg. 71, 3. Auflage)

Unnötig zu sagen, wenn Sie Diagramme verwenden, um Ideen zu erfassen, die mit Mathematik erfasst werden besser kann es ebenso schlecht ist. Der Trick ist natürlich die richtige Sprache zu finden, auch sowohl das Problem und die Lösung zum Ausdruck bringen. Und natürlich kann es sinnvoll sein, mehr zu verwenden, als eine Sprache sowohl das Problem und die Lösung zum Ausdruck bringen.

Mein Punkt ist, dass Sie gehen davon aus, dass Diagramme der beste Weg zu gehen. Ich bin nicht sicher, dass ich bereit wäre, um diese Annahme zu machen. Sie können eine bessere Antwort bekommen (und der Kunde kann mit dem Ergebnis zufriedener sein) über eine andere Methode der Gestaltung Anforderungen und vorgeschlagenen Design.

Durch die Art und Weise, Begriff BlockBusting ist sehr zu empfehlen Lesung.

Die UML Beratung funktioniert gut, wenn Sie auf einem großen und risikoaversen Projekt mit vielen Beteiligten arbeiten, und mit vielen Mitwirkenden. Auch an diesen Projekten, hilft es wirklich, einen Prototyp zu entwickeln, um die Entscheidungsträger zu zeigen. Normalerweise gehen sie über die Benutzeroberfläche und eine typische User Story ist völlig ausreichend. Das heißt, Sie diesen Fokus auf die UI passen müssen für die Entscheidungsträger dazu neigen, ihnen einige wichtige Back-End-Probleme zu machen zu vernachlässigen wie Validierungen, Geschäftsregeln und Datenintegrität. Sie neigen dazu, diese Probleme ab, als „technische“ Fragen eher als Geschäftsentscheidungen zu schreiben.

Wenn auf der anderen Seite, sind Sie auf einem agiles Projekt arbeiten, wo es möglich ist, um Code schnell zu machen ändert (und Fehler schnell Rollback), können Sie in der Lage sein, einen evolutionären Prototyp zu machen mit allen Werken. Ihre Anwendung Architektur sollte geschmeidig und flexibel genug sein, um eine schnelle Änderung zu unterstützen (zum Beispiel nackt Objekte Designmuster oder Rails-Stil MVC). Es hilft, eine Entwicklungskultur zu haben, das Experimentieren fördert, und erkennt an, dass BDUF kein Prädiktor für Arbeit erfolgreich Software.

4 + 1 Ansichten sind nur gut für technische Menschen. Und nur, wenn sie genug interessiert sind. Denken Sie daran, die letzten Dutzend Mal Sie rang Use-Case-Diagramme mit dem Kunden zu diskutieren?

Das einzige, was ich fand, dass mit jedem arbeitet, ist in der Tat sich Bildschirme Ihrer Anwendung zeigt. Sie haben selbst gesagt: ein Bild sagt mehr als tausend Worte wert ist

.

Merkwürdigerweise gibt es zwei Ansätze, die für mich gearbeitet:

  1. Present für die Benutzer eine vollständige Bedienungsanleitung (noch bevor Entwicklung gestartet wird), OR
  2. Verwenden Sie Mockups, die nicht wie fertige App sieht: Diskutieren Hauptbildschirme von Ihnen erste App. Wenn Sie zufrieden sind, gehen Sie Mockups aber ein Szenario zu einem Zeitpunkt, zu diskutieren.

Für Option (1) Sie können, was Sie verwenden möchten, ist es nicht wirklich wichtig sind.

Für Option (2) es ist völlig in Ordnung mit Stift und Papier zu beginnen. Aber bald sind Sie besser dran, ein spezialisiertes Mockup Werkzeug (sobald Sie bearbeiten müssen, pflegen oder organisieren Sie Ihre Mockups)

beenden ich 2005 mein eigenes Mockup Werkzeug wieder nach oben zu schreiben, wurde es ziemlich beliebt: MockupScreens

Und hier ist die komplette Liste der Mockup Werkzeuge, die ich kenne. Viele von denen sind frei: http://c2.com/cgi/wiki?GuiPrototypingTools

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top