Introduction au Génie Logiciel Miguel Garzon Université d’Ottawa
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
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
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
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
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
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
La qualité du logiciel... Conviviabilité Efficacité Fiabilité 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
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
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
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
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
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
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