2021
Chapitre II :
En bref, le Génie Logiciel c’est l’ensemble des méthodes, outils et techniques utilisées pour
développer et maintenir du logiciel dans le but d’assurer la qualité et la productivité. C’est
donc l’art de la construction du logiciel. Il 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. Tout au long du processus de développement,
plusieurs méthodes et outils de tests existent.
Nous nous intéresserons ici aux méthodes de développement logiciel. Une méthode de
développement logiciel nécessite : une modélisation (concepts manipulés) ; une notation
associée à la modélisation ; un processus de développement et un (ou des) langage(s) et
plateforme(s) cible(s).
1. La modélisation formelle
Ici toutes les activités du logiciel sont validées par des preuves formelles, conception obtenue
par raffinements successifs de la machine abstraite au code. Les méthodes formelles intègrent
des langages permettant de définir toutes les contraintes et de garantir les vérifications et la
validation complète. Ces langages basés sur les mathématiques vont pouvoir prendre en compte
n’importe quel concept abstrait ou logique. Les outils sont :
- Les Automates ;
- La logique (temporelle, modale) ;
- L’Algèbre (algèbre universelle, algèbre de processus) ;
Un exemple : VDM (Vienna Description Method) : il utilise la théorie des ensembles pour
décrire les entités et les objets ; mais aussi les formules de la logique de prédicats pour spécifier
les propriétés (classes, etc.)
2. La modélisation fonctionnelle
• Le système opérant est le siège de l’activité productive de l’entreprise. Cette activité consiste
en une transformation de ressources ou flux primaires. Ces flux primaires peuvent être des flux
de matière, des flux financiers, des flux de personnel, des flux d’actifs ou enfin des flux
d’information.
divers, depuis les acteurs agissant plutôt dans l’activité productrice de l’entreprise, à ceux
dirigeant cette dernière.
MERISE est une méthode de conception de système d’information s’inscrit dans trois
dimensions exprimant :
• la démarche ou cycle de vie,
• le raisonnement ou cycle d’abstraction,
• la maîtrise ou cycle de décision.
La mise en œuvre de la méthode Merise doit toujours se repérer par rapport à ces trois
dimensions. Tout instant de la conception doit pouvoir se situer dans ce référentiel.
Ces trois dimensions sont présentées dans la figure suivante :
Les différents modèles des Systèmes d’information du niveau d’abstraction sont les suivant :
Dans la pratique, le cycle de décision est intégré dans le cycle de vie. Cela se traduit par
des résultats types à l'issue de chaque étape et par des décisions attendues, comme le montre
la figure suivante :
2. UML
Les méthodes utilisées dans les années 1980 pour organiser la programmation
impérative ou structurée ou fonctionnelles (notamment Merise) étaient fondées sur la
modélisation séparée des données et des traitements.
Lorsque la programmation par objets prend de l’importance au début des années 1990,
la nécessité d’une méthode qui lui soit adaptée devient évidente. Plus de cinquante méthodes
apparaissent entre 1990 et 1995 (Booch ou OOD, OOA, Classe-Relation, Fusion, HOOD,
OMT, OOM, OOSE, etc.) mais aucune ne parvient à s’imposer. En 1994, le consensus se fait
autour de trois méthodes :
1
L’OMG (Object Management Group) est une association américaine à but non-lucratif créée en 1989 dont l’objectif
est de standardiser et promouvoir le modèle objet sous toutes ses formes. L’OMG est notamment à la base des
spécifications UML, MOF, CORBA et IDL. L’OMG est aussi à l’origine de la recommandation MDA
UML à partir de sa version 1.3 propose neuf (9) diagrammes tandis qu’il en existe
quatorze (14) depuis UML 2.3.
Les 14 diagrammes UML sont dépendants hiérarchiquement et se complètent, de façon à
permettre la modélisation d'un projet tout au long de son cycle de vie. Ils sont regroupés en trois
grandes vues :
Diagrammes structurels ou statiques qui rassemblent :
Diagramme de classes : il représente les classes intervenant dans le système ;
Diagramme d’objets : il sert à représenter les instances de classes (objets) utilisées
dans le système ;
Diagramme de composants : il permet de montrer les composants du système d'un
point de vue physique, tels qu'ils sont mis en œuvre (fichiers, bibliothèques, bases
de données…)
Diagramme de déploiement : il sert à représenter les éléments matériels
(ordinateurs, périphériques, réseaux, systèmes de stockage…) et la manière dont
les composants du système sont répartis sur ces éléments matériels et interagissent
entre eux.
Diagramme des paquetages : un paquetage étant un conteneur logique
permettant de regrouper et d'organiser les éléments dans le modèle UML, le
diagramme de paquetage sert à représenter les dépendances entre paquetages,
c’est-à-dire les dépendances entre ensembles de définitions.
Diagramme de structure composite : depuis UML 2.x, permet de décrire sous
forme de boîte blanche les relations entre composants d'une classe.
Diagramme de profils : depuis UML 2.2, permet de spécialiser, de personnaliser
pour un domaine particulier un meta-modèle de référence d'UML.
Les chiffres montrent que dans un processus de développement, la phase de test coute 40% de
l’ensemble (avec 40% pour l’analyse et 20% pour le codage). Les programmes de tests peuvent
parfois être plus longs que le programme à tester. Le concepteur devrait donc y penser dès le
départ.
Durant les étapes du cycle de vie, on pourra retrouver des tests aux principales étapes :
- tests de régression (suite à des modifications)
- Tests de recette : test de réception du logiciel chez le client final
- Tests intégration système : test de l’intégration du logiciel avec d’autres logiciels
- Tests système : test d’acception du logiciel avant livraison (nouvelle version par
exemple)
- Tests Intégration : test de l’intégration des différents composants (avec ou sans
hardware)
- Tests Unitaires : tests élémentaires des composants logiciels (une fonction, un
module, ...)
-Tests de non-régression
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.
Proposé par M. DIFFOUO TAZO Evariste Page 26
Cours Installation et maintenance des logiciels ISESTMA
2021
- 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.
Le test du logiciel commence dès la première phase du projet. Ci-dessous le cycle de test logiciel