0% ont trouvé ce document utile (0 vote)
52 vues62 pages

Introduction au génie logiciel 2021-2022

Le document présente une introduction au génie logiciel. Il définit les termes clés comme le logiciel et les systèmes informatiques. Il présente également des statistiques sur les bugs et les échecs de projets informatiques, ainsi que les raisons principales de ces problèmes.

Transféré par

rajae ansari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
52 vues62 pages

Introduction au génie logiciel 2021-2022

Le document présente une introduction au génie logiciel. Il définit les termes clés comme le logiciel et les systèmes informatiques. Il présente également des statistiques sur les bugs et les échecs de projets informatiques, ainsi que les raisons principales de ces problèmes.

Transféré par

rajae ansari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

GÉNIE LOGICIEL

Prof Anouar RAGRAGUI

2021-2022
2 Plan du cours
 Introduction
 Processus de développement logiciel (Cycle
de vie logiciel)
 Méthodologie UP, RUP
 Méthodes agiles
 Ingénierie objet (Design patterns)
 MVC
3 Plan de la séance
 Préliminaires
 Critères de réussite d’un projet informatique
 Approches du génie logiciel
 Processus de développement logiciel
4 Préliminaires
 Définitions
 Bugs informatiques
 Quelques statistiques
 Crise du logiciel
 Génie Logiciel
Préliminaires ► Définitions (Système informatique)
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

 Un Système informatique est l’ensemble composé de


matériels et de logiciels nécessaires pour réaliser des
traitements de l’information.
 Depuis quelques années, la fabrication du matériel est
assurée par quelques fabricants seulement.
 Le matériel est relativement fiable

 Le marché est standardisé

 Les problèmes liés à l’informatique sont essentiellement des


problèmes de Logiciel !!!!
Préliminaires ► Définitions (Logiciel 1/4)
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

 Un logiciel est un ensemble d’entités nécessaires au


fonctionnement d’un processus de traitement automatique de
l’information.
Logiciel = programme + utilisation

Fichiers connexes Programmes


Documentations
Préliminaires ► Définitions (Logiciel 2/4)
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

Un logiciel est en général un sous-système d’un système


englobant.
 Il interagit avec son environnement:

 des opérateurs humains (utilisateurs, administrateurs, . . . ) ;


 d’autres logiciels;

 des contrôleurs matériels.

 Il réalise une spécification :


 son comportement vérifie un ensemble de critères qui
régissent ses interactions avec son environnement.
Préliminaires ► Définitions (Exemple: Airbus 380)
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

trop d’ordinateurs et trop de logiciels (Airbus A380)

 Prix de 394 M Euros


 On estime que la partie informatique représente le tiers du coût
 Environ 1 Milliard de lignes de code
Un vrai challenge pour les informaticiens!!!!!!!!
Préliminaires ► Définitions (Logiciel 3/4)
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

Difficultés spécifiques du logiciel :


 Support immatériel

 Un objet technique fortement contraint:


 Structure complexe
 Relatif au métier du domaine traité (gestion, automobile,
aéronautique,…)
 Difficile de mesurer la qualité
 Conséquences critiques causées par des modifications
infimes
 Défaillances logicielles est principalement humaines
Préliminaires ► Définitions
Critères de réussite d’un projet informatique ► Bugs informatiques (Bugs célèbres)
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

10
 Sonde Mariner 1, 1962 (coût : $18,5 millions )
 Défaillance des commandes de guidage due à une erreur de spécification
 erreur de programme fortran. Le point avait remplacé par une virgule
 Accidents d’irradiation de Therac 25 (1985-87):
 fautes de conception dans le matériel et le logiciel d’un appareil de
traitement médical par irradiation
 la mort de plusieurs personnes
 Le projet TAURUS,1993. Ce fut un projet d'informatisation de la bourse de
Londres. Il a été abandonné définitivement après quatre années de labeur et
a engendré environ 300 millions de livres de perte.
 Ariane V vol 501, 1996 (coût : $370 millions)
 Explosion après 40 secondes de vol: Panne du système de navigation due
à un dépassement de capacité (arithmetic overflow)
 Réutilisation d'un composant d'Ariane IV non re-testé
 Bug de l'an 2000 (coût : $600 millions)
 les dates se faisaient uniquement sur les deux derniers chiffres de l'année
► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques (Raisons principales)
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

11

 Erreurs humaines
 Taille et complexité des logiciels
 Taille des équipes de conception/développement
 Faible communication entre les parties prenantes
 Manque des méthodes de conception
 Spécifications incomplètes: phase d'analyse des besoins du
