33 votes

Combien faut-il de conception avant qu'un codage ait lieu?

Je suis actuellement à l'école et pour mon Projet Principal que nous devons passer 1/3, juste faire des diagrammes UML et autres fastidieux de la documentation pour notre projet.

Cela implique beaucoup de la conception et de la planification pour l'avenir des problèmes qui doivent encore se produire.

Pour une raison quelconque, cela semble être de favoriser la conception. J'ai passé la dernière heure à écrire des trucs comme ça.

"Se connecter à un Serveur -- connexion à un serveur. Condition préalable: Aucune connexion au serveur existe. Postcondition--Connexion existe maintenant".

Je préfère être de codage que de faire cette bêtise. Je me rends compte de ce travail de conception a sa place mais de combien? Je sais que ce n'est pas l'épreuve des balles de preuves pour contre la conception de beaucoup dans un outil comme l'Entreprise Arc, mais j'y vais.

Mon professeur qui enseigne l'objet a conçu le diable hors de son projet. Chaque chose qui pourrait éventuellement se produire dans l'application a été documentée. Au lieu de ce codage lui-même, il se sert de cette "immaculée de la documentation" à la ferme du travail à l'étranger et les étudiants au cours de l'été.

L'application qui en a résulté de tout cela, la conception a été TERRIBLE. C'est l'une des pires applications que j'ai jamais vu et n'importe qui pourrait vous raconter son été surdimensionné.

Ce qui ne l'expérimentés codeur de la communauté ont à dire à propos de ce sujet? Ne concevant une grande partie avant le projet, ont tendance à faire de mauvais programmes en forçant les décisions prises au début simplement parce que le "design docs dire"?

Merci pour toute réflexion que vous les gars pourrait fournir. Si je savais que c'était pour une bonne raison, je me sentirais mieux "perdre" mon temps à le faire. Je suis plus que disposé à faire un travail de conception en amont mais je me sens comme mon professeur attend beaucoup de l'ingénierie de décisions à prendre avant le code est écrit.

EDIT: Intéressant article de slashdot sur ce sujet. http://books.slashdot.org/story/09/11/16/1448204/Becoming-Agile

43voto

Breton Points 9625

