Vous êtes sur la page 1sur 13

05/12/2020

Sommaire
Partie1: Introduction au Génie Logiciel
 DEFINITION DES CONCEPTS CLES
Cours GL  .1. Crise du logiciel
 1.2. Définition du Génie Logiciel
 1.3. Qualité exigée d’un logiciel
2 A Telec  1.4. Activités principales du processus de développement d’un
logiciel
 1.4.1. L’analyse des besoins
 1.4.2. La spécification globale
 1.4.3. Conception architecturale et détaillée
 1.4.4. Programmation
 1.4.6. Validation et vérification

1 2

Définition des concepts clés


Définition des concepts clés
 Logiciel: Le logiciel est un ensemble d’instructions avec Génie Logiciel ≠Programmation
toutes les données de documentation et de configuration Génie Logiciel= travail d’équipe
associés utilisées pour acquérir des intrants et les manipuler La Programmation = travail individuel
pour produire la sortie désirée.
 Génie Logiciel: (« Software Engineering » en anglais), est
L'ingénieur du logiciel écrit une composante logicielle
un domaine des « sciences de l’ingénieur » dont la finalité
est la conception, la fabrication et la maintenance de systèmes * combinée avec d'autres composantes écrites par d'autres
logiciels complexes, sûrs et de qualité. Le terme génie ingénieurs ⇒ système
logiciel désigne l’ensemble des méthodes, des techniques * peut être modifiée ou réutilisée par d'autres ingénieurs
et outils contribuant à la production d’un logiciel de qualité
avec maîtrise des coûts et délais.

3 4

1
05/12/2020

Histoire du Génie Logiciel Histoire du Génie Logiciel


L’évolution du GL dépend de l’évolution et de la maturité de la  Spécification des tâches avec une notation différente du celle
programmation. utilisée pour la programmation le programmeur traduit ces
notations en programme
Début des années 50: (mauvaises interprétations = Erreurs)
 simple programme (des instructions pour résoudre un Début des Années 60:
problème donné) ou quelque chose utile pour l’ordinateur  Peu de grands projets réalisés par des Experts
 L’utilisateur écrit lui-même le programme Ex: le système d'exploitation CTSS (Compatible Time-Sharing
Utilisateur = programmeur System) à MIT1
Fin des années 50: Milieu des Années 60:
 Premiers projets de grande ampleur destinés au commerce
 Langages de haut niveau Communication plus facile avec
Ex: OS 360 IBM2
la machine la naissance du profession programmeur

5 6

Histoire du Génie Logiciel Crise du logiciel


