it-swarm-fr.com

Quel est le design détaillé? Quels sont les inconvénients de l'avantage en l'utilisant?

Je n'ai vraiment pas l'idée:

  1. Quelle est la conception détaillée.
  2. Pourquoi utiliser la conception détaillée.
  3. Avantages/inconvénients de l'utilisation de la conception détaillée.
  4. Toute méthode alternative autre que d'utiliser une conception détaillée.

Quelqu'un pourrait-il s'il vous plaît guider/m'expliquer?

7
Mafahir Fairoze

1) Lorsque la plupart des gens parlent de conception détaillée, ils se réfèrent à un processus appelé conception de haut niveau. En bref, lorsque vous pensez au problème, vous essayez de résoudre, vous commencez au plus haut niveau, puis travaillez-vous dans les détails. Cette approche fonctionne très bien lorsque vous avez une structure globale que vous souhaitez vivre dans l'intérieur. Au niveau macro, vous envisagez du nombre de machines nécessaires pour héberger votre candidature, quels services existants vous devrez utiliser, etc. Lorsque vous plongez plus profondément, vous envisagez d'utiliser des cas d'utilisation (ou des histoires d'utilisateurs si vous préférez cette terminologie) et la manipulation des erreurs (les cas d'utilisation ont à la fois des chemins de condition normale et d'erreur pour vous inquiéter). Lorsque vous allez encore plus loin dans les détails, vous consultez votre algorithme, vos transitions d'état, votre séquence logique et la manière dont les parties internes du code fonctionnent ensemble.

2) L'approche classique descendante de la conception détaillée est celle qui est enseignée avec la méthodologie de la "cascade", les guides de processus IEEE, les fournisseurs UML, les universités et le CMMI entre autres. Dans de nombreux processus lourds, ils vous ont écrit deux documents de conception. L'un est le diagramme architectural général (la conception de niveau supérieur). L'autre est la conception détaillée où vous allez plus loin dans le trou de la Rabit. Dans de nombreux cas, c'est la seule approche de la conception de nombreuses personnes. C'est une approche très logique et méthodique pour décomposer un problème de logiciel.

3) L'avantage principal est que vous avez identifié ce que les sections critiques vont probablement être. Si vous devrez commencer à travailler sur la manière dont votre logiciel utilisera un autre service existant, vous avez compilé votre liste de points d'intégration. Vous seriez capable de commencer à discuter avec les propriétaires de ces services afin de planifier votre intégration avec la manière de gérer des événements inattendus.

L'inconvénient principal est que plusieurs fois les gens vont trop loin dans le trou de la rabit et le document de conception prend sa propre vie. Bien qu'il soit avantageux d'avoir une vision globale et une architecture pour la manière dont une application fonctionnera, vous trouverez invariablement que vos réflexions initiales sur les détails de base étaient fausses. Lorsque cela se produit, le document de conception est négligé ou vous avez des équipes entières qui maintiennent le papier et ralentissent des progrès sur le travail.

4) J'ai déjà mentionné la conception descendante, alors il s'ensuit qu'il doit y avoir une approche "ascendante", non? Comme il s'avère, il y a. Essentiellement, l'approche "ascendante" est le processus de pensée central derrière le développement à tester et les méthodologies de conception continues. Essentiellement, les détails du code de travail commencent à conduire la conception de la manière dont les morceaux de code de travail coopèrent et interfacent les uns avec les autres. Avec TDD, vous avez des tests unitaires pour vous assurer que les détails se comportent correctement et continuent de valider votre conception. La conception continue nous enseigne que nous ne connaîtrons jamais vraiment les détails jusqu'à ce que le logiciel soit effectué. Par conséquent, pourquoi essayer de combattre le fait? Au lieu d'une grande phase de conception à l'avant, la conception est intégrée par incréments sur plusieurs itérations de conception/code et de test. C'est en fait un concept très libérateur qui vous permet de vous concentrer sur la résolution de problèmes.

En bout de ligne, il n'y a pas de réponse parfaite. Pour moi, je trouve un équilibre sain entre la conception descendante et ascendante fonctionne bien. Essentiellement, je prends toujours le temps de penser à la grande image. J'ai même cartographier un plan pour les idiomes d'interface utilisateur et mes meilleures idées pour sa conception. Cependant, je ne vais pas en détail parce que je sais que les détails vont changer. Fondamentalement, vous devez arrêter le processus de descente lorsque vous vous rendez dans des zones dont vous n'êtes pas sûr. Une fois que vous arrivez dans ces zones, commencez par l'approche ascendante. Cela vous permet d'essayer différentes choses, de vérifier avec le client si cela a du sens pour eux et continuez à s'améliorer avec le temps.

19
Berin Loritsch

Une conception détaillée vous permet d'évaluer les options de conception avant mise en œuvre eux. Il peut potentiellement vous faire économiser une tonne de travail inutile que vous auriez consacré au contraire à une implémentation profondément défectueuse en raison d'un choix de conception de haut niveau et devait être de largement réécrit.

3
Kris