0% ont trouvé ce document utile (0 vote)
5 vues67 pages

Introduction au Génie Logiciel

Le génie logiciel est une discipline systématique dédiée au développement, à l'exploitation et à la maintenance des systèmes logiciels, visant à améliorer la qualité et la fiabilité des produits logiciels. Il a émergé en réponse à la crise du logiciel des années 1960, en introduisant des méthodes d'ingénierie pour rationaliser la production de logiciels. Les objectifs incluent la satisfaction des exigences des clients, la réduction des coûts d'entretien et l'optimisation des processus de développement.

Transféré par

Sanguisso
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues67 pages

Introduction au Génie Logiciel

Le génie logiciel est une discipline systématique dédiée au développement, à l'exploitation et à la maintenance des systèmes logiciels, visant à améliorer la qualité et la fiabilité des produits logiciels. Il a émergé en réponse à la crise du logiciel des années 1960, en introduisant des méthodes d'ingénierie pour rationaliser la production de logiciels. Les objectifs incluent la satisfaction des exigences des clients, la réduction des coûts d'entretien et l'optimisation des processus de développement.

Transféré par

Sanguisso
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd

INTRODUCTION AU GÉNIE Chapitre 1

LOGICIEL
Sujets abordés
 Génie Logiciel: Définition
 Pourquoi le génie logiciel?
 Objectifs spécifiques du génie logiciel
 Disciplines et métiers du génie logiciel
 Définitions: logiciel, système
 Caractéristiques principales d’un logiciel
 Principes du génie logiciel

2
Génie logiciel: définition

• Le génie logiciel est une approche systématique du développement,


de l’exploitation et de la maintenance des systèmes logiciels. C’est
l’application de principes, de pratiques et de méthodologies
d’ingénierie à la conception, au développement, aux tests et au
déploiement de solutions logicielles de haute qualité.

• Il est une discipline d'ingénierie qui s'occupe de tous les aspects de


la production de logiciels. Il se veut une science de génie
industriel qui s’intéresse aux théories, méthodes et outils de
développement de logiciels professionnels.

3
Caractéristiques d’un bon logiciel

• Selon un arrêté ministériel(30 décembre 1983) relatif à


l'enrichissement du vocabulaire de l'informatique, le génie logiciel se
définit comme « 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 ».

• Définition par l’IEEE du terme «Génie Logiciel» : L’application


d’approches systématiques, rigoureuses, quantifiables pour le
développement, la mise en œuvre et la maintenance d’un logiciel,
c’est à dire l’application de l’ingénierie au domaine du logiciel.

4
Pourquoi le génie logiciel?
Crise du logiciel
• La notion de « Génie Logiciel » a été proposée en 1968 lors de la
conférence «GarmischPartenkirchen, Germany, 7th to IIth October
1968 » pour discuter de ce qui était alors appelé la «Crise du
Logiciel».

• Les approches individuelles au développement des programmes et


l’absence de méthodes d’ingénierie logicielle comportaient des
faiblesses qui déteignaient négativement sur la production de logiciels
en plus de l’environnement informatique qui était en pleine
croissance.
• On notait:
 Une non-fiabilité de logiciels produits et leur non-satisfaction de
cahier des charges.
 Une livraison tardive des produits logiciels;
 Des échecs à la réalisation de nombreux projets logiciels;
 Des dépassements de budget pour de nombreux logiciels; 5
Pourquoi le génie logiciel?
Crise du logiciel
• Tous les problèmes ci-dessus conduisent à une « crise logicielle ».

6
Pourquoi le génie logiciel?
Solution à la crise du logiciel
• La solution au problème consistait à transformer l’effort de codage
non organisé en une discipline de génie logiciel. Ces modèles
d'ingénierie ont aidé les entreprises à rationaliser leurs opérations et
à fournir des logiciels répondant aux exigences des clients.

• La fin des années 1970 a vu l’utilisation généralisée des principes du


génie logiciel. une variété de nouvelles techniques et méthodes de
génie logiciel ont été développés. Outils et notations standards ont
été élaborés et sont maintenant largement utilisés.

 L'initiative viendra de la division des affaires scientifiques de


