Upload
truongdat
View
222
Download
0
Embed Size (px)
Citation preview
Régis Clouard, ENSICAEN - GREYC
1I2AC1 : Génie logiciel et Conception par objet
Chapitre 1Introduction au génie logiciel
« Si les ouvriers construisaient les bâtimentscomme les développeurs écrivent leurs programmes,
le premier pic-vert venu aurait détruit toute civilisation. » Gerald Weinberg
301Chapitre
Science informatique
■ L'informatique est un vaste domaine qui couvre :
...
Logiciel d'application1
Système d'Information / Base de données2
Réseau / Système d'exploitation3
Informatique embarquée4
Informatique industrielle5
Temps réel / Parallélisme6
Maîtrise d'ouvrage / Avant vente7
401Chapitre
Ingénieur informatique ENSICAEN
■ Développeur logiciel d’applicationaliasArchitecte logiciel d’application● En charge du développement de :
▶ « gros » logiciels,▶ « bons » logiciels.
501Chapitre
Programmeur/Codeur logiciel
■ Confusion programmation et développement de logiciels.● Aujourd’hui tout le monde programme.
Un programmeur réalise des œuvres personnelles à usage personnel...
... plus ou mois bien réussies.
601Chapitre
Développeur / Architecte logiciel
Un développeur produitdes ouvrages d’art pour une population ...
..qui sont hors de portée d’un programmeur.
701Chapitre
Qu'est ce qu'un logiciel ?
■ Un programme ou un ensemble de programmes.● destiné à des utilisateurs,● reposant sur un système d'exploitation,● s'exécutant sur une architecture matérielle,● utilisant les réseaux,● et interfaçant des périphériques.
Hardware
Système d'exploitation
Logiciel
Ré
sea
u
Pé
riphériq
ue
801Chapitre
Conséquences sur le développement
■ Le développement de logiciels requière des compétences informatiques variées :
▶ Interaction homme-machine▶ Réseau▶ Matériel▶ Architecture logicielle▶ Sécurité▶ Domaine spécialisé : monétique, image, …
■ Cf. le programme d’enseignement de l’école.
901Chapitre
Qu’est ce qu’un « gros » logiciel ?
■ Unité de mesure de la taille d’un logiciel● LOC : lines of code (MLOC : 106 LOC → 40 romans épais).
■ La taille des logiciels explose :● Commandes de vol A380 : 1 MLOC* (contre 100 KLOC pour l'A320).● Jeu World of Warcraft : 5,3 MLOC (jeu de rôle en ligne massivement
multijoueur).● OS Android : 11,8 MLOC.● Noyau Linux 3.1 (2011) : 17 MLOC.● Facebook : 62 MLOC.● Windows 10 : 80 MLOC (contre 40 MLOC Windows 7).● Google (tous les services internet) : 2 GLOC en 2015.
1001Chapitre
Conséquences sur le développement
■ La taille des logiciels oblige à un travail en équipe.● Mesure en mois-homme (man-month) :
▶ x mois-hommes = x mois pour 1 homme ou x hommes en 1 mois ou toute autre combinaison.
■ Par exemple : Le coût de développement de l’algorithme de recherche de Google est estimé à 1000 années-hommes.
1101Chapitre
Coût de développement
■ Ordre de grandeur :● 1 année-homme ~= 1650h.● 1h ~= 50€.● Productivité ~= 2 à 5 LOC / h.
■ Donc, le code suivant :
● met 1h à traverser tout le cycle de développement et coûte 50€ !
static void bubbleSort( int[] array ) { for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length – i - 1; j++) { if (array[j] > array[j + 1]) { swap(array[j], array[j + 1]); } } }}
static void bubbleSort( int[] array ) { for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length – i - 1; j++) { if (array[j] > array[j + 1]) { swap(array[j], array[j + 1]); } } }}
1201Chapitre
Qu'est ce qu'un « bon » logiciel ?
■ Point de vue de la MOA● MOA : maîtrise d’ouvrage : futur propriétaire du produit final).
Bon logiciel
Livré dansles délais
Fiable
Évolutif Convivial
Économique
1301Chapitre
Qu'est ce qu'un « bon » logiciel ?
■ Point de vue de la MOE● MOE : maîtrise d’œuvre, ie les développeurs.
Bon logiciel
Maintenable
Simple
Testable Portable
Réutilisable
1501Chapitre
La crise du logiciel
■ Expression née d’un constat en 1968 après 23 ans de recul :● Il est incroyablement difficile de réaliser dans les délais prévus des logiciels
satisfaisant la qualité attendue.● La complexité conduit à une incapacité à maîtriser le logiciel qui en résulte.
■ Raisons● Il n’existe pas de théorie générale de la construction de logiciel.
▶ « Nous sommes toujours à la recherche d'une théorie générale de la construction de logiciels, à l'image des équations de la mécanique classique qui permettent de concevoir un pont robuste. » Joseph Sifakis (prix Turing 2007).
● Il n’existe pas, non plus, de mesures objectives et incontestables de la qualité des logiciels.
1601Chapitre
Une réponse : le génie logiciel (1968)
■ Le génie logiciel est l'ensemble des activités de conception et de mise en œuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi.
■ Source d’inspiration● Le génie civil et l’architecture.
■ En pratique, le génie logiciel définit :1) Une méthode pour planifier, organiser et contrôler les activités de travail d'une
équipe.2) Un paradigme qui définit la façon fondamentale de composer les programmes
du logiciel.3) Un formalisme pour représenter de manière non-ambiguë le problème et sa
solution.
1701Chapitre
Une méthode : le cycle en V
Analyse des besoins Recette métier
Spécificationfonctionnelle
Validation
Conceptiondétaillée
Tests unitaires
Programmation
MOA
MOEConception
architecturale Tests d'intégration
1801Chapitre
Un paradigme : conception procédurale
■ Un programme est conçu comme une suite finie de procédures plus ou moins élémentaires qui s’enchaînent.
Programme principalProgramme principal
Procédure 4Procédure 4
Procédure 2Procédure 2
Procédure 3Procédure 3
Procédure 1Procédure 1
Procédure 5Procédure 5
1901Chapitre
Un formalisme : algorithmique
■ Structures de données.■ Suite d’instructions séquentielle.■ Analyse de complexité.
2001Chapitre
Ingénierie logicielle
■ Il en résulte deux métiers :1. Analyste
▶ Analyse des besoins.■ Rédaction du cahier des charges (terme emprunté au génie civil).
▶ Spécification fonctionnelle, Conception générale et Conception détaillée.■ Rédaction de la documentation technique.
2. Programmeur▶ Écriture du code.▶ Écriture des tests.▶ Déploiement.
2101Chapitre
Plan du chapitre
1Pourquoi
un cours sur legénie logiciel ? 2
Le génie logiciel
3Constat d’échec
2201Chapitre
Constat d’échec (2001)
■ Plus des deux tiers des projets non satisfaisants.
49.00%
28.00%
23.00%
Source : The Standish group (2000)
Projets en difficultéProjets réussisProjets échoués
35.000 projets étudiés
2301Chapitre
Exemples de projets en échec
■ Le projet TAURUS● La Bourse de Londres a renoncé en mars 1993, après quatre ans de
développement, au projet informatique Taurus qui devait assurer le suivi complet de l’exécution des transactions. Ce système a coûté directement 60M£ et les opérateurs sur le marché ont dépensé 400M£ pour y adapter leurs propres logiciels.
■ Système de paiement d’Atos● La saturation du système d'autorisation de paiement dépassant 100€ a
provoqué en pleine en pleine période d'achats de Noël 2001 de longues files d'attente de clients excédés dont beaucoup finiront par abandonner leurs chariots. Les autorisations de débit qui prenaient habituellement quelques dizaines de secondes, nécessitèrent ce jour-là quasiment une demi-heure.Le coût du préjudice pour le seul groupe Leclerc est de 2M€.
2401Chapitre
Cause #1 : suivre un plan coûte que coûte
■ Le cycle en V définit des étapes séquentielles précises.● Engagement sur plusieurs mois.
▶ cf. diagramme prévisionnel de Gantt.● Il n’y a pas (ou peu) de remise en cause possible.
2501Chapitre
Cause #2 : estimer la durée d’un projet
■ Mythe du mois-homme● cf. «The Mythical Man-Month », Fred Brooks, 1995.● Extrêmement difficile d’estimer la durée (coût) d’un projet.● Non-linéarité de la charge de travail, exemple caricatural d’un projet de
développement d’un programme utilitaire :
■ Une règle empirique d’estimation de la durée :1. Estimer honnêtement le temps de développement.2. Multiplier par 3.3. Passer à l’unité supérieure.
Tous les utilisateurs
1 développeur
1 utilisateur
1 unité 3 unités
0.45 unité (-35%)0.15 unité (-30%)9 développeurs
2601Chapitre
Cause #3 : définir les besoins au début
■ Les clients ne savent pas exactement ce qu’ils veulent.■ Les clients ne savent pas exprimer clairement leurs besoins.■ Les besoins de clients changent au cours du projet.
2701Chapitre
Cause #4 : réaliser les tests à la fin
■ Étant réalisés à la fin, les tests sont faits selon le temps restant ou pas.
■ Pourtant, il est impossible de garantir des logiciels sans défaut.● Estimation : 1 à 10 bugs / KLOC
▶ Windows 10 (80 MLOC) → 80,000 bugs !● En 2006, 500 bugs déclarés dans la station spatiale internationale.
2801Chapitre
Cause #5 : Raisonner au niveau procédure
■ La conception procédurale est inadaptée à la conception de programmes de très grande taille.● Le niveau procédure est trop bas pour appréhender la complexité.
▶ Programmer au niveau procédural est une activité complexe qui revient à construire une voiture au niveau moléculaire.
2901Chapitre
Plan du chapitre
1Pourquoi
un cours sur legénie logiciel ? 2
Le génie logiciel
3Constat d’échec
4Le génie logiciel
aujourd’hui
3001Chapitre
Constat
■ Le logiciel n’est pas le matériel.● On peut construire une tour de 52 étages en commençant par la salle de bain
du 12e étage.● L’architecture de la tour peut évoluer de manière incrémentale à partir de la
salle de bain du 12e étage en ajoutant la chambre.● On peut revenir sur des choses déjà construites pour les modifier, comme par
exemple modifier la salle de bain pour installer le chauffage par le sol et la conduite d'eau chaude.
■ Il doit donc être possible de repenser le génie logiciel en s’émancipant du génie civil.
3101Chapitre
Repenser le génie logiciel
■ Depuis quelques années, le génie logiciel a beaucoup changé y compris au niveau de la programmation.● Nouvelle méthode de la gestion de projet.
▶ Agilité● Nouveau paradigme pour la conception logicielle.
▶ Conception orientée objet.● Nouveau formalisme de modélisation.
▶ UML■ Il n’y a plus de séparation analyste-programmeur.
● DevOps : un seul métier d’ingénieur de l’analyse à la production.
3201Chapitre
Effet sur la réussite des projets
■ Amélioration (lente mais réelle) ... le temps que l’agilité mature dans les équipes.
52.00% 39.00%
9.00%
Source : The Standish group (2015)
Projets en difficultéProjets réussisProjets échoués
10.000 projets étudiés
3301Chapitre
Remarques
■ Le modèle du cycle en V n’est pas caduque.● Il reste la référence.● Il est adapté pour des projets à très long terme.● Il est adapté pour des projets où les besoins sont clairement identifiés et
évoluent peu.■ Le paradigme procédural et notamment l’algorithmique reste une part
cruciale du développement.● Il est maintenant localisé dans le développement du corps des objets.
■ Ils ont aussi tous les deux une vertu pédagogique.
3401Chapitre
Plan du chapitre
1Pourquoi
un cours sur legénie logiciel ? 2
Le génie logiciel
3Constat d’échec
4Le génie logiciel
aujourd’hui
5Cours de
génie logiciel
3501Chapitre
Plan du cours
■ Ce cours est accès sur la conception et la programmation.
chapitre 2. Le paradigme objet.
chapitre 3. Le langage UML et les principaux diagrammes.
chapitre 4. Un processus de développement logiciel agile.
■ Les méthodes de développement seront vues en 2e année.● La gestion de projet classique et agile sera faite au semestre 8.● Une version avancée de la conception sera faite au semestre 7.
3601Chapitre
Pourquoi ce cours ?
■ À l’issue du cours, vous serez en mesure de :● Concevoir un logiciel de taille respectable à plusieurs développeurs.● Comprendre une conception modélisée.● Évaluer la qualité d’une conception.● Mettre en application les principes agiles du développement.
■ Important● « Les livres d'art ne permettent pas de vous transformer en artistes, pas plus
que les livres sur le génie logiciel ne vous transforment en développeur. Ils ne peuvent que vous apporter les outils, les techniques et les processus de réflexion employés par d'autres développeurs qui sont sources d'inspiration. » Robert Martin.
● Il existe aujourd’hui 50 ans d’expérience en génie logiciel dont il est nécessaire de s’inspirer. Le développement logiciel est un domaine qui souffre de beaucoup d’incompétence avec beaucoup d’autodidactes qui croient savoir.
3701Chapitre
Pour qui ce cours ?
■ Pour ceux qui choisiront de développer (MOE)● Trouver sa place dans la gestion de projet informatique.● Forger une culture du développement logiciel de haut niveau.● Prendre conscience de l’importance du code et des tests.
■ Pour ceux qui choisissent de ne pas développer (MOA, Qualité)● Être en mesure d’exprimer des besoins et de suivre un développement de
logiciel.● Comprendre comment sont construits les ouvrages à spécifier et apprécier
leurs contraintes.● Gagner en crédibilité face aux personnes de la MOE.
3801Chapitre
Que retenir de ce chapitre ?
■ Le développement de logiciels est plus que la programmation d'applications.
■ Le développement de logiciels de grande taille ne peut se faire sans maîtrise du génie logiciel.
■ Le génie logiciel reste un art qui repose sur une forte culture théorique et pratique de 50 ans.
■ Le génie logiciel a beaucoup évolué depuis quelques années. Il est fortement influencé par l'agilité.
■ Aujourd'hui le génie logiciel définit :● Une méthode pour structurer le processus de développement et organiser le
travail en équipe basé sur des itérations.● Un paradigme de conception basé sur la notion d'objet.● Un formalisme de modélisation basé sur le langage UML.