Rappel Genie Logiciel
Rappel Genie Logiciel
Rappel Genie Logiciel
Chapitre 1
1. Crise du logiciel
Durant les années 70, on a constaté la naissance d’une crise de l'industrie du logiciel dont les
principaux symptômes sont :
Le coût de développement d'un logiciel est presque impossible à prévoir et le délai de
livraison n'est que rarement respecté. On cite ainsi dans la littérature des dépassements
moyens du coût budgeté et du délai prévu respectivement de 70% et 50%.
La qualité du logiciel livré est souvent déficiente. Le produit ne satisfait pas les
besoins de l'utilisateur, il consomme plus de ressources que prévu et il est à l'origine
de pannes.
La maintenance du logiciel est difficile, coûteuse et souvent à l'origine de nouvelles
erreurs. Mais en pratique, il est indispensable d'adapter les logiciels car leurs
environnements d'utilisation changent et les besoins des utilisateurs évoluent.
Il est rare qu'on puisse réutiliser un logiciel existant ou un de ses composants pour
confectionner un nouveau système, même si celui ci comporte des fonctions
similaires. Tout amortissement sur plusieurs projets est ainsi rendu impossible.
Page 1
Chapitre 1 Principes du génie logiciel DSI4 & MDW4
Pour maîtriser la complexité des systèmes logiciels et s’assurer que le logiciel produit répond
réellement aux besoins des utilisateurs, il convient de procéder selon une démarche bien
définie, de se baser sur des principes et méthodes, et d'utiliser des outils performants.
Le génie logiciel (software ingineering) cherche donc à établir et à utiliser des principes dans
le but de développer économiquement du logiciel qui est fiable et qui fonctionne efficacement
sur les machines.
Page 2
Chapitre 1 Principes du génie logiciel DSI4 & MDW4
2. Le génie logiciel
2.1. Génie
Le mot génie, utilisé en général accompagné d'un adjectif, comme dans génie civil, génie
chimique ou génie atomique, désigne, d'après le Petit Robert, les connaissances et techniques
de l'ingénieur.
Ce terme est synonyme de science de l'ingénieur (engineering) qui peut être définie comme
l'application des sciences et mathématiques par laquelle les propriétés de la matière et les
sources d'énergie de la nature sont rendues utiles à l'homme dans des constructions, machines,
produits, systèmes et procédés.
2.2. Logiciel
L'Organisation internationale de normalisation, appelée brièvement ISO, a défini en 1981 le
logiciel (software) comme une création intellectuelle rassemblant des programmes, des
procédures, des règles et de la documentation utilisés pour faire fonctionner un système
informatique.
D’après Classical and Object-Oriented Software Engineering with UML and Java de Schach:
« Le Génie Logiciel est une discipline qui a pour but la fabrication du logiciel sans faute,
livré dans le délai et le budget prévus à l’avance, et qui satisfait aux besoins du client ».
Page 3
Chapitre 1 Principes du génie logiciel DSI4 & MDW4
Point de vue
utilisateur
Ce que ça fait
Un bon
Comment ça le fait programme Combien ça coûte
Page 4
Chapitre 1 Principes du génie logiciel DSI4 & MDW4
Sécurité :
– intégrité
– confidentialité, authentification
Interopérabilité
– Programme : disponibilité/compatibilité sur divers environnements, OS, ...
– Données : standards, formats d'échange
– Programme + données : protocoles
Page 5
Chapitre 2 Modélisation, cycles de vie et méthodes DSI4 & MDW4
Chapitre 2
Page 6
Chapitre 2 Modélisation, cycles de vie et méthodes DSI4 & MDW4
Dans le domaine de l’ingénierie du logiciel, le modèle permet de mieux répartir les tâches et
d’automatiser certaines d’entre elles. C’est également un facteur de réduction des coûts et des
délais. Par exemple, les plateformes de modélisation savent maintenant exploiter les modèles
pour faire de la génération de code (au moins au niveau du squelette) voire des allers-retours
entre le code et le modèle sans perte d’information. Le modèle est enfin indispensable pour
assurer un bon niveau de qualité et une maintenance efficace. En effet, une fois mise en
production, l’application va devoir être maintenue, probablement par une autre équipe et, qui
plus est, pas nécessairement de la même société que celle ayant créée l’application.
Le choix du modèle a donc une influence capitale sur les solutions obtenues. Les systèmes
non-triviaux sont mieux modélisés par un ensemble de modèles indépendants. Selon les
modèles employés, la démarche de modélisation n’est pas la même.
1.3. Qui doit modéliser ?
La modélisation est souvent faite par la maîtrise d’œuvre informatique (MOE). C’est
malencontreux, car les priorités de la MOE résident dans le fonctionnement de la plate-forme
informatique et non dans les processus de l’entreprise.
Il est préférable que la modélisation soit réalisée par la maîtrise d’ouvrage (MOA) de sorte
que le métier soit maître de ses propres concepts. La MOE doit intervenir dans le modèle
lorsque, après avoir défini les concepts du métier, on doit introduire les contraintes propres à
la plate-forme informatique.
Il est vrai que certains métiers, dont les priorités sont opérationnelles, ne disposent pas
toujours de la capacité d’abstraction et de la rigueur conceptuelle nécessaires à la
formalisation. La professionnalisation de la MOA a pour but de les doter de ces compétences.
Cette professionnalisation réside essentiellement dans l’aptitude à modéliser le système
d’information du métier : le maître mot est modélisation. Lorsque le modèle du système
d’information est de bonne qualité, sobre, clair, stable, la maîtrise d’œuvre peut travailler dans
de bonnes conditions. Lorsque cette professionnalisation a lieu, elle modifie les rapports avec
l’informatique et déplace la frontière des responsabilités, ce qui contrarie parfois les
informaticiens dans un premier temps, avant qu’ils n’en voient apparaître les bénéfices.
1.4. Maîtrise d’ouvrage et maîtrise d’œuvre
Maître d’ouvrage (MOA) :
Le MOA est une personne morale (entreprise, direction etc.), une entité de l’organisation. Ce
n’est jamais une personne.
Maître d’œuvre (MOE) :
Le MOE est une personne morale (entreprise, direction etc.) garante de la bonne réalisation
technique des solutions. Il a, lors de la conception du SI, un devoir de conseil vis-à-vis du
MOA, car le SI doit tirer le meilleur parti des possibilités techniques.
Le MOA est client du MOE à qui il passe commande d’un produit nécessaire à son activité.
Le MOE fournit ce produit ; soit il le réalise lui-même, soit il passe commande à un ou
plusieurs fournisseurs (« entreprises ») qui élaborent le produit sous sa direction.
La relation MOA et MOE est définie par un contrat qui précise leurs engagements mutuels.
Lorsque le produit est compliqué, il peut être nécessaire de faire appel à plusieurs
fournisseurs. Le MOE assure leur coordination ; il veille à la cohérence des fournitures et à
leur compatibilité. Il coordonne l’action des fournisseurs en contrôlant la qualité technique, en
assurant le respect des délais fixés par le MOA et en minimisant les risques.
Le MOE est responsable de la qualité technique de la solution. Il doit, avant toute livraison au
MOA, procéder aux vérifications nécessaires (« recette usine »).
Page 7
Chapitre 2 Modélisation, cycles de vie et méthodes DSI4 & MDW4
Page 8
Chapitre 2 Modélisation, cycles de vie et méthodes DSI4 & MDW4
Le modèle de cycle de vie en cascade (cf. figure 1.1) a été mis au point dès 1966, puis
formalisé aux alentours de 1970.
Dans ce modèle le principe est très simple : chaque phase se termine à une date précise par la
production de certains documents ou logiciels. Les résultats sont définis sur la base des
interactions entre étapes, ils sont soumis à une revue approfondie et on ne passe à la phase
suivante que s’ils sont jugés satisfaisants.
Le modèle original ne comportait pas de possibilité de retour en arrière. Celle-ci a été rajoutée
ultérieurement sur la base qu’une étape ne remet en cause que l’étape précédente, ce qui, dans
la pratique, s’avère insuffisant.
L’inconvénient majeur du modèle de cycle de vie en cascade est que la vérification du bon
fonctionnement du système est réalisée trop tardivement: lors de la phase d’intégration, ou
pire, lors de la mise en production.
Page 9
Chapitre 2 Modélisation, cycles de vie et méthodes DSI4 & MDW4
Le modèle en V (cf. figure 1.2) demeure actuellement le cycle de vie le plus connu et
certainement le plus utilisé. Il s’agit d’un modèle en cascade dans lequel le développement
des tests et du logiciel sont effectués de manière synchrone.
Le principe de ce modèle est qu’avec toute décomposition doit être décrite la recomposition et
que toute description d’un composant est accompagnée de tests qui permettront de s’assurer
qu’il correspond à sa description.
Ceci rend explicite la préparation des dernières phases (validation-vérification) par les
premières (construction du logiciel), et permet ainsi d’éviter un écueil bien connu de la
spécification du logiciel : énoncer une propriété qu’il est impossible de vérifier objectivement
après la réalisation.
Cependant, ce modèle souffre toujours du problème de la vérification trop tardive du bon
fonctionnement du système.
3.3. Modèle de cycle de vie en spirale
Proposé par B. Boehm en 1988, ce modèle est beaucoup plus général que le précédent. Il met
l’accent sur l’activité d’analyse des risques : chaque cycle de la spirale se déroule en quatre
phases :
1. détermination, à partir des résultats des cycles précédents, ou de l’analyse préliminaire
des besoins, des objectifs du cycle, des alternatives pour les atteindre et des contraintes ;
2. analyse des risques, évaluation des alternatives et, éventuellement maquettage ;
3. développement et vérification de la solution retenue, un modèle « classique » (cascade
ou en V) peut être utilisé ici ;
4. revue des résultats et vérification du cycle suivant.
L’analyse préliminaire est affinée au cours des premiers cycles. Le modèle utilise des
maquettes exploratoires pour guider la phase de conception du cycle suivant. Le dernier cycle
se termine par un processus de développement classique.
Page 10
Chapitre 2 Modélisation, cycles de vie et méthodes DSI4 & MDW4
Page 11
Chapitre 2 Modélisation, cycles de vie et méthodes DSI4 & MDW4
Page 12
Chapitre 2 Modélisation, cycles de vie et méthodes DSI4 & MDW4
Page 13
Chapitre 3 Spécification des besoins DSI4 & MDW4
Chapitre 3
Il n'est pas réaliste de se lancer dans la conception d'un logiciel uniquement sur la
base d'un tel énoncé.
Le cahier des charges peut être exprimé en langue naturelle. Cette solution présente
l'avantage d'être facilement compréhensible par le client, mais conduit
inévitablement à certaines ambiguïtés liées à l'utilisation de la langue naturelle.
L'utilisation d'une langue naturelle rend également difficilement envisageable une
vérification automatique de consistance (c'est-à-dire de non-contradiction) des
spécifications. Pour cette raison des recherches ont amené à proposer des langages
spécialisés permettant d'exprimer les spécifications d'un cahier des charges.
Toutefois, pour comprendre l'importance d'une formulation rigoureuse du cahier
des charges il suffit de considérer les faits suivants [Alford 77]:
Page 14
Chapitre 3 Spécification des besoins DSI4 & MDW4
dans presque tous les projets logiciels qui échouent, le cahier des charges
s'est trouvé avoir du retard, être incomplet, trop contraignant ou simplement
incorrect;
une erreur introduite dans le cahier des charges, donc tôt dans le cycle de vie
du logiciel, est extrêmement coûteuse à corriger (ces erreurs sont
généralement découvertes tard dans le développement du logiciel nécessitent
souvent l'adjonction de code, remettent en cause la conception du logiciel et
nécessitent de retester certaines parties du logiciel)
Un bon cahier des charges peut être caractérisé par les 7 qualificatifs suivants
[IEEE 830]:
1. non ambigu
2. complet
3. vérifiable
4. consistant
5. modifiable
6. traçable
7. utilisable durant la maintenance.
Ces qualificatifs sont intéressants surtout parce qu'ils sont révélateurs de problèmes
pouvant résulter d'un cahier des charges mal élaboré. Commentons brièvement ces
qualificatifs:
non ambigu : La non ambiguïté exige notamment une grande précision dans
l'utilisation des termes introduits (si possible définir les termes dans un glossaire
faisant partie du cahier des charges);
vérifiable : Une spécification non vérifiable est par exemple: "le logiciel doit être
facile à utiliser";
consistant : Un cahier des charges n'est pas consistant si deux spécifications sont
contradictoires. Le problème devient sensible à partir d'une certaine taille du cahier
des charges;
Page 15
Chapitre 3 Spécification des besoins DSI4 & MDW4
traçable : Le traçage est la possibilité d'avoir des références croisées entre les
spécifications de plusieurs versions du cahier des charges (parfois entre les
spécifications du cahier des charges et la conception du logiciel). Le traçage arrière
consiste à pouvoir, à partir d'une spécification, retrouver la spécification dont elle
découle (dans la version précédente du cahier des charges). Le traçage avant
consiste, à partir d'une spécification, à trouver les spécifications auxquelles elle a
donné naissance (dans la version suivante);
Voici pour finir un énoncé des objectifs d'un cahier des charges [Heninger 80]. Un
cahier des charges devrait:
Page 16
Chapitre 3 Spécification des besoins DSI4 & MDW4
Page 17
Chapitre 3 Spécification des besoins DSI4 & MDW4
3. Spécifications fonctionnelles
les contraintes d'interface. On peut distinguer ici les contraintes imposées par
l'environnement logiciel (par exemple: le programme doit s'exécuter sur tel
système d'exploitation), par l'environnement matériel (par exemple: le
programme doit utiliser les caractéristiques de tel terminal) ou par
l'environnement humain (par exemple: les commandes mises à disposition
doivent satisfaire telle ou telle contrainte);
les contraintes de performance. Il s'agit par exemple de contraintes de
mémoire (mémoire principale ou disque), de temps de réponse, des
contraintes de sécurité, etc.
Page 18
Chapitre 3 Spécification des besoins DSI4 & MDW4
Voici à titre d'exemple, quelques spécifications tirées du cahier des charges pour
l'environnement de programmation de Ada (cahier des charges baptisé
STONEMAN);
4.C.1 Une interface virtuelle, indépendante de toute machine hôte, doit être fournie
pour communiquer avec l'APSE (Ada Programming Support Environment).
4.C.2 L'interface virtuelle doit être basée sur des concepts simples, évidents à
comprendre et à utiliser, et peu nombreux.
...
Spécifications fonctionnelles
1. Lorsqu'un mot non identifié est rencontré dans le texte, l'utilisateur doit avoir le
choix entre remplacer le mot par un mot de substitution, insérer le mot dans le
dictionnaire, rechercher des mots similaires dans le dictionnaire afin d'en
déterminer l'orthographe correcte, ou sortir du programme.
2. Toute la ligne contenant l'éventuel mot mal écrit doit être affichée au terminal.
...
Page 19
Chapitre 3 Spécification des besoins DSI4 & MDW4
...
10. Chaque fois que c'est possible, les données entrées par l'utilisateur doivent être
vérifiées, et en cas d'erreur, le programme affichera un message approprié.
Spécifications non-fonctionnelles
11. Le dictionnaire doit être capable de contenir au moins 40'000 mots. Des
techniques de compression sont acceptables.
13. Un mot est une chaîne d'un ou plusieurs caractères délimités par des caractères
ne faisant pas partie d'un mot. Les caractères qui font partie d'un mot sont les lettres
majuscules et minuscules (sans distinction entre elles) et les apostrophes.
14. Les méthodes internes de tri et de recherches ne sont pas critiques dans la
définition du système. Les méthodes doivent être efficaces du point de vue du
temps de calcul et utiliser un minimum de mémoire.
...
16. Le dictionnaire doit pouvoir être contenu sur une disquette de 5 1/4 pouces
double-face, d'une capacité de 400'000 octets.
17. Les mots jusqu'à au moins 13 caractères doivent être analysés pour vérifier s'ils
sont écrits correctement. Les mots plus longs doivent pouvoir être affichés au
terminal, afin de permettre à l'utilisateur d'en vérifier l'écriture.
...
20. Les commandes du programme doivent être présentées sous forme de menu
clair et concis.
la spécification no. 10 est vague. Une information plus précise peut toute
fois éventuellement être trouvée dans le manuel de l'utilisateur préliminaire
joint au cahier des charges;
la remarque concernant la compression du dictionnaire (spécification no. 11
) ne semble pas à sa place: la décision de compression doit être un choix
d'implémentation;
Page 20
Chapitre 3 Spécification des besoins DSI4 & MDW4
Les spécifications non fonctionnelles sont toutes les spécifications qui n'expriment
pas une fonction du logiciel. Ces spécifications expriment des contraintes.
Page 21
Chapitre 3 Spécification des besoins DSI4 & MDW4
9. Index : L'index doit permettre une utilisation facile du cahier des charges. Il est
judicieux de faire ressortir graphiquement (par exemple par une mise en caractères
gras) les références importantes à un terme, sa définition par exemple.
Il est en plus conseillé de joindre au cahier des charges une version préliminaire du
manuel de l'utilisateur. Le manuel de l'utilisateur permet souvent au client de
vérifier que le produit qui va être construit correspond à l'idée qui était faite. Le
mode d'emploi permet également de régler dans le détail le comportement du
logiciel dans le cas de l'entrée de données ou de commandes non correctes.
Page 22
Chapitre 4 Concevoir un logiciel DSI4 & MDW4
Chapitre 4
Concevoir un logiciel
1. Concevoir un logiciel
Concevoir un logiciel est un processus créatif qui demande du savoir faire ainsi que
de la perspicacité. Une conception finale est généralement obtenue par un processus
itératif à partir de conceptions préliminaires. Concevoir un logiciel ne s'apprend pas
dans un livre, mais par la pratique et l'étude de systèmes existants ainsi que par
l'expérience. Une bonne conception est la clé d'un développement de logiciel
efficace. Un système bien conçu est facile à réaliser et à maintenir, facile à
comprendre et fiable, il est de qualité. Bien qu'il puisse fonctionner correctement,
un système mal conçu sera souvent coûteux à maintenir, difficile à tester et peu
fiable. La phase de conception est donc la phase la plus cruciale du processus de
développement d'un logiciel.
Page 23
Chapitre 4 Concevoir un logiciel DSI4 & MDW4
2. Démarche de conception
Le concepteur part d'une analyse préalable des besoins pour établir un système qui
satisfasse à ces dits besoins. Cette dérivation s'accomplit généralement en suivant
les étapes suivantes et est dite conception descendante:
Page 24
Chapitre 4 Concevoir un logiciel DSI4 & MDW4
De plus, l'ingénieur logiciel sera très souvent amené à concevoir des mécanismes
de communication entre les divers processus du système, des structures de fichiers
et des structures de données manipulées par ces programmes.
3. Cohésion
2. la cohésion séquentielle dans laquelle la sortie d'un élément est utilisée en entrée
d'un autre;
Page 25
Chapitre 4 Concevoir un logiciel DSI4 & MDW4
6. la cohésion logique pour laquelle tous les éléments du composant effectuent des
opérations semblables comme la prise en compte ou le traitement d'erreurs;
Dans un objet cohésif, on représente une seule entité, et toutes les opérations
associées à cette entité font partie de cet objet. Par exemple, un objet représentant la
table des symboles d'un compilateur est cohésif si toutes les fonctions telles
que Ajouter un symbole, Chercher dans la table, etc., font partie de l'objet table des symboles.
La cohésion est une caractéristique hautement désirable. Elle signifie que chaque
composant ne représente qu'une partie de la résolution du problème. S'il s'avérait
nécessaire de modifier le système, alors cette partie étant très localisée et tout ce
qui çi rapporte étant encapsulé dans une seule unité, il n'y a pas besoin de modifier
les autres composants.
Si l'on implémente une fonctionnalité à l'aide d'un système à objets basé sur
l'héritage, on diminue fortement la cohésion d'un objet héritant d'attributs et
opérations de ses super classes. Il n'est, dès lors, plus possible de considérer un
objet comme une entité séparée et l'on doit aborder tout l'héritage pour comprendre
réellement ses fonctionnalités.
Page 26
Chapitre 4 Concevoir un logiciel DSI4 & MDW4
4. Couplage
En règle générale, les composants sont fortement couplés lorsqu'ils utilisent des
variables partagées ou lorqu'ils échangent des informations de contrôle.
La conception par objets à, peut-être pour principal avantage d'obtenir des systèmes
faiblement couplés. Dans une conception objet, il est fondamental que la
représentation d'un objet soit dissimulée à l'intérieur et donc ne soit pas visible de
l'extérieur. Il n'y a pas partage de l'état du système et n'importe quel objet peut être
remplacé par un autre ayant la même interface.
On dit qu'un composant fait preuve d'un haut degré de cohésion si les éléments le
constituant remplissent des fonctions très proches. Cela signifie que chaque
élément de cette unité doit être essentiel pour que cette unité remplisse son rôle.
Des éléments qui sont regroupés dans une même unité pour quelque autre raison,
par exemple parce qu'ils s'exécutent en même temps, ont un faible degré de
cohésion.
Page 27
Chapitre 4 Concevoir un logiciel DSI4 & MDW4
Le couplage est lié à la cohésion. C'est une indication de la force des connexions
entre unités. Des systèmes à couplage fort ont des connexions fortes entre des
unités qui dépendent les unes des autres, alors que des systèmes à couplage faible
sont constitués d'unités qui sont indépendantes ou presque.
L'avantage des systèmes à forte cohésion et à couplage faible est qu'il est possible
de remplacer un composant quelconque par un composant équivalent avec peu ou
pas de changement dans les autres parties du système. Ceci est également important
pendant le processus de conception. Avec un système à couplage faible, le
concepteur a l'option de changer d'avis en ce qui concerne un composant sans
provoquer des conséquences désastreuses pour le reste du logiciel.
6. Stratégie de conception
La conception fonctionnelle
(Approche par les traitements) Le système est conçu d'un point de vue
fonctionnel, en partant d'une vue de haut niveau, affinée successivement afin
d'obtenir une conception plus détaillée. L'état du système est centralisé et
partagé par les fonctions qui agissent sur cet état. On trouve des exemples de
cette stratégie dans la conception structurée (Constantine et Yourdon, 1979)
et «l'affinement à pas prudents» (Wirth, 1971, 1976). Les méthodes telles
que la programmation structurée Jackson (Jackson, 1975) ou la méthode
Warnier-Orr (Warnier, 1977) sont des techniques de décomposition
fonctionnelle où l'on se base sur les structures de données pour déterminer
les structures fonctionnelles qui traiteront ces données.
ces attributs. La plupart du temps, les objets sont membres d'une classe
d'objets dont la définition détermine les opérations et les attributs dont
disposeront les membres de la classe. Ceux-ci peuvent être hérités d'une ou
de plusieurs super-classes si bien que la définition d'une classe revient à
définir les différences entre cette classe et ses super-classes. D'un point de
vue conceptuel, les objets communiquent en échangeant des messages. En
pratique, la communication entre objet est réalisée par l'appel, depuis un
objet, d'une procédure associée à un autre objet.
On peut également mentionner les conceptions guidées par les données. Ces
dernières s'appliquent essentiellement à certains problèmes d'utilisation de grandes
bases de données.
Page 29