Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 1: Software and Software Engineering
Apr 04, 2015
Object-Oriented Software EngineeringPractical Software Development using UML and Java
Chapitre 1: Software and Software Engineering
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
2
1.1 La Nature du Logiciel...
Le logiciel est intangible•Il est difficile de gérer l’effort de développement
Le logiciel est facile à reproduire•Tout le coût se trouve dans son développement—Pour d’autres produits, la fabrication est souvent le processus le plus coûteux
L’industrie du logiciel exige beaucoup de main d’œuvre•Le processus de développement est difficile à automatiser
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
3
La nature du logiciel
Même des informaticiens peu qualifié peuvent arriver à bricoler quelque chose qui semble fonctionner•La qualité d’un logiciel n’est pas apparente
Un logiciel est facile à modifier•La tentation est forte d’effectuer des changements rapides sans vraiment en mesurer la portée
Un logiciel ne s’use pas•Il se détériore à mesure que des changements sont effectués—en raison de l’introduction d’erreurs —ou par une complexification indue
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
4
La nature du logiciel
Conclusions•Beaucoup de logiciels sont mal conçus et se détériore rapidement
•La demande pour du logiciel est toujours croissante
•Le logiciel se trouve en perpétuel ‘état de crise’
•L’ingénierie du logiciel est une nécessité
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
5
Les différentes catégories de logiciel...
Sur mesure•Pour un client spécifique
Générique•Vendu sur le marché
Embarqués•Scellé dans du matériel électronique•Difficile à modifier
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
6
Les différentes catégories de logiciel...
Différences entre les logiciels sur mesure, génériques et embarqués
Sur mesure
Générique
Embarqué
Nombre de copies en circulation
faible moyen élevé
Effort de calcul total exigé
faible élevé moyen
Effort global de développement
élevé moyen faible
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
7
Les différentes catégories de logiciel...
Logiciels temps-réel•e.g. systèmes de contrôle et de surveillance•Réaction immédiate requise•Environnement souvent très contraignant
Logiciels de traitement de données•Largement utilisés en administration des affaires
•Fiabilité des résultats•Sécurité dans l’accès aux données
Quelques fois les 2 aspects sont présents dans un logiciel
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
8
1.2 Qu’est-ce que le génie du logiciel?...
Le processus visant la résolution de problèmes posés par un client par le développement systématique et l’évolution de systèmes logiciels de grande taille et de haute qualité en respectant les contraintes de coûts , de temps, et autres.
Autres définitions:•IEEE: (1) l’application d’une approche de développement, d’utilisation et de maintenance logiciel systématique, discuplinée, quantifiable. (2) L’étude des approches concernant (1).
•Canadian Standards Association: Les activités systématiques impliquant le design, l’implantation et la vérification du logiciel de façcon à en optimiser sa production et son support.
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
9
Qu’est-ce que le génie du logiciel?...
…la résolution de problèmes posés par un client…•Voilà le but essentiel du génie logiciel•Dans certains cas, la solution peut être de ne rien développer, si un produit satisfaisant existe déjà
•Ajouter des options non requises par le client ne solutionne en rien le problème
•L’ingénieur logiciel doit établir une bonne communication afin de bien identifier et comprendre le problème à résoudre
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
10
Qu’est-ce que le génie du logiciel?...
…par le développement systématique et l’évolution…•Tout processus d’ingénierie implique l’application de techniques bien maîtrisées de façon organisée et disciplinée
•Plusieurs pratiques reconnues ont maintenant été standardisées—e.g. IEEE ou ISO
•La plupart des projets logiciels consiste à faire évoluer un logiciel existant
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
11
Qu’est-ce que le génie du logiciel?...
…systèmes logiciels de grande taille et de haute qualité…•Un logiciel de grande taille est un logiciel qui ne peut être compris par une seule personne
•Le travail en équipe et une bonne coordination sont essentiels
•Un des défis principaux est d’arriver à subdiviser le travail à accomplir tout en s’assurant que chacune de ces parties fonctionneront harmonieusement ensemble
•Le produit final doit rencontrer des critères de qualité bien établis
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
12
Qu’est-ce que le génie du logiciel?...
…en respectant les contraintes de coûts , de temps, et autres.•Les ressources sont limitées•Le bénéfice résultant doit être supérieur aux coûts
•La productivité de l’équipe doit demeurer concurrentielle
•Une mauvaise estimation des coûts et de la durée du projet peut mener à l’échec du projet
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
13
1.3 La profession d’ingénieur logiciel
Le terme Génie Logiciel a été introduit en 1968•Il s’agissait de reconnaître le fait que les principes du génie peuvent s’appliquer au développement du logiciel
Le génie est une pratique régulée par une corporation professionnel•Protection du public•Application de principes scientifiques et économiques
•Pratiques conformes à une éthique établie
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
14
1.4 Les parties impliquées dans le génie du logiciel
1. Utilisateurs•Ceux qui se servent du logiciel
2. Clients•Ceux qui paient pour le logiciel
3. Développeurs•Ceux qui conçoivent le logiciel
4. Gestionnaires•Ceux qui supervise la production du logiciel
Tous ces rôle peuvent être remplis par la même personne
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
15
1.5 La qualité du logiciel...Conviviabilité•Apprentissage aisé, facilité d’utilisation
Efficacité•Aucun gaspillage de ressources (mémoire, temps de calcul, …)
Fiabilité•Les tâches sont effectués sans problèmes
Facilité de maintenance•Aisé à modifier, à faire évoluer
Réutilisabilité•Ses parties peuvent être réutilisés facilement
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
16
La qualité du logiciel...
Perception deLa qualité du logiciel
Développeur: Facile à concevoir,à maintenir, à réutiliser
Utilisateur: Facile à apprendre,utile et efficace
Client: Résoud le problèmeà un coût acceptable
Gestionnaire: Se vend bien,satisfait les clients,peu coûteux à développer
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
17
La qualité du logiciel...
Ces différents attributs peuvent être en conflit•Accroître l’efficacité peut rendre le logiciel plus difficile à maintenir et à réutiliser
Définir des critères de qualité constitue un élément clé du génie du logiciel•La conception a alors pour objectif de rencontrer ces critères
•Trop en faire est une perte de temps et de ressources
L’optimisation du logiciel peut être nécessaire•Il faut atteindre un niveau de performance optimal en fonction des coûts budgétés
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
18
Critères de qualité internes
•Ce sont par exemple: —le style de programmation—la quantité et la qualité des commentaires,
—la complexité du programme produit•Caractérise certains aspect de la conception du logiciel
•Ont un effet direct sur la qualité externe du produit
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
19
Qualité à court terme vs Qualité à long terme
Court terme:•Le logiciel répond-t-il aux besoins immédiats du client?
•Peut-il faire face aux exigences actuels?
Long terme:•Maintenance•Évolution en fonction des besoins futurs
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
20
1.6 Projets de génie logiciel
La plupart des projets consiste à faire évoluer ou à maintenir un logiciel existant dont on a hérité de la responsabilité•Projets correctifs: corriger des défauts•Projets adaptatifs: modifications à apporter au système de façon à tenir compte de changement dans—Le système d’opération—Les données ou la base de données—Les règles et procédures
•Projets d’amélioration: ajout de nouvelles options
•Projets perfectifs: changements apportés à la structure interne du programme
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
21
Projets de génie logiciel
Développement à partir de zéro•Concevoir un nouveau produit•Il s’agit là de la minorité des projets entrepris
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
22
Projets de génie logiciel
Certains projets consiste à concevoir un cadre d’applications•Un cadre d’applications est un logiciel général dont certains éléments demeurent ouverts.
D’autres projets sont des travaux d’assemblage•Ils impliques la mise ensemble de composantes fonctionnelles existantes
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
23
1.7 Activités communes aux projets de génie logiciel
Définition et spécification des exigences•Ce qui inclut
—Analyse de domaine—Définition du problème—Cueillette des besoins—Analyse des besoins—Spécification formelle des exigences
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
24
Activités communes aux projets de génie logiciel
Conception•Décider comment la technologie disponible sera utilisée pour réponde aux besoins
•Ce qui inclut:—Déterminer ce qui sera réalisé par le logiciel et par le matériel
—Mettre au point l’architecture du système, la définition des sous-systèmes et de leurs interactions
—Élaboration des éléments internes de chaque sous-système
—Conception des interfaces usagers et des bases de données
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
25
Activités communes aux projets de génie logiciel
Modélisation•Créer des représentation du logiciel et de son domaine d’application— Modélisation de son utilisation— Modélisation de sa structure— Modélisation de sa dynamique et de son comportement
ProgrammationAssurance de qualité•Révision et inspections•Mise à l’épreuve
DéploiementGestion du processus
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
26
1.8 Les huit termes abordés dans ce livre
1. Compréhension du client et de l’utilisateur2. Développement fondé sur des principes solides et sur des technologies favorisant la réutilisation3. Orientation objet4. La modélisation basée sur UML5. Évaluation des alternatives6. Développement itératif7. Communication reposant sur de la documentation8. Gestion du risque dans chacune des activités
© Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering
27
1.9 Risques et difficultés en génie du logiciel
• Complexité et quantité des éléments à tenir en compte• Incertitude concernant la technologie• Incertitude concernant les exigences• Incertitude concernant les compétences• Adaptation face aux changements• Détérioration du produit• Risques politiques