Le développement de logiciels était en crise (catastrophe) parce
Difficile d'adopter les techniques d’écriture de petits que les méthodes utilisées ne sont pas assez bonnes : des
programme dans le développement des systèmes ⇒ projets livrables non conformes aux spécifications, dans le respect
trop coûteux, en retard, de mauvaise qualité ⇒ des délais, du budget et de la qualité spécifiés :
• Les techniques applicables aux petits systèmes ne pouvant pas
CRISE DU LOGICIEL ( "software crisis”) être adaptées à large échelle ;
• Les principaux projets accusaient parfois beaucoup de retard,
et coûtaient beaucoup plus cher que prévu à l’origine ;
• Les logiciels développés étaient peu fiables, des résultats
médiocres et difficiles à maintenir.

7 8

2
05/12/2020

Crise du logiciel Crise du logiciel


Les Problèmes Les Causes:
 Mal estimation budgétaires et calendaires  La qualité du logiciel n’est pas bonne parce que la plupart des
 Le rythme de la «productivité» des personnels du logiciel n’a développeurs utilisent des données issues des historiques
pas suivi le rythme des exigences de service pour développer le logiciel.
 Le calendrier préétabli n’est pas respecté à cause de retard
 La qualité des logiciels est parfois insuffisante
dans le processus ou à un stade données (l’analyse, la
 La communication est médiocre entre le client ou conception, le codage et les tests).
l’utilisateur et le développeur de logiciels  les problèmes et les caractéristiques particulières associés au
développement de logiciel sont souvent mal compris à cause
de la male communication entre les managers et les clients,
les développeurs de logiciels, le personnel de support, etc.,
9 10

Crise du logiciel Crise du logiciel


 Les responsables de l’exploitation et de la maintenance des Point de vue des utilisateurs
logiciels sont des personnes qui changent souvent et résistent  les coûts élevés de logiciels
également au moindre changement introduit.
 La spécialisation manque dans le développement
Point de vue des programmeurs
 Problème de compatibilité  Les problèmes des différentes versions du logiciel

 Problème de la portabilité  Le problème des bugs


 Problème dans la documentation
 Problème de piratage de logiciels
 Problème dans la coordination des travaux des différentes
personnes
 Problème de maintenance ou d’entretien approprié

11 12

3
05/12/2020

Crise du logiciel Crise du logiciel


Étude du Département de Défense des Etats-Unis sur les
logiciels produits dans le cadre de 9 gros projets militaires
(1995)

13 14

Crise du logiciel Crise du logiciel


Conclusion
Une approche d’ingénierie pour le développement de logiciels
est nécessaire
L’approche doit être appliquée de manière cohérente, à travers
tous les types de logiciels.
Logiciel = produit complexe
sa construction = travail d'ingénieurs
⇒ GENIE LOGICIEL

15 16

4
05/12/2020

Champs d’application des logiciels Champs d’application des logiciels


Les domaines d’applications logicielles sont regroupées en : Logiciel temps réel
 Logiciel système un environnement dynamique nécessite un logiciel dynamique:
Une collection de programmes nécessaire pour l’execution du  Convertit l’entrée en analogique en un composant
système numérique
 Recueille la commande qui répond à l’environnement
Exemples
externe et exécute l’action
des compilateurs, des éditeurs, des utilitaires, des composants du  Analyse et transforme les informations requises par
système d’exploitation, des pilotes et des interfaces. l’application en un composant de commande / sortie qui
Ce logiciel réside dans le système informatique et utilise ses répond à l’environnement extérieur
ressources. la réponse en temps réel (allant typiquement de 1
milliseconde à 1 seconde) doit être maintenue

17 18

Champs d’application des logiciels Champs d’application des logiciels


Logiciel Embarqué Logiciels d’entreprise
Un logiciel, intégré dans le matériel comme une partie intégrante  Logiciel conçu pour gérer une entreprise est appelé logiciel de
des grands systèmes, est appelé logiciel embarqué. gestion.
Le logiciel réside dans le Read-Only-Memory (ROM) est utilisé  Le logiciel de gestion peut être une application de données et de
pour commander les diverses fonctions des produits résidents traitement de l’information. Il peut piloter le processus
Les produits peuvent être une voiture, lave-linge, four micro- d’affaires à travers le traitement des transactions en ligne ou en
ondes,… mode temps réel.
 Ce logiciel est spécifique pour des opérations , tels que les
progiciels de comptabilité, les systèmes d’information de
gestion, les paquets de paie, et la gestion des stocks.

19 20

5
05/12/2020

Champs d’application des logiciels Champs d’application des logiciels


Logiciels informatiques personnels Logiciel d’intelligence artificielle
quelques-unes des centaines d’applications personnelles : Le logiciel d’intelligence artificielle utilisent les données et les
 Le traitement de texte informations générées dans le système pour résoudre des
 les feuilles de calcul
problèmes complexes.
 Les systèmes experts, également appelés systèmes basés sur la
 les applications de l’infographie
connaissance
 la gestion de bases de données
 La reconnaissance des formes (d’image et de la voix)
 ….
 les réseaux de neurones artificiels
 ….

21 22

Champs d’application des logiciels Critères d’un bon logiciel


Logiciel scientifique et d’ingénierie Un bon logiciel doit satisfaire les 3 catégories
des logiciels avec les exigences de traitement dans leurs domaines de critères suivants :
spécifiques. Ils sont écrits pour des applications spécifiques en
utilisant les principes et les formules de chaque champ.  Critères généraux ;
 Critères externes,
 Critères internes.

23 24

6
05/12/2020

Critères d’un bon logiciel Critères d’un bon logiciel


 Critères Généraux  Critères externes
Ce critère peut se matérialiser selon 3 différents aspects: Un bon logiciel du point de vue des utilisateurs
 Fiabilité : logiciel conforme à la spécification et les
 Opérationnel : le logiciel fonctionne bien. résultats sont satisfaisants.
 Transitionnel : un aspect important lors du déplacement  Robustesse et Sureté: le logiciel fonctionne
du logiciel d'une plate-forme à une autre. raisonnablement en toutes circonstances (ne plante pas)
 Maintenance : la capacité d’un logiciel de se maintenir
 Efficacité : Bon usage des ressources en terme d’espace
dans une infrastructure et environnement en évolution.
mémoire, et temps d’exécution
 Convivialité: agréable et facile à utiliser

25 26

Critères d’un bon logiciel Critères d’un bon logiciel


 Critères externes (suite)  Critères internes
 Documentable: logiciel avec un manuel utilisateur, ou un Un bon logiciel du point de vue du développeur.
tutoriel
 Documentable: logiciel avec un document de conception
 Ergonomique: Architecture du logiciel adaptée aux
conditions de travail ou d’architecture
 Sécurité: Absence du danger lors de l’exploitation du logiciel  Portabilité: logiciel fonctionne sur plusieurs machines
 Adéquation et validité: Logiciel conforme au indépendant de son environnement d'exécution
maquettage  Extensibilité: possibilité d’ajouter d’autre fonctionnalité
 Intégrité: Code et données du logiciel sont protégés contre des  Réutilisabilité: parties du logiciel qui peuvent être
accès non autorisés réutilisées pour développer d’autres logiciels similaires

27 28

7
05/12/2020

Critères d’un bon logiciel Génie logiciel et enjeux


 Critères internes (suite)  être adéquate avec les
 La compatibilité: logiciel peut être combiné avec besoins du client.
d’autres logiciels  Respecter les délais de
réalisation prévus.
 Maximiser les performances
et la fiabilité.
 Faciliter la maintenance et
les évolutions ultérieures

29 30

Processus de développement d’un Processus de développement d’un


logiciel logiciel
 C’est un ensemble d’étapes de la réalisation d’un logiciel Activités du développement logiciel:
dont la période de temps s’étale du début à la fin du La communication
processus du logiciel La collection des exigences
 l’objectif principal du cycle de vie du développement d’un L’étude du préalable (faisabilité ou opportunité)
logiciel est de permettre la détection des erreurs au plus Définition et analyse de besoins (Spécification)
tôt et par conséquent, maîtriser la qualité du produit, les La conception du logiciel
délais de sa réalisation et les coûts associés. Le codage
les erreurs ont un coût d’autant plus élevé qu’elles Les tests
sont détectées tardivement dans le processus de L’intégration
réalisation La maintenance

31 32

8
05/12/2020

Activités du développement logiciel Activités du développement logiciel


2. La collection des exigences (suite)
 Etude de l’existant ( système ou logiciel obsolète )
1. La communication
 Conduite des interviews auprès des utilisateurs et développeurs
la première étape du cycle de vie: négociation du termes
du contrat  Référencer aux différentes bases de données ;
 la collection des réponses au moyen de questionnaires.
2. La collection des exigences
Collecter autant d’informations possibles sur les différentes 3. L’étude du préalable
exigences qui dépend des besoins des utilisateurs répondre aux questions suivantes:
 Pourquoi développer le logiciel ?
Les exigences sont collectées en utilisant un nombre donné
des pratiques telles que :  Comment procéder pour faire ce développement ?
 Quels moyens faut-il mettre en œuvre ?

33 34

Activités du développement logiciel Activités du développement logiciel


3. L’étude du préalable (suite) 4. Définition et analyse de besoins (Spécification)
 définir ce que le logiciel devra faire cahier des charges du
les tâches techniques, pendant l’étude préalable: logiciel (software requirements)
 étudier état de l’existant ( forces et faiblesses)  Pas de choix d’implémentation à ce niveau
 Une spécification comporte les éléments suivants:
 identifier les besoins de l’utilisateur
 spécification fonctionnelle (functional specification), qui définit
 chercher des solutions potentielles toutes les fonctions que le logiciel doit offrir
 faire des études de faisabilité
 Comportement en cas d’erreurs, c’est-à-dire dans les cas où le logiciel
 planifier la possibilité de la transition entre l’ancien ne peut pas accomplir une fonction
logiciel et le nouveau, si c’est possible
 Spécification non fonctionnelle (performance requirements), temps
 affiner ou finaliser les besoins de l’utilisateur. de réponse, encombrement en mémoire, sécurité de fonctionnement..

35 36

9
05/12/2020

Activités du développement logiciel Activités du développement logiciel


5. La conception du logiciel 6. Le codage (implémentation phase)
la phase de conception est décomposée en deux phases Traduire La conception détaillée dans un langage de
successives : programmation.
 Conception générale ou conception architecturale 7. Les tests (test phase)
(preliminary design ou architectural design) décrire les composants du logiciel sont évalués et intégrés, et le
l’architecture de la solution, c’est-à-dire son organisation en entités
et les interactions entre ces entités.
logiciel lui-même est évalué pour déterminer s’il satisfait
la spécification élaborée lors de la phase d’analyse.
 Conception détaillée (detailed design) décompose les
entités découvertes lors de la conception générale en 8. L’intégration (intégration phase)
entités plus élémentaires. décrire chaque composant logiciel Assembler tout ou partie des composants d’un logiciel pour
en détail : son interface, les algorithmes utilisés, le traitement obtenir un système exécutable.
des erreurs, ses performances, etc
37 38

Activités du développement logiciel Activités du développement logiciel


9. La maintenance
(software maintenance)
Le logiciel est employé dans son environnement
opérationnel, son comportement est surveillé et, si
nécessaire, il est modifié.

39 40

10
05/12/2020

Activités du développement logiciel Crise du logiciel

41 42

Différentes perceptions de la qualité Comment agir sur la qualité logicielle ?


La qualité est atteinte ou améliorée en appliquant certains
principes :
La rigueur
La séparation des préoccupations
La généralisation
La structuration
La modularité
L’abstraction
La documentation
La vérification:

43 44

11
05/12/2020

Les Principes du génie logiciel Les Principes du génie logiciel


Dans cette section nous listons les principes fondamentaux  Séparation des préoccupations:
(proposés par Carlo Ghezzi1)
principe : traiter séparément les ≠ aspects d’un problème
 La rigueur :Généralement Les sources principales de
défaillances d’un logiciel sont d’origine humaine. À tout  diviser pour régner
moment, il faut se poser la question sur la validité de son action. résultat : réduit la quantité de complexité à contrôler
le développement peut être accompagné par des outils de
vérification qui peuvent aider à réduire les erreurs.
Cette famille d’outils s’appelle (CASE “Computer Aided
Software Engineering”). Par exemple: typeurs, générateurs de
code, assistants de preuves, générateurs de tests, outil
d’intégration continue, fuzzer, . .

45 46

Les Principes du génie logiciel Les Principes du génie logiciel


 différentes sortes de séparations
séparation de domaine différentes sortes de séparations (suite)
domaine de problème : quoi résoudre ? vues séparées sur le logiciel : modélisation en UML
 domaine de solution : comment résoudre ? cas d’utilisation, structure statique

séparation de temps : phases du cycle de vie  comportement dynamique, architecture

séparation de qualité séparation de responsabilités : org. en équipes projet


maquettes, prototypes
 conception globale, détaillée

47 48

12
05/12/2020

Les Principes du génie logiciel Les Principes du génie logiciel


 La Généralisation : ensemble de fonctionnalités semblables  L’abstraction: c’est le raisonnement sur des concepts généraux
regroupées en une fonctionnalité paramétrable plutôt que sur chacun des cas particuliers. Exemple les classes
généricité (Un logiciel est générique lorsqu’il est abstraites dans les langages à objets.
adaptable)  La Documentation : c’est la gestion des documents
héritage incluant leur identification, acquisition, production, stockage et
 La Structuration: décomposition des problèmes en sous
distribution. Il faut prévoir les évolutions d’un logiciel pour que
problèmes indépendants. c’est la façon de décomposer un la maintenance soit plus efficace.
logiciel (utilisation d'une méthode bottom-up ou top-down).  Vérification: c’est la détermination du respect des
 La modularité: c’est le partitionnement du logiciel en
spécifications établies sur la base des besoins identifiés dans la
modules qui ont une cohérence interne (des invariants). phase précédente du cycle de vie.

49 50

L’ingénieur du Logiciel (compétences attendues)


Compétence 1 : Un bon programmeur: Programmation à petite
échelle (algo, SD, LP) Mais il est aussi appelé à faire de la prog à
grande échelle
Compétence 2 : Un bon concepteur: Familier avec plusieurs
approches de conception Transformer les exigences en
spécifications Discuter avec l’usager en ses termes Connaissance
de plusieurs domaines d’application Raisonner à plusieurs
niveaux d’abstraction
Compétence 3 : Capacité de modélisation Bâtir et utiliser un
modèle de l’application Le modèle est utilisé pour répondre aux
questions relatives aussi bien au comportement du système que
de sa performance
Compétence 4 : Communication et Relations humaines Travail
d’équipe Distribution de travail Leadership, motivation
Compétence 5 : Management
51

13