l'OTAN (NATO), qui organise en octobre 1968 sur la suggestion de
F. L. Bauer, professeur à l'université technique de Munich, une
conférence de travail sur les difficultés de la production de logiciel
et les moyens de les surmonter
7
Pourquoi le génie logiciel?
Solution à la crise du logiciel

 Intitulée Working Conference on Software Engineering, elle est


considérée comme l'événement fondateur de cette nouvelle
discipline et c'est elle qui popularise le terme de software
engineering, traduit en français par « génie logiciel ».
 Bauer donne la définition suivante du terme GL : "Establishment
and use of sound engineering principles to obtain economically
software that is reliable and works on real machines efficiently"

• Dans les années 1980, le processus de génie logiciel a été automatisé


et le génie logiciel assisté par ordinateur (CASE) s'est développé.

• Les années 1990 ont vu une importance accrue accordée aux aspects
de « gestion » des normes de qualité et des processus des projets,
tout comme la norme ISO 9001.
8
Objectifs spécifiques du génie logiciel

• Le génie logiciel (software engineering) est une science de


génie industriel qui étudie les méthodes de travail et les
bonnes pratiques des ingénieurs qui développent des
logiciels.

• Le génie logiciel s'intéresse en particulier aux procédures


systématiques qui permettent d'arriver à ce que des logiciels de
grande taille correspondent aux:
 attentes du client,
 soient fiables,
 aient un coût d'entretien réduit et
 de qualité et de bonnes performances tout en respectant les
délais et les coûts de construction.
• Le génie logiciel vise à rationaliser et à optimiser le processus
de production d'un logiciel. 9
Objectifs spécifiques du génie logiciel

• Comme tout projet, la réalisation d'un logiciel est soumise à des


exigences contradictoires et difficilement conciliables (triangle coût-
délai-qualité).
Qualité

Coû Délai
t logiciel
• La qualité d'un peut s'évaluer à partir d'un ensemble de
facteurs tels que :

10
Objectifs spécifiques du génie logiciel
 Le logiciel répond-il aux besoins exprimés ?
 Le logiciel demande-t-il peu d'efforts pour évoluer aux regards de
nouveaux besoins ?
 Le logiciel peut-il facilement être transféré d'une plate-forme à une
autre ? ... (voir norme ISO 9126)
• Sans être une solution miracle, le génie logiciel a pour objectif de
maximiser la surface du triangle en tenant compte des priorités du
client.

11
Rôles du génie logiciel

• Le génie logiciel est une discipline d'ingénierie qui s'occupe de tous


les aspects de la production de logiciels dès les premières étapes
de spécification du système jusqu'à la maintenance du système
après qu'il a été mis en usage.
 Discipline d’ingénierie: Utilisation des théories et des méthodes
appropriées pour résoudre les problèmes en tenant compte de
l'organisation et les contraintes financières.
 Tous les aspects de la production de logiciels: N'est pas
seulement le processus technique de développement, c’est aussi,
la gestion de projet et le développement d'outils, de méthodes,
etc... pour soutenir la production de logiciels.

12
Les disciplines et métiers du génie
logiciel
• Ingénierie front-end:
• Les ingénieurs front-end sont spécialisés dans le développement des
composants de l’interface utilisateur (UI) d’un système logiciel. Ils
travaillent à la conception et à la mise en œuvre des éléments visuels
avec lesquels les utilisateurs interagissent directement sur les pages
web, les applications mobiles et les interfaces graphiques (IUG).

13
Les disciplines et métiers du génie
logiciel
• Ingénierie back-end :
• Les ingénieurs back-end se concentrent sur le développement côté
serveur d’un système logiciel. Ils s’occupent de la logique, de la
gestion des données et des opérations commerciales en coulisses, en
veillant au bon fonctionnement et aux performances des composants
côté serveur, des bases de données et des API.

14
Les disciplines et métiers du génie
logiciel
• Ingénierie full stack
• Les ingénieurs « full stack » possèdent une combinaison de
compétences front-end et back-end, ce qui leur permet de gérer à la
fois l’interface utilisateur et les aspects côté serveur du
développement de logiciels. Ils possèdent des connaissances et une
expertise sur l’ensemble de la pile de développement logiciel, de la
conception des interfaces utilisateur à la gestion de la logique et de
l’intégration côté serveur.

