Méthodologies / outils pour le développement par vous-même [fermé]

10

Supposons que vous deviez développer un logiciel de taille moyenne, entièrement par vous-même. Comme si c'était un projet personnel que vous souhaitez réaliser.

Quelles méthodologies / outils utiliseriez-vous pour définir ce qui doit être développé, appris et avoir une idée globale de ce qu'est également le système dans ses détails?

Fondamentalement, pour vous maintenir sur la bonne voie et ne pas vous perdre en chemin.

Cassio
la source
3
Crayon, papier et mon cerveau. Avoir un tableau blanc aide. Sérieusement, une grande partie de mon travail de conception se fait directement dans l'IDE. Vous avez une question spécifique, basée sur un problème auquel vous êtes actuellement confronté? Cela nous aiderait à répondre à la question si nous savions précisément quel problème vous essayez de résoudre.
Robert Harvey
@RobertHarvey haha ​​C'est très vrai. Eh bien, en quelque sorte. Je développe une idée que j'avais, un projet personnel. C'est juste que le logiciel est plus gros que ce que j'imaginais et il y a des choses que je devrai encore apprendre comment cela fonctionne et ensuite trouver comment développer cela.
Cassio
1
@RobertHarvey Les principaux problèmes sont probablement le manque de réflexion sur les détails, le suivi de ce qui doit être fait et une vue sur le système dans son ensemble.
Cassio
2
Je suis certain à 99,9% que nous avons couvert cela dans une autre question ou deux, mais je ne les trouve pas pour le moment.
Adam Lear
4
J'essaie toujours de me perdre en chemin. C'est un chemin rapide vers l'apprentissage.
Joel Etherton

Réponses:

5

Habituellement, j'utilise simplement Mercurial, si je veux une fonctionnalité, je l'ajoute simplement et si je n'en veux plus, je la supprime simplement. De plus, j'essaie de bien écrire mes commentaires de commit pour ne pas me perdre.

eiefai
la source
Yup - Mercurial est l'un de ces outils qui semblent avoir été fabriqués par Apple :) Simple mais puissant, beau mais utile ...
Rook
4

Il peut facilement se développer hors de la portée de votre attention. Pas la durée , la largeur .

Il est difficile de considérer trop d'éléments à la fois .

Et puis ... ça devient une montagne russe de régression .
Tout ce que vous faites rompt les choses précédentes, et revenir en arrière n'aide pas.

Pour éviter cela, vous devez tester agressivement la régression .
Automatiquement. (Vous ne pouvez pas faire ça autrement et rester sain d'esprit)

Les tests ajouteront une tension difficile à vos énergies.

Si le projet est entièrement sur l'interface utilisateur ... vous êtes probablement toast:

  • Le test de l'interface utilisateur est difficile .
  • Le test automatisé de l'interface utilisateur est ... toujours difficile .

Idée de dernière minute non testée pour les projets axés sur l'interface utilisateur
Inscrivez un parent avec du temps libre et un goût de cliquer sur sa souris en tant que testeur d'interface utilisateur.
Je pense "adolescent" ici.

Autres issues:

  • Cela prendra une éternité .
  • Vous affronterez le bloc de l'écrivain .
    (Cela n'existe pas en tant que condition, c'est une mauvaise étiquette populaire que les gens attachent à leur manque de discipline )

Si vous êtes habitué et aimez une sorte de contrôle de version , utilisez-le.
Commencer à en apprendre un maintenant vous distraira .

La représentation graphique de vos idées, comme déjà souligné, peut vous aider.

Je l' ai utilisé Freemind , CMaps , XMind , yEd , graphviz et ... autre chose.

XMind est le moins inutile:

  • très rapide pour insérer les données dans
  • dispositions automatiques
  • essayant strictement de vous faire rester sur le sujet
  • très bon pour prendre des notes pendant une leçon (j'aimerais tellement l' avoir au collège )
  • encore difficile à utiliser tout en prenant une décision sur quelque chose que vous ne connaissez pas.

Un crayon et un cahier obtiennent toujours de bons résultats dans mon top dix:

  • Je scanne plusieurs de mes notes
  • Je fais beaucoup de petits dessins explicatifs.

    • (Si vous pensez qu'avec des images, vous ne trouverez peut-être jamais un outil de brainstorming satisfaisant)

En dernier recours, vous pouvez toujours préparer des powerpoints pour votre propre consommation :)

ZJR
la source
+1. Cependant, avez-vous des suggestions sur la chose «vous faire une opinion sur quelque chose que vous n'avez pas clairement compris»?
Cassio
@Cassio Je bascule entre xmind et crayon + carnet de croquis, fais des listes pointues dans libreoffice, note des exemples et teste une implémentation approximative. Il est un peu fastidieux processus, mais vous devez supprimer loin une ligne de pensée improductive pour arriver à quelque chose qui se sent bien. (PS: froisser le papier avant de le jeter est cathartique)
ZJR
1
@ZJR En effet. Parfois, j'avais juste peur d'écrire des choses dont je n'avais pas besoin et de perdre du temps, mais maintenant je vois que c'est ainsi que le processus fonctionne. Au départ, nous écrivons des trucs inutiles mais nous nous améliorons avec le temps. :) Merci!
Cassio
3

