Je suis intéressé à commencer à concevoir correctement mon logiciel sur papier avant de commencer le codage. Quelle est l'approche standard pour cela? P>
Je pense à quelque chose dans les lignes d'UML, mais je pense que c'est un peu surtomuci pour un projet à un homme. P>
Quels sont certains des choses que les professionnels disent de mieux faire pour développer des projets de hobby? P>
Anticiper les votes à fermer comme d'habitude, ce n'est pas argumentatif. C'est une réponse claire, et je m'attends à ce que quelque chose soit établi. : P em> p>
13 Réponses :
Il n'y a rien de tel qu'un mini-bloc-notes à l'intérieur d'une poche de veste, à l'esprit déchargée dès que possible, je bascule personnellement entre mini-UML et points de points. Rapide, simple, toujours accessible. p>
Edit: Et j'ai toujours une page / zone dédiée à des cas d'utilisation et des actions spécifiques. Cela me permet de revenir et de vérifier si le système peut gérer chacun de ceux-ci. P>
points de points? Qu'est-ce que c'est?
@James: Par points de points, je suppose que Therac signifie des listes de points, avec un point ou une balle au début. Comme le look par défaut d'une liste de types HTML
Oui, une liste avec des points à côté de celui-ci :) Breaking Problème / Application dans "Zones" et séparer davantage avec l'indentation (listes de listes)
@James deville: généralement appelé "points de balle", je crois.
Les points de points sont généralement suivis de lignes de mots.
Je les utilise avec des groupes de lettres délimités spatiales
Certaines de mes "astuces": p>
i Utilisez d'abord Mind-Mapping (E.G. MindMeister). P> LI>
Ensuite, je trouve les "taches difficiles" probables et faites un prototypage léger p> li> ul>
Pour ce genre de chose, je dessine généralement l'UIS de base, graphique (cases sur papier) un modèle de domaine et un schéma de base de données. Je commence toujours sur papier, puis si je pense que c'est nécessaire, j'exporte vers Visio / Basalmiq. P>
J'essaie de diviser le problème généralement en deux problèmes différents: p>
Par exemple: lorsque vous recherchez la voiture la moins chère à l'intérieur d'un ensemble de voitures possibles, j'identifierais «le moins cher» comme quelque chose qui veut probablement être une fonction distincte, car je souhaite peut-être modifier les conditions ultérieurement ou l'appliquer. aux VUSS aussi, et "voiture" et "ensemble de voitures" sonne comme de bons candidats aux cours dont j'avais besoin dans le domaine du problème. P>
Établir ceux: P>
Finalement, je passe à partir de ces relations avec pseudo-code et de petits prototypes à jouer et à apprendre quelles autres contraintes inconnues apparaissent dans la description du problème. P>
Je trouve l'échéance de l'interface utilisateur d'abord est très utile pour déterminer exactement quelle fonctionnalité est requise. Ensuite, j'aime faire une liste pour chaque élément UI et ce que cela devrait faire. Une fois que cela se fait, j'écris généralement un schéma de base de données ... p>
Ceci est l'ordre de la façon dont je fais des choses: p>
1) Écrivez un pseudocode au crayon. Ceci où vous pouvez réfléchir à des idées avec vous-même et d'autres si nécessaire. P>
2) Écrivez l'algorithme décrivant les objectifs et comment vous allez accomplir ces objectifs. P>
3) Si le projet est petit, simple et clair pour vous, vous pouvez utiliser cette étape. D'autre, élaborer un organigramme de la candidature. P>
4) Enfin, commencez à coder à l'aide de votre algorithme et de votre carte d'écoulement comme guide. P>
Cela dépend en grande partie du nombre de choses et de la plus importante est ce que vous faites. p>
1) La première étape pour moi est de déclarer ce que vous faites. Son, simple? Parfois n'est pas. Énumérez ce que vous voulez que le programme fasse. Liste Qu'est-ce que le must-have, ce qui est agréable à avoir et qu'est-ce que ça va (pas beaucoup de peine à inclure). P>
2) La deuxième étape consiste à (à votre mieux) identifier quel est le lien le plus faible pour le succès de votre projet. Si vous écrivez WebDB, ce que vous devriez vous inquiéter, c'est une interface utilisateur Web (transition d'une page à une autre) et le modèle de données. Si vous écrivez un jeu, les règles du jeu seront importantes. Ou si le jeu est hautement interfactif, vous devriez penser à l'interaction du flux du jeu. P>
Qu'est-ce que vous avez identifié ici est ce que vous devriez passer du temps à la concevoir sur du papier. P>
Étant donné que l'identification de ce qui nécessitera probablement une expérience et que vous ne pourrez peut-être pas (si vous le faites, vous saurez déjà quoi faire, droit :-d), vous pouvez revenir à votre revue de l'examen de temps en temps comme progrès de projet. p>
3) Pour éviter le sur-ingénierie, Concentrez-vous sur la modélisation de la compréhension que vous opposerez à la modélisation en tant que documentation B>. p>
4) Une fois que vous avez compris plus, essayez de créer un petit programme pour vérifier si cela est possible. Si vous, identifiez d'autres parties critiques mais risquées. P>
5) Commencez petit mais pensez toujours à l'extension. Pour moi, c'est bien de penser grand mais c'est risqué de faire de gros. P>
Ce sont ce que je fais. J'espère que cela vous donnera une idée. :-D p>
À mon avis, vous devriez rester avec votre objectif final, dans la plupart des cas, l'objectif final est de fournir votre résultat à votre client, votre patron, votre collègue. p>
Donc, tout ce que vous avez à faire devrait être cohérent avec le but. libérez-le et livrez-le. P>
Je ne pense pas que la conception sur un papier est une bonne idée, cela vous a rendu trop paresseux pour faire du travail pratique. En fait, la plupart des projets étaient trop tard pour entrer dans la phase de codage, de nombreux designers stupides ou architecte affirment que les détails n'existaient jamais dans la salle de guerre pendant quelques semaines. ils ont retardé le projet. P>
En réalité, vous devriez apprendre plus de réflexions sur le développement axé sur les tests, cela ne signifie pas que vous devriez suivre complètement le mode, c'est une pensée pour vous apprendre à vous engager efficacement pour livrer les résultats. P>
Enfin, je pense que le test est le moyen le plus efficace de garder votre engagement à fournir des résultats qualifiés aux clients. P>
Pour un programme simple, je vais utiliser du papier et un crayon pour dessiner une esquisse de son interface utilisateur, faites quelques annotations dessus. Cela peut m'aider à clarifier mon idée et à confirmer ma conception. P>
Si le programme est plus grand (plus comme un produit complet, vous pourriez dire), vous devrez peut-être collecter des commentaires des autres, puisque la pensée d'un homme ne peut pas tout couvrir. La croquis dessinée à la main fonctionne toujours, invitez plus de personnes à l'examiner et vous donner quelques suggestions, vous pouvez donc polir votre design beaucoup. Toutefois, si votre ami n'est pas entouré, vous devrez peut-être faxer le croquis papaer (ou peut-être numériser le croquis de papier et envoyer par courrier électronique). P>
Il existe des outils qui peuvent vous aider à créer un prototype d'interface utilisateur, certains d'entre eux vous permettent même de lancer la simulation de l'interface utilisateur (comme Axare et Forei), qui seront très utiles pour collecter des commentaires des autres. P>
Je suis un grand fan d'utilisation de Sketchflow pour créer des filtres filaires et des maxes maquettes qui aide réellement le processus de conception sur tous les applications Web / Desktop. Vous pouvez le voir et le toucher et prouver que vos idées fonctionneront réellement. J'aime aussi la cartographie de l'esprit (MindMeister) mentionné autre où. Dernièrement, j'essaie d'éviter les spécifications de BDUF (Big Design Up Front) ces jours-ci! P>
Pour les petits projets de code J'aime simplement entrer et coder une version 0, créez toutes les classes que je pense que je vais avoir besoin et essayer de les amener quelque peu à travailler ensemble. J'arrête ensuite et recommence complètement. Cela crée généralement un projet bien meilleur. p>
J'utiliserais UML non parce que c'est la norme Industry Defacto, mais parce que cela vous aide à organiser et à documenter vos pensées lorsque vous explorez un domaine (personnel ou professionnel). Un outil gratuit est argouml. P>
Je me moquerais d'une autre aide pour déterminer et communiquer ce que vous pensez faire dans votre système. Un excellent libre est une maquette Balsamiq. P>
Et je me concentrerais d'abord sur le comportement et de la fin des données. Voir les écrits de Rebecca Wirfs-Brock. P>
Bonne chance! Mark p>
Le logiciel est comme l'art, en ce sens qu'il est créatif et il existe des possibilités illimitées de la manière de résoudre un problème. En tant que programmeurs, nous entrons souvent dans le code avant de concevoir. La conception commence avant même de regarder des solutions techniques. Ce sont des mesures à prendre en premier pour aider à limiter la portée de la conception. P>
J'ai écrit un message de blog qui les décrit plus en détail en utilisant des exemples de champs non conventionnels, mais s'applique bien au logiciel: P>
Mettre dans la communauté wiki alors ...
En tant que remarque générale: ne vous attendez pas à ce que la conception de votre application entière au départ fonctionne. Il va plutôt s'agir d'un processus itératif où vous analysez vos exigences, concevez-la et implémentez un peu avant de revenir à l'analyse ou à la conception des exigences.