client incomplète.
 Mauvaise gestion des changements
 Négligence et manque de méthodes et d'outils des phases de
validation/vérification
► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques (Raisons principales)
Approches du génie logiciel ► Crise du logiciel
Processus de développement logiciel ► Génie Logiciel

12
► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques (1/4)
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

13

 En 1979, une étude du gouvernement américaine, basée sur


neuf projets logiciels, fait apparaitre les symptômes suivants :
 beaucoup de logiciels ne sont pas livrés, pas utilisés ou
abandonnes.
 Plus précisément, le coût se répartit de la façon suivante:
► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques (2/4)
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

14

Enquête sur des milliers de projets, de toutes tailles et


de tous secteurs

(Standish Group, Chaos Report 2015)


► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques (3/4)
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

15

 Petits vs grands projets

(Standish Group, Chaos Report 2015)


► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques (4/4)
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

16

Succès des projets par rapport à leur taille


100%
80%
60%
40%
20% Taux de Succès
0%

(Standish Group, Chaos Report 2009)


► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

17

Naissance du génie logiciel


 les pères du génie logiciel se prénomment Friedrich Bauer et
Louis Bolliet
 Cette spécialité a en effet vu le jour en 1968 sous le
parrainage de l'OTAN
 Elle avait pour objectif de répondre a 2 constations :

 D'une part, le logiciel n'était pas fiable

 D'autre part, il était difficile à réaliser dans les délais et


budgets prévus et en satisfaisant le cahier des charges
► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

18

 Constats:
 Le coût de construction du logiciel est devenu plus important que
celui de la construction du matériel.
 délais de livraison non respectés
 budgets non respectés.
 ne répond pas aux besoins de l'utilisateur ou du client
 difficile à utiliser, maintenir, et faire évoluer

 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 ?
► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

19

 Le génie logiciel est un domaine des sciences de l’ingénieur


dont l’objet d’étude est la conception, la fabrication, et la
maintenance des systèmes informatiques complexes.
 Le génie logiciel vise à garantir :
 la spécification répond aux besoins réels de ses clients ;
 le logiciel respecte sa spécification ;
 Les coûts alloués pour sa réalisation sont respectés ;
 les délais de réalisation sont respectés.
Appliquer des méthodes fiables qui vont guider le
développement du logiciel, de sa conception à sa livraison.
► Définitions
Préliminaires
Critères de réussite d’un projet informatique ► Bugs informatiques
Approches du génie logiciel ► Quelques statistiques
Processus de développement logiciel ► Crise du logiciel
► Génie Logiciel

20

Pour résumer, nous dirons que :


 La motivation première du génie logiciel est la réduction des couts
de développement du logiciel
 Le Génie logiciel est un ensemble de moyens (techniques et
méthodologiques) permettant la construction de systèmes
informatiques répondant à des critères de qualité préalablement
définis
 Sa mise en œuvre implique la prise en compte :

➢ Des environnements de développement avec toute la variété


d'outils et d'approches
➢ Des méthodes et des techniques de gestion de processus

➢ Des relations que celle-ci entretient avec les commanditaires et les


utilisateurs du produit
Critères de réussite d’un projet
21
informatique

 Piliers de réussite

 Loi de Hofstadter (Loi de glissement de planning)

 Qualités attendues d’un logiciel


► Piliers de réussite
Préliminaires
Critères de réussite d’un projet informatique ► Loi de Hofstadter (Loi de glissement de planning)
Approches du génie logiciel ► Qualités attendues d’un logiciel
Processus de développement logiciel

22

Coût

Succès du
Projet
Qualité Délai
► Piliers de réussite
Préliminaires
Critères de réussite d’un projet informatique ► Loi de Hofstadter (Loi de glissement de planning)
Approches du génie logiciel ► Qualités attendues d’un logiciel
Processus de développement logiciel

23

« Il faut toujours plus de temps que prévu,


même en tenant compte de la Loi de Hofstadter »

valable aussi en développement logiciel!!!!

Douglas Hofstadter, Gödel, Escher, Bach : Les Brins d'une Guirlande Éternelle, 1979
► Piliers de réussite
Préliminaires
Critères de réussite d’un projet informatique ► Loi de Hofstadter (Loi de glissement de planning)
Approches du génie logiciel ► Qualités attendues d’un logiciel
Processus de développement logiciel

24

 La norme ISO 9126 définit six groupes


