Als Ingenieure "entwerfen" wir alle Artefakte (Gebäude, Programme, Schaltkreise, Moleküle ...). Das ist eine Aktivität (design-the-verb), die zu einem Ergebnis führt (design-the-noun).
Ich denke, wir sind uns alle einig, dass design-the-noun eine andere Einheit als das Artefakt selbst ist.
Eine Schlüsselaktivität im Softwaregeschäft (in der Tat in jedem Geschäft, in dem das resultierende Produktartefakt verbessert werden muss) ist das Verstehen des "Designs (das-Nomen)". Dennoch scheinen wir als Community bei der Aufzeichnung so gut wie völlig versagt zu haben, was sich daran zeigt, wie viel Aufwand die Leute betreiben, um Fakten über ihre Codebasis wiederzuentdecken. Bitten Sie jemanden, Ihnen das Design seines Codes zu zeigen und zu sehen, was Sie erhalten.
Ich stelle mir ein Design für Software vor mit:
- Eine explizite Spezifikation, was die Software tun soll und wie gut sie es tut
- Eine explizite Version des Codes (dieser Teil ist einfach, jeder hat ihn)
- Eine Erklärung, wie jeder Teil des Codes dazu dient, die Spezifikation zu erreichen (z. B. eine Beziehung zwischen Spezifikationsfragmenten und Codefragmenten).
- Eine Begründung , warum der Code so ist, wie er ist (z. B. warum eine bestimmte Wahl statt einer anderen)
Was NICHT ein Design ist, ist eine bestimmte Perspektive auf den Code. Zum Beispiel sind UML-Diagramme keine Entwürfe. Es handelt sich vielmehr um Eigenschaften, die Sie aus dem Code ableiten können, oder möglicherweise um Eigenschaften, die Sie aus dem Code ableiten möchten. In der Regel können Sie den Code jedoch nicht aus UML ableiten.
Warum gibt es nach mehr als 50 Jahren Erfahrung mit der Erstellung von Software keine regelmäßigen Möglichkeiten, dies auszudrücken? (Zögern Sie nicht, mir mit expliziten Beispielen zu widersprechen!)
Selbst wenn wir das tun, scheint der Großteil der Community so darauf ausgerichtet zu sein, "Code" zu erhalten, dass Design-the-Nomen sowieso verloren geht. (IMHO, bis Design zum Zweck der Konstruktion wird und das Artefakt aus dem Design extrahiert wird, werden wir das nicht umgehen.)
Was haben Sie als Mittel zur Aufnahme von Designs gesehen (in dem Sinne, wie ich es beschrieben habe)? Explizite Verweise auf Papiere wären gut. Warum waren Ihrer Meinung nach bestimmte und allgemeine Mittel nicht erfolgreich? Wie können wir das ändern?
[Ich habe meine eigenen Ideen , die den oben genannten Standpunkt mit Aufzählungszeichen verdeutlichen, aber ich bin an den Antworten anderer interessiert ... und es ist schwierig, mein Schema umzusetzen. [[Und vielleicht ist das das eigentliche Problem: -]]
EDIT 2011/1/3: Einer der Antwort-Threads weist darauf hin, dass "Dokumentation" (vermutlich in Textform, insbesondere nicht formal) angemessen sein könnte. Ich sollte wohl klarstellen, dass ich das nicht glaube. CASE-Tools tauchten ab den 80er Jahren auf, aber die frühen Tools haben meist nur Pixel für die Diagramme von allem erfasst, was Sie gezeichnet haben. Die Tools waren zwar wohl kommerziell erfolgreich, aber nicht sehr hilfreich. Eine wichtige Erkenntnis war, dass wenn die zusätzlichen "Design" -Artefakte nicht formal interpretierbar sind, Sie keine ernsthafte Werkzeughilfe erhalten können. Ich glaube, die gleiche Erkenntnis gilt für jede langfristig nützliche Form der Design-Erfassung: Wenn sie keine formale Struktur aufweist, ist sie nicht wirklich nützlich. Textdokumente bestehen diesen Test so gut wie nicht.