Chapitre1_Introduction à l'ingénerie des logiciel
Chapitre1_Introduction à l'ingénerie des logiciel
Chapitre1_Introduction à l'ingénerie des logiciel
W. Guendouzi
www.guend.jimdo.com
Mise à jour : 2021
GL et la Crise de logiciel
Aspect historique : La crise du logiciel
1950-1960 (cause)
• Évolution de l’informatique
Micro informatique,
BD relationnelle,
Réseaux systèmes distribués,
Informatique embarquée,..etc..
• Chute des coûts du matériel informatique
• Augmentation de la demande sur le matériel et le
logiciel informatique
Aspect historique : La crise du logiciel
1950-1960 (cause)
• Tâche complexe :
Taille et complexité des logiciels
Taille des équipes de
conception/développement
Des développeurs inexpérimentés et
incompétents
Spécification :
Établir une description claire de ce que doit
faire le logiciel (fonctionnalités détaillées,
exigences de qualité, interface…)
Clarifier le cahier des charges (ambiguïtés,
contradictions) en listant les exigences
fonctionnelles et non fonctionnelles
Processus de développement
(cycle de vie)
Conception : Élaborer une solution concrète réalisant
la spécification
Description architecturale en composants (avec
interface et fonctionnalités)
Réalisation des fonctionnalités par les composants
(algorithmes, organisation des données)
Réalisation des exigences non fonctionnelles
(performance, sécurité…)
Programmation :
Implantation de la solution conçue
Choix de l'environnement de développement,
du/des langage(s) de programmation, de normes
de développement...
Processus de développement
(cycle de vie)
Validation et vérification
Validation : assurer que les besoins du client sont
satisfaits (au niveau de la spécification, du produit fini...)
Vérification : assurer que le logiciel satisfait sa
spécification
Livraison et maintenance
Correction : identifier et corriger des erreurs trouvées
après la livraison
Adaptation : adapter le logiciel aux changements dans
l'environnement (format des données, environnement
d'exécution...)
Perfection : améliorer la performance, ajouter des
fonctionnalités, améliorer la maintenabilité du logiciel
Approches de Modélisation
Approches de Modélisation
Modèle :
Simplification de la réalité, abstraction, vue subjective
modèle météorologique, économique,
démographique...
En génie logiciel :
Modélisation = spécification + conception
Aider la réalisation d'un logiciel à partir des besoins
du client
Approches de Modélisation
1. L’abstraction
1. L’abstraction - exemple -
2. Encapsulation
2. Encapsulation - exemple -
Approche orientée objet
Éléments de base de l’orienté objet
3. Héritage
• L’héritage est la propriété qui fait
bénéficier à une sous-classe (classe
fille) de la structure et du
comportement de sa surclasse (classe
mère ).
Approche orientée objet
Éléments de base de l’orienté objet
3. Héritage
3. Héritage - exemple -
Approche orientée objet
Éléments de base de l’orienté objet
3. Héritage
• surclassement ou upcasting
3. Héritage
• surclassement ou upcasting
4. Polymorphisme
Le polymorphisme est la différence de comportement qui existe entre
des classes filles d’une même classe mère pour les méthodes de même
nom.
4. Polymorphisme
Surcharge de méthode (overloading ou polymorphisme ad hoc) on définit dans
une même classe ou dans des classes différentes des méthodes ayant le même
nom mais pas les mêmes signatures (paramètres différents).
Le polymorphisme ad hoc est surtout utile pour uniformiser les traitements d'objets
de classes non liées par héritage.
Approche orientée objet
Éléments de base de l’orienté objet
d) Polymorphisme
Redefinition de methode (overriding) : on définit dans une classe une méthode
ayant le même nom et la même signature qu'une méthode de la classe mère
Approche orientée objet
Éléments de base de l’orienté objet
• Une classe abstraite ne peut pas posséder d’instance directe car elle ne fournit pas
une description complète.
• Une classe abstraite sert à factoriser des attributs et méthodes communs à ses sous-
classes (spécifier un comportement commun à plusieurs classes)
• Dans une hiérarchie d’héritage, les classes qui ne sont pas des feuilles sont
généralement abstraites
Approche orientée objet
Éléments de base de l’orienté objet
6. Interface
• Une interface est une classe totalement abstraite, c’est à dire sans attribut (ou
bien uniquement des constantes) et dont toutes les méthodes sont abstraites
et publiques.
• Une classe peut également dépendre d’une interface pour réaliser ses
opérations. Cette dernière est alors employée comme type au sein de la
classe (attribut, paramètre de l’une des méthodes ou variable locale de l’une
des méthodes).
Une classe qui dépend d’une interface en est sa cliente.
6. Interface - exemple -
Approche orientée objet
Éléments de base de l’orienté objet
Association
• C’est un lien faible entre les classes qui ne spécifie pas le type de la
relation ni les contrainte sur le lien
• Les paramètre type que l’on passe a une méthode d’une classe,
• la classe qui exécute la fonction se sert du paramètre mais n’en garde
aucune trace.
Agregation (delegation)
• les classes agrégées ont une existence indépendante de la classe
agrégat
• attribut de la classe agrégat contient une référence vers la classe
agrégée
• les instances des classes à agréger sont passé au constructeur ou à
des mutateurs avec des paramètres typés.
Tiré de : https://blog.developpez.com/rawsrc/p10377/conception/dependances_et_couplage_des_classes_poo
Approche orientée objet
Éléments de base de l’orienté objet
Tiré de : https://blog.developpez.com/rawsrc/p10377/conception/dependances_et_couplage_des_classes_poo
Sources du cours