d'indicateurs de qualité des logiciels
 Validité

 Facilité d’utilisation
 Performance

 Fiabilité

 Portabilité

 Maintenabilité
► Piliers de réussite
Préliminaires
Critères de réussite d’un projet informatique ► Loi de Hofstadter (Loi de glissement de planning)
Approches du génie logiciel ► Qualités attendues d’un logiciel (validité)
Processus de développement logiciel

25

 Adéquation entre le besoin effectif du client et les fonction


offertes par le logiciel

 Solutions :

Analyse exhaustive des besoins

 Améliorer la communication entre les intervenants

 Travailler avec rigueur


► Piliers de réussite
Préliminaires
Critères de réussite d’un projet informatique ► Loi de Hofstadter (Loi de glissement de planning)
Approches du génie logiciel ► Qualités attendues d’un logiciel (Facilité d’utilisation)
Processus de développement logiciel

26

 Efficacité et satisfaction avec laquelle des utilisateurs


accomplissent leurs objectifs selon leur environnement
 Facilité de compréhension: comprendre ce que l’on peut
faire avec le logiciel.
 Facilité d’apprentissage : savoir comment travailler avec le
logiciel
 Facilité d’exploitation : effort nécessaire pour utiliser le
logiciel
 Solutions :
◼ Analyse du mode opératoire des utilisateurs.
◼ Adapter l’ergonomie des logiciels aux utilisateurs.
► Piliers de réussite
Préliminaires
Critères de réussite d’un projet informatique ► Loi de Hofstadter (Loi de glissement de planning)
Approches du génie logiciel ► Qualités attendues d’un logiciel (Performance)
Processus de développement logiciel

27

 Rapport entre les ressources dédiées (temps,


matériel, utilisateurs) et la quantité des résultats
produits.
 Solutions :
 Logiciels plus simples
 Veiller à la complexité des algorithmes

 Machines plus performantes


► Piliers de réussite
Préliminaires
Critères de réussite d’un projet informatique ► Loi de Hofstadter (Loi de glissement de planning)
Approches du génie logiciel ► Qualités attendues d’un logiciel (Fiabilité)
Processus de développement logiciel

28

 Justesse et conformité: le logiciel retourne des résultats corrects quelles que


soient les conditions d’exploitation.
 Robustesse et sureté: le logiciel fonctionne raisonnablement en toutes
circonstances (utilisation intensive), même en dehors des conditions d’utilisation
prévues (tolérance aux pannes)
 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
► Piliers de réussite
Préliminaires
Critères de réussite d’un projet informatique ► Loi de Hofstadter (Loi de glissement de planning)
Approches du génie logiciel ► Qualités attendues d’un logiciel (Portabilité)
Processus de développement logiciel

29

 Facilité d'adaptation à des changements d'environnements


opérationnels (matériel ou logiciel)
 Facilité d'installation
 Coexistence avec d’autres logiciels
 Solutions :
 Rendre le logiciel indépendant de son environnement
d’exécution.
 Machines virtuelles.
► Piliers de réussite
Préliminaires
Critères de réussite d’un projet informatique ► Loi de Hofstadter (Loi de glissement de planning)
Approches du génie logiciel ► Qualités attendues d’un logiciel (Maintenabilité)
Processus de développement logiciel

30

 L'effort nécessaire à corriger ou transformer le logiciel.

 Solutions:

 La conception par sous-ensembles faciles à démonter et


à interchanger.

 Une parfaite communication entre opérateur et


technicien de maintenance.
31 Approches du génie logiciel
 Introduction
 Approches formelles
 Approches semi-formelles
 Approches empiriques
 Les grands principes du génie logiciel
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel

32

 Le génie logiciel est un domaine en pleine évolution qui offre une grande
palette d’outils et de méthodes pour parvenir à construire du logiciel de
qualité.
 Aucune de ces méthodes ne s’est imposée à ce jour : il faut donc prendre du
recul sur les concepts et les conseils qu’elles préconisent et utiliser son bon
sens pour les adapter à chaque situation.
 Ces méthodes se distinguent principalement par :
 leur degré de formalisme ;

 leur champ d’application ;

 les contraintes de qualité qu’elles ambitionnent.


► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel

33

 Les approches formelles utilisent des outils mathématiques et


des méthodes de preuve pour construire un logiciel correct par
construction dont la vérification est automatisée ou assistée.
 Exemple (approches formelles)
 Méthodes : méthode B, model-checking, logique de Hoare, . . .

 Outils et notations : Coq, Z, Atelier B, Why, Frama-C, . . .

 Ces méthodes sont utilisées pour développer des logiciels


