Comment faire un sans bug programme (ou, avec les bugs moins possibles) - Stack Overflow

OK, je sais que c'est une question stupide de demander, alors permettez-moi de préciser.

Voici donc ma question. quels outils et méthodes utilisez-vous pour avoir les moins de bugs possibles dans votre logiciel?

En bout de ligne. un code sans erreur est impossible. Cependant, voici ce qui est possible de le faire:

Pratiques, la gestion, l'environnement

Tout d'abord: logiciel gratuit Bug est un mythe!

D'autre part, les outils eux-mêmes dépendent beaucoup de choses, mais si vous voulez garder les choses aussi générales que possible:

  • Un bon éditeur
  • Un bon système de contrôle de version
  • étapes de développement appropriées (conception fonctionnelle, la conception technique, etc.)
  • Une équipe de test appropriée
  • Un test-équipe non conforme (essentiellement le crémier, la femme de ménage et le chauffeur de bus vous a. Les gens qui ne savent pas ce qu'ils font si elle vient aux ordinateurs et interfaces)
  • Une façon d'indiquer que vous voulez pas de distractions que ce soit
  • Le temps de pouvoir résoudre les problèmes lorsque vous êtes coincé sur eux

a répondu le 22 septembre '08 à 15h37

cosmo0, je suis désolé, mais je ressens de la pitié pour vous.

Pour moi, votre façon de penser de patron que vous devez écrire le code sans bug est la même chose que vous pensez que vous devez avoir un salaire infini. En ajoutant le mot « presque » que « sans bug » ne change pas le sens du tout.

Il y a un code sans bug. Le code qui a 0 fonctionnalité est sans bug. Mais il est inutile.

L'écriture des programmes informatiques est très similaire à jouer aux échecs. Tigran Petrosian, un champion du monde d'échecs connu pour ses solides compétences en défense, a été une fois demandé par un journaliste pas très poli pourquoi il fait parfois bévues. La réponse est étonnamment simple: « Parce que jouer aux échecs est pas facile Essayez de vous jouer et vous verrez. ».

a répondu le 22 septembre '08 à 16h29

Vous avez vraiment besoin de le faire entrer dans la tête de votre patron qu'il est pratiquement impossible d'écrire un logiciel de toute la complexité sans bugs.

Dès que vous acceptez que l'écriture de code sans bug est une tâche impossible, vous pouvez commencer à se concentrer sur ce qui est réellement important: faire tous vos bogues facilement détectables

Les tests unitaires sont une excellente façon de le faire, et il y a beaucoup de petits trucs que vous prendrez au fil du temps qui vous aidera à les éviter, mais vraiment que seul vient avec l'expérience, et de savoir quels types d'erreurs que vous êtes susceptible de faire.

Un exemple souvent cité (et probablement maintenant hors de propos) est d'inverser l'ordre de vos comparaisons, par exemple:

afin de ne pas faire une cession (foo = « bar ») quand vous voulez dire pour effectuer une comparaison (foo == « bar »). Si vous inversez l'ordre, le cas d'erreur ( « bar » = foo) est une erreur de syntaxe facilement détectable, plutôt que d'un très difficile à trouver une erreur logique. Mais c'est vraiment utile que si c'est le genre d'erreur que vous faites régulièrement.

a répondu le 22 septembre '08 à 15h32

Votre patron peut vous donner erreur et spécifications complètes qui libres ne changent pas à la minute où il les termine à la minute que vous avez terminé le logiciel? Quand je dis complet, je ne veux pas seulement une liste de fonctionnalités. Que diriez-vous de toutes les interactions entre toutes les fonctions, tous les expections de comportement pour chaque entrée utilisateur possible, toutes les conditions possibles de l'environnement (par exemple OS, les fichiers présents, d'autres applications en cours d'exécution, l'accès à des ressources partagées, la taille de la police, de couleurs, clavier mises en page) qui traite prioritaire par rapport aux autres, le calendrier à la milliseconde, etc.

Test Driven Development est un bon début, mais il ne suffit pas. Les bonnes pratiques, paire examen et programmation code, un haut niveau d'attention et la collaboration d'un bon testeur peut améliorer le contrôle de bogue efficacement.

Mais je pense que « erreur logiciel libre » se rapporte à la science-fiction.

a répondu le 22 septembre '08 à 15h32

Peut-être que votre patron ne connaît pas l'erreur humaine. Cela étant dit, en utilisant des pratiques telles que les tests unitaires, intégration continue, et l'analyse de code statique peut améliorer votre qualité et réduire le code de certains types de bogues.

