IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

Un code bien commenté remplace-t-il une documentation? (+ gestion doc en entreprise)


Sujet :

Débats sur le développement - Le Best Of

  1. #21
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Nebulix Voir le message
    Le code est destiné à une machine, la documentation à un humain : ils doivent se séparer quelque part.( il y a même des outils pour ça)
    Dans tous les cas ( code ou pas code) je suis persuadé que se poser la question : "qui lira cette doc, et pourquoi ?" est essentiel pour rédiger quelque chose d'utile.
    Celà me parait relever du simple bon sens, mais n'est pas tellement répandu.



    Soit tu n'as pas lu le thread, soit tu ne l'as pas compris...

  2. #22
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 455
    Points
    1 455
    Par défaut la question reste toujours la même
    Dans la question assez longue de skip, il me semble que l'essentiel est :
    la question reste toujours la même : Comment faire pour que ce soit bien, sans être superflu et chronophage?
    Une condition nécessaire, à mon avis :
    Pour faire quelque chose de "bien" (que je traduis "utile"), il faut d'abord penser à qui et à quoi celà sera utile, avec ses méninges, avant de se ruer sur son clavier et lancer CodeChose ou TrucSoft.
    Je ne pensais pas choquer en écrivant celà...

  3. #23
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Ca me choque pas vraiment .

    Il est question principalement de documentation de projet, pas vraiment de manuel utilisateur. A moins qu'on puisse estimer que certains modules nécessitent une documentation utilisateur comme par exemple les arguments d'un exécutable en ligne de commande utilisé par le système.
    Les questions concernent principalement la communication d'information au sein de l'équipe.

    Pour l'instant j'ai 2 personnes qui ont dit qu'elles passaient environ 30% de leurs temps sur de la doc.

  4. #24
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par _skip Voir le message
    Pour l'instant j'ai 2 personnes qui ont dit qu'elles passaient environ 30% de leurs temps sur de la doc.
    Moi , pour ma part, doc programmeur EXTERNE, je dirais environ au max 1% du temps.

    Doc programmeur interne (commentaires, entêtes, etc), sans doute environ 2-3% du temps.

    La doc externe la plus longue que j'ai eu à faire (un dictionnaire à usage de l'équipe): 2 mois de boulot pour 2 ans d'un projet de 60 personnes, soit 2/24*60 = 0.14% du projet, et pour moi-même 8.3% ...

  5. #25
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 455
    Points
    1 455
    Par défaut à propos du manuel utilisateur
    Citation Envoyé par _skip Voir le message
    Il est question principalement de documentation de projet, pas vraiment de manuel utilisateur.
    Le texte de départ citait explicitement le "manuel utilisateur" et couvrait beaucoup de sujets méritant discussion
    Citation Envoyé par _skip Voir le message
    Les questions concernent principalement la communication d'information au sein de l'équipe.
    Voilà déjà des destinataires mieux précisés.
    Néanmoins je pense qu'il faudrait aussi revoir le découpage des différentes documentations. Par exemple le manuel utilisateur est un bon endroit où placer
    ...en gros que fait le programme...
    ce qui devrait intéresser l'équipe de développement et qu'on omet très souvent, tu as raison de le souligner

  6. #26
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Selon moi une petite documentation plus les captures d'images rend toujours le code tres claire.
    Trop de commentaire ( meme commenter if et else) n'a aucun sens : il salut trop le code

  7. #27
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Dernièrement j'ai du réécrire en c++ des algos pour en faire une version finale, optimisée, parallélisée, avec une gestion d'erreur digne de ce nom. Ces algos sont relativement complexes, ont été 100 fois retouchés et j'ai du me contenter de la documentation du code pour découvrir :

    - Quelle forme avait les données en entrées et en sortie
    - Quel travail exact était fait.

    Et franchement j'ai regretté de ne pas avoir eu un petit document explicatif à l'extérieur du code expliquant un peu dans les grandes lignes le pourquoi du comment; les auteurs se sont permis des optimisations en se basant sur des cas particuliers ou en ignorant des cas supposés ne jamais se produire et tout cela, le deviner en lisant du code et des commentaires c'est assez pénible.

    Donc il m'a fallu plusieurs jours et quelques cheveux gris en plus pour mettre tout cela au clair dans ma tête, immédiatement après avoir réécrit l'algo je me suis empressé d'ouvrir un article wiki expliquant tout le déroulement du calcul à l'aide d'un exemple et d'explications. J'ai joint à ceci une documentation générée par doxydoc, en gros j'ai pris comme base ce que j'aurai moi-même souhaité pouvoir trouver avant de faire ce travail.

    Je ne suis pas descendu au niveau code, j'ai simplement dit ce que ça faisait et comment, avec juste quelques lignes sur les librairies utilisées et les choix d'implémentations.

    Toutefois c'est un boulot d'une journée par semaine de codage (20%), si j'ajoute les commentaires au propre et tout ça, je tombe surement pas loin des 24-30%.
    A présent ce que je peux me poser comme question c'est : est-ce qu'au fil du temps ma doc a des chances de rester à jour? Ca je ne peux que l'espérer mais c'est effectivement préoccupant, on connaît tous les modifs/petites corrections vite faites et si la documentation n'est pas tenue à jour elle ne sert à rien ou pire, elle induit en erreur (Il suffit de voir certains projets open source).

    La solution adoptée ici pour l'instant par mon patron, conscient de ce problème c'est de réserver un temps pour la gestion de document chaque semaine le vendredi après-midi, 2-3 heures pour se mettre autour d'une table dire ce que nous avons touché, puis ensuite mettre à jour note wiki en fonction de ça.

    Citation Envoyé par souviron34
    De plus, quel dev (ou chef de projet) va lire 25 000 pages (ou même 1000) avant de regarder la structure du soft , si les noms des répertoires et fichiers sont compréhensibles, et fureter un peu ?
    Personne, et moi le dernier.

    Citation Envoyé par souviron34 Voir le message
    Moi , pour ma part, doc programmeur EXTERNE, je dirais environ au max 1% du temps.

    Doc programmeur interne (commentaires, entêtes, etc), sans doute environ 2-3% du temps.

    La doc externe la plus longue que j'ai eu à faire (un dictionnaire à usage de l'équipe): 2 mois de boulot pour 2 ans d'un projet de 60 personnes, soit 2/24*60 = 0.14% du projet, et pour moi-même 8.3% ...
    En voyant ces chiffres, je m'interroge...
    En gros quelle est la démarche par rapport à la personne à qui on demande de retravailler sur le projet, ou tout d'abord, est-ce que ce genre de chose est véritablement prévu et anticipé?

    Est-il censé se débrouiller pour comprendre en regardant le code et en déduisant logiquement le fonctionnement général? Peux-tu donner en gros le contenu de la documentation externe pour un exemple d'une de tes application?

  8. #28
    Membre confirmé

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Points : 527
    Points
    527
    Par défaut
    Pour une vue d'ensemble, on ne voit pas bien comment documenter dans le code.

    Pour les algorithmes ou les explications de détail, il parait dangereux de commenter dans le code, car c'est susceptible de modification, sauf cas particuliers.

    Pour une documentation de référence automatiquement à jour, difficile de faire mieux qu'un document généré, mais là encore si les commentaires ne sont pas disciplinés, cela peut-être contre-productif avec une référence ne correspondant pas (ou plus) à ses commentaires. De même, en cas de modification, se pose la question de la qualité de la revue de commentaires, ainsi que de la fusion avec les nouveautés.

    Heureusement, il y a un type d'outil massivement utilisé dans l'industrie, qui n'a pas encore été cité dans cette discussion, et qui pourtant résout certaines des questions en suspens: comment assurer la compréhension du pourquoi tel code (et non pas seulement du comment l'utiliser, comme avec Doxygen) d'une part, et d'autre part comment assurer la cohérence entre l'état courant du code, qui dérive forcément, avec sa documentation initiale, qui forcément ne peut pas prendre en compte l'avenir lointain.

    Je veux parler bien sûr du SCM utilisé pour le projet.

    Pour prendre l'exemple de notre société, nous travaillons dans l'embarqué. Nous avons des lignes de code assez anciennes (> décennie) qui sont toujours très actives à la fois sur les toutes dernières versions, mais aussi sur les vieilles versions (c'est le bonheur mitigé de l'embarqué... la stabilité jusqu'au soutien du préhistorique ).

    Nous avons donc mis en place une politique de commentaire assez stricte: pas de commentaire algorithmique dans le code. Nommage extrêmement soigné, documentation du code avant tout fonctionnel, lié aux noms choisis, et évoluant seulement quand les noms des "classes" changent (ou pseudo-classes dans les langages qui ne les supportent pas, comme ceux de l'électroniques). Nous ne documentons pas les check-out, mais par contre les check-ins doivent impérativement être très précisément décrits, minimaux, très granulaires, et correspondre à au moins un "job" préalablement identifié (c'est un peu là que nous documentons les check-out, en fait). Le job ne peut qu'être suspendu ou clos, pas simplement cité pour référence.

    De cette manière, quand nous reprenons un code vieux de 8 ans ayant passé par une dizaine de personnes dont 5 ont quitté la société, nous avons dans le code même une documentation de haut niveau, replaçant le contexte précisément. Puis nous pouvons, grâce aux outils du SCM, savoir quand telle ligne a été écrite, par qui (suivi SCM), pourquoi (suivi SCM + lien job), ce qui a été écrit en même temps, les fichiers affectés par le check-in ayant validé cette ligne, etc. Nous inspecter en une fraction de seconde les lignes que cette ligne remplace, et accéder au même niveau de détail pour les versions antérieures (ou postérieures, ou branchées dans une autre ligne de code, etc.). Ça, c'est pour la vue microscopique. Pour la vue macroscopique, elle est externe au code, ou dans le code mais très générale. Pour la vue de référence, elle est auto-générée (doxygen), à la volée si nous examinons une version disparue.

    Ce qui est vraiment appréciable, c'est que le commentaire est à la fois extrêmement lié au code (on clique sur telle ligne, et le commentaire détaillé apparait), et complètement externe: on garde une très bonne lisibilité. Par rapport au genre doxygen, c'est lié à la version examinée.

    Le cout de cette discipline est assez significatif (peut-être 10%), mais n'est pas seulement lié à la documentation, mais fait partie de notre effort général de qualité, en ce sens qu'il est intégré à notre utilisation d'un SCM.

  9. #29
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Intéressant, mais ça demande visiblement d'être très pointu et très méthodique dans l'utilisation du source control non?
    Vous utilisez team foundation à ce sujet?

  10. #30
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 206
    Points : 333
    Points
    333
    Par défaut
    Une documentation est produite dans le but de servir notamment à une personne nouvelle qui arriverait sur le projet.

    La plupart des documentations que j'ai eu l'occasion de voir sont des généralités sur des couches n-tiers, je vois vraiment pas l'intérêt d'avoir un copier-coller d'un chapitre de bouquin, ou au contraire une plongée directe dans des détails où l'on se noit, c'est à dire que l'on ne sait même pas à quoi sert l'application

  11. #31
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    Tout d'abord, il y a forcement plusieurs docs :
    La doc de spec : soit elle est fournie par le client, soit elle est ecrite en interne, mais elle doit etre finie avant que la moindre ligne de code ne soit ecrite
    La doc utilisateur, ou "Qu'est-ce que ca fait quand tu appuies la". La encore, rien a voir avec le code. Le fait que tu passes tes donnees dans un random avant de les trier via un algo quick-sort n'a rien a faire ici.
    La doc fonctionnelle : elle peut etre generee a partir du code, mais doit absolument etre relue independamment du code pour voir si elle est limpide ou non.

    Ensuite, en lisant la discussion, je suis surpris de constater que personne ne parle de departement documentation, et que toutes les docs ont l'air d'etre ecrites par les developpeurs. C'est la qu'est l'os a mon avis : il faut des gens payes par l'entreprise pour ecrire ces docs, et qui ne soient pas des developpeurs.
    A chaque fois que j'ai vu un departement doc travailler avec les concepteurs et les developpeurs, la doc du projet etait bien faite.
    Et ca presente aussi l'avantage de ne pas pouvoir sacrifier la doc au profit d'un raccourcissement des delais, ce qui est trop souvent fait.

Discussions similaires

  1. [C#] Comment remplacer caracteres dans une chaine ?
    Par ChristopheOce dans le forum C#
    Réponses: 6
    Dernier message: 07/09/2011, 15h46
  2. Comment remplacer \b dans une chaine ?
    Par phd1963 dans le forum Langage
    Réponses: 5
    Dernier message: 13/08/2008, 20h58
  3. Réponses: 3
    Dernier message: 11/12/2005, 11h15
  4. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo