Table des matières
Liens utiles
Vous trouverez dans ces liens utiles des lectures et des outils qui n'ont pas pu être présentés dans le cours.
Lectures conseillées
- Technical Development Guide (Google Careers)
- Programming Languages | Hammer Principle (Ou : comment bien choisir son langage de programmation ?)
-
- Le désenchantement du logiciel (traduction)
Planification
Conception
Outils de modélisation UML (Open-source)
- UML Graph est un outil pour représenter automatiquement des diagrammes UML
Patrons de conception (Design Patterns)
Implémentation
Templates
- cookiecutter est une collection de templates pour des projets dans différents langages sur différentes plateformes; ils permettent d'avoir rapidement un environnement opérationnel.
Cours de Java
- Développons en Java de Jean-Michel Doudoux
- Développons en Java avec Eclipse de Jean-Michel Doudoux
Journalisation
- Apache logging services regroupe plusieurs projets open-source permettant la journalisation du comportement d'applications (langages supportés : Java, PHP, C++, .Net)
Environnement de développement intégré
Java
C/C++
Python
* Pycharm (Il y a une licence pour l'université)
PHP
- PDT (PHP Development Tools)
- Symfony2 Eclipse plugin (permet d'intégrer les spécificités de Symfony2
- Mémo
Frameworks
PHP
- Symfony2 est le framework le plus populaire, il facilite grandement le développement d'applications web complexes; il est modulaire et dispose de nombreux plugins.
Python
Tests
Outils de tests
Junit
TestNG
- TestNG (en français)
Python
- Tox vise à standardiser et à automatiser les tests en Python
Web
- gremlins.js est un application pour tester de manière exhaustive les applications web et node.js
Frameworks de test
Behaviour Driven Development
- Cucumber est un outil d'automatisation des tests basé sur les spécifications du comportement attendu (BDD)
JSystem
- JSystem est un framework reconnu conçu pour écrire et gérer graphiquement des tests d'applications. Il est basé sur JUnit et ANT.
STAF
GUITAR
Robot Framework
Web
- zuul permet de tester du code javascript dans plusieurs navigateurs web simultanément.
Tests de montée en charge serveur web
Listes d'outils de test
Outils de gestion (version,projet,etc.)
Outils de base
Forges logicielles
- ChiliProject (fork Redmine)
Integration continue
- Jenkins est un outil d'intégration continue; il permet d'automatiser et de répéter à intervalles réguliers les tâches liées aux activités récurrentes d'un projet (la construction, les tests de la version la plus récente l'application …)
Visualisation
- Gource permet de visualiser l'évolution d'un projet.
Collaboration
Gestion de tâches
- Request Tracker est un système de gestion de tickets qui permet de personnaliser les workflows
- Original|TaskFreak est un gestionnaire de tâche inspiré par l'approche GTD.
Qualité
Articles
- Bazman's testing pages contient plusieurs articles (et de nombreux conseils pratiques) pour la mise en oeuvre de tests. Par exemple : GUI Testing Checklist malgré son âge, cet article est particulièrement exhaustif en ce qui concerne la réalisation des tests d'une interface utilisateur graphique.
- Software Development Quality Assurance Zone est un site spécialisé qui contient de nombreuses ressources (articles, conseils, liens, outils, …) concernant la qualité du logiciel.
Métriques de qualité
- Sonar : un outil pour améliorer la qualité du code source d'un projet (permet la gestion de nombreuses métriques)
Débogage
Méthodologie
Cours
Syllabus Lesson 1: How Debuggers work Theory: Scientific method and its application to debugging. Fun fact: First bug in the history of computer science. Practice: Building a simple tracer. Lesson 2: Asserting Expectations Theory: Assertions in testing and in debugging. Fun fact: The most expensive bug in history. Practice: Improving the tracer. Lesson 3: Simplifying Failures Theory: Strategy of simplifying failures. Binary search. Delta debugging principle. Fun fact: Mozilla bugathon. Practice: Building a delta debugger. Lesson 4: Tracking Origins Theory: Cause-effect chain. Deduction. Dependencies. Slices. Fun fact: Sherlock Holmes and Doctor Watson. Practice: Improving the delta debugger. Lesson 5: Reproducing Failures Theory: Types of bugs (Bohr bug, Heisenbug, Mandelbug, Schrodinbug). Systematic reproduction process. Fun fact: Mad laptop bug. Practice: Building a statistic debugging tool. Lesson 6: Learning from Mistakes Theory: Bug database management. Classifying bugs. Bug maps. Learning from mistakes. Fun fact: Programmer with the most buggy code. Practice: Improving your tools and practicing on a real world bug database.
Outils
- Valgrind (C, C++, Java, Perl, Python, …)
-
- Junit-Quickcheck (Java)
-
PHP
Profilage
- Kcachegrind est un front end pour Valgrind (version KDE). Il existe également une version Qt : Qcachegrind pour MS Windows et Mac OSX (à compiler depuis les sources obtenues sur le dépôt kcachegrind)
Java
PHP
-
- XHProf.io (basé sur MySQL) (l'auteur déconseille son utilisation en production)
- Interface graphique pour XHProf (basé sur MongoDB)
- Webgrind est un profileur basé sur Xdebug. Il reprend certaines fonctionnalités de kcachegrind
Analyse automatique du code
Java
Javascript
Optimisation du code
Généralités
- Zen of Code Optimization de Michael Abrash (Algorithmique / C / Assembleur)
Java
- Java Performance Tuning est un site entièrement dédié à l'optimisation des programmes écrits en Java.
- La rubrique tuning tips contient de nombreux trucs à connaître; ils sont classés par catégories.
- La rubrique ressources constitue une bonne base de départ. On y retrouve des sections concernant les livres, les outils de profilage, de tests et de benchmarks, les compilateurs natifs, les classes optimisées, les outils d'optimisation automatique, etc.
- Quelques librairies optimisées
Latence (web)
Pour les applications web, il est possible d'améliorer la latence par l'utilisation d'un CDN (Content Delivery Network) qui héberge les librairies les plus populaires au plus près de l'internaute.
- Librairies hébergées par Google (liste fixe)
- CDNjs est hébergé par CloudFlare (liste fixe)
- jsDelivr héberge des librairies Javascript, jQuery, des fonts, des frameworks CSS,… (il est possible de soumettre d'autres fichiers)
Recherche de code source
Moteur de recherche
Forges (projets open-source)
Index de projets open-source
- http://freecode.com permet une recherche par mots-clés/tags/langages et redirige vers le site web du projet.
Sécurité web
- Nikto permet d'effectuer certains tests de sécurité sur un serveur web.
Divers
- Inno Setup est un programme qui permet de faciliter l'installation de votre application sur les machines fonctionnant sous Windows.
- Site contenant de nombreuses informations sur Java (forums de discussions, liste de projets, etc.)