Que comprend exactement la «documentation»?

12

Lorsque nous parlons de «documentation» pour un produit logiciel, qu'est-ce que cela inclut et qu'est-ce que cela ne devrait pas inclure?

Par exemple, une question récente demandait si les commentaires sont considérés comme de la documentation?

Mais il existe de nombreux autres domaines pour lesquels il s'agit également d'une question valable, certains plus évidents que d'autres:

  • Manuels (évidemment)
  • Notes de version?
  • Tutoriels
  • commentaires
  • Des autres?

Où est la ligne tracée. Par exemple, si «tutoriel» est de la documentation, est-ce de la documentation «tutoriel vidéo» ou s'agit-il d'autre chose?

Généralement, quelque chose dans un logiciel n'est pas «fait» tant qu'il n'est pas implémenté, testé et documenté. D'où cette question, quelles choses devrions-nous considérer dans le cadre de la documentation pour considérer quelque chose de «fait».


La question s'inspire des récents commentaires des clients lors de notre conférence indiquant que notre doc avait besoin de plus d '«échantillons», ce que nous n'avions pas été aussi bons à considérer que nous l'aurions dû.

Public: développeurs de logiciels utilisant nos bases de données, nos langages de programmation et les outils associés (tels que les clients d'administration de ladite base de données)

Dan McGrath
la source
2
Les commentaires sur les downotes sont toujours appréciés. Malheureusement, les chiffres ne fournissent pas beaucoup de critiques constructives pour comprendre où l'on s'est égaré :)
Dan McGrath
1
La documentation du logiciel ou la documentation du code source est un texte écrit qui accompagne le logiciel informatique. Il explique soit comment il fonctionne, soit comment l'utiliser, et peut signifier différentes choses pour des personnes dans des rôles différents. - Le "peut signifier différentes choses pour des personnes dans des rôles différents" est la phrase clé ici, quel est votre public? (Je n'ai pas encore voté, mais je suppose que le flou et la nature ouverte de la question sont à blâmer).
yannis
Connexes: les commentaires sont
dynamique
2
Cette question crie pour quelqu'un de dessiner un diagramme de Venn.
MathAttack

Réponses:

6

Le but de la documentation est de décrire et d'expliquer le produit logiciel, afin que vous puissiez définir la documentation comme l'ensemble des artefacts qui contribuent à cette description ou explication. Vous ne considéreriez probablement pas les actions connexes comme faisant partie de la documentation: par exemple, un cours de formation d'une semaine n'est pas de la documentation mais le matériel du cours l'est; un chat de tableau blanc de cinq minutes n'est pas de la documentation mais une image du tableau blanc l'est.

En gardant à l'esprit l'objectif (expliquer le logiciel), la documentation est terminée lorsque le client est satisfait de l'explication : tout comme le logiciel est terminé lorsque le client est satisfait du logiciel. Gardez à l'esprit que le client pour la documentation n'est pas toujours le même que le client payant pour le logiciel: le personnel de support, les testeurs, les vendeurs et autres auront tous besoin de comprendre ce que fait le logiciel et comment il fonctionne.

Cela permet de comprendre où se situe votre limite pour ce qui doit être inclus dans la documentation. Utiliser "lecteur" comme raccourci pratique, bien que nous acceptions que des vidéos ou du son puissent être inclus: tout ce qui aide le lecteur à obtenir les informations dont il a besoin sur le logiciel est une documentation qu'il peut utiliser, tout le reste ne l'est pas. Si votre client a besoin d'une présentation détaillée de tous ses cas d'utilisation, cela doit faire partie de la documentation. Vos développeurs ont probablement besoin de code source, d'informations sur votre référentiel de contrôle de version et d'instructions de construction: c'est de la documentation pour eux, mais comme décrit ci-dessus, cela ne fera pas partie de la documentation du client.


