J’avais lu un post à propos des « ilities » d’un projet. C’est une petite technique de gestion de projet qui permet de recadrer les attentes entre le client d’une part et l’équipe de dévelopement d’autre part. La méthode consiste à noter de 1 à 10 une liste d’adjectif qui définit les caracteristiques d’un projet informatique. La liste d’origine est en anglais et j’ai traduit en francais les différents adjectifs.
Prenez cette liste, demandez à un programmeur de la remplir. Faire de même avec le chef de projet et enfin avec l’équipe business ou avec votre client. Un score de 1 pour « pas du tout important » et 10 pour « critique ». L’idéal est de le faire avant le début du projet, en cours et lors de la phase de recette.
- Adaptability (flexibilité) ? une application qui peut être facilement étendue pour ajouter de nouvelles fonctions (extensibilité marche aussi)
- Configurability (configurabilité) – permet sans recoder ou compiler d’élèment de changer le comportement d’une application.
- Maintainability (maintenance) ? capacité à administrer l’application. Un doc d’exploitation, des procédures d’urgence améliorent la maintenance et le travail du support.
- Stability(stabilité) – capacité à rester en fonctionnement quelque soit le type d’erreur ou la charge. Cependant en cas d’erreur, l’application doit s’arrêter pour reporter le plus rapidement possible une erreur (fast error fail) sans bloquer de ressources.
- Deployability(deployabilité) le système est capable de déployer de nouvelles fonctions ou des corrections d’erreur rapidement, éventuellement sans s’arrêter. Ce critère est important si les mise-à-jour sont fréquentes. Par exemple le système « Windows Update » facilite le travail de l’administrateur.
- Scalability(capacité à monter en charge) un système est dit scalable lorsqu’il accepte de traiter une plus grande quantité d’information sans intervenir sur le matériel (CPU, mémoire…). C’est aussi valable pour des applications réparties sur plusieurs machines.
- Usability (ergonomie) ce critère caractérise la qualité ergonomique de l’interface. Une interface doit être rapide, robuste et éventuellement internationalisée (i18n). Valable aussi pour la documentation utilisateur.
- Testibility (testabilité) capacité qu’a le système à s’auto-tester que ce soit en cours de dévelopement (tests unitaires) ou en production (tests de bon fonctionnement). Se dit aussi d’un systeme ou d’une application qui donnerait un contexte d’exemple et de démonstration.
- Performability(réponse) autant la scalability définit l’accéleration, autant la performability serait la vitesse maximum que l’application ou le système peut atteindre. Parfois la vitesse de traitement n’est pas une priorité (système asynchrone) et parfois le temps réel est un critère indispensable.
- Interoptibility(interopérabilité) capacité d’un système à s’interfacer avec d’autres applications externes. Ceci rajoute des efforts lors du dévelopement pour supporter par exemple un autre type de plateforme, de base de données, de langage… Ce paramètre aura une influence sur la stabilité et la testabilité. Plus votre application utilise d’autres systèmes, plus celle-ci est complexe à tester et débuger.
L’idéal est de voir quels sont les 3 critères les plus important afin que chacun s’accorde dessus. Grâce à cette technique il sera peut-être facile de voir que le client n’est pas intéressé par un système maintenable (Maintainability) puisqu’il n’envisage pas d’autres versions par la suite… D’autre part cela évitera de se lancer dans des dévelopements complexes pour des critères qui ne seront pas discriminant aux yeux de l’équipe Business.
Sur ce, je retourne à mon code pour terminer la partie « Scalability » avec JGroups… j’ai encore pas mal de travail en perspective.
0 no like