15
Les disciplines et métiers du génie
logiciel
• Ingénierie DevOps
• Les ingénieurs DevOps font le lien entre le développement de logiciels
et les opérations informatiques. Ils travaillent l’automatisation et la
rationalisation des processus impliqués dans le déploiement des
logiciels, la gestion de l’infrastructure et les pipelines d’intégration et
de livraison continues. Les ingénieurs DevOps veillent à ce que les
systèmes logiciels soient construits, déployés et exploités de manière
efficace et fiable.

16
Les disciplines et métiers du génie
logiciel
• Ingénierie de l’assurance qualité (QA)
• Les ingénieurs QA sont spécialisés dans les tests et l’assurance de la
qualité, de la fonctionnalité et de la performance des systèmes
logiciels. Ils élaborent et exécutent des stratégies de test,
développent des cas de test et utilisent divers outils et techniques de
test pour identifier et traiter les défauts et les problèmes des
systèmes logiciels.

17
Les disciplines et métiers du génie
logiciel
• Ingénierie des systèmes embarqués
• Les systèmes embarqués sont des systèmes informatiques spécialisés
intégrés dans d’autres appareils ou machines. Ces ingénieurs
travaillent donc au développement de logiciels pour des appareils tels
que les appareils ménagers, les appareils médicaux, les systèmes
automobiles et les systèmes de contrôle industriel.

18
Définitions: Système

• Définition 1: ensemble d'éléments en interaction dynamique, dont


les éléments sont organisés et coordonnés en vue d'atteindre un
objectif, qui évolue dans un environnement.

• Définition 2: Un système est un ensemble d'éléments interagissant


entre eux suivant un certain nombre de principes et de règles dans le
but de réaliser un objectif.

• Définition 3: ensemble d'éléments matériels ou


immatériels(hommes, machines, méthodes, règles, etc.) en
interaction transformant par un processus des éléments(les entrées)
en d’autres éléments(les sorties)

19
Définitions: Système

• Exemple: Une chaudière transforme par combustion du charbon en


chaleur.
• Un système peut être contrôlé par un autre système dit système de
pilotage
• On obtiendra plus ou moins de chaleur selon les réglages qu’on
effectuera sur la chaudière, et plus ou moins longtemps selon la
quantité de charbon.
• L’opérateur qui effectue les réglages et qui contrôle le flux de charbon
en entrée constitue un système de pilotage qui par ses commandes
au système physique(à la chaudière) cherche à satisfaire un
objectif(tel niveau de chaleur)

20
Définitions: Système

• Nous envisageons ici les systèmes constitués par des


organisations(entreprises, sous-ensembles d’entreprises, etc.) et
fonctionnant en vue de la réalisation de certains objectifs

• Un tel système physique ou système opérant transforme un flux


physique d’entrées(matières premières, flux financiers…) en un flux
physique de sorties(produits finis, flux financiers…).

Entré Sortie
es SYSTÈME OPERANT s
Flux
physique

21
Définitions: Système

• Nous envisageons ici les systèmes constitués par des


organisations(entreprises, sous-ensembles d’entreprises, etc.) et
fonctionnant en vue de la réalisation de certains objectifs

• Un tel système physique ou système opérant transforme un flux


physique d’entrées(matières premières, flux financiers…) en un flux
physique de sorties(produits finis, flux financiers…).

Entré Sortie
es SYSTÈME OPERANT s
Flux
physique

22
Définitions: Logiciel

• Définition 1: On regroupe sous le terme de logiciel les différentes


formes de programmes qui permettent de faire fonctionner un
ordinateur, et de l’utiliser pour résoudre des problèmes, les données
qu’ils utilisent et les documents qui servent à concevoir ces
programmes et ces données, à les mettre en œuvre, à les utiliser et à
les modifier.
• Définition 2: «Un logiciel est un ensemble d'entités nécessaires au
fonctionnement d’un processus de traitement automatique de
l'information». Parmi ces entités, on trouve par exemple:
 des programmes (en format code source ou exécutables);
 des documentations d'utilisation;
 des informations de configuration.

23
Définitions: Logiciel

• L’encyclopédie Wikipédia présente un logiciel comme:


 « un ensemble de séquences d’instructions interprétables par une
