Mais pourquoi ça bug?

Itinéraire d'une erreur de programmation

a marqué ce sujet comme résolu.

Salut,

en corrigeant un des derniers bugs de zds, j’ai eu l’idée de faire un article qui vulgarise le "comment ça marche la résolution d’un bug".

L’article se veut vraiment généraliste et accessible. J’essaie d’avoir un ton léger. L’idée c’est de démystifier la "magie" des développeurs quand ils corrigent un bug.

Je fais donc appel à votre bonté sans limites pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l’adresse suivante :

Merci !

Il me reste encore:

  • le dernier paragraphe à faire
  • des liens à ajouter
  • créditer les images
  • trouver une icône
+1 -0

Lu’!

Merci pour l’article, voilà quelques typos, suggestions et idées qui peuvent être reliées.

Typos:

  • Point d’interrogations dans "Le logiciel a un bug, c’est embêtant, non" et suivantes,
  • (V) en fin -> enfin
  • (V) n’est plus conseillé -> ée
  • (Souple) Quand on gère un projet,
  • (ça a buggé) majuscule
  • (ça a buggé) il y a plusieurs notifications
  • (ça a buggé) base de tâches à faire

Illustration manquante pour le V ?

Aujourd’hui cette méthode n’est plus très conseillé quand on commence un projet informatique car elle est considérée comme trop peu souple.

C’est dépendant des domaines. Il y a des endroits où être souple c’est toujours pas d’actualité et où l’on préfère rester rigide. Notamment dans pas mal de domaines critiques.

Nous avons donc développé notre logiciel. Puis nous l’avons testé unitairement.

Puis ? C’est plutôt tout en développant non ? (On arrive rarement à développer puis tester et faire passer tous les tests d’un coup) Ou c’est pour simplifier l’explication ?

Tenter de provoquer une défaillance, c’est ce que fera la qualification

C’est aussi ce que font les tests unitaires, c’est juste que l’on essaie de provoquer la défaillance à un niveau plus bas sur des fonctionnalités partielles.

Ça pourrait valoir le coup d’en profiter pour causer de deux points qui me viennent à l’esprit (mais qui peuvent être durs à vulgariser) :

  • une base de tests c’est une forme de spécification plus précise (on passe d’une expression en texte à une spécification sous forme de code),
  • une "panne" logicielle, comme on peut le voir parfois, ça fait moyennement du sens : le logiciel ne tombe pas en panne, le bug était là depuis le début, on a juste rencontré les conditions qui le déclenche.

une base de tests c’est une forme de spécification plus précise (on passe d’une expression en texte à une spécification sous forme de code),

ça fait partie du dernier point.

Une "panne" logicielle, comme on peut le voir parfois, ça fait moyennement du sens : le logiciel ne tombe pas en panne, le bug était là depuis le début, on a juste rencontré les conditions qui le déclenche.

Je suis en total désaccord avec ça.

C’est dépendant des domaines. Il y a des endroits où être souple c’est toujours pas d’actualité et où l’on préfère rester rigide. Notamment dans pas mal de domaines critiques.

je vais ajouter un adverbe pour rendre la phrase moins absolue, mais je pense que là on est en plein dans la vulgarisation donc il faut éviter de trop détailler.

Une "panne" logicielle, comme on peut le voir parfois, ça fait moyennement du sens : le logiciel ne tombe pas en panne, le bug était là depuis le début, on a juste rencontré les conditions qui le déclenche.

Je suis en total désaccord avec ça.

artragis

Je trouve que cet article en parle très bien : Gérard Berry - Il faut changer nos schémas mentaux :

Un bug n’est pas une panne aléatoire d’un logiciel, car les logiciels ne tombent jamais en panne, ils font toujours très exactement ce qu’on les a programmés pour faire. Un bug est toujours une malfaçon d’origine humaine, une erreur qui s’est glissée dans les lignes de code.

Gérard Berry.

A la limite, on peut parler de panne quand l’exécutable ou la machine a physiquement été altérée ce qui induit que l’exécutable ne fait pas ce qu’indique le programme (le texte de notre logiciel). Mais sinon, ça n’a rien à voir avec une panne qui représente un altération du système d’origine. Un bug n’est pas une altération, le programme a été écrit comme ça.

Ça ne change rien à mon idée. Ici on a un ergotage autour du sens du mot "panne". Lorsqu’il y a un bug c’est qu’il y a eu un ou plusieurs défaut, soit dans le logiciel soit dans l’architecture soit dans la machine. Il y a défaillance. Ce qui dans le langage courant se traduit par "panne".

J’apporte les autres modifications asap.

Bonjour,