Programmation alphabétisée.

Le praticien de la programmation lettrée peut être considéré comme un essayiste, dont la principale préoccupation est l'exposition et l'excellence du style. Un tel auteur, avec le thésaurus en main, choisit soigneusement les noms des variables et explique ce que signifie chaque variable. Il cherche un programme compréhensible parce que ses concepts ont été introduits dans un ordre qui convient le mieux à la compréhension humaine, en utilisant un mélange de méthodes formelles et informelles qui se renforcent mutuellement.

Si vous écrivez un article (ou un livre ou un rapport ou un document) sur votre projet, alors vous avez tendance à rester sur la tâche.

Commencez par un aperçu de ce que vous faites: aperçu du cas d'utilisation, version 1, version 2, version n. Notez un résumé des cas d'utilisation. Donnez-leur la priorité. Obtenez-les dans les sprints et les versions.

Chaque version a une vue de cas d'utilisation, une vue logique, une vue de traitement, une vue de composant et une vue de déploiement. Pour le sprint, détaillez les cas d'utilisation. Publiez le document HTML pour montrer ce que vous allez faire. Après avoir détaillé les cas d'utilisation du sprint, écrivez le modèle logique. Écrivez du code pour prendre en charge cela. Rédiger la documentation de traitement. Écrivez du code pour le prendre en charge. Créez des modules. Écrivez la documentation de la vue des composants. Écrivez les tests et la documentation à l'appui. Publiez les résultats du sprint en tant que document HTML.

Répétez l'opération pour chaque sprint. Vérifiez et modifiez votre document de temps en temps.

Il y a beaucoup, beaucoup d'outils de programmation alphabétisés. Ils peuvent vous aider à produire une source qui crée la documentation et le code à la fois à partir d'un seul texte.

J'utilise sphinx et PyLit mais c'est parce que je suis un programmeur Python.

S.Lott
la source
Bon pour en sortir un papier universitaire et ensuite l'oublier, mauvais si vous prévoyez de sortir ou de maintenir le produit par la suite. Partout, tout le monde devrait utiliser doxygen , même sur python. Mais c'est juste parce que je suis fan :)
ZJR
2

Si vous souhaitez noter vos idées, vous pouvez utiliser un outil de cartographie mentale tel que XMind ou FreeMind . Les deux outils sont gratuits (pour les particuliers pour XMind), et ils sont parfaits pour réfléchir et organiser vos idées. La chose au sujet de ces outils est juste que vous avez moins de chances d'oublier quelque chose.

