Génie logiciel
- Fonctionnel : les fonctions remplies doivent correspondre au cahier des charges
- Robustesse : en cas de modification de l'environnement de fonctionnement du logiciel, il doit rester au maximum fonctionnel et détecter les dérives
- Pérennité : les logiciels sont développés pour des systèmes industriels qui ont un durée de vie de plusieurs dizaines d'années. Ils doivent pouvoir fonctionner sur cette durée.
- Testabilité : tous les systèmes (matériels et logiciels) avec lesquels collabore un logiciel industriel, ne sont pas toujours disponibles pour le tester. Cela doit être pris en compte dès la conception.
- Maintenabilité : au cours de la vie d'un logiciel pilotant un système industriel, plusieurs personnes peuvent être amenées à travailler sur le logiciel pour le faire évoluer (corrections et ajouts de fonctionnalités).
- Gestion de projet : le temps de développement, l'estimation de la charge de travail, la gestion de l'équipe et des livrables, le processus de réalisation sont des aspects majeurs de cette activité
- Gestion de configuration : identifier chaque version de logiciel qui est livrée, pouvoir tracer les modifications entre deux versions, gestion du travail collaboratif à plusieurs sur un même logiciel
Les éléments majeurs de notre méthodologie
Nous avons une approche de développement itérative incrémentale basée sur les méthodes agiles.
Nous commençons les projets conséquents par l'écriture d'une spécification pour nous assurer que toutes les parties prenantes sont alignés sur les objectifs principaux du projet.
Conscients qu'une spécification ne peut pas recueillir toutes les demandes au début d'un projet, cette spécification évoluera ensuite au cours du projet.
Nous considérons qu'il est nécessaire de lever les risques au début du projet car ensuite il est plus facile de planifier ce qui est le mieux maîtrisé.
Nous produisons régulièrement des livrables pour les confronter aux besoins exprimés par nos clients et obtenir leurs retours et corrections le plus tôt possible.
Les livrables implémentent des cas d'utilisation (ou Use Case) réels qui ont été recueillis dans la spécification.
Dès le début du projet nous réfléchissons aux moyens de tests du logiciel en prenant en compte la possibilité que certaines parties (matériels ou autres logiciels) pourraient ne pas être disponibles pour réaliser les tests.
Nous nous attachons à l’ergonomie applicative et à prendre en compte les retours utilisateurs au plus tôt. Une prise en main rapide des logiciels par les utilisateurs finaux est gage de succès lors des déploiements. Pour cela, des maquettes graphiques sont régulièrement partagées avec nos clients.
Nous partons du principe que:
Ce qui n'est pas testé ne marche pas