CH1 CH2 CH3 Coo Uml
CH1 CH2 CH3 Coo Uml
CH1 CH2 CH3 Coo Uml
Chapitre 1 : Introduction
Introduction
UML
25 heures de cours.
10 heures de TD.
12 heures de TP.
Note des Tps / Mini projet
Note de l'examen final
Comment faire des logiciels de qualité ? Génie
Logiciel (Software Engineering)
Motivations
La « Crise du logiciel »
Mise en évidence au début des années 70, la crise se
caractérise par
l'absence de maîtrise des projets, au niveau des coûts et
des délais,
la mauvaise qualité des produits: les produits ne répondent
pas aux besoins définis et des erreurs résiduelles
persistent dans le produit final
un stock important de projets en attente faute d'une
gestion rigoureuse
Quelques exemples de logiciels défaillants :
La facture de 0DH...(pas juste)
Conception Orientée Objet (UML)
Le génie logiciels ?
Motivations
Mars Pathfinder (1997)
La « Crise du logiciel »
Concurrence
Mars Spirit Rover (2003)
La fausse attaque de
Manque de mémoire
missiles (Novembre 1979)
Inversion dans le système de bord
du F16
La panne AT&T (1990)
L’avion se serait retourné à
L’échec d’Ariane 5 (1996) chaque fois qu’il traversait
La poste (1998) l’équateur
Panne de courant en Amérique du
Les anti-missiles Patriotes nord (2003)
(Guerre du Golfe 1991)
Problème de concurrence
Samy / MySpace XSS (2005)
Les sondes perdues
Debian / OpenSSL (2008)
vers Vénus( années 60)
vers Mars (99)
Conception Orientée Objet (UML)
Plus d'info : http://www5.in.tum.de/~huckle/bugse.html
Le génie logiciels ?
Motivations
La « Crise du logiciel »
Et les erreurs que l'on ignore : logiciels de surveillance médicale
défaillants
....et l ’an 2000 (qui a fait dépenser des millions de $ pour des
logiciels développés pour la plupart en pleine crise du logiciel) qui
a finalement été bien absorbée sans provoquer trop de
défaillances.
Etude sur 8 380 projets (Standish Group, 1995)
Succès : 16 %
Problématique : 53 % (budget ou délais non respectés, défaut
de fonctionnalités)
Echec : 31 % (abandonné)
Le taux de succès décroît avec la taille des projets et la taille
des entreprises.
Conception Orientée Objet (UML)
Le génie logiciels ?
Motivations
Matériel et logiciel
Systèmes informatiques
80 % de logiciel
20 % de matériel
Depuis plusieurs années, la fabrication du matériel
est assurée par quelques fabricants seulement
Le matériel est relativement fiable
Le marche est standardise
Les problèmes liés à l’informatique sont
essentiellement des problèmes de Logiciel.
Conception Orientée Objet (UML)
Le génie logiciels ?
Le Génie Logiciel
Conférence de l’OTAN à Garmish, Allemagne (1968)
L’informatique ne répond pas aux attentes qu’elle
suscite
L’informatique coûte très cher et désorganise les
entreprises ou organisations
Introduction de l’expression « Génie Logiciel »
(Software Engineering)
Comment faire des logiciels de qualité ?
Qu’attend-on d’un logiciel ? Quels sont les critères
de qualité pour un logiciel ?
Conception Orientée Objet (UML)
Le génie logiciels ?
Un processus de fabrication original
Le logiciel partage des propriétés
contradictoires avec l’art, les technologies et
le Génie Civil
Les possibilités de réutiliser les savoir-faire
des autres technologies sont (très) limitées
Compte tenu du cycle de production, il faut
bien faire tout de suite « La qualité du
processus de fabrication est garante de la
qualité du produit »
Conception Orientée Objet (UML)
Qualités d’un logiciel
Utilité
Adéquation entre :
Le besoin effectif de l’utilisateur
Les fonctions offertes par le logiciel
Solutions :
Emphase sur l’analyse des besoins
Améliorer la communication (langage commun,
démarche participative)
Travailler avec rigueur.
Conception Orientée Objet (UML)
Qualités d’un logiciel
Utilisabilité
« Effectivité, efficacité et satisfaction avec laquelle des
utilisateurs spécifiés accomplissent des objectifs
spécifiés dans un environnement particulier »
Facilité d’apprentissage : comprendre ce que l’on
peut faire avec le logiciel, et savoir comment le faire
Facilité d’utilisation : importance de l’effort nécessaire
pour utiliser le logiciel à des fins données
Solutions :
Analyse du mode opératoire des utilisateurs
Adapter l’ergonomie des logiciels aux utilisateurs.
Conception Orientée Objet (UML)
Qualités d’un logiciel
Fiabilité
Correction, justesse, conformité : le logiciel est conforme à ses spécifications,
les résultats sont ceux attendus
Robustesse, sûreté : le logiciel fonctionne raisonnablement en toutes
circonstances, rien de catastrophique ne peut survenir, même en dehors des
conditions d’utilisation prévues
Mesures :
MTBF : Mean Time Between Failures
Disponibilité (pourcentage du temps pendant lequel le système est utilisable)
et Taux d’erreur (nombre d’erreurs par KLOC)
Solutions :
Utiliser des méthodes formelles, des langages et des méthodes de
programmation de haut niveau
Vérifications, tests
Progiciels.
Conception Orientée Objet (UML)
Qualités d’un logiciel
Interopérabilité, couplabilité
Un logiciel doit pouvoir interagir en synergie avec
d’autres logiciels
Solutions :
Bases de données (découplage données/traitements)
« Externaliser » certaines fonctions en utilisant des «
Middleware » avec une API (Application Program
Interface) bien définie.
Standardisation des formats de fichiers (XML...) et
des protocoles de communication (CORBA…)
Les ERP (Entreprise Resources Planning).
Conception Orientée Objet (UML)
Qualités d’un logiciel
Performance
Les logiciels doivent satisfaire aux contraintes
de temps d’exécution
Solutions :
Logiciels plus simples
Veiller à la complexité des algorithmes
Machines plus performantes
Portabilité
Un même logiciel doit pouvoir fonctionner sur
plusieurs machines et plusieurs plateformes
(systèmes d'exploitation)
Solutions :
Rendre le logiciel indépendant de son
environnement d’exécution
Machines virtuelles
Réutilisation (ré-utilisabilité)
On peut espérer des gains considérables car dans la
plupart des logiciels :
80 % du code est du « tout venant » qu’on retrouve à
peu près partout
20 % du code est spécifique
Solutions :
Abstraction, généricité
Construire un logiciel à partir de composants prêts à
l’emploi (Développement par composants)
« Design Patterns » (les patrons de conception).
Conception Orientée Objet (UML)
Qualités d’un logiciel
Facilité de maintenance
Objectifs
Réduire la quantité de maintenance corrective (zéro défaut)
Rendre moins coûteuses les autres maintenances
Enjeux
Les coûts de maintenance se jouent très tôt dans le processus
d’élaboration du logiciel
Au fur et à mesure de la dégradation de la structure, la maintenance devient
de plus en plus difficile
Solutions :
Ré-utilisabilité, modularité
Vérifier, tester
Structures de données complexes et algorithmes simples
Anticiper les changements à venir
Conception Orientée Objet (UML)
Qualités d’un logiciel
Facilité de maintenance
Un logiciel ne s’use pas
Pourtant, la maintenance absorbe une très
grosse partie des efforts de développement.
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
La maintenance corrective donne lieu à de nouvelles
livraisons (release)
Conception Orientée Objet (UML)
Maintenance d’un logiciel
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
systèmes d'exploitation, de taux de TVA, an
2000, euro…
Maintenance perfective, d’extension
Accroître/améliorer les possibilités du logiciel
Ex : les services offerts, l’interface utilisateur,
les performances…
Donne lieu à de nouvelles versions.
Généralisation : regroupement d’un ensemble de fonctionnalités
semblables en une fonctionnalité paramétrable (généricité, héritage)
Structuration : façon de décomposer un logiciel (utilisation d’une
méthode bottom-up ou top-down)
Abstraction : mécanisme qui permet de présenter un contexte en
exprimant les éléments pertinents et en omettant ceux qui ne le
sont pas
Modularité : décomposition d’un logiciel en composants (modules)
discrets
Documentation : gestion des documents incluant leur identification,
acquisition, production, stockage et distribution
Vérification : détermination du respect des spécifications établies
sur la base des besoins identifiés dans la phase précédente du
cycle de vie.
Conception Orientée Objet (UML)
Cycle de vie
Étude de faisabilité
Organisation du projet
Spécification
Conception
Implémentation
Tests
Livraison
Maintenance
Conception Orientée Objet (UML)
Composantes du cycle de vie
Étude de faisabilité
Déterminer si le développement proposé vaut
la peine d'être mis en œuvre, compte tenu des
attentes et de la difficulté de développement
Étude de marché : déterminer s’il existe un
marché potentiel pour le produit.
Organisation du projet
Déterminer comment on va développer le logiciel
Analyse des coûts : établir une estimation du prix du
projet
Planification : établir un calendrier de développement
Assurance qualité du logiciel : déterminer les actions
qui permettront de s’assurer de la qualité du produit
fini
Répartition des tâches : hiérarchiser les tâches et
sous-tâches nécessaires au développement du
logiciel
Spécification
Déterminer les fonctionnalités que doit
posséder le logiciel
Collecte des exigences : obtenir de l’utilisateur
ses exigences pour le logiciel
Analyse du domaine : déterminer les tâches et
les structures qui se répètent dans le problème
Conception
Déterminer la façon dont le logiciel fournit les
différentes fonctionnalités recherchées
Conception générale
Conception architecturale : déterminer la
structure du système
Conception des interfaces : déterminer la façon
dont les différentes parties du système agissent
entre elles
Conception détaillée : déterminer les algorithmes
pour les différentes parties du système
Conception Orientée Objet (UML)
Composantes du cycle de vie
Implémentation
Écrire le logiciel (coder les différents
algorithmes déterminés dans la phase de
conception).
Tests : Essayer le logiciel sur des données d’exemple pour s’assurer
qu’il fonctionne correctement
Tests unitaires : faire tester les parties du logiciel par leurs
développeurs
Tests d’intégration : tester pendant l’intégration
Tests de validation : pour acceptation par l’acheteur (le client)
Tests système : tester dans un environnement proche de
l’environnement de production
Tests Alpha : faire tester par le client sur le site de développement
Tests Bêta : faire tester par le client sur le site de production
Tests de régression : enregistrer les résultats des tests et les
comparer à ceux des anciennes versions pour vérifier si la
nouvelle n’en a pas dégradé d’autres
Conception Orientée Objet (UML)
Composantes du cycle de vie
Livraison
Fournir au client une solution logicielle qui
fonctionne correctement
Installation : rendre le logiciel opérationnel
sur le site du client
Formation : enseigner aux utilisateurs à se
servir du logiciel
Assistance : répondre aux questions des
utilisateurs
Maintenance
Mettre à jour et améliorer le logiciel pour
assurer sa pérennité
Pour limiter le temps et les coûts de
maintenance, il faut porter ses efforts sur les
étapes antérieures.
Modèles linéaires et incrémentaux
Modèles linéaires
Cascade
modèle en V
...
Modèles non linéaires
Prototypage
modèles incrémentaux
modèle en spirale
…
Conception Orientée Objet (UML)
Le cycle de vie en « Cascade »
Ce modèle est
qualifié de modèle
séquentiel linéaire.
Décrit par Royce
en 1970, était alors
la première
modélisation d'une
suite de tâches
standard. Ce
modèle est adapté
pour des projets de
petite taille, et dont
le domaine est bien
maîtrisé.
Conception Orientée Objet (UML)
Le cycle de vie en « V »
Le modèle de cycle
de vie en V part du
principe que les
procédures de
vérification de la
conformité du logiciel
aux spécifications
doivent être
élaborées dès les
phases de
conception. Le
modèle en V est
adapté pour des
projets dont le
domaine est bien
maîtrisé.
Conception Orientée Objet (UML)
Le prototypage
Prototype : version d’essai du logiciel
Pour tester les différents concepts et exigences
Pour montrer aux clients les fonctions que l’on
veut mettre en œuvre
Lorsque le client a donné son accord, le
développement suit souvent un cycle de vie
linéaire
Avantages : Les efforts consacrés au
développement d’un prototype sont le plus souvent
compensés par ceux gagnés à ne pas développer
de fonctions inutiles
Conception Orientée Objet (UML)
Le modèle incrémental de Parnas
Concevoir et livrer au client un sous-ensemble
minimal et fonctionnel du système
Procéder par ajouts d’incréments minimaux
jusqu’à la fin du processus de développement
Avantages : meilleure intégration du client dans
la boucle, produit conforme à ses attentes
Un modèle mixte
A chaque cycle, recommencer :
Consultation du client
Analyse des risques
Conception
Implémentation
Tests
Planification du prochain cycle
Avantages : meilleure maîtrise des risques, mais
nécessite une (très) grande expérience
Conception Orientée Objet (UML)
Le modèle en Spirale de Boehm
Le Langage de Modélisation Unifié, de l'anglais Unified Modeling
Language (UML), est un langage de modélisation graphique à base
de pictogrammes conçu pour fournir une méthode normalisée pour
visualiser la conception d'un système.
Il est couramment utilisé en développement logiciel et en conception
orientée objet.
L'UML est le résultat de la fusion de précédents langages de
modélisation objet : Booch, OMT, OOSE. Principalement issu des
travaux de Grady Booch, James Rumbaugh et Ivar Jacobson.
UML est à présent un standard adopté par l'Object Management
Group (OMG).
UML 1.0 a été normalisé en janvier 1997; UML 2.0 a été adopté par
l'OMG en juillet 2005. La dernière version de la spécification validée
par l'OMG est UML 2.5.1 (2017)
Conception Orientée Objet (UML)
Introduction à UML
Les diagrammes de structure (structure
diagrams) ou diagrammes statiques (static
diagrams) rassemblent :
Diagrammes de déploiement (Deployment diagram) : Ils montrent la
disposition physique et matérielle conçue pour héberger et déployer
la système.
Diagrammes de paquetages (Package diagram) : Ils sont utilisés
pour diviser un modèle en terme de conteneurs logiques ou packages.
Ils permettent aussi de décrire les interactions entre packages.
Diagrammes de structures composites (Composite structure
diagram):
Ils fournissent un moyen pour mettre en couches la structure d'un
élément et se focaliser sur un détail interne, sa construction ou ses
relations.
Prof. M. BENADDY Conception Orientée Objet (UML) 54
Diagrammes d’UML
Les diagrammes de comportement (behavior
diagrams) :
modélisent le comportement en capturant les variétés
d'interaction et les états instantanés d'un modèle pendant
son «exécution» dans le temps
Les diagrammes de comportement (behavior
diagrams) rassemblent :
Diagramme des cas d'utilisation (use-case diagram) :
représentation des possibilités d'interaction entre le
système et les acteurs (intervenants extérieurs au
système), c'est-à-dire de toutes les fonctionnalités que
doit fournir le système.
Diagramme états-transitions (state machine diagram) :
représentation sous forme de machine à états finis le
comportement du système ou de ses composants.
Diagramme d'activité (activity diagram) : représentation
sous forme de flux ou d'enchaînement d'activités le
comportement du système ou de ses composants.
Prof. M. BENADDY Conception Orientée Objet (UML) 56
Diagrammes d’UML
Les diagrammes de comportement (behavior
diagrams) rassemblent :
Diagramme de séquence (sequence diagram) : représentation de
façon séquentielle du déroulement des traitements et des
interactions entre les éléments du système et/ou de ses acteurs.
Diagramme de communication (communication diagram) :
représentation de façon simplifiée d'un diagramme de séquence se
concentrant sur les échanges de messages entre les objets (depuis
UML 2.x).
Diagramme global d'interaction (interaction overview diagram) :
représentation des enchaînements possibles entre les scénarios
préalablement identifiés sous forme de diagrammes de séquences
(variante du diagramme d'activité) (depuis UML 2.x).
Diagramme de temps (timing diagram) : représentation des
variations d'une donnée au cours du temps (depuis UML 2.3).
Prof. M. BENADDY Conception Orientée Objet (UML) 57
Diagrammes d’UML
Remarque : Les diagrammes les plus utilisés
sont :
Diagramme de cas d'utilisation,
diagramme de séquence,
diagramme de classes,
diagramme d'états-transitions
et diagramme d'activités.
Questions :
Que doit faire le système ?
Il s’agit de définir le quoi ?
Quelles sont les fonctionnalité du système ?
Quels sont les acteurs ?
Quelle relation y’a t-elle entre acteur et système ?
Un cas d’utilisation (use case) représente un
ensemble de séquences d’actions qui sont
réalisées par le système et qui produisent un
résultat observable pour un acteur particulier.
Chaque cas d’utilisation spécifie un
comportement attendu du système considéré
comme un tout, sans imposer le mode de
réalisation de ce comportement.
Un cas d’utilisation permet de décrire ce que le
futur système devra faire, sans spécifier comment
il le fera.
Prof. M. BENADDY Conception Orientée Objet (UML) 61
Diagrammes de cas d’utilisation
Comment les identifier ? L’ensemble des cas
d’utilisation doit décrire exhaustivement les exigences
fonctionnelles du système. Chaque cas d’utilisation
correspond donc à une fonction métier du système,
selon le point de vue d’un de ses acteurs.
Pour chaque acteur, il convient de :
rechercher les différentes intentions métier avec
lesquelles il utilise le système,
déterminer dans le cahier des charges les services
fonctionnels attendus du système.
Comment les analyser ?
Pour détailler la dynamique du cas d’utilisation, la
procédure la plus évidente consiste à recenser de
façon textuelle toutes les interactions entre les
acteurs et le système. Le cas d’utilisation doit avoir
un début et une fin clairement identifiés. Il faut
également préciser les variantes possibles, telles que
le cas nominal, les différents cas alternatifs et
d’erreur, tout en essayant d’ordonner
séquentiellement les descriptions, afin d’améliorer
leur lisibilité.
Régle : Nommez les cas d’utilisation par un verbe à l’infinitif suivi
d’un complément, du point de vue de l’acteur (et non pas du point
deM. vue
Prof. du système). Conception Orientée Objet (UML)
BENADDY 63
Diagrammes de cas d’utilisation
Acteur :
Un acteur représente un rôle joué par une entité externe (utilisateur
humain, dispositif matériel ou autre système) qui interagit
directement avec le système étudié.
Un acteur peut consulter et/ou modifier directement l’état du
système, en émettant et/ou en recevant des messages susceptibles
d’être porteurs de données.
Comment les identifier ? Les acteurs candidats sont
systématiquement :
les utilisateurs humains directs : faites donc en sorte d’identifier tous
les profils possibles, sans oublier l’administrateur, l’opérateur de
maintenance, etc. ;
les autres systèmes connexes qui interagissent aussi directement
avec le système étudié, souvent par le biais de protocoles
bidirectionnels.
Prof. M. BENADDY Conception Orientée Objet (UML) 64
Diagrammes de cas d’utilisation
Comment représenter un acteur ? La représentation graphique
standard de l’acteur en UML est l’icône appelée stick man, avec le
nom de l’acteur sous le dessin. On peut également figurer un acteur
sous la forme rectangulaire d’une classe, avec le mot-clé <<actor>>.
Une troisième représentation (intermédiaire entre les deux premières)
est également possible avec certains outils, comme cela est indiqué ci-
dessous.
Une bonne recommandation consiste à faire prévaloir l’utilisation de la
forme graphique du stick man pour les acteurs humains et une
représentation rectangulaire pour les systèmes connectés.
Prof. M. BENADDY Conception Orientée Objet (UML) 65
Diagrammes de cas d’utilisation
Types d’acteurs :
Les acteurs principaux : les personnes qui utilisent
les fonctions principales du système.
Les acteurs secondaires : les personnes qui
effectuent des tâches administratives ou de
maintenance.
Le matériel externe : les dispositifs matériels
incontournables qui font partie du domaine de
l’application et qui doivent être utilisés.
Les autres systèmes : les systèmes avec lesquels le
système doit interagir.
Relations entre acteurs et cas d'utilisation :
Les acteurs impliqués dans un cas d'utilisation lui sont
liés par une association.
Un acteur peut utiliser plusieurs fois le même cas
d'utilisation et peut participer à plusieurs cas
d’utilisation.
Relations entre les cas d'utilisation :
Inclusion « include »: le cas A inclut le cas B (B est
une partie obligatoire de A).
Extension « exrend »: le cas B étend le cas A (B est
une partie optionnelle de A).
Généralisation : le cas A est une généralisation du
cas du cas B (B est une sorte de A).
Etdue de cas : Guichet Automatique de la Banque
Cette étude de cas concerne un système simplifié de Guichet
Automatique de Banque.
(GAB). Le GAB offre les services suivants :
Distribution d’argent à tout Porteur de carte de crédit, via un
lecteur de carte et un distributeur de billets.
Consultation de solde de compte, dépôt en numéraire et dépôt de
chèques pour les clients porteurs d’une carte de crédit de la
banque adossée au GAB.
A ne pas oublier que :
Toutes les transactions sont sécurisées.
Il est parfois nécessaire de recharger le distributeur, etc.
À partir de ces quatre phrases, nous allons progressivement :
1- identifier les acteurs ; 2- identifier les cas d’utilisation ;
Prof. M. BENADDY Conception Orientée Objet (UML) 70
Diagrammes de cas d’utilisation
Etdue de cas : Guichet Automatique de la Banque
À partir de ces quatre phrases, nous allons progressivement :
….
3- construire un diagramme de cas d’utilisation ;
4- décrire textuellement les cas d’utilisation ;
5- compléter les descriptions par des diagrammes dynamiques ;
6- organiser et structurer les cas d’utilisation.
Remarque : Bien
que ce diagramme
ne fasse pas partie
des diagrammes
UML « officiels », il
est très souvent
trouvé utile dans
des projets réels.