machine et d’un jeu de données nécessaires à ces opérations. Le
logiciel détermine donc les tâches qui peuvent être effectuées par
la machine, ordonne son fonctionnement et lui procure ainsi son
utilité fonctionnelle. Les séquences d’instructions appelées
programmes ainsi que les données du logiciel sont ordinairement
structurées en fichiers. La mise en œuvre des instructions du
logiciel est appelée exécution et la machine chargée de cette mise
en œuvre est appelée ordinateur ou calculateur ».
• Fait bien ressortir:
 Programmes
 Données
 Documentation

24
Définitions: Logiciel

• Comme produits logiciels, on distingue:


• Produits logiciels génériques:
 Systèmes autonomes commercialisés auprès de tout client
souhaitant les acheter
 Exemples : logiciel de PC tels que les programmes de traitement
de texte (Microsoft Office word), programmes graphiques
(photoshop), les outils de gestion de projet, jeux, logiciels pour
des marchés spécifiques tels que les systèmes de rendez-
vous pour les dentistes.

25
Définitions: Logiciel

• Produits logiciels adaptés aux clients(sur mesure):


 Logiciels commandés par des clients spécifiques pour répondre à
leurs propres besoins;
 Exemples : systèmes de contrôle embarqués, logiciel de contrôle
et de surveillance de trafic aérien, …

26
Définitions: Logiciel

• Spécification du produit:

Produits génériques Produits adaptés aux


clients
La spécification de ce que doit La spécification de ce que doit
faire le logiciel est maîtrisée par faire le logiciel est maîtrisée par
le développeur et les décisions le client de ce logiciel et c’est lui
concernant les changements du qui décide des changements qu’il
logiciel sont faites par le souhaite y apporter.
développeur

27
Types d’applications

• Applications autonomes (Stand-alone applications)


 Ce sont des systèmes d'application s'exécutant sur un ordinateur
local, tel qu'un PC. Elles comprennent toutes les fonctionnalités
nécessaires et n'ont pas besoin d'être connecté à un réseau.
 Exemple: applications bureautiques.

• Applications basées sur les transactions interactives


 Applications qui s’exécutent sur une machine distante accédée par
l’utilisateur depuis sa machine (sites Web, e-commerce, …)
 Exemple: applications d'entreprise (business systems), services en nuage
(cloud-based services)

28
Types d’applications

• Systèmes de contrôle embarqués (Stand-alone applications)


 Ce sont des systèmes logiciels de contrôle qui contrôlent et gèrent
les périphériques matériels. Numériquement, il y a probablement
plus de systèmes embarqués que n'importe quel autre type de
système.
 Ex. logiciel dans un téléphone portable, logiciel contrôlant le
freinage dans une voiture (anti-lock braking) et logiciel dans un
four à micro-ondes permettant de contrôler le processus de
cuisson, contrôle missiles, fusées, contrôle missiles, fusées,.
• Les systèmes de traitement par lots(applications batch)
 Ce sont des systèmes de gestion qui sont conçus pour traiter des
données en grandes séries.
 Des applications de gestion destinées à traiter de gros volumes de
données pour produire de gros volumes de résultats en sortie.
 Exemple: systèmes de facturation périodique, gestion des comptes
29
Types d’applications

• Systèmes de divertissement (Logiciels de jeux)


 Ce sont des systèmes qui sont principalement pour un usage
Systèmes développés par les scientifiques pour modéliser des
processus physiques (météo, écoulement de fluide sur les ailes
d’avions, …) et qui sont destinés à divertir l'utilisateur.
• Systèmes de modélisation et de simulation
 Systèmes développés par les scientifiques pour modéliser des
processus ou des situations physiques (météo, écoulement de
fluide sur les ailes d’avions, …)

30
Types d’applications

• Systèmes de collecte de données


 Ce sont des systèmes de collecte de données à partir de leur
environnement, en utilisant un ensemble de capteurs et d'envoyer
ces données à d'autres systèmes de traitement.

• Systèmes de systèmes
 Ce sont des systèmes qui sont composés d'un certain nombre
d'autres systèmes logiciels.
 Remarque : les limites entre ces types de systèmes sont floues. Ex.
Les systèmes de traitement par lots sont souvent utilisés avec des
systèmes Web. Par exemple, dans une entreprise, les demandes de
remboursement de frais de déplacement peuvent être soumises
via une application Web, mais traitées dans une application de
traitement par lots pour un paiement mensuel.
31
Principes fondamentaux du Génie
logiciel
• Certains principes fondamentaux s'appliquent à tous les types de
systèmes de logiciels, quelles que soient les techniques de
développement utilisées :
 Les systèmes doivent être développés en utilisant un processus
