En tant qu'ingénieurs, nous "concevons" tous des artefacts (bâtiments, programmes, circuits, molécules ...). C'est une activité (conception-le-verbe) qui produit une sorte de résultat (conception-le-nom).
Je pense que nous sommes tous d'accord pour dire que design-the-noun est une entité différente de l'artefact lui-même.
Une activité clé dans le secteur des logiciels (en effet, dans toute entreprise où l'artefact produit résultant doit être amélioré) est de comprendre la «conception (le-nom)». Pourtant, nous semblons, en tant que communauté, être à peu près des échecs complets à l'enregistrer, comme en témoigne la quantité d'efforts que les gens mettent pour redécouvrir des faits sur leur base de code. Demandez à quelqu'un de vous montrer la conception de son code et de voir ce que vous obtenez.
Je pense qu'une conception de logiciel a:
- Une spécification explicite pour ce que le logiciel est censé faire et dans quelle mesure il le fait
- Une version explicite du code (cette partie est facile, tout le monde l'a)
- Une explication de la façon dont chaque partie du code sert à atteindre la spécification (par exemple, une relation entre les fragments de spécification et les fragments de code)
- Une justification pour expliquer pourquoi le code est tel qu'il est (par exemple, pourquoi un choix particulier plutôt qu'un autre)
Ce qui n'est PAS une conception est une perspective particulière sur le code. Par exemple [ne pas choisir spécifiquement] les diagrammes UML ne sont pas des conceptions. Ce sont plutôt des propriétés que vous pouvez dériver du code, ou sans doute, des propriétés que vous souhaitez que vous puissiez dériver du code. Mais en règle générale, vous ne pouvez pas dériver le code d'UML.
Pourquoi est-ce qu'après plus de 50 ans de construction de logiciels, pourquoi n'avons-nous pas des moyens réguliers d'exprimer cela? (N'hésitez pas à me contredire avec des exemples explicites!)
Même si nous le faisons, la plupart de la communauté semble tellement concentrée sur l'obtention de "code" que design-the-noun se perd de toute façon. (À mon humble avis, jusqu'à ce que la conception devienne le but de l'ingénierie, avec l'artefact extrait de la conception, nous n'allons pas contourner cela).
Qu'avez-vous vu comme moyen d'enregistrer des dessins (dans le sens où je l'ai décrit)? Des références explicites aux articles seraient bien. Pourquoi pensez-vous que les moyens spécifiques et généraux n'ont pas réussi? Comment pouvons-nous changer ceci?
[J'ai mes propres idées qui étoffent le point de vue ci-dessus, mais je suis intéressé par les réponses des autres ... et c'est difficile de mettre en œuvre mon schéma [[et c'est peut-être le vrai problème: -]]]
EDIT 2011/1/3: L'un des fils de réponse laisse entendre que la «documentation» (vraisemblablement textuelle, en particulier non formelle) pourrait être adéquate. Je suppose que je devrais préciser que je ne le crois pas. Les outils CASE sont apparus sur la scène à partir des années 80, mais les premiers outils ont principalement capturé des pixels pour les diagrammes de tout ce que vous avez dessiné; Bien que les outils aient sans doute réussi sur le plan commercial, ils n'étaient vraiment pas très utiles. Un aperçu clé était que si les artefacts de "conception" supplémentaires ne sont pas formellement interprétables, vous ne pouvez pas obtenir d'aide sérieuse sur les outils. Je crois que la même idée s'applique à toute forme utile de capture de conception à long terme: si elle n'a pas de structure formelle, elle ne sera pas vraiment utile. Les documents texte échouent à peu près à ce test.