Vous êtes sur la page 1sur 13

Sommaire

Partie1: Introduction au Génie Logiciel


 DEFINITION DES CONCEPTS CLES
Cours GL  1.1. Crise du logiciel
 1.2. Définition du Génie Logiciel
 1.3. Qualité exigée d’un logiciel
2 A INFO  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

Cours GL 2AInfo
1 Cours GL 2AInfo Chiraz jelassi 2 Chiraz jelassi

Définition des concepts clés


Définition des concepts clés
 Le 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.
 Le génie Logiciel: (« Software Engineering » en anglais),
L'ingénieur du logiciel écrit une composante logicielle
est un domaine des « sciences de l’ingénieur » dont la
finalité est la conception, la fabrication et la maintenance de * combinée avec d'autres composantes écrites par d'autres
systèmes logiciels complexes, sûrs et de qualité. Le terme ingénieurs ⇒ système
génie logiciel désigne l’ensemble des méthodes, des * peut être modifiée ou réutilisée par d'autres ingénieurs
techniques et outils contribuant à la production d’un
logiciel de qualité avec maîtrise des coûts et délais.
Cours GL 2AInfo Cours GL 2AInfo
3 Chiraz jelassi 4 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 1


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
Cours GL 2AInfo Cours GL 2AInfo
5 Chiraz jelassi 6 Chiraz jelassi

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
être adaptées à large échelle ;
CRISE DU LOGICIEL ( "software crisis”) • 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.

Cours GL 2AInfo Cours GL 2AInfo


7 Chiraz jelassi 8 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 2


Crise du logiciel Crise du logiciel

Les Problèmes ?
Les causes?

Cours GL 2AInfo Cours GL 2AInfo


9 Chiraz jelassi 10 Chiraz jelassi

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
 Un logiciel qui ne répond pas au besoin de client conception, le codage et les tests).
 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.,
Cours GL 2AInfo Cours GL 2AInfo
11 Chiraz jelassi 12 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 3


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é
Cours GL 2AInfo Cours GL 2AInfo
13 Chiraz jelassi 14 Chiraz jelassi

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)

Cours GL 2AInfo Cours GL 2AInfo


15 Chiraz jelassi 16 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 4


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

Cours GL 2AInfo Cours GL 2AInfo


17 Chiraz jelassi 18 Chiraz jelassi

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’exécution 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
Cours GL 2AInfo Cours GL 2AInfo
19 Chiraz jelassi 20 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 5


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.

Cours GL 2AInfo Cours GL 2AInfo


21 Chiraz jelassi 22 Chiraz jelassi

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
 ….

Cours GL 2AInfo Cours GL 2AInfo


23 Chiraz jelassi 24 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 6


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.

Cours GL 2AInfo Cours GL 2AInfo


25 Chiraz jelassi 26 Chiraz jelassi

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

Cours GL 2AInfo Cours GL 2AInfo


27 Chiraz jelassi 28 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 7


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
Cours GL 2AInfo Cours GL 2AInfo
29 Chiraz jelassi 30 Chiraz jelassi

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

Cours GL 2AInfo Cours GL 2AInfo


31 Chiraz jelassi 32 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 8


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

Cours GL 2AInfo Cours GL 2AInfo


33 Chiraz jelassi 34 Chiraz jelassi

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
3. L’étude du préalable
Collecter autant d’informations possibles sur les différentes
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 ?

Cours GL 2AInfo Cours GL 2AInfo


35 Chiraz jelassi 36 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 9


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..

Cours GL 2AInfo Cours GL 2AInfo


37 Chiraz jelassi 38 Chiraz jelassi

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
Cours GL 2AInfo Cours GL 2AInfo
39 Chiraz jelassi 40 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 10


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é.

Cours GL 2AInfo Cours GL 2AInfo


41 Chiraz jelassi 42 Chiraz jelassi

Activités du développement logiciel Différentes perceptions de la qualité

