GL Poly Principal Ilhem Boussaïd
GL Poly Principal Ilhem Boussaïd
GL Poly Principal Ilhem Boussaïd
Ilhem Boussaïd
4 octobre 2010
Table des matières
1 Introduction 2
1.1 Analyse de l’existant : Crise du logiciel . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Une solution : le Génie Logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Qualité exigée d’un logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.3 Principes du Génie Logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Appendices 17
Introduction
Le mot génie, utilisé en général accompagné d’un adjectif, comme dans génie civil, génie chi-
mique ou génie atomique, désigne, d’après le Petit Robert, les connaissances et techniques de
l’ingénieur. Ce terme est donc synonyme de science de l’ingénieur (engineering).
Qu’est ce qu’un logiciel ?
Par logiciel on n’entend pas seulement l’ensemble des programmes informatiques (du code)
associés à une application ou à un produit, mais également un certain nombre de documents
se rapportant à ces programmes et nécessaires à leur installation, utilisation, développement et
maintenance : spécification, schémas conceptuels, jeux de tests, mode d’emploi, etc.
Pour les grands systèmes, l’effort nécessaire pour écrire cette documentation est souvent aussi
grand que l’effort de développement des programmes eux-mêmes.
2.1 Définition
Cycle de vie : ensemble des étapes de la réalisation, de l’énoncé des besoins à la maintenance ou
au retrait du logiciel.
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 produit, les délais de sa
réalisation et les coûts associés.
De façon générale, on peut dire que le cycle de vie du logiciel est la période de temps s’étalant
du début à la fin du processus du logiciel. Il commence donc avec la proposition ou la décision
de développer un logiciel et se termine avec sa mise hors service.
– La définition des besoins est un énoncé, en langue naturelle, des services que le système
est sensé fournir à l’utilisateur. Il doit être écrit de manière à être compréhensible par les
décideurs côté client et côté contractant, ainsi que par les utilisateurs et acheteurs potentiels
du système.
– La spécification des besoins est un document structuré qui énonce les services de manière
plus détaillée. Ce document doit être suffisamment précis pour servir de base contractuelle
entre le client et le fournisseur du logiciel. On peut utiliser des techniques de spécification
formelle pour rédiger un tel document, mais cela dépendra du bagage technique du client.
– Il est difficile de détecter les inconsistances ou l’incomplétude d’une spécification lorsqu’elle
est décrite dans un langage naturel non structuré. On doit toujours imposer une structuration
du langage lors de la définition des besoins.
– Les besoins changent inévitablement. Le cahier des charges doit donc être conçu de manière
à être facilement modifiable
– La cohésion. Le composant peut-il être compris sans que l’on fasse référence à d’autres com-
posants ?
– L’appellation. Les noms utilisés dans le composant sont-ils significatifs ? Des noms significatifs
reflètent les noms des entités du monde réel que l’on modélise.
– La documentation. Le composant est-il documenté de manière à ce que l’on puisse établir une
correspondance claire entre le monde réel et le composant ? Est-ce que cette correspondance
est résumée quelque part.
– La complexité. Les algorithmes utilisés pour implémenter le composant sont-ils complexes ?
L’adaptabilité
Si l’on doit maintenir une conception, cette dernière doit être facilement adaptable. Bien sûr, il
faut pour cela que les composants soient faiblement couplés. En plus de ça, la conception doit
être bien documentée, la documentation des composants doit être facilement compréhensible et
consistante avec l’implémentation, cette dernière devant elle aussi être écrite de manière lisible.
2.6 Implémentation
Après la conception détaillée, on peut passer à la phase d’implémentation, également appelée
phase de construction, phase de réalisation ou phase de codage (implementation phase, construc-
tion phase, coding phase). Lors de cette phase, la conception détaillée est traduite dans un
langage de programmation.
2.9 Installation
Après avoir intégré le logiciel, on peut l’installer dans son environnement d’exploitation, ou dans
un environnement qui simule cet environnement d’exploitation, et le tester pour s’assurer qu’il
se comporte comme requis dans la spécification élaborée lors de la phase d’analyse.
Cette phase s’appelle la phase d’installation (installation phase ou installation and check-out
phase). Les tests effectués durant cette phase prennent des noms variés selon leur nature. On
parle parfois de validation. Si l’on veut insister sur le fait que ces tests doivent préparer la
décision du mandant d’accepter ou non le logiciel, on utilise les termes test d’acceptance, test
de recette ou test de réception (acceptance test). Enfin, s’il s’agit de montrer le comporte-
ment et les performances du logiciel dans son environnement d’exploitation réel, le terme test
d’exploitation est d’usage (operational test).
2.10 Maintenance
Après l’installation suit la phase d’exploitation et de maintenance (operation and maintenance
phase). Le logiciel est maintenant employé dans son environnement opérationnel, son comporte-
ment est surveillé et, si nécessaire, il est modifié. Cette dernière activité s’appelle la maintenance
du logiciel (software maintenance).
Il peut être nécessaire de modifier le logiciel pour corriger des défauts, pour améliorer ses perfor-
mances ou autres caractéristiques, pour adapter le logiciel à un nouvel environnement ou pour
répondre à des nouveaux besoins ou à des besoins modifiés. On peut donc distinguer entre la
maintenance corrective, la maintenance perfective et la maintenance adaptative. Sauf
pour des corrections mineures, du genre dépannage, la maintenance exige en fait que le cycle de
développement soit réappliqué, en général sous une forme simplifiée.
Maintenance corrective
– Corriger les erreurs : défauts d’utilité, d’utilisabilité, de fiabilité...
– Identifier la défaillance, le fonctionnement
– Localiser la partie du code responsable
– Corriger et estimer l’impact d’une modification
– Attention
– La plupart des corrections introduisent de nouvelles erreurs
– Les coûts de correction augmentent exponentiellement avec le délai de détection
– Corriger et estimer l’impact d’une modification
– La maintenance corrective donne lieu à de nouvelles livraisons (release)
Maintenance adaptative
– Ajuster le logiciel pour qu’il continue à remplir son rôle compte tenu du l’évolution des
– Environnements d’exécution
– Fonctions à satisfaire
– Conditions d’utilisation
– Ex : changement de SGBD, de machine, de taux de TVA, an 2000, euro...
– Idéal quand les besoins sont bien connus, quand l’analyse et la conception sont claires
Il n’est pas nécessaire d’adopter un seul modèle à chaque cycle de la spirale ou même pour
l’ensemble d’un système. Le modèle de la spirale englobe tous les autres modèles. Le prototypage
peut être utilisé dans une spirale pour résoudre le problème de la spécification des besoins, puis
il peut être suivi d’un développement basé sur le modèle conventionnel de la cascade. On peut
utiliser la transformation formelle pour une partie du système à haute sécurité, et une approche
basée sur la réutilisation pour l’interface utilisateur.
Le cahier des charges est un document recensant les spécifications/exigences. Il résulte de l’ana-
lyse et est contractuel entre le client et l’entreprise informatique qui va réaliser le logiciel. Il doit
donc être validé par les deux. Qualités attendues : non ambigu, complet, vérifiable, cohérent, mo-
difiable, traçable, utilisable durant la maintenance, indépendant des solutions (voir notamment
la norme IEEE 830).
Plan type :
1. introduction : présentation générale, motivations, définitions des termes
2. contexte : environnement matériel et humain, acteurs et utilisateurs, interaction avec
d’autres systèmes et logiciels, existant
3. spécifications fonctionnelles : grandes fonctionnalités du système, acteurs et autres sys-
tèmes qu’elles impliquent
4. spécifications non fonctionnelles, contraintes :
– charte graphique
– matériel : marques, RAM, débit de connexion Internet...
– interfaçage : protocoles de communication, formats de fichiers, etc., pour l’interaction
avec des matériels, logiciels, systèmes d’exploitation...
– performances : temps réel...
– sécurité : sauvegardes, confidentialité, ...
– charge à supporter : volume des données, nombre d’utilisateurs simultanés, ...
– comportement en cas de panne...
5. priorités relatives des spécifications, versions à prévoir, délais
6. évolutions à prévoir
7. annexes
Couramment, les points 2 à 6 sont présentés en deux temps, de façon générale puis de façon
détaillée, donnant alors lieu à deux parties organisées essentiellement de la même façon. Une
exigence générale se décline alors en plusieurs exigences détaillées.