critiques.
 Elles correspondent au niveau le plus élevé de certification.
 e.g. applications de la méthode B pour développer le logiciel
embarqué des lignes de métro 14 (1998) et 1 à Paris
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel

34

 Les approches semi-formelles visent à introduire un langage


normalisé pour décrire le logiciel et sa spécification.
 Cependant, la sémantique du langage de spécification n’est
pas formalisée.
 Bien que ces approches précisent le discours du concepteur si
on le compare à celui décrit à l’aide du langage naturel, elles
contiennent certaines ambiguïtés et n’offrent aucune garantie
sur la qualité des résultats.
 Exemple (approches semi-formelles)
 Méthodes : Rationale Unified Process, Merise, . . .

 Outils et notations : UML, Analyse SI, . . .

 Ces méthodes sont utilisées aujourd’hui par l’industrie du logiciel.


► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel

35

 Les approches empiriques mettent en avant un ensemble de


“bonnes pratiques” qui ont fait leur preuve par l’expérience.
 Exemple (approches empiriques)
 Méthodes : unit testing ([Link]. la famille xUnit), peer review,
relecture de code, extreme programming, programmation
défensive, . .
 Outils : plates-formes de test, gestionnaire de versions
([Link]. Git), outil de documentation automatique ([Link].
Doxygen) / literate programming, . . .
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel

36

 Un certain nombre de grands principes (de bon sens) se retrouvent


dans toutes ces méthodes.
 La rigueur;

 La décomposition des problèmes en sous-problèmes;

 La modularité;

 L’abstraction

 L’anticipation des évolutions;

 La généricité;

 La construction incrémentale

C. Ghezzi. Fundamentals of Software Engineering. Prentice Hall, 2nd edition, 2002.


► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel (Rigueur)

37

 Les principales sources de défaillances d’un logiciel sont d’origine


humaine.
 La production de logiciel est une activité créative, mais qui doit se
conduire avec une certaine rigueur
 À tout moment, il faut se questionner sur la validité de son action.
 Des outils de vérification accompagnant le développement peuvent
aider à réduire les erreurs.
 Exemples
 générateurs de code, assistants de preuves, générateurs de tests,
profileurs, test coverage, outil d’intégration continue, fuzzer, . . .
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel (Décomposition des
problèmes)
38

 C’est un aspect de la stratégie générale du « diviser pour régner »


 Simplifier les problèmes (temporairement) pour aborder leur
complexité progressivement.
 Décorréler les problèmes pour n’en traiter qu’un seul à la fois.
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel (Décomposition des
problèmes)
39

 Exemple
◼ Comment créer dynamiquement une page internet pour
visualiser et modifier le contenu d’une base donnée sans la
corrompre ?
 Décomposition en trois composants :

 Modèle: son rôle est gérer le stockage des données.

 Vue: son rôle est de formater les données.

 Contrôleur: son rôle est de n’autoriser que les modifications


correctes.
◼ Comment acheminer un email de façon sûr à travers un réseau?
 Décomposition en couches utilisée sur Internet : SMP TCP ..
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel (Modularité)

40

 C’est une instance cruciale du principe de décomposition


des problèmes.
 Il s’agit de partitionner le logiciel en modules qui :
 ont une cohérence interne (des invariants) ;
 possèdent une interface ne divulguant sur le contenu du
module que ce qui est strictement nécessaire aux modules
clients.
 L’évolution de l’interface est indépendante de celle de
l’implémentation du module.
 Les choix d’implémentation sont indépendants de l’utilisation
du module.
D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM. Vol. 15 Issue
12, 1972
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel (Abstraction)

41

 C’est encore une instance du principe de décomposition des


problèmes.
 Il s’agit d’exhiber des concepts généraux regroupant un certain
nombre de cas particuliers et de raisonner sur ces concepts
généraux plutôt que sur chacun des cas particuliers.
 Le fait de fixer la bonne granularité de détails permet:
 de raisonner plus efficacement ;

 de factoriser le travail en instanciant le raisonnement général sur


chaque cas particulier.
 Exemple (Support dans les langages de programmation)
 les classes abstraites dans les langages à objets
(FormeGéométrique, Carrée, rectangle, Triangle)
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel (Anticipation des
évolutions)
42

 Un logiciel a un cycle de vie plus complexe que l’habituel


commande → spécification → production → livraison
 La maintenance est la gestion des évolutions du logiciel.
 Il est primordial de prévoir les évolutions possibles d’un logiciel