Cours GL 2AInfo Cours GL 2AInfo


43 Chiraz jelassi 44 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 11


Comment agir sur la qualité logicielle ?
Les Principes du génie logiciel
La qualité est atteinte ou améliorée en appliquant certains
Dans cette section nous listons les principes fondamentaux
principes :
(proposés par Carlo Ghezzi1)
La rigueur
 La rigueur :Généralement Les sources principales de
La séparation des préoccupations défaillances d’un logiciel sont d’origine humaine. À tout
La généralisation moment, il faut se poser la question sur la validité de son action.
La structuration le développement peut être accompagné par des outils de
vérification qui peuvent aider à réduire les erreurs.
La modularité
Cette famille d’outils s’appelle (CASE “Computer Aided
L’abstraction
Software Engineering”). Par exemple: typeurs, générateurs de
La documentation code, assistants de preuves, générateurs de tests, outil
La vérification: d’intégration continue, fuzzer, . .

Cours GL 2AInfo Cours GL 2AInfo


45 Chiraz jelassi 46 Chiraz jelassi

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


 Séparation des préoccupations:  différentes sortes de séparations
principe : traiter séparément les ≠ aspects d’un problème séparation de domaine
 diviser pour régner domaine de problème : quoi résoudre ?
résultat : réduit la quantité de complexité à contrôler  domaine de solution : comment résoudre ?
séparation de temps : phases du cycle de vie
séparation de qualité
maquettes, prototypes
 conception globale, détaillée

Cours GL 2AInfo Cours GL 2AInfo


47 Chiraz jelassi 48 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 12


Les Principes du génie logiciel Les Principes du génie logiciel
 La Généralisation : ensemble de fonctionnalités semblables
différentes sortes de séparations (suite) regroupées en une fonctionnalité paramétrable
vues séparées sur le logiciel : modélisation en UML généricité (Un logiciel est générique lorsqu’il est
cas d’utilisation, structure statique adaptable) héritage
 La Structuration: décomposition des problèmes en sous
 comportement dynamique, architecture
problèmes indépendants. c’est la façon de décomposer un
séparation de responsabilités : organisation en logiciel (utilisation d'une méthode bottom-up ou top-down).
équipes projet  La modularité: c’est le partitionnement du logiciel en
modules qui ont une cohérence interne (des invariants).

Cours GL 2AInfo Cours GL 2AInfo


49 Chiraz jelassi 50 Chiraz jelassi

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


Les Principes du génie logiciel Compétence 1 : Un bon programmeur: Programmation à petite
échelle (algo, SD, LP) Mais il est aussi appelé à faire de la prog à
 L’abstraction: c’est le raisonnement sur des concepts généraux grande échelle
plutôt que sur chacun des cas particuliers. Exemple les classes Compétence 2 : Un bon concepteur: Familier avec plusieurs
abstraites dans les langages à objets. approches de conception Transformer les exigences en
 La Documentation : c’est la gestion des documents spécifications Discuter avec l’usager en ses termes Connaissance
de plusieurs domaines d’application Raisonner à plusieurs
incluant leur identification, acquisition, production, stockage et
niveaux d’abstraction
distribution. Il faut prévoir les évolutions d’un logiciel pour que
Compétence 3 : Capacité de modélisation Bâtir et utiliser un
la maintenance soit plus efficace. modèle de l’application Le modèle est utilisé pour répondre aux
 Vérification: c’est la détermination du respect des questions relatives aussi bien au comportement du système que
spécifications établies sur la base des besoins identifiés dans la de sa performance
phase précédente du cycle de vie. Compétence 4 : Communication et Relations humaines Travail
d’équipe Distribution de travail Leadership, motivation
Cours GL 2AInfo
Compétence
Cours GL 2AInfo
5 : Management
51 Chiraz jelassi 52 Chiraz jelassi

Cours GL 2AINFO C.Jelassi 13

Vous aimerez peut-être aussi