J'ai personnellement utilisé Freemind avant de commencer mon dernier projet personnel. Je n'avais pas de méthodologie particulière en soi . Je viens de présenter mes idées lors de séances d'une heure une fois tous les deux jours. Je pense que l'espacement des sessions de brainstorming m'a aidé à mieux voir ce qui n'allait pas, ce qui n'était pas essentiel mais pourrait être utile dans les versions ultérieures, etc.

Lors de ma première validation de code, j'ai également enregistré le fichier de brainstorming dans le référentiel de code source (j'ai utilisé bitbucket ) et je l'ai mis à jour avec mes dernières idées.

Jalayn
la source
Très bien. Je teste déjà tout cela. Merci!
Cassio
2

Traitez-le comme un vrai projet logiciel (car il en est un). Il y a peu de choses qui changent parce que le nombre de développeurs est un. Vous avez toujours besoin du contrôle des sources. Vous avez toujours besoin d'un moyen d'organiser les fonctionnalités pour ajouter des bugs à corriger. Vous avez toujours besoin d'un test automatisé pour vérifier que vous ne créez pas de régressions dans le code. Vous devez également disposer d'un moyen automatique pour compiler le code (si nécessaire), exécuter les tests et afficher les rapports.

Je travaille sur un projet personnel comme vous l'avez décrit. J'utilise Git, Redmine, JUnit et Jenkins pour satisfaire toutes les catégories que j'ai décrites. Mon flux de travail est:

  • Choisissez un billet pour travailler
  • Branche la base de code
  • Développer du code et des tests pour la tâche (valider les modifications de la branche à de bons points de sauvegarde)
  • Fusionner la branche vers le tronc
  • Vérifiez que la génération a réussi, que les tests ont réussi et qu'il n'y a pas eu d'autres problèmes
  • Répéter

Garder tout géré et organisé est tout aussi important que lorsqu'il y a beaucoup de développeurs. Avec de nombreux développeurs, vous devez vous organiser pour que les informations soient diffusées à tout le monde. Quand il ne s'agit que de vous, vous disposez déjà de toutes les informations, mais il est difficile de se souvenir de chaque partie du système. Un système géré vous facilite la tâche et vous pouvez vous concentrer sur la tâche à accomplir.

unholysampler
la source
2

Outils:

  • Système de version de contrôle (même si vous êtes le seul développeur dans votre garage ou votre PC personnel): GIT, Mercurial, Tourtoise

  • Éditeur avec mise en évidence du code source, même si vous avez un IDE (Scintilla, Vim, Notepad)

  • Tableau noir du monde réel, tableau blanc, certaines choses ne rentrent tout simplement pas dans votre application Designer Tools.

  • Outil de conception: Rational Rose, Umbrello, (UML, ER,) Visio ou «Poor Developer's Designer Tools» comme Power Point, Corel Draw, Open Office Draw

  • Outil de comparaison de texte / code source, par exemple WinMerge

umlcat
la source
Très utile! Je mets tout cela en pratique. Merci.
Cassio
1

Cela dépend de la façon dont vous pouvez distinguer et gérer différentes tâches, car vous devrez examiner chaque étape du processus de développement.

Je pense que les outils ne sont utiles que si vous savez déjà comment les utiliser et l'une des pires erreurs est d'apprendre comment fonctionne un outil plutôt que d'apprendre quoi en faire.

Tout d'abord, à mon avis, vous devez écrire ce que vous attendez du logiciel et surtout ce qu'il ne fera pas. Voilà un point crucial. L'étape suivante consiste à diviser le système final en sous-systèmes inférieurs, ce qui facilite le processus de construction. Et enfin, vous devrez choisir vos outils. Fondamentalement, un bon IDE, un VCS et un modeleur de données. Vous pouvez ajouter de nombreux autres outils pour vous aider, mais veillez à ne pas commencer sur la mauvaise voie.

Eh bien, le début ne semble pas si attrayant, mais le processus deviendra amusant avec le temps.

Lucas Maus
la source
Ouais! N'oubliez pas que le code est, si le projet est bien conçu, une petite partie de l'ensemble.
Lucas Maus