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 :

Quelle est la place du débogage dans la programmation ?


Sujet :

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

  1. #41
    Membre éclairé

    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 179
    Points : 653
    Points
    653
    Par défaut
    Citation Envoyé par AoCannaille Voir le message
    Tu veux dire comme c'est dit dans la news?
    Je viens d’atterrir sur un projet en 20 ans d'age (MFC ) ou ceux qui savent où ont su ont disparu. 1,5 million de ligne de code sur 900 classes, avec une 15aine de tâches qui discutent entre elles.
    évidement, très peu de doc existe et celle qui existe est souvent obsolète.

    Bien maîtriser le débogage est essentiel, même si cela s'apparente finalement a du rétro engineering...
    C'est bien ça.
    La maîtrise du n'est pas là.
    C'est pas forcement un tord, mais sur certain projet c'est inéducable.
    Pour moi c'est de la responsabilité du chef de projet de faire que le projet soit maîtrisable, et donc quand il ne peut plus l'être faire une scission.
    Et bien sûr avoir au moins plusieurs personne qui maîtrise le projet (le cas des départs), et d'en formé d'autre quand les gens partent. (tiens mais c'est pas mal la méthode agile pour ça).
    L'expérience est une lanterne que l'on porte sur le dos et qui n'eclaire jamais que le chemin parcouru.

    La nature fait les choses sans se presser, et pourtant tout est accompli.

  2. #42
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 121
    Points : 110
    Points
    110
    Par défaut
    Impossible de développer sans déboguer.

  3. #43
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    Citation Envoyé par santana2006 Voir le message
    Impossible de développer sans déboguer.
    ça c'est clair et concis, rien à ajouter

  4. #44
    En attente de confirmation mail

    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Points : 2 347
    Points
    2 347
    Par défaut
    J'ai une stratégie "rouleau-compresseur" pour les gestions d'erreurs, stratégie que je n'applique pas toujours (cela dépend du type d'application).

    Le moindre problème détecté entraîne :

    1) l'affichage d'une sorte de warning précis ("appel de telle fonction, telle valeur devrait appartenir à tel ensemble, voici la valeur trouvée à la place : etc")

    2) une tentative de correction de l'erreur (par exemple le programme choisit une valeur par défaut pour la variable fautive, affiche un message pour réciser quelle valeur a été choisie... le but n'est pas de deviner la valeur qu'il y aurait du avoir... mais d'en avoir une suffisamment crédible pour qu'il n'y ait pas de plantage immédiat).

    3) le programme tente de continuer son exécution le plus normalement possible.

    Depuis que je fonctionne de cette manière, le scénario suivant se produit assez souvent :

    1) une anomalie apparaît quelque part, qu'elle provienne d'une erreur de conception, d'une erreur d'algorithmique, d'une erreur d'implémentation ou d'un problème avec les entrées/sorties ;
    2) je vois apparaître un ou plusieurs warnings (souvent plusieurs car le premier en entraîne d'autres) ;
    3) l'appli ne plante pas... elle continue de tourner avec cela dit quelques affichages aberrants ;
    4) je continue à la tester pendant plusieurs minutes pour essayer de voir s'il n'y a pas d'autres choses qui ne vont pas que ce qui a été signalé ;
    5) avant de fermer l'appli, je sauvegarde toutes les données (sauf celle dont je sais qu'elle est "corrompue") qu'il est utile de sauvegarder ;
    6) je ferme l'appli, sauf bien sûr si un autre problème survenu après le premier arrive à la faire "planter", ce qui est assez rare finalement.

    Rarement eu besoin de me battre contre mon ordinateur plus de quelques minutes, et jamais plus d'une ou deux heures, depuis que j'applique ce fonctionnement.

    Il reste que ce n'est pas facile à faire : quand une anomalie est détectée sur une simple valeur numérique, en général c'est facile d'écrire du "code de gestion d'erreur" qui respecte les principes que j'ai exposés plus haut... quand l'erreur porte sur une donnée plus compliquée (un sprite par exemple), cela peut être moins évident, mais avec un peu d'entraînement on arrive à des trucs qui fonctionnent pas mal (dans un jeu que je suis en train de programmer, par exemple, j'ai souvent pu terminer une partie entière malgré des bugs graves de chez graves qui n'altèrent finalement presque que l'affichage... un vrai luxe de pouvoir continuer à tester un programme qui "a planté").

    Je ne raise ni ne catch presque jamais d'exception... les exceptions permettent de faire ce que je fais mais en alourdissant considérablement l'écriture du code... (ne parlons même pas de ceux qui utilisent les exceptions comme des asserts améliorés)

    Après, savoir si on peut réellement "enseigner" cela à des étudiants qui, par définition, en sont encore à apprendre les techniques de base...

  5. #45
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    Les bugs véritables ( dans mon expérience) se trouve au niveau de l'intégration de son code, avec les framework tierce ou avec le runtime sous-jacent.
    par exemple, lorsque j'utilise JPA pour rendre persistent une entité e1 de type E1, contenant un champ e2 de type E2 ( E2 étant aussi une entité), je constate que dans la base de donné, le champ e2 n'a pas été mise à jour. Alors on se demande quelles annotations ont été mal utilisées? on relit toute la documentation de JPA, on ne voit pas se qu'on a omis! le temps presse, les utilisateurs sont bloqués car ils ne peuvent plus travailler, et le problème c'est que le bug implique des piles de framework dont on n'a pas totalement la maîtrise! bonjour le grand stress, on ne sait pas quand est ce qu'on va détecter ce qui fait problème, les utilisateurs mettent la pression, et la patron te rappelle que tu es entrain de lui faire perdre de l'argent...

Discussions similaires

  1. Quelle est la place d’un développeur dans le monde de la robotique ?
    Par Stéphane le calme dans le forum Robotique
    Réponses: 7
    Dernier message: 13/08/2016, 01h07
  2. Quelle est l’importance de la journalisation dans le débogage ?
    Par Amine Horseman dans le forum Débats sur le développement - Le Best Of
    Réponses: 26
    Dernier message: 30/05/2015, 22h06
  3. Quelle est la place du débogage dans la programmation ?
    Par Amine Horseman dans le forum Actualités
    Réponses: 21
    Dernier message: 28/11/2014, 11h59
  4. [ZF 1.8] [débutant] Quelle est la place des objets métier dans zf ?
    Par Trycias dans le forum Zend Framework
    Réponses: 3
    Dernier message: 21/05/2009, 19h14
  5. Réponses: 11
    Dernier message: 02/11/2006, 17h12

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