de développement réussi et compréhensible. L'organisation
qui développe le logiciel doit planifier le processus de
développement et avoir une idée claire de ce qui sera produit et du
moment où il sera terminé. Bien entendu, différents processus sont
utilisés pour différents types de logiciels.

32
Principes fondamentaux du Génie
logiciel
• Certains principes fondamentaux s'appliquent à tous les types de
système de logiciels, quelles que soient les techniques de
développement utilisées :
 La fiabilité et la performance sont importantes pour tous les
types de systèmes. Les logiciels doivent se comporter comme
prévu, sans défaillance et doivent être disponibles pour une
utilisation en cas de besoin. Leur fonctionnement doit être sûr
(safety) et, dans la mesure du possible, protégé contre les
attaques externes (security). Le système doit fonctionner
efficacement et ne doit pas gaspiller de ressources.

33
Principes fondamentaux du Génie
logiciel
• Certains principes fondamentaux s'appliquent à tous les types de
système de logiciels, quelles que soient les techniques de
développement utilisées :
 Comprendre et gérer les spécifications logicielles et les
exigences (ce que le logiciel doit faire) sont importants. Vous
devez savoir ce que les différents clients et utilisateurs du système
attendent de celui-ci et gérer leurs attentes afin qu’un système
utile puisse être livré dans les limites du budget et du calendrier.

34
Principes fondamentaux du Génie
logiciel
• Certains principes fondamentaux s'appliquent à tous les types de
système de logiciels, quelles que soient les techniques de
développement utilisées :
 Vous devez utiliser le plus efficacement possible les
ressources existantes. Cela signifie que, le cas échéant, vous
devez réutiliser un logiciel déjà développé plutôt que d'écrire un
nouveau logiciel.

35
Génie logiciel basé sur le Web

• Les systèmes basés sur le Web sont des systèmes distribués


complexes mais les principes fondamentaux du génie logiciel discutés
précédemment s'appliquent aussi à eux car ils sont parmi les types de
systèmes.
• Les idées fondamentales de l'ingénierie logicielle discutés
s'appliquent aux logiciels basés sur le Web de la même manière qu'ils
s'appliquent à d'autres types de systèmes logiciels.
• Réutilisation des logiciels:
 Approche dominante pour la construction de systèmes basés sur le
Web. Lors de la construction de ces systèmes, vous pensez à
comment vous pouvez les assembler à partir de composants et de
systèmes logiciels préexistants.

36
Génie logiciel basé sur le Web

• Développement incrémental et agile


 Systèmes basés sur le Web devraient être élaborés et exécutés
