Chapitre 1: Software and Software Engineering Object-Oriented Software Engineering Practical Software Development using UML and Java Chapitre 1: Software and Software Engineering
Chapter 1: Software and Software Engineering 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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering 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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering 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é Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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é Effort global de développement Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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. Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering 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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering La qualité du logiciel... Client: Utilisateur: Résoud le problème à un coût acceptable Facile à apprendre, utile et efficace Perception de La qualité du logiciel Gestionnaire: Développeur: Se vend bien, satisfait les clients, peu coûteux à développer Facile à concevoir, à maintenir, à réutiliser Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
Chapter 1: Software and Software Engineering 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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
Qualité à court terme vs Qualité à long 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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Programmation Assurance de qualité Révision et inspections Mise à l’épreuve Déploiement Gestion du processus Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
1.8 Les huit termes abordés dans ce livre 1. Compréhension du client et de l’utilisateur 2. Développement fondé sur des principes solides et sur des technologies favorisant la réutilisation 3. Orientation objet 4. La modélisation basée sur UML 5. Évaluation des alternatives 6. Développement itératif 7. Communication reposant sur de la documentation 8. Gestion du risque dans chacune des activités Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001
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 Chapter 1: Software and Software Engineering © Lethbridge/Laganière 2001