Académique Documents
Professionnel Documents
Culture Documents
Malgré les évolutions citées plus haut, on note qu’au fur et à mesure que
les coûts du matériel diminuent, les coûts des programmes informatiques
(curieusement) augmentent !
La diminution des coûts du matériel (hardware) a conduit à associer
l’ordinateur à de plus en plus de produits. Les coûts des logiciels
connaissent une très forte croissance, dominant maintenant le coût du
A la fin des années 70, on ne sait pas « faire » des logiciels (plusieurs
tentatives de logiciels vont échouer)
- Les besoins et contraintes de l’utilisateur ne sont pas respectés (pas de
facilité d’emploi, interfaces homme/machine inexistantes)
- Les coûts ne sont pas maîtrisés
- On relève régulièrement des retards dans la livraison des produits (non
maîtrise du temps)
- On note une grande rigidité dans les solutions mises en place
- Quelque fois on arrive à des incohérences pendant l’utilisation
- On est aussi confronté au manque de performance et de robustesse
(fiabilité)
- Les codes sont difficiles à maintenir
- On arrive parfois à des logiciels non utilisables
Le Génie Logiciel est défini le 30 décembre 1983 comme étant « l’ensemble des
activités de conception et de mise en œuvre des produits et des procédures
tendant à rationnaliser la production du logiciel et son suivi ».
Objectifs :
- Maîtriser les coûts et les délais de développement
- Améliorer la productivité (de l’équipe de développement)
- Fournir une assurance qualité du produit livré
- aux outils
- à l’organisation générale
- à la gestion de projets
Le génie logiciel est basé sur des méthodologies et des outils qui permettent de
formaliser et même d'automatiser partiellement la production de logiciels, mais
il est également basé sur des concepts plus informels, et demande des capacités
de communication, d'interprétation et d'anticipation. De fait, la « crise du logiciel
» n'est pas complètement résolue aujourd’hui. Le génie logiciel reste un « art »
qui demande de la part de l'informaticien une bonne formation aux différentes
techniques (le savoir), mais également un certain entrainement et de
l'expérience (le savoir-faire).
Le « cycle de vie d'un logiciel » (en anglais Software Lifecycle), désigne toutes les
étapes du développement d'un logiciel, de sa conception à sa disparition.
L'objectif d'un tel découpage est de permettre de définir des jalons
intermédiaires permettant la validation du développement logiciel, c'est-à-dire
la conformité du logiciel avec les besoins exprimés, et la vérification du
processus de développement, c'est-à-dire l'adéquation des méthodes mises en
œuvre. L'origine de ce découpage provient du constat que les erreurs ont un
coût d'autant plus élevé qu'elles sont détectées tardivement dans le processus
de réalisation. Le cycle de vie permet de détecter les erreurs au plus tôt et ainsi
de maîtriser la qualité du logiciel, les délais de sa réalisation et les coûts associés.
Le modèle en cascade est présenté ci-dessous. Il faut noter que dans ce modèle,
une modification dans une étape « N » ne remet en cause que l’étape « N-1 ».
1.5.3. Modèle en V
Figure : Modèle en V
Dans le modèle en cascade, chaque spécification faite aux étapes de gauche doit
correspondre à une procédure de test (jeu de test à décrire) pour s’assurer que
le composant correspond à la description faite aux étapes de droite.
- Dans le premier tour, on détermine les objectifs du cycle, les alternatives, les
contraintes en s’appuyant sur les cycles précédents, ou sur une analyse primaire.
- Dans le premier tour : analyser les risques, évaluer les alternatives, proposer
un maquettage.
- Dans le deuxième tour : s’occuper du développement et de la vérification de la
solution retenue en cours.
- Dans le troisième tour : passer en revue les résultats du cycle précédent et
planifier le cycle suivant.
Dans cette méthode, on évolue par incréments, en partant d’un noyau de base
qui est par la suite complété progressivement. Généralement, une bonne
planification et une spécification rigoureuse sont nécessaires, ainsi qu’une
bonne planification et une forte indépendance au niveau fonctionnel et au
niveau du calendrier.
1.6. Méthodes
- Maintenance
La qualité peut être « prouvée » en maîtrisant les paramètres tels que les coûts,
les délais. On doit pouvoir la mesurer ou tout au moins la quantifier.
1.7. La Spécification
Bertrand Meyer a défini les 7 pièges qui guettent lors d’un processus de
spécification, mais également les 7 mots clés de réussite.
- Communicable
- Faisable
- Modifiables
- Validable
- Complète
- Cohérente
- Informelle (structurée)
- Semi-formelle
- Formelle (mathématique)
- Modèle
- Démarche
- Langage
- Outils
Méthodes Informelles
Cas de SADT (dans son approche fonctionnelle), BOOCH (dans son approche
objet initiale), MERISE…
Méthodes Semi-formelles
Elles permettent des vérifications, mais pas sur tous les aspects.
Méthodes Formelles
- Logique
- Algèbre
- Mixte, ….
Approche Fonctionnelle
Approche Objet
Les données et les fonctions sont encapsulées dans les mêmes « boites » qui
dialoguent entre elles (les objets) par envoi de messages.
Approche Modèles
Approche Agiles
Dans tous les cas, lors de votre démarche essayez toujours de prendre en compte
:
Durant les étapes du cycle de vie, on pourra retrouver des tests aux principales
étapes :
Les tests doivent permettre de détecter des erreurs ou des insuffisances dans un
logiciel, en se basant sur un référentiel défini au préalable. On retrouve :
- les tests de vérification : il s’agit de s’assurer que le système est conforme aux
spécifications définies initialement.
- les tests de correction : il s’agit de s’assurer que le système fournit des résultats
exacts.
- les tests de validation : il s’agit de s’assurer que le système répond aux attentes
de l’utilisateur et aux contraintes de l’environnement.
Les tests effectués pourront être statiques (porter sur des textes, des
spécifications ou des modules programmes sans les exécuter) ou dynamiques
(porter sur des programmes à exécuter ou sur des séries de données entrées).
1.9.1. Problématique :
Le code source n'est pas évolutif : plus votre application aura une structure
complexe plus vous peinerez à déceler des erreurs et problèmes de conception
de manière empirique. Vous serez contraint à moyen terme, de reprogrammer
entièrement votre application.
Tout ceci aura non seulement un impact sur la fiabilité de votre programme (et
vos prestations de service), mais également sur le temps alloué pour le
Le processus qui vous est proposé ci-dessus fait abstraction des contraintes liées
à la gestion de projet (cahier des charges, organisation interne, etc.) ainsi que de
la phase d'analyse. Il est basé sur le développement piloté par les tests (TDD) et
s'adresse particulièrement aux développeurs PHP autonomes.
1 Ajouter un test,
2 vérifier qu'il ne passe pas,
3 implémenter la fonctionnalité,
4 exécuter les tests unitaires - déboguer en cas d'échec,
5 refactoriser le code source - exécuter à nouveau les tests unitaires, passer à
l'objectif suivant...