progressivement (par l'incrémentation). Maintenant, Il est admis
généralement qu'il est impossible de spécifier toutes les exigences
de ces systèmes à l'avance.
• Systèmes orientés services (Service-oriented systems)
 Le logiciel peut être implémenté à l'aide d'une ingénierie logicielle
axée sur les services, où les composants logiciels sont des services
Web autonomes.

37
Génie logiciel basé sur le Web

• Les interfaces riches


 Les technologies telles que AJAX et HTML5 permettent la création
des interfaces riches au sein d'un navigateur Web, mais sont
encore difficiles à utiliser. Les formulaires Web avec les scripts
locaux sont plus communément utilisés.

38
Quelques questions fréquentes à
propos du génie logiciel
Question Réponse
Qu’est-ce qu’un logiciel ? Programmes, documentation et
données. Des produits logiciels peuvent
être développés pour un client
particulier ou pour un marché plus
global.
Quelles sont les qualités d’un bon Un bon logiciel doit posséder les
logiciel ? fonctionnalités et performances
attendues du client. Il doit aussi être
maintenable, facilement utilisable, …
(voir section qualité du logiciel).
Qu’est-ce que le génie logiciel ? Le génie logiciel est une discipline
d’ingénierie concernant tous les aspects
de la production du logiciel.
Quelles sont les activités fondamentales Spécification, développement, validation
du génie logiciel? et évolution. 39
Quelques questions fréquentes à
propos du génie logiciel
Question Réponse
Quels sont les challenges auxquels Diversité grandissante, demande permanente
doit faire face le génie logiciel ?? pour des temps et coûts de production
réduits tout en maintenant des niveaux de
fiabilité admissible.
Quels sont les principaux coûts du 60% des coûts pour le developpement 40%
génie logiciel ? des coûts pour les tests. Pour les logiciels
clients les coûts d’évolution dépassent
souvent les coûts de développement.

Quelles sont les meilleures Bien que tous les projets logiciels doivent être
méthodes et techniques du génie gérés et développés avec professionnalisme,
logiciel ? les techniques sont adaptées aux types de
systèmes. Par exemple, pour les jeux :
prototypes, pour les systèmes critiques
embarqués : méthodes formelles..
40
Quelques questions fréquentes à
propos du génie logiciel
Question Réponse
Quel a été l’apport du Web dans le Disponibilité de services Web et possibilité de
génie logiciel ? développer des système hautement
distribués à base de services. Retombées
importantes en terme de langag

41
Quelques grands bugs de l’histoire

• Panne du site [Link] le 14 juillet 2010 dû soit disant à un


trop grand nombre de connexions (25 000)…
• Panne du site Web [Link] le 20/11/2008
pendant plusieurs heures suite à une « mise en ligne d’une nouvelle
version du site »…
• Perte de Mars Climate Orbiter, le 23/09/1999 après 9 mois de voyage.
 Coût : 120 M$
 Cause : confusion entre pieds et mètres.
• Destruction de la sonde Mariner 1 le 27/07/1962 pour cause d’une
erreur d’un caractère dans un programme Fortran (coût – 80 millions
de dollars)
• Au passage de l’équateur, un F16 se retrouve sur le dos : changement
de signe de la latitude mal compris…

42
Quelques grands bugs de l’histoire

• Explosion lors du premier lancement de la fusée Ariane V le 4 juin


1996
 logiciel de plate forme inertielle repris tel quel d'Ariane IV sans
nouvelle validation.
 Ariane V ayant des moteurs plus puissants s'incline plus
rapidement que Ariane IV, pour récupérer l'accélération dûe à la
rotation de la Terre.
 Les capteurs ont bien détecté cette inclinaison d'Ariane V, mais le
logiciel l'a jugée non conforme au plan de tir (d'Ariane IV), et a
provoqué l'ordre d'auto destruction.
 En fait tout se passait bien…
 Coût du programme d'étude d'Ariane V : 38 milliards de Francs,
pour 39 secondes de vol après 10 années de travail....

43
Quelques grands bugs de l’histoire

• Le 22/12/2001 750 000 terminaux de paiement ne répondentcc plus


longues files d'attente
 Saturation des serveurs de la société Atos chargés des
autorisations de paiements dépassant 600F. Habituellement
quelques dizaines de secondes, ce jour là : 30mn.
 Des clients abandonnent leurs chariots pleins. Le groupe Leclerc a

chiffré son préjudice à 2 millions d'euros.

44
Le développement peut être un échec

• Malgré de nombreux efforts, les résultats sont souvent négatifs


 Dépassement de budgets
 Dépassement de temps ou en inadéquation avec les besoins du
marché Le logiciel ne satisfait pas les besoins définis du client
 Moins bonne qualité que prévue
 Les performances ne correspondent pas aux attentes
 Le logiciel est trop difficile à utiliser

45
Le développement peut être un échec

• Raisons expliquant ces conséquences négatives


 Il n’y a pas que les erreurs de programmation !!!
 Projet non réaliste
 Management de projet de mauvaise qualité Mauvaise estimation
des ressources
 Mauvaise définition des besoins du système
 Mauvais reporting du status du projet
 Risques non gérés
 Mauvaise communication entre les clients, développeurs,
utilisateurs
 Inaptitude à gérer la complexité du projet
 Mauvaise méthodologie de conception

46
Le développement peut être un échec

• Raisons expliquant ces conséquences négatives


 Mauvais outils de développement
 Mauvaise méthodologie de test
 Mauvaise couverture des tests
 Processus de développement inapproprié

47
Les protagonistes du génie logiciel (les
quatre P)
• La production de logiciels est une tâche extrêmement complexe qui
pose de nombreux challenges.
 Coordination de nombreuses personnes (organisées en équipes)
 Objectif premier = construire un produit (qui répond aux besoins
du/des client(s)).
 Effort de développement doit être organisé en projet (avec un
planning rigoureux pour assurer le succès).
 Pour développer le produit avec succès, les activités des personnes