Je ne veux pas sortir comme un disque rayé (j'ai été en utilisant cette citation beaucoup ces derniers temps), mais cette citation de John Gall est vraiment pertinente pour un grand nombre d'aspects sur les logiciels de construction. (même si il parlait de systèmes biologiques)

wikipédia: Gall Loi

"Un système complexe qui fonctionne est toujours trouvés à avoir évolué à partir d'un système simple qui a fonctionné. L'inverse de la proposition semble aussi être vrai: Un système complexe conçu à partir de zéro ne fonctionne jamais et ne peut pas être fait au travail. Vous devrez recommencer au début avec un système simple."

C'est, si vous êtes de la conception, de la conception de quelque chose de petit et réalisables au premier abord. Un énorme complexe de front de la conception est vouée à l'échec.

Vous pouvez s'attaquer à des tâches immenses par les décomposer en parties plus petites. Construire la plus petite chose possible, vous pouvez penser que peut-travail. Ne pas résoudre l'ensemble du problème à la fois.

Une des raisons pour lesquelles un grand complexe de conception pourrait être vouée à l'échec, c'est que le problème c'est la résolution pourrait être un méchant problème, ou une autre classe de problèmes insolubles où les sous-composantes du problème sont chaque mutuellement exclusifs. Ceux qui sont vraiment difficiles à détecter à l'avant sans une sorte de travail d'expériences pour agir à titre de preuve de la solvabilité d'un subproblem.

La plupart des éléments de preuve que j'ai vu sur le sujet semblent prédire que plus l'amont de la conception, plus il a de chance de dépasser votre budget et sans doute ne parviennent pas à résoudre tous les problèmes. En bref, le design est nécessaire, mais votre objectif doit être de le garder aussi simple que possible, et de garder à l'esprit que vos 20 premiers projets seront probablement pas due à des facteurs que vous exécutez dans pendant la phase de codage.

15voto

Charles Bretana Points 59899

C'est très subjectif, mais à mon humble avis, juste assez pour faire une bonne deviner ce qu'est la appropriée dans l'ensemble de l'architecture de système devrait ressembler, mais le design ne doit pas s'arrêter, (ou même ralentir sensiblement) à ce point, il devrait continuer tout au long du développement, et le développement de refactoring devraient être encouragés et initié souvent que la poursuite de la conception illumine les incohérences entre le modèle du domaine de l'analyse, la conception, et le modèle de développement. Les concepts (et les outils) votre professeur est d'enseigner à propos sera très précieuse dans le processus de design si vous faites tout votre conception avant de développement, ou que le développement progresse.

Ce que votre professsor est en train de faire des sons comme un cas classique de la Cascade de la Conception de Logiciel Cycle de Vie (SDLC) processus. Son principal défaut n'est pas que la phase de construction (codage) est retardée, mais la conception plus ou moins s'arrête lorsque le codage commence (à cause des obstacles aux changements que la Chute d'eau de la méthodologie crée).

Certains humoristique prend sur ce qui peut être trouvé ici.

15voto

Rob Wells Points 21714

G'day,

Cela dépend beaucoup de la nature du projet.

J'ai travaillé sur des projets où le nouveau système a été utilisé pour remplacer un système existant et la grande majorité du temps a été passé à réunir le comportement du système existant pour établir des exigences.

Cette phase, puis la phase de conception, a duré près de dix-huit mois. Le codage a pris environ quatre mois en termes de calendrier. Dans l'effort, il l'était beaucoup plus, mais le résultat final est un système stable que le client a aimé.

Oh, en passant, c'était un remplacement d'un système de contrôle aérien, un allemand de l'air système de contrôle de trafic, donc, pour eux, de mettre ça en live après seulement un mois de la période de trois mois prévue de la période d'évaluation a été tout un exploit que je suis incroyablement fier de.

Je pense que le gros de l'évaluation et de la phase de conception de ce projet a été la meilleure approche.

Edit: Le système a été, à Karlsruhe, à la en route contrôle de la circulation aérienne centre géré par le DFS, la version allemande de la LGFP. Le radar existant système de traitement allait être remplacé par Raytheon cependant la livraison du système principal a été retardée. Ainsi, le DFS a décidé de mettre à niveau les postes de contrôleur à ceux du nouveau système, mais de les attacher à l'existant ATC système de traitement temporairement. D'où le nom du projet de Karlsruhe AdvancedDisplay Système ou KADS. Une complètement nouvelle aile a été construite à l'arrière de l'existant ATC centre de l'ensemble de la salle de contrôle a été remplacé.

Il y avait un système de collecte des besoins de la phase où l'équipe était sur place en travaillant avec les ingénieurs en logiciel qui avaient construit le système existant.

Ils ont documenté:

  • tous les messages entre les radars existants du système de traitement et les postes de contrôleur
  • tous les comportements de l'existant postes de contrôleur, les écrans tactiles, claviers, caractéristiques d'affichage, etc.

Ces exigences ont ensuite signé par le DFS et la phase de conception a commencé. Cela a duré environ un mois alors que plusieurs parties ont été prototypés et la meilleure des solutions identifiées. En parallèle avec la mise en œuvre a été un essai de la phase de conception où toutes les conditions requises ont été tracées par le code associé à un test.

Ensuite, le codage et les tests ont débuté avec plusieurs livraisons, env. dix, en fait, chacun associé à un test et une phase d'acceptation. Une Mêlée approche avant il avait un nom en qui nous avons sélectionné ce que les morceaux de travail pour aller dans chaque "version" phase au début de la phase. La livraison finale est venu à temps et selon le budget.

Le DFS destiné à exécuter le nouveau système en parallèle avec le système existant pour trois mois afin qu'ils puissent évaluer les performances et la stabilité du nouveau système. Transférer complètement sur le nouveau système a été un "tout ou rien" de la proposition. Ils avaient physiquement marteau-piqueur le vieux radar lignes à supprimer l'ancien téléphone de la vitesse de commutateur et il n'y a pas de retour en arrière après.

Donc pour l'allemand de service de navigation aérienne tellement heureux avec le système qu'ils le feraient, c'était une grande tape dans le dos pour nous!

BTW Le numéro de l'ancien logiciel d'ingénieurs qui sont venus au cours de la phase de définition des besoins et dit que nous n'étions pas de travail parce qu'il n'y a pas de code écrit était assez drôle. Certainement la preuve d'une ancienne ", le siège du pantalon" qui était évident quand vous avez regardé une partie du code. (-:

HTH

cheers,

7voto

mfeingold Points 5236

C'est donc le dernier siècle, de façon académique.

Ce qui se passe généralement, au moins dans mon expérience est que, peu importe comment dur vous travaillez sur le design, vous manquez quelque chose, certains limitation technique de lien entre les différentes parties du système. Aussi le point de départ de la conception - les exigences en matière est toujours loin d'être figé dans la pierre.

Plus généralement pour valider votre conception, vous avez réellement besoin de faire un peu de codage - prototypes et autres. Les nouvelles approches des processus de développement agile pour emmener aussi loin que de dire que vous seulement besoin d'autant la conception que nécessaire pour commencer à coder.

Ce n'est pas à dire que vous pouvez vous précipiter dans le codage sans compréhension claire de l'endroit où vous allez, mais trop c'est vraiment mauvais

6voto

o.k.w Points 15721

Académique des formations habituellement (autant que je sache) mettent beaucoup l'accent sur la conception et des tas d'autres trucs avant la production réelle de codage de démarrage (pas y compris le prototypage).

Il est logique, vous n'avez pas le droit (ou presque) pour commencer, il vous sera vissé.

Cependant, en pratique, peu de personnes ont le luxe du temps et des ressources. Pire, c'est, non-tech les gars (surtout ceux-là) qui veulent voir les choses (UI, prototype) pour vraiment se sentir sécurisé qu'il y a des progrès réalisés.

Pour moi, c'est une question d'équilibre, différent de l'organisation aura à élaborer leur propre ligne d'en sortir avec les meilleures pratiques. Varie également en fonction de la nature des projets/ressources etc etc.

Concernant UML, voici quelques messages intéressants sur DONC:
Est UML pratique?
Est UML toujours vu comme un moyen viable de documentation d'un logiciel de conception?
Dois-je utiliser UML lors de la conception d'un nouveau code et les algorithmes?
Si vous n'avez pas la conception en UML, alors que faites-vous dans la conception?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X