a répondu le 22 septembre '08 à 15h33

Cela ne veut pas dire que nous ne sommes pas coupables de bogues dans notre logiciel, ou que les développeurs qualifiés n'ont une moindre incidence des insectes. Mais votre patron a besoin d'avoir des attentes réalistes de vos capacités. Il n'y a aucun pilote parfait, aucun gestionnaire parfait, et pas des programmeurs parfaits.

a répondu le 22 septembre '08 à 16h22

Je ne pense pas est possible, à moins de bugs de l'application est très faible.

Je pense que vous pouvez, et doit essayer de limiter la quantité de bugs dans votre logiciel grâce à des tests rigoureux.

a répondu le 22 septembre '08 à 15h33

Je pense que « maintenant, avec votre niveau de connaissance, vous ne devriez jamais avoir des bugs dans votre logiciel plus » n'est pas posible.

Mais vous pouvez utiliser un TDD (Developent de Test Driven) dans le projet de la vôtre, pour minimaliser les bugs dans les versions de libération. Mais ce n'est pas une solution totale. quelques bugs sont très compliquées et peuvent être causés par la mise à jour du composant 3ème partie ou tout autre chose.

a répondu le 22 septembre '08 à 15h35

JUnit (ou un autre programme de test d'unité) est utile lorsque vous avez des exigences claires pour tester, et pour prévenir les régressions. Lorsque les tests sont automatisés et exécutés, vous pouvez souvent être assuré que vos modifications ne sont pas briser d'autres parties du système. Il est également utile lors de la conception des classes difficiles parce que vous pouvez planifier tous (bien, beaucoup de) cas de pointe que vous voulez tester et de les tester tous ensemble.

Les points clés sont

  • Tests automatisés
  • Exécuter les tests fréquemment
  • Assurez-vous que les cas de test couvrent les exigences connues
  • créer des cas de test lorsque vous trouvez des bugs; ces tests échouent jusqu'à ce que le bug est corrigé

a répondu le 22 septembre '08 à 15h36

Je remettrons un simple morceau de « méthode ». Il est l'idée d'une étape zéro défaut. Il est très fréquent dans les projets logiciels pour parler de jalons qui représentent des points importants dans le calendrier du projet. Dans la plupart des cas, je l'ai vu, les gens disent qu'ils ont atteint une étape importante au point où ils ont fini de taper dans le code pour les fonctionnalités de cette étape. En réalité, bien sûr, cela ne vous donne aucune idée de progrès vers l'achèvement.

Ce genre d'étape est une mesure beaucoup mieux de savoir jusqu'où vous avez progressé vers l'achèvement, mais il est surprenant de constater combien il est rare que vous voyez des projets gérés de cette façon. Je le recommande.

a répondu le 22 septembre '08 à 15h40

Quel genre de défauts que vous avez dans votre logiciel?

Sur les erreurs hors limites? La lecture des variables non initialisées? Déréférencement des pointeurs invalides? Ceux-ci peuvent être détectés par un outil d'analyse statique.

compréhension incomplète des besoins? Ici, le développement piloté par les tests et une culture d'évaluation aide.

Les problèmes de conception? Encore une fois, des critiques sont d'une grande aide.

L'utilisation hors-datage? Cela demande un contrôle de version.

Et: tenir un journal de défaut, de sorte que vous savez quel genre de défauts que vous faites.

a répondu le 22 septembre '08 à 15h44

J'ai réussi avec le motif « libération anticipée, libération souvent » dans lequel vous sélectionnez caractéristiques moins à un moment et tester intensivement les caractéristiques avant de les inclure dans un communiqué. Les fonctionnalités qui ne répondent pas aux critères de qualité ne sont pas inclus dans l'itération.

De toute évidence, cela ne fonctionne pas seul et vous devez avoir de bonnes pratiques de développement comme ceux mentionnés par Phil, Manrico, Twan et d'autres.

a répondu le 22 septembre '08 à 16h05

a répondu le 22 septembre '08 à 16:20

Il est stupide de la terre et ne se limite pas à la programmation. Juste quelques contre-exemples. La plupart d'entre nous ont permis de leurs conducteurs pour les âges et ils ne devraient jamais être impliqués dans tout sur un accident plus. Comment réel est-ce?

Les tests unitaires! Son pas un bullit d'argent, mais il permet d'économiser beaucoup de temps de débogage.

a répondu le 22 septembre '08 à 15h32

Ta Réponse

Articles Liés