la source
Je considérerais le matériel de cours comme une documentation uniquement s'il est produit / distribué par la même équipe (au sens large) que le logiciel. Les cours totalement tiers ne sont pas des documents.
Donal Fellows
Bien sûr qu'ils le sont. La documentation tierce est une documentation même si elle n'est pas sous votre contrôle (et n'est pas de votre responsabilité de produire): elle sert l'objectif du lecteur de leur expliquer les choses. Si vous pensez que les gens écrivent de la documentation qui n'est pas sous votre contrôle, vous devez éviter d'avoir besoin de cette documentation.
2

Je pense que vous avez retiré la mauvaise partie de votre conversation lors d'une conférence. Les méthodologies modernes de développement de logiciels préconisent que l'équipe de développement travaille en étroite collaboration avec ses clients (ou un propriétaire de produit qui agit en tant que proxy client). Pour tous les travaux livrés, la définition de «fait» est quelque chose qui est négocié entre l'équipe et son client et qui se fait de façon récurrente au fur et à mesure du développement du logiciel.

Le problème que vous avez rencontré est que vous aviez un décalage entre ce que vous supposiez que le client avait besoin et ce qu'il attendait de vous, donc à la fin vous avez eu la surprise "hé où sont tous les échantillons".

En ce qui concerne la documentation ... eh bien, c'est à peu près tout ce que vous avez énuméré et peut-être quelques autres choses que vous n'avez pas. Mais personne ne peut vous dire la quantité de documentation dont votre projet a besoin. Chaque projet est différent et c'est à votre équipe, à votre propriétaire de produit et à vos clients de déterminer le niveau et le type de documentation requis pour votre projet.

Quelques facteurs qui entreraient en jeu:

  • Développez-vous des logiciels v1.0 et les passez-vous à d'autres projets ou s'agit-il d'un projet à long terme? Les commentaires / documents de conception deviennent beaucoup plus importants dans ce dernier cas. D'un autre côté, si votre client est un magasin de beignets maman-et-pop et que vous écrivez un site Web pour lui que vous ne verrez jamais ... eh bien, je suppose que la documentation du code est agréable mais pas si importante.
  • Développez-vous un jeu mobile ou un logiciel qui contrôle le moniteur de fréquence cardiaque dans un hôpital. Devinez lequel aura la définition de «fait» qui a beaucoup plus de documentation?
  • Vos clients sont-ils des utilisateurs finaux typiques ou d'autres développeurs? Avez-vous une API / SDK que vous exposez?
  • Quel est le niveau d'expertise de vos clients? Cela affecte le choix du didacticiel vidéo par rapport au matériel écrit par rapport à une sorte d'application de didacticiel interactif
  • Vos clients se soucient-ils de ce qui a changé d'une version à l'autre? Certains le font. La plupart n'en ont pas. Pour peu, c'est la loi (ou presque) de s'en soucier.
DXM
la source
Dire que j'ai pris la mauvaise partie de la conversation sur la base d'un seul Q est un peu une conclusion à tirer d'un Q :) Je suis nouveau dans cette entreprise et je contribue aux améliorations. Donner à nos «clients» le nombre dans les 10'000 + de développeurs (nous écrivons des bases de données), négocier avec eux tous est un peu difficile (bien que j'essaie de diriger des groupes de discussion, des conseils consultatifs, etc.). Je ne suis pas en désaccord avec votre réponse, mais je cherchais simplement ce qui pourrait être / n'est pas considéré comme de la documentation pour cette partie de la conversation afin que je puisse avoir un point de données pour commencer qui ne soit pas simplement mon propre avis.
Dan McGrath
@DanMcGrath: désolé, j'ai tendance à frotter les PM, y compris le mien, dans le mauvais sens :) Quelle que soit la conclusion supposée que j'ai tirée de votre Q, je maintiendrais toujours que «tout» qui va de pair avec le code peut être considéré "Documentation". Si j'étais vous, au lieu de demander "ce qui peut être de la documentation" et de compiler une liste complète de toutes sortes de choses (j'avais l'habitude d'avoir une serviette de référence avec un diagramme UML dessus), je retournerais à ma base de clients et demanderais leur ce dont ils ont besoin. Si personne ne dit "je veux un tutoriel vidéo", pourquoi devrais-je passer des cycles cérébraux même en considérant cela?
DXM
Pas de problème DXM. Je ne suis moi-même qu'un nouveau PM, je n'ai rasé que récemment mes côtelettes de codage (partiellement). J'étais plus intéressé par voir si quelqu'un revenait avec quelque chose que je n'avais pas considéré comme un concept ou comme un artefact à considérer. Je suis un grand fan de demander «quel est votre problème» et de demander à notre équipe de travailler en collaboration avec les clients, au lieu de demander «que voulez-vous que nous fassions». Dans la même veine que [«Nous voulons aller plus vite» -> Nous construisons des voitures] vs [«Nous voulons que vous nous donniez des chevaux plus rapides»]. Nous avoir beaucoup d'informations à portée de main permet de trouver collectivement la meilleure solution.
Dan McGrath
2

La documentation est une substance destinée à être lue sans la modifier.

Je pense que vous ne pouvez pas vous tromper avec la définition basée sur le but ... mais seulement si vous définissez correctement le but.

  • Définir correctement le but de la documentation n'est pas assez simple. Une distinction simple (naïve si vous le souhaitez) qui vient naturellement à l'esprit est que la documentation est tout ce qui est destiné à la lecture - tandis que, à titre de comparaison, le code est tout ce qui est destiné à l'exécution par ordinateur . Semble bien à la surface n'est-ce pas? mais cela se révèle vraiment très laid une fois que vous creusez plus profondément.
     
    Le fait est qu'un bon code prend en compte les problèmes de lisibilité, ainsi que l'exactitude de l'exécution - cela rend la distinction de "lisibilité" assez inutile dans la définition de la documentation.
     
    Les échantillons que vous avez mentionnés montrent ce qui ne va pas. Les clients attendent généralement ceux - ci soient clairement écrites etexécuter correctement. Compromettre la lisibilité ou l'exactitude peut apporter une cascade de plaintes des clients. La distinction naïve n'aide pas à déterminer si les exemples sont du code ou de la documentation.
     
    Utiliser la distinction naïve sera encore plus compliqué si vous imaginez travailler avec l' open source . Vous le téléchargez, le construisez et l'exécutez - vous ne le lisez pas, c'est juste le code non? Attendez, les choses ont mal tourné et vous obtenez le code pour lire ce qui se passe là-bas ... hé vous lisez ne pas exécuter - cette documentation est-elle maintenant? Et, enfin, vous trouvez un bogue dans la source et le corrigez - maintenant c'est vraiment le code, ce n'est pas quelque chose qui s'appelle normalement de la documentation, peu importe la façon dont vous le lisez attentivement pour faire ce correctif.

Pour les « échantillons » que vous allez fournir, lecture sans distinction modify pourrait se révéler très important.

Regardez, si un échantillon échoue lorsqu'il est exécuté sans changement, dans l'environnement de référence documenté, c'est votre bogue - bogue dans votre documentation, celui que vous devez accepter et corriger, très bien.

Maintenant, s'il y a un problème avec un échantillon ou un environnement modifié, ce n'est plus de votre faute - je veux dire pas de bogue dans la documentation, car les documents ne sont pas destinés à être modifiés. Quelle que soit l'aide que vous fournissez aux utilisateurs dans un cas comme celui-ci, tomberait dans la catégorie de support, pas un correctif.

moucheron
la source
2

Tout ce qui répond à une question «comment puis-je ...» est de la documentation.

Pour les développeurs, cela signifie les spécifications des exigences ("comment savoir quoi écrire"), les documents de conception ("comment puis-je répondre à mes exigences"), les matrices de traçabilité ("comment puis-je savoir que ma conception répond à toutes mes exigences"), plans de test ("comment puis-je savoir que mon code fonctionne"), tests unitaires ("comment puis-je savoir que j'ai satisfait l'exigence X"), commentaires en ligne ("comment puis-je m'assurer que le prochain pauvre schlub comprend pourquoi je l'ai écrit ceci "), les instructions de déploiement (" comment emballer ce produit pour l'installation "), etc.

Pour les utilisateurs, cela signifie des manuels d'utilisation ("comment utiliser le logiciel"), des tutoriels ("comment utiliser cette fonctionnalité spécifique"), des notes de version ("comment savoir quels bugs ont été corrigés / de nouvelles fonctionnalités de bugs ont été ajouté "), etc.

John Bode
la source