Module Génie Logiciel `a Objet

Transcription

Module Génie Logiciel `a Objet
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Module Génie Logiciel à Objet
Chapitre 1 - Introduction
Mohamed Bakhouya - Benoı̂t Delahaye
Université Internationale de Rabat - Université de Nantes
2013
Remerciements
I
Pascal André
I
Gerson Sunyé
M. Bakhouya - B. Delahaye
I
Jacques Lonchamp
Module Génie Logiciel à Objet
1/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Sources
I
Génie Logiciel - Polycopié du cours de Jacques Lonchamp
http://http://www.loria.fr/~jloncham/gl-fr.html
I
Développement de logiciel à objets avec UML - Jean-Marc
Jézéquel, Noël Plouzeau, Yves le Traon
http:
//people.irisa.fr/Jean-Marc.Jezequel/enseignement/PolyUML/poly.pdf
I
Modeling in Software Engineering - Benoit Combemale
http://people.irisa.fr/Benoit.Combemale/teaching/modeling/
gl-intro-2x2.pdf
I
Méthode Agile - Jean-Pierre Vickoff
http://www.etanche.net/BIO/MethodeAgile.pdf
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
2/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Modalités
Enseignants :
Mohamed Bakhouya ([email protected]) - Rabat
Benoı̂t Delahaye ([email protected]) - Nantes
I
CM/TD : 26h
I
TP : 12h
Evaluation :
I
Contrôle continu (1 CC sur table + devoirs maison)
I
TP à rendre (en plusieurs livrables ?)
I
Examen final
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
3/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
4/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Mots Clés
Génie Logiciel
I
I
Ensemble de techniques
pour le développement
logiciel
Méthodologie(s)
Objet
I
Représentation abstraite
I
Entité de base
Malléabilité
I
I
Capacité d’évolution, de
modification
Robustesse
I
Capacité de résistance
aux changements
I
Persistance des
caractéristiques face à des
perturbations
Maintenance évolutive
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
5/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Définition
Génie Logiciel
“Software engineering (SE) is the application of a
systematic, disciplined, quantifiable approach to the
design, development, operation, and maintenance of
software, and the study of these approaches ; that is,
the application of engineering to software” [SWEBOK]
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
6/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Motivation
Pourquoi faire appel au Génie Logiciel si :
I
Tout ce dont on a besoin est sur
NetBeans/Eclipse/Emacs/VIM, etc. ?
I
On peut copier des millions d’exemples sur Internet ?
I
On peut utiliser des milliers de composants open-source ?
On peut développer des logiciels sans connaı̂tre le génie logiciel,
tout comme on peut construire des maisons sans connaı̂tre
l’architecture.
Mais des fois...
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
7/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
La réutilisation de composants existants s’avère complexe
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
8/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Les composants ne s’adaptent pas (bien) à l’environnement
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
9/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
L’assemblage de composants existants est plus compliqué qu’il
ne paraı̂t
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
10/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
La solution n’est pas adaptée à tous les utilisateurs
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
11/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
La mise en oeuvre de la solution ne correspond pas à sa
conception
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
12/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Les utilisateurs refusent de s’adapter aux solutions proposées
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
13/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Conclusion : Besoin de règles, principes, méthodes, méthodologies
et outils pour le développement logiciel
C’est le Génie logiciel
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
14/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Objectifs du module
Appréhender le génie logiciel à objets :
I
Appréhender le modèle à objets : (intérêts, concepts,
variantes)
I
Maı̂triser le concept de modélisation et les outils associés
(UML, classes, patrons de conception. . . )
I
Comprendre et appréhender les aspects avancés de la
modélisation objet (spécialisation, généricité, héritage. . . )
I
Découvrir et pratiquer le principe de la programmation par
contrats (OCL)
I
Pratiquer la modélisation et la programmation (Eiffel)
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
15/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Introduction
Historique
Etat des lieux
Complexité des systèmes
Risques : Catastrophes célèbres
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
16/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Etat des lieux
Apparition du génie lociel dans les année 1970 pour répondre à la
crise du logiciel
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
17/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Complexité des systèmes : Exemples
I
I
I
Critique
Temps réel
Embarqué
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
18/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Complexité des systèmes : Exemples
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
19/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Quelques axes de complexité
I
critique
I
réutilisable
I
temps réel
I
auto-adaptatif
I
embarqué
I
dynamique
I
distribué
I
autonome
I
paramétré
I
...
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
20/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Introduction
Historique
Etat des lieux
Complexité des systèmes
Risques : Catastrophes célèbres
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
21/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Therac 25
Machine de radio-thérapie
développée conjointement entre
le Canada et la France
I
6 morts
I
de nombreuses personnes
irradiées
Les causes
I
Négligence du test
I
Documentation inadéquate
M. Bakhouya - B. Delahaye
I
Programmé en assembleur
I
Réutilisation de briques
logicielles
Module Génie Logiciel à Objet
22/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Ariane 5 - vol 501
Nouveau fleuron aérospatial
I
370 millions de $
I
aucune victime
Les causes
I
Réutilisation de briques
logicielles
I
Chaı̂ne de défaillances
M. Bakhouya - B. Delahaye
I
Pas de redondance logicielle
I
Dépassement de capacité
Module Génie Logiciel à Objet
23/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Missile PATRIOT
Système de défense anti-missile
I
Défaillance missile SCUD
I
28 morts, 98 blessés
Les causes
I
Erreur d’approximation
I
Non-respect des hypothèses
M. Bakhouya - B. Delahaye
I
Composants logiciels non
adaptés
I
Délai de propagation d’une
update
Module Génie Logiciel à Objet
24/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Mais aussi...
I
USS Yorktown (1998) : Nombreuses pannes dues à des
divisions par 0
I
Mars Orbiter (1998) : Erreur de conversion d’unités
I
Mars Polar Lander (1999) : Erreur de détection de vibrations
I
Missile EXOCET : Missile non-répertorié, 88 morts
I
AT&T (1990) : Blackout du à une propagation en chaı̂ne de
messages d’erreur
I
F22 Raptor (2007) : 6 avions de chasse perdent leur système
de navigation en passant la ligne de changement de date
I
...
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
25/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Introduction
Historique
Génie Logiciel
Les Critères : CQFD
Les principes
Cycles de vie du logiciel
Méthodologies
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
26/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Génie Logiciel
Le génie logiciel est une discipline très vaste, liée à tous les
domaines de l’informatique. Il définit des principes de
développement, établit des règles à suivre, invente des
techniques, développe des méthodes et propose des outils pour
garantir la satisfaction de critères établis.
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
27/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Introduction
Historique
Génie Logiciel
Les Critères : CQFD
Les principes
Cycles de vie du logiciel
Méthodologies
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
28/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Génie Logiciel : Quels sont les critères à satisfaire ?
la règle du CQFD
I
Coût
I
Qualité
I
Fonctionnalité
I
Délais
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
29/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Maı̂triser le coût
Objectif : rester dans les limites prévues
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
30/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Maı̂triser les délais
Objectif : rester dans les limites prévues
En tenant compte
I
Des tests
I
Des modifications d’objectifs
I
De l’intégration
I
...
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
31/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Fonctionalité
Répondre aux besoins demandés par l’utilisateur, dans
l’environnement décrit
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
32/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Qualité : une notion complexe et multiforme 1/2
I
Validité : Aptitude à réaliser exactement les tâches définies
I
Fiabilité : Aptitude à assurer de manière continue le service
attendu (pas de panne)
I
Robustesse : Aptitude à fonctionner même dans des
conditions anormales
I
Extensibilité : Facilité d’adaptation aux changements de
spécification
I
Réutilisabilité : Aptitude à être réutilisé en tout ou partie
I
Compatibilité : Aptitude à être combiné à d’autres logiciels
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
33/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Qualité : une notion complexe et multiforme 2/2
I
Efficacité : Aptitude à bien utiliser les ressources matérielles
I
Portabilité : Facilité à être porté sur d’autres environnements
matériels ou logiciels
I
Traçabilité : Capacité à identifier et/ou suivre un élément du
cahier des charges lié à un composant logiciel
I
Vérifiabilité : Facilité de préparation de procédures de recette
et de certification
I
Intégrité : Aptitude à protéger les différents composants
contre des accès ou des modifications non autorisés
I
...
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
34/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Introduction
Historique
Génie Logiciel
Les Critères : CQFD
Les principes
Cycles de vie du logiciel
Méthodologies
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
35/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Principes fondamentaux
Les 7 principes fondamentaux du Génie Logiciel :
I
Rigueur
I
Séparation des problèmes
I
Modularité
I
Abstraction
M. Bakhouya - B. Delahaye
I
Anticipation du changement
I
Généricité
I
Construction incrémentale
Module Génie Logiciel à Objet
36/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Rigueur
Rigueur : Caractère de quelqu’un, de quelque chose qui se
distingue par une exactitude, une logique, une précision parfaites.
(Larousse)
En pratique :
I
Utilisation au maximum de lois mathématiques précises
I
Formalité
I
Suivi à la lettre de techniques formelles
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
37/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Séparation des problèmes
Séparation des problèmes : Règle de bon sens qui consiste à
considérer séparément différents aspects d’un même problème pour
en maı̂triser la complexité.
En pratique, plusieurs façons de faire (compatibles) :
I
Séparation dans le temps (= ordonnancement)
I
Séparation dans l’espace (= on se répartit les taches)
I
Séparation des qualités (= priorités)
Les méthodes du GL donnent des façons de séparer et
d’ordonnancer
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
38/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Modularité
Modularité : Caractéristique d’un système, matériel ou logiciel,
conçu en séparant les fonctions élémentaires pour qu’elles puissent
être étudiées et réalisées séparément. (Larousse)
Les modules sont des entités cohérentes qui peuvent
éventuellement être sorties du contexte et réutilisées. On parle
aussi de composants. Les intéractions entre différents modules
sont limitées et clairement explicitées.
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
39/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Abstraction
Abstraction : Opération intellectuelle qui consiste à isoler par la
pensée l’un des caractères de quelque chose et à le considérer
indépendamment des autres caractères de l’objet. (Larousse)
C’est un exemple de séparation des problèmes. On ne considère à
un instant donné que certains aspects du système que l’on juge
importants. On peut souvent considérer plusieurs niveaux
d’abstraction pour un même système.
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
40/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Anticipation du changement
La caractéristique essentielle du logiciel, par rapport à d’autres
produits, est qu’il est presque toujours soumis à des changements
continuels, dus à des corrections d’imperfections et/ou des
évolutions en fonction des besoins.
Ceci requiert des efforts pour prévoir, faciliter et gérer ces
évolutions inévitables. Il faut par exemple
I
Faire attention à la modularité (localisation des changements)
I
Faire attention à la compatibilité entre différentes versions
d’un même module
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
41/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Généricité
Généricité : Caractéristique générale qui permet d’englober une
classe naturelle d’objets dont chacun, pris séparément, reçoit une
dénomination spécifique. (Ainsi siège est un terme générique d’une
classe comprenant la chaise, le fauteuil, le tabouret, etc.).
(Larousse)
Il peut être parfois utile de remplacer la résolution d’un problème
spécifique par la résolution d’un problème plus général. Des
solutions génériques (paramétrables, adaptables) sont plus
facilement réutilisables.
cf classes, héritage, spécialisation
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
42/75
Introduction
Historique
Génie Logiciel
Cycles de vie du logiciel
Méthodologies
Construction incrémentale
Un procédé incrémental atteint son but par étapes, en s’en
approchant progressivement. Chaque résultat intermédiaire est
construit en étendant le précédent.
En pratique, on implémente d’abord un noyau fonctionnel pour
chaque module, qui inclut les fonctions de base. Ce noyau est
ensuite incrémenté petit à petit par de nouvelles fonctionnalités.
M. Bakhouya - B. Delahaye
Module Génie Logiciel à Objet
43/75