doivent être organisées suivant un processus ordonné bien défini.

48
Les protagonistes du génie logiciel (les
quatre P)
• Personnes
 Business management
 Equipe de management du Projet
 Equipe de développement
 Clients
 Utilisateurs finaux

49
Les protagonistes du génie logiciel (les
quatre P)
• Produit
 Bien plus que le code source
 Documentation produite durant la définition et le développement
 Code source et objet
 Document des tests (plans, cas, résultats)
 Documentation utilisateurs
 Diverses mesures de productivité

50
Les protagonistes du génie logiciel (les
quatre P)
• Projet
 Les diverses activités d’un projet
 Planification
 Analyse des besoins
 Conception
 Implémentation
 Tests
 Maintenance
• Paradigmes utilisés (objets, …)

51
Les protagonistes du génie logiciel (les
quatre P)
• Processus
 Façon dont vont se succéder les diverses activités d’un projet
 (A voir dans la partie du cours concernant le processus de
développement d’un logiciel)

52
La qualité du logiciel

• Distinction entre:
 Facteurs de qualité : caractéristiques externes de la qualité
(perçues par les utilisateurs du produit – exemple : fiabilité)
 Critères de qualité : caractéristiques internes de la qualité
(peuvent être analysées par les informaticiens – exemple :
modularité)
• Pour l’utilisateur, seuls les facteurs comptent
• Mais le respect de critères au cours du développement conditionne la
production d’un logiciel conforme aux facteurs de qualité.

53
La qualité du logiciel

• 10 facteurs de qualité:
 Validité: Aptitude d’un produit logiciel à remplir exactement ses
fonctions, définies par le cahier des charges et la spécification.
 Fiabilité: Aptitude d’un produit logiciel à fonctionner dans des
conditions éventuellement anormales.
 Extensibilité: Facilité avec laquelle un logiciel se prête à une
modification ou à une extension des fonctions qui lui sont
demandées
 Réutilisabilité: Aptitude d’un logiciel à être réutilisé, en tout ou
partie, dans de nouvelles applications
 Compatibilité: Facilité avec laquelle un logiciel peut être combiné
avec d’autres

54
La qualité du logiciel

• 10 facteurs de qualité(suite):
 Efficacité : Utilisation optimale des ressources matérielles
 Portabilité : Facilité avec laquelle un produit peut être transféré
dans différents environnements matériels et logiciels
 Vérifiabilité : Facilité de préparation des procédures de recette et
de validation
 Intégrité : Aptitude d’un logiciel à protéger son code et ses
données contre des accès non autorisés
 Facilité d’emploi : Facilité d’apprentissage, d’utilisation, de
préparation des données, de correction des erreurs d’utilisation,
d’interprétation des résultats s

55
La dimension éthique dans le génie
logiciel
• Le génie logiciel induit des responsabilités plus larges que simplement
appliquer des compétences techniques.

• Les ingénieurs logiciels doivent se comporter d’une manière honnête


et éthique s’ils veulent être respectés professionnellement.

• Un comportement éthique est bien plus que de respecter la loi, il


implique de suivre un ensemble de principes moralement corrects.

56
La dimension éthique dans le génie
logiciel
Responsabilité professionnelle:

• Confidentialité
 Les ingénieurs doivent respecter la confidentialité de leurs
employeurs ou de leurs clients, même si des clauses de
confidentialité n’ont pas été signées.

• Compétence
 Un ingénieur ne doit pas se faire plus beau qu’il n’est. Il ne doit
pas accepter une tâche qu’il sait ne pas être capable de réaliser
correctement.

57
La dimension éthique dans le génie
logiciel
Responsabilité professionnelle:

• Respect des droits de propriété intellectuelle


 Les ingénieurs devraient être sensibilisés aux lois locales
concernant les droits d’auteurs, les brevets, etc. Ils devraient être
attentifs à faire en sorte que cela soit respecté pour les clients et
l’employeur.

• Ne pas faire mauvais usage de l’informatique


 Les ingénieurs ne devraient pas faire usage de leur compétences
techniques pour faire un mauvais usage des ordinateurs des autres
gens (cela va de jouer sur l’ordinateur de la société à disséminer
des virus…).

