De quoi faut-il tenir compte lors de la préparation d'un projet?

10

Je suis actuellement le seul développeur / architecte d'une application Web assez volumineuse (pile ASP.NET MVC, environ 150K + lignes de code) et la fin du développement est à l'horizon. En tant que tel, je commence à réfléchir à ce qui doit être fait pour le transfert du projet et je veux m'assurer de faire la bonne chose pour quiconque doit maintenir le projet à l'avenir.

De quoi faut-il tenir compte lors de la préparation d'un projet à un autre développeur ou à une équipe de développeurs de maintenance?

rjzii
la source

Réponses:

12

À mon humble avis, si vous ne pouviez faire qu'une seule chose avant de remettre votre projet (directement ou indirectement), je vous recommande de vérifier et de tripler qu'il compile tel quel à partir du contrôle de code source.

Pas de rire, mais je ne peux pas vous dire combien de fois j'ai obtenu le "dernier" d'un contrôle de source et il n'a pas pu être compilé, pour découvrir plus tard que je n'étais pas "sur l'ancienne boîte de Fred" car apparemment le code "seulement compile sur la vieille boîte de Fred ". J'ai même demandé à un ancien employeur de retirer rapidement mon bureau de mon cube et de le remplacer par «l'ancienne boîte de Fred» afin de pouvoir travailler sur le projet que j'étais censé faire.

En tant qu'extension de la recommandation ci-dessus, car il n'est parfois pas nécessaire d'obtenir la dernière version pour compiler une application, je vous recommande de créer un fichier README.txt et de le placer dans le répertoire racine de votre application et de le placer dans le contrôle de code source. Ce document README doit contenir une liste des dépendances externes qui n'ont pas pu être vérifiées dans le contrôle de source (le cas échéant), comment configurer la base de données et toute autre bizarrerie concernant les cycles de compilation, d'exécution ou de déploiement de l'application.

Tout ce qui est au-delà des deux suggestions ci-dessus ne serait que de la sauce, mais à mon humble avis, les deux ci-dessus sont presque nécessaires sur tout projet plus grand que "Hello World".

ÉDITER:

Au sujet de la documentation ...

Au fil des ans, j'ai à la fois écrit et lu ma juste part de la documentation logicielle dans le but de faciliter la transition d'un développeur. Je dirais que ces documents valent rarement le papier sur lequel ils sont imprimés. Les développeurs (moi y compris) pensent rarement aux parties importantes de l'application en écrivant de tels documents, nous avons seulement tendance à penser aux incendies les plus récents que nous avons combattus. Au-delà du fait que ces documents tendent à ne pas couvrir tous les aspects importants du logiciel, ils deviennent également TRÈS rapidement obsolètes. Une fois que le document est obsolète, un futur développeur va très probablement l'ignorer complètement au lieu de le remettre en conformité avec la réalité (pensez à changer les exigences).

Au lieu de la documentation en soi, je recommande les tests unitaires. Je sais que cela semble probablement vieux à ce stade, mais laissez le code faire la documentation pour vous. Les tests unitaires brisés sont difficiles à ignorer (et plus faciles à repérer) qu'un document Word. De plus, la langue anglaise est horriblement imprécise pour articuler les points les plus fins de la conception de logiciels. Il existe tout simplement trop de façons d'interpréter la signification des phrases anglaises les plus simples, et cela ne fait que créer de la confusion et / ou des bugs.

Jason Whitehorn
la source
1
+1 pour le fichier Lisez-moi. J'en ai en fait deux dans le projet à ce stade, un général "c'est ce que je pensais quand j'ai écrit ce concept" et un autre qui répertorie toutes les dépendances externes et les plug-ins jQuery qui sont en place ainsi que les lignes d'où je les ai obtenues. La compilation est certainement quelque chose que je vais devoir vérifier encore une fois.
rjzii
@Rob, une machine virtuelle est souvent une bonne idée lorsque vous essayez de déterminer si votre code peut être compilé dans un environnement propre. Une nouvelle installation de Windows et Visual Studio, puis exécutez en installant uniquement les éléments mentionnés dans votre readmefichier. Si le code se compile et s'exécute, vous êtes prêt.
Jason Whitehorn
N'oubliez pas la documentation!
Moshe
@Jason - J'ai pu le faire il y a quelque temps dans les mêmes circonstances (deux machines de développement, une avec Parallels Desktop), mais de nouvelles bibliothèques ont été intégrées au projet depuis lors.
rjzii
1
@Moshe - La documentation est la partie qui m'inquiète le plus. J'ai écrit le code comme j'aimerais le trouver, mais je ne sais pas quels documents supplémentaires je devrais écrire pour compléter le code et les documents de base du fichier Lisez-moi.
rjzii
1

C'est exactement pourquoi les commentaires ne sont pas une odeur de code. C'est aussi pourquoi nous devons documenter notre code.

Vous devez vous assurer que vous disposez d'une documentation solide. Il existe des programmes qui peuvent générer de la documentation à partir de commentaires en fonction du format des commentaires et du langage de programmation.

Considérez les informations que vous souhaitez sur une bibliothèque ou une base de code lors de sa reprise. Demandez à un ami qui est programmeur de jeter un coup d'œil rapide et de voir s'il repère des questions évidentes.

Bonne chance!

Moshe
la source
1

Assurez-vous que votre code est en train de compiler et d'empaqueter sous sa forme finale en une seule commande / clic.

Je ne peux pas voter pour la réponse. Quelles sont les choses à prendre en compte lors de la préparation d'un projet? assez, donc je dois écrire à nouveau.

Je suis très pointilleux sur cette compilation en un clic , car j'ai déjà mis tellement de temps à comprendre comment compiler ou empaqueter un projet que je n'ai eu qu'à corriger un petit bug. J'ai commencé à mettre de petits scripts batch / bash dans mes projets pour empaqueter le ZIP, JAR ou EAR final.

En plus de cela, j'ajoute un README.txt au répertoire racine qui décrit la conception globale , les parties complexes et l'environnement du projet (en termes de communication avec d'autres services ou personnes).

J'essaie de garder ce fichier README.txt petit , car personne ne lit plus de 200 pages de documents de spécification si tout ce que vous voulez faire est de corriger un bogue, de le compiler et de l'empaqueter. Les détails de l'implémentation sont documentés dans des tests unitaires , il n'est donc pas nécessaire de tout réécrire dans un livre ...

reculer
la source
0

Ma liste de contrôle de transfert par défaut:

  1. Découvrez une copie propre de VCS
  2. Test de construction, test de déploiement
  3. Renommer le référentiel Maven en sauvegarde de référentiel
  4. Tester la construction à nouveau
  5. Installer une nouvelle copie du serveur d'applications à partir de zip
  6. Vérifier les notes de configuration du serveur
  7. Tester le déploiement à nouveau
  8. Vérifiez qu'aucun test unitaire n'est désactivé
  9. Scannez les commentaires pour les mots de quatre lettres, supprimez-les

Si quelque chose est cassé, je le réparerais avant de le remettre. Rien ne permet à quelqu'un de démarrer, puis de récupérer le projet, de le construire et de l'exécuter le jour où vous obtenez le projet.

sal
la source