L’article se veut vraiment généraliste et accessible. J’essaie d’avoir un ton léger. L’idée c’est de démystifier la "magie" des développeurs quand ils corrigent un bug.

Dans l’idée, je n’ai rien contre, dans la pratique, je trouve que ça manque de clarté.


Après lecture de ton intro, la première info que l’on ait est :

Le logiciel a un bug, c’est embêtant, non? Mais comment c’est arrivé? Et comment on le corrige, chef?

Là où ça pèche, c’est que le but de ton article (« démystifier la "magie" des développeurs quand ils corrigent un bug. ») ne transparait pas.

Le texte dans l’encart nous apprend qu’on va parler un peu de tout. Bref, on n’a pas accès à la problématique (qui existe pourtant, puisque tu nous la signales dans le message de la béta).


La première partie pose le fil rouge. Puis saute direct sur le cycle en V. Sans transition (la blague sur le béton ne compte pas comme une transition). La description du cycle en V tient sur deux lignes (autant que la blague sur Molière, c’est dire). Si tu veux être généraliste et accessible, il va falloir dire ce que tu entends par « spécifié » et « qualifié » (qui a un sens un peu différent dans l’usage courant), sinon on ne comprend rien de ce que tu racontes.

Donc il faut être souple. Sauf qu’on ne sait pas ce qui n’était pas souple dans le cycle en V, ni si c’est une méthode différente ou une adaptation du cycle en V. Tu décris encore moins cette méthode (c’est de l’agile qui ne dit pas son nom, j’ai l’impression) que le cycle en V (« pouvoir changer certains détails au fur et à mesure du développement d’une fonctionnalité » est un but, pas une méthode), alors que c’est censé être le truc à faire.


Bref, l’intro et la première partie sont très brouillons. On ne sait où tu nous emmènes, on saute d’un élément à l’autre sans réel lien. Et ça n’a rien à voir avec le côté léger et humoristique : enlève les images et les blagues, ce ne sera pas mieux lié.


Dans la deuxième partie, prends garde : si tu poses une question, il faut y répondre. « pourquoi ça a buggé? », puis enchainer sur les tests unitaires, sur la qualification… laisse la question en suspens.


Bref, le principal problème à mon sens est le manque de liants. J’ai l’impression que tu sous-exploites ton fil rouge : tu as un exemple pratique, sers-t’en ! Décrire ce que vous avez dû faire (et pourquoi) est un bon moyen de garder une cohérence tout en étant moins cours magistral.

Bonne chance pour la rédaction.

+1 -0

Merci du retour Gabbro, je prends en compte dès que possible. En fait le problème que j’ai eu avec la première partie c’est que je me suis surpris à la rédiger alors que je n’avais pas fini mon plan. Du coup j’ai dû la retoucher après avoir mis en place celui(ci.

Je trouve que l’article contient trop d’images "placeholder" (qui n’apportent rien de concret et sont plus là pour faire sourire etc).

Ça fait perdre le fil de l’article et, sur un petit mais large écran, c’est très handicapant vu que la page entière se retrouve filled avec ladite image.

Le but des images est d’instaurer une atmosphère légère. Je ne veux pas faire un article académique.

Je vais deja enlever l’image de gymnaste car avec un poil de recul je n’arrive plus à sourire de cette blague.

Pour le reste je verrai dès que j’ai le temps.

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Merci d’avance pour vos commentaires.

Pour les deux premières partie, on devrait ne plus être trop loin de ce que je désire faire. Si certaines transitions vous semblent encore trop téléphonées, n’hésitez pas.

Le passage sur le cycle en V est en surcis. Je pensais que c’était une bonne idée de parler de l’organisation (pour justement démystifier, montrer que ça se fait comme pour tous les autres métier me semblait logique) mais plus j’y réfléchis et moins je suis à l’aise.

+0 -0

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Merci d’avance pour vos commentaires.

  • j’ai fait le premier jet de la dernière partie;
  • j’ai retiré la partie sur la souplesse que je n’arrivait pas vraiment à intégrer à l’article et qui le rendait lourd, l’allongeait innutilement
  • j’ai tenté d’utiliser beaucoup plus mon fil rouge.
+0 -0

Le sujet est compliqué, et je pense que tu connais trop bien le sujet pour écrire un tutoriel.

Par exemple, tu écris vers la fin : Armé de cette description, les développeurs ne vont pas tout de suite aller modifier le code pour corriger le défaut. Il vont écrire un test.

Ecrire un test ??? Pour toi qui baignes dedans, la formule est explicite. Mais pour un débutant, je ne suis pas convaincu que ce soit clair.

Je ne prends que cet exemple, parce qu’il résume assez bien le sentiment que j’éprouve.

Ce sujet est verrouillé.