58
La dimension éthique dans le génie
logiciel
Code de pratiques éthiques ACM/IEEE

• Les associations d’informaticiens (ACM et IEEE) ont coopéré pour


mettre au point un code de pratiques éthiques.

• Les membres de ces associations signent ce code de pratiques


lorsqu’ils adhèrent.

• Contient 8 principes relatifs aux comportements des informaticiens

59
La dimension éthique dans le génie
logiciel
Préambule aux principes éthiques

• Computers have a central and growing role in commerce, industry,


government, medicine, education, entertainment and society at large.
Software engineers are those who contribute by direct participation or
by teaching, to the analysis, specification, design, development,
certification, maintenance and testing of software systems.

• Because of their roles in developing software systems, software


engineers have significant opportunities to do good or cause harm, to
enable others to do good or cause harm, or to influence others to do
good or cause harm. To ensure, as much as possible, that their efforts
will be used for good, software engineers must commit themselves to
making software engineering a beneficial and respected profession.
60
La dimension éthique dans le génie
logiciel
Les principes éthiques (ACM/IEEE)

• Software Engineering Code of Ethics and Professional Practice


ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and
Professional Practices

• PREAMBLE The short version of the code summarizes aspirations at a


high level of the abstraction; the clauses that are included in the full
version give examples and details of how these aspirations change
the way we act as software engineering professionals. Without the
aspirations, the details can become legalistic and tedious; without the
details, the aspirations can become high sounding but empty;
together, the aspirations and the details form a cohesive code.

61
La dimension éthique dans le génie
logiciel
Les principes éthiques (ACM/IEEE)

• Software engineers shall commit themselves to making the analysis,


specification, design, development, testing and maintenance of
software a beneficial and respected profession. In accordance with
their commitment to the health, safety and welfare of the public,
software engineers shall adhere to the following Eight Principles:

62
La dimension éthique dans le génie
logiciel
Les principes éthiques (ACM/IEEE)

• 1. PUBLIC - Software engineers shall act consistently with the public


interest.

• 2. CLIENT AND EMPLOYER - Software engineers shall act in a manner


that is in the best interests of their client and employer consistent
with the public interest.

• 3. PRODUCT - Software engineers shall ensure that their products and


related modifications meet the highest professional standards
possible.

• 4. JUDGMENT - Software engineers shall maintain integrity and


independence in their professional judgment.
63
La dimension éthique dans le génie
logiciel
Les principes éthiques (ACM/IEEE)

• 5. MANAGEMENT - Software engineering managers and leaders shall


subscribe to and promote an ethical approach to the management of
software development and maintenance.

• 6. PROFESSION - Software engineers shall advance the integrity and


reputation of the profession consistent with the public interest.

• 7. COLLEAGUES - Software engineers shall be fair to and supportive of


their colleagues.

• 8. SELF - Software engineers shall participate in lifelong learning


regarding the practice of their profession and shall promote an ethical
approach to the practice of the profession.
64
La dimension éthique dans le génie
logiciel
Parfois on se trouve face à un dilemme

• Désaccord avec la politique managériale de l’entreprise


• L’employeur agit de façon non éthique et produit un logiciel critique
sans réaliser un test complet du système

• L’entreprise se lance dans le développement de systèmes


d’armement

• …

65
Points clés

• Les ingénieurs en logiciel ont des responsabilités à la profession


d'ingénieur et de la société. Ils ne doivent pas simplement être
concernés par les questions techniques.

• Le génie logiciel est une discipline d'ingénierie qui s'occupe de tous


les aspects de la production de logiciels.

• Les caractéristiques essentielles des logiciels sont la maintenabilité, la


fiabilité et la sécurité, l'efficacité et l'acceptabilité.

• Les activités de haut niveau de spécification, de développement, de


validation et d'évolution font partie de tous les processus de logiciels.

66
Points clés

• Les notions fondamentales du génie logiciel sont universellement


applicables à tous les types de développement des systèmes.

• Il y a beaucoup de différents types de systèmes et chacun requiert


des outils et des techniques de génie logiciel appropriés pour leur
développement.

• Les idées fondamentales du génie logiciel sont applicables à tous les


types de système de logiciel.

• Les sociétés professionnelles publient des codes de conduite


définissant les normes de comportement attendues de leurs
membres.

67

Vous aimerez peut-être aussi