pour que la maintenance soit la plus efficace possible.
 Pour cela, il faut s’assurer que les modifications à effectuer soient
le plus locales possibles.
 Ces modifications ne devraient pas être intrusives car les
modifications du produit existant remettent en cause ses précédentes
validations.
 Concevoir un système suffisamment riche pour que l’on puisse le
modifier incrémentalement est l’idéal.
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel (Généricité)

43

 proposer des solutions plus générales que le problème pour


pouvoir les réutiliser et les adapter à d'autres cas
 Un logiciel réutilisable a beaucoup plus de valeur qu’un composant
dédié.
 Un composant est générique lorsqu’il est adaptable.
Exemple :
plutôt que d’écrire une identification spécifique à un écran particulier,
écrire (ou réutiliser) un module générique d’authentification (saisie
d’une identification et éventuellement d’un mot de passe).
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Approches formelles
Approches du génie logiciel ► Approches semi-formelles
Processus de développement logiciel ► Approches empiriques
► Les grands principes du génie logiciel (Construction
incrémentale)
44

 Un développement logiciel a plus de chances d’aboutir s’il suit


un cheminement incrémental (baby-steps).

 Exemple Laquelle de ses deux méthodes de programmation


est la plus efficace ?
1. Écrire l’ensemble du code source d’un programme et compiler.

2. Écrire le code source d’une fonction ou module, le compiler, et


passer à la suivante.
45 processus de développement logiciel
 Introduction
 Activités du développement logiciel
 Modèles de cycle de vie d’un logiciel
► Introduction (1/2)
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Approches du génie logiciel ► Modèles de cycle de vie d’un logiciel
Processus de développement logiciel

46

 Un processus de développement logiciel est un ensemble


(structuré) d’activités que conduisent à la production d’un
logiciel
« La qualité du processus de fabrication est garante de la
qualité du produit »
 Pour obtenir un logiciel de qualité, il faut en maîtriser le

processus d’élaboration
 La vie d’un logiciel est composée de différentes étapes

 La succession de ces étapes forme le cycle de vie du logiciel

 Il faut contrôler la succession de ces différentes étapes


► Introduction (2/2)
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Approches du génie logiciel ► Modèles de cycle de vie d’un logiciel
Processus de développement logiciel

47

 En pratique:
 Il n’existe pas de processus idéal.

 La plupart des entreprises adapte les processus


existants à leurs besoins.

 Ces besoins varient en fonction du domaine, des


contraintes de qualité, des personnes impliquées.
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Approches du génie logiciel ► Modèles de cycle de vie d’un logiciel
Processus de développement logiciel

48

 Les étapes ou Activités du développement d’un logiciel


 Analyse des besoins
 Spécification
 Conception
 Programmation
 Validation et vérification
 Livraison
 Maintenance
 Chaque Activité:
 possède des entrées et des sorties
 Les livrables font parties des sorties (Documents, Planning, code
source)
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel (Analyse des besoins)
Approches du génie logiciel ► Modèles de cycle de vie d’un logiciel
Processus de développement logiciel

49

 Objectif :
 Comprendre les besoins du client
 Objectifs généraux, environnement du futur système,
ressources disponibles, contraintes de performance...
 Entrée : Fournie par le client
 Expert du domaine d'application, futur utilisateur
 Documents produits : Cahier des charges (+ manuel
d'utilisation préliminaire)
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel (Spécification)
Approches du génie logiciel ► Modèles de cycle de vie d’un logiciel
Processus de développement logiciel

50

 Objectif :
 É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)

 Entrée : Cahier des charges + considérations de


faisabilité
 Document produit : Cahier des charges fonctionnel
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel (Conception)
Approches du génie logiciel ► Modèles de cycle de vie d’un logiciel
Processus de développement logiciel

51

 Objectif :
 É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é...)
 Entrée : Cahier des charges fonctionnel
 Document produit : Dossier de conception
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel (Programmation)
Approches du génie logiciel ► Modèles de cycle de vie d’un logiciel
Processus de développement logiciel

52

 Objectif :
 Implémentation de la solution conçue

 Choix de l'environnement de développement, du/des


langage(s) de programmation, de normes de
développement...
 Entrée : Dossier de conception
 Documents produits : Code documenté + manuel d'utilisation
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Validation et vérification 1/3
Approches du génie logiciel ►

Processus de développement logiciel ► Modèles de cycle de vie d’un logiciel

53

 Objectifs :
 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
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Validation et vérification 2/3
Approches du génie logiciel ►

Processus de développement logiciel ► Modèles de cycle de vie d’un logiciel

54

 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
 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 afin de vérifier le taux de compatibilité
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Validation et vérification 3/3
Approches du génie logiciel ►

Processus de développement logiciel ► Modèles de cycle de vie d’un logiciel

55

 Méthodes de validation :
 Revue de spécification, de code
 Prototypage rapide
 Développement de tests exécutables
 Méthodes de vérification :
 Test (à partir de la spécification) :exécution d'un programme sur des
données choisies dans le but de détecter des non-conformités par
rapport à la spécification
 Preuve de programmes :preuve mathématique qu'un programme
satisfait sa spécification en termes de pré- et post-conditions
 Model-checking: analyse d'un modèle du programme dans le but de
prouver mathématiquement qu'il vérifie certaines propriétés dynamiques
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel (Livraison)
Approches du génie logiciel ► Modèles de cycle de vie d’un logiciel
Processus de développement logiciel

56

 Fournir au client une solution logicielle qui fonctionne


correctement Installation :
 rendre le logiciel opérationnel sur le site du client

 Formation: enseigner aux utilisateurs comment se servir


du logiciel

 Assistance : répondre aux questions des utilisateurs


► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Maintenance 1/3
Approches du génie logiciel ►

Processus de développement logiciel ► Modèles de cycle de vie d’un logiciel

57

 Lois de Belady et Lehman:


❑ Un logiciel est en constante évolution

La livraison n’est pas une fin en soi, après sa livraison un


logiciel peut être modifié

❑ Lorsqu’un logiciel évolue, il devient:

✓ moins structuré

✓ Plus complexe
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Maintenance 2/3
Approches du génie logiciel ►

Processus de développement logiciel ► Modèles de cycle de vie d’un logiciel

58

On distingue trois types de maintenance:


 Maintenance Corrective : identifier et corriger des erreurs
trouvées après la livraison:
◼ Identifier la défaillance;
◼ le fonctionnement Localiser la partie du code responsable;
◼ Corriger et estimer l’impact d’une modification

 Attention!!!
◼ La majorité des corrections introduisent de nouvelles erreurs
◼ Les coûts de correction augmentent considérablement avec le
délai de détection
 La maintenance corrective donne lieu à des nouvelles
livraisons
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Maintenance 3/3
Approches du génie logiciel ►

Processus de développement logiciel ► Modèles de cycle de vie d’un logiciel

59

 Maintenance Adaptative : Adapter le logiciel afin qu’il continue


à fonctionner correctement en tenant compte des changement
enregistrés dans l'environnement:
❑ format des données,
❑ environnement d'exécution,
❑ changement de SGBD,

❑ Maintenance Perfective : comprend tous les changements


faits sur un système afin de satisfaire aux besoins de l’utilisateur.
❑ améliorer la performance,
❑ ajouter des fonctionnalités,
❑ améliorer la maintenabilité.
► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Quelques statistiques 1/2
Approches du génie logiciel ►

Processus de développement logiciel ► Modèles de cycle de vie d’un logiciel

60

Origine des erreurs Coût de la maintenance


Définition des besoins Conception Définition des besoins Conception
Codage Intégration & Tests Codage Intégration & Tests
1% 4%

10%
13%
7%

27% 56%
82%

Source Martin & Leffinel


► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Quelques statistiques 2/2
Approches du génie logiciel ►

Processus de développement logiciel ► Modèles de cycle de vie d’un logiciel

61

❑ Répartition de l’effort

Définition des
besoins
Conception
Codage

Intégration &
Tests
Maintenance

Source Martin & Leffinel Répartition d'effort de développement


► Introduction
Préliminaires
Critères de réussite d’un projet informatique ► Activités du développement logiciel
Approches du génie logiciel ► Modèles de cycle de vie d’un logiciel
Processus de développement logiciel

62

« La qualité du processus de fabrication est garante de la qualité du produit »


 Ensemble d’activités conduisant à la production d’un logiciel:
processus de développement ou Cycle de vie d’un logiciel
 Buts:
 Maitriser le projet,
 bien le découper
 assigner correctement les tâches
 anticiper et gérer les risques.
 On peut distinguer deux classes de Cycle de vie logiciel:
 Modèles linéaires (classiques)
◼ Modèle en cascade
◼ Modèle en V
 Modèles incrémentaux et itératifs
◼ Modèle en prototype
◼ Modèle en spirale
◼ Modèle incrémental

Vous aimerez peut-être aussi