web-dev-qa-db-fra.com

Quoi planifier avant de commencer le développement sur un projet?

Disons que j'ai reçu les spécifications d'un projet d'un client, et maintenant il est temps de commencer à le développer. Normalement, je viens de commencer avec le premier module (généralement l'enregistrement de l'utilisateur), puis passez d'un module à l'autre. Je prévois seulement dans ma tête juste avant que je sois sur le point de commencer sur un module comment il va travailler, mais il n'y a aucune planification avant cela.

Cependant, je pense que ce serait mieux si je suis allé sur les spécifications et que je prévoyais comment le système allait travailler avant que je l'a codé, par exemple quels sont les composants principaux, comment ils vont interagir, etc. Je suis juste Je ne sais pas exactement ce que je devrais planifier.

Donner une meilleure idée de ce que je demande, comment devrais-je

a) diviser le projet en composants,

b) Planifiez leurs interactions, E.g Devrais-je faire des diagrammes de classe, écrire des tests d'unité, etc.?

Des idées?

17
Click Upvote

Lorsque vous avez le privilège de commencer un nouveau projet, vous avez une toile vierge - qui est à la fois passionnante et décourageante en même temps. Je travaille dans des itérations, et c'est comme ça que je divise le travail:

  • Commencez avec les objectifs du projet. Les objectifs sont nécessairement le plus vague, mais vous aide à vous concentrer sur ce que le client ou l'utilisateur entend faire avec le logiciel. À la fin de la journée, vous voulez satisfaire ces objectifs - même si cela signifie laisser tomber des caractéristiques vraiment cool.
  • Ensuite, je commence à briser l'application dans ses sous-domaines. Il y a probablement une centaine de façons différentes de faire cela, c'est pourquoi nous commençons par les objectifs du projet. Nous voulons rompre l'application dans certains sous-systèmes connexes qui soutiennent ces objectifs. Cela nous aide à nous concentrer sur la tâche suivante.
  • Identifier comment et lorsque les sous-systèmes doivent interagir. Nous ne traitons pas les détails, juste des informations de haut niveau pour vous assurer que nous avons un système intégré de sous-systèmes. Vous avez besoin d'une idée générale de cela afin que vous puissiez enfoncer les détails qui soutient les objectifs généraux du projet.
  • Seulement des détails de l'offre pour le sous-système que je travaille actuellement (similaire à votre stratégie actuelle). Je sais déjà comment ce sous-système doit interagir avec d'autres sous-systèmes, mais je devrai peut-être élaborer quelques alternatives afin qu'elle ait le plus de sens. Chaque sous-système est séparé par une interface, je peux donc ajuster la mise en œuvre autant que possible sans casser le système dans son ensemble.
  • Examinez comment les choses sont implémentées dans mon sous-système actuel par rapport à la manière dont elle est mise en œuvre dans d'autres sous-systèmes. Chaque approche qui n'est pas cohérente est quelque chose que l'utilisateur doit apprendre. Ça va bien si nous parlons d'un nouveau concept. Pour l'amour de la convivialité, nous ne voulons pas 5 façons différentes de supprimer des informations présentes simplement parce que nous étions paresseux. Ré-utiliser les mêmes éléments d'interface utilisateur est le moyen le plus rapide de rendre l'application plus intuitive. Apprendre trois concepts est beaucoup plus facile que d'apprendre 20.

Essentiellement, cette approche de définir progressivement un projet de niveau très élevé à une conception plus détaillée m'a bien servi. Même les interactions entre les sous-systèmes sont affinées lorsque vous essayez réellement de les mettre en œuvre. C'est une bonne chose.

24
Berin Loritsch

Je pense que ce serait mieux si je suis allé sur les spécifications

Droit. Bonne idée.

prévu comment le système allait fonctionner avant que je le codie.

Bon. Faire plus de cela.

quels sont les composants principaux,

Excellent.

comment ils vont interagir,

Correct.

Je ne suis tout simplement pas sûr de ce que je devrais planifier.

Comment pouvez-vous ne pas être sûr lorsque vous avez déjà répertorié un tas de choses? Si ce sont les choses qui vous concernent, pourquoi ne pas vous concentrer sur ces choses?

Lisez le modèle 4 + 1 Voir le modèle: http://fr.wikipedia.org/wiki/4%2b1_architectural_view_model

Lisez sur la structure de Zachman: http://fr.wikipedia.org/wiki/zachman_framework

C'est ce que vous devez planifier.

comment dois-je) diviser le projet en composants,

Utilisez des modèles de conception largement adoptés pour d'autres projets similaires.

En cas de doute, lisez les plans J2EE pour des idées.

http://www.oracle.com/technetwork/java/javae/blueprint/index.html

comment devrais-je planifier leurs interactions, E.g Devrais-je faire des diagrammes de classe, écrire des tests d'unité, etc.?

Oui. Bonnes idées, tous.

8
S.Lott

Tente la plus importante à faire: Passez en revue les spécifications, interagissez avec le client pour obtenir des spécifications plus raffinées.

Les exigences sont sans aucun doute incomplètes, vagues ou incorrectes. La plus grande perte de temps fait la mauvaise chose. Les clients ne sont pas des livraiseurs de logiciels professionnels et ne peuvent pas être bons pour développer un bon ensemble d'exigences.

Donc, vous devriez examiner les spécifications, interroger le client et savoir si c'est ce qu'il ait vraiment besoin et veut vraiment, et peut se permettre, etc.

Développer des cas de test/utilisation et examinez avec le client. Si une exigence n'est pas testable, jetez-la.

Développez la conception et assurez-vous que toutes les pièces fonctionnent correctement que ce serait en théorie faire ce dont vous avez besoin.

Développer un prototype d'architecture qui teste toute la technologie à utiliser dans chaque couche mais ignore la fonctionnalité. Vous testez l'architecture et non la spécification fonctionnelle. Avoir la mauvaise architecture signifie que vous devez tout réécrire, alors que la bonne architecture est importante. Assurez-vous qu'il puisse répondre à vos besoins pour la rapidité, l'efficacité, la sécurité, etc.

4
Larry Watanabe

Vous voulez absolument avoir une conception en place avant de commencer à coder.

Une fois que vous avez cela, je préfère généralement effectuer une première phase d'architecture d'abord afin de définir la manière dont vos couches d'applications s'emboîtent. Cela inclurait des trucs de backbone comme la sécurité et la journalisation.

Ensuite, je construis 1 de haut en bas pour que vous ayez mis en œuvre quelque chose de complètement.

Ensuite, passez de là.

3
ozz

tout

Planifiez tout cela, il est plus facile de le modifier sur papier qu'une seule fois, il est déjà codé, vous obtenez une bonne base de documentation et de nombreux autres avantages.

0
Tim