GENERALITE : Génie logiciel I) Introduction Le génie logiciel (software enginee

GENERALITE : Génie logiciel I) Introduction Le génie logiciel (software engineering) représente l'application de principes 'ingénierie au domaine de la création de logiciels. Il consiste à identifier et à utiliser des méthodes, des pratiques et des outils permettant de maximiser les chances de réussite d'un projet logiciel. Il s'agit d'une science récente dont l'origine remonte aux années 1970. A cette époque, l'augmentation de la puissance matérielle a permis de réaliser des logiciels plus complexes mais souffrant de nouveaux défauts : délais non respectés, coûts de production et d'entretien élevés, manque de fiabilité et de performances. Cette tendance se poursuit encore aujourd'hui. L'apparition du génie logiciel est une réponse aux défis posés par la complexification des logiciels et de l'activité qui vise à les produire. I.1) Enjeux Le génie logiciel vise à rationaliser et à optimiser le processus de production d'un logiciel. Les enjeux associés sont multiples :  Adéquation aux besoins du client.  Respect des délais de réalisation prévus.  Maximisation des performances et de la fiabilité.  Facilitation de la maintenance et des évolutions ultérieures. Comme tout projet, la réalisation d'un logiciel est soumise à des exigences contradictoires et difficilement conciliables (triangle coût-délai-qualité). La qualité d'un logiciel peut s'évaluer à partir d'un ensemble de facteurs tels que :  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) I.2° Dimensions Le génie logiciel couvre l'ensemble du cycle de vie d'un logiciel. Il étudie toutes les activités qui mènent d'un besoin à la livraison du logiciel, y compris dans ses versions successives, jusqu'à sa fin de vie. Les dimensions du génie logiciel sont donc multiples :  Analyse des besoins du client.  Définition de l'architecture du logiciel.  Choix de conception.  Règles et méthodes de production du code source.  Gestion des versions.  Test du logiciel.  Documentation.  Organisation de l'équipe et interactions avec le client. ... II) Architecture logicielle .II.1) Définition Le Petit Robert définit l'architecture comme étant "l'art de construire les édifices". Ce mot est avant tout lié au domaine du génie civil : on pense à l'architecture d'un monument ou encore d'un pont. Par analogie, l'architecture logicielle peut être définie comme étant "l'art de construire les logiciels". Selon le contexte, l'architecture logicielle peut désigner :  L'activité d'architecture, c'est-à-dire une phase au cours de laquelle on effectue les grands choix qui vont structurer une application : langages et technologies utilisés, découpage en sous-parties, méthodologies mises en oeuvre...  Le résultat de cette activité, c'est-à-dire la structure d'une l'application, son squelette. .II.) Importance Dans le domaine du génie civil, on n'imagine pas se lancer dans la construction d'un bâtiment sans avoir prévu son apparence, étudié ses fondations et son équilibre, choisi les matériaux utilisés, etc. Dans le cas contraire, on va au-devant de graves désillusions... Cette problématique se retrouve dans le domaine informatique. Comme un bâtiment, un logiciel est fait pour durer dans le temps. Il est presque systématique que des projets informatiques aient une durée de vie de plusieurs années. Plus encore qu'un bâtiment, un logiciel va, tout au long de son cycle de vie, connaître de nombreuses modifications qui aboutiront à la livraison de nouvelles versions, majeures ou mineures. Les évolutions par rapport au produit initialement créé sont souvent nombreuses et très difficiles à prévoir au début du projet. . .II.3) Objectifs Dans le domaine du génie civil, les objectifs de l'architecture sont que le bâtiment construit réponde aux besoins qu'il remplit, soit robuste dans le temps et (notion plus subjective)agréable à l'oeil. L'architecture logicielle poursuit les mêmes objectifs. Le logiciel créé doit répondre aux besoins et résister aux nombreuses modifications qu'il subira au cours de son cycle de vie. Contrairement à un bâtiment, un logiciel mal pensé ne risque pas de s'effondrer. En revanche, une mauvaise architecture peut faire exploser le temps nécessaire pour réaliser les modifications, et donc leur coût. Les deux objectifs principaux de toute architecture logicielle sont la réduction des coûts (création et maintenance) et l'augmentation de la qualité du logiciel. La qualité du code source d'un logiciel peut être évaluée par un certain nombre de mesures appelées métriques de code : indice de maintenabilité, complexité cyclomatique, etc. II.4) Architecture ou conception ? Il n'existe pas de vrai consensus concernant le sens des mots "architecture" et "conception"dans le domaine du développement logiciel. Ces deux termes sont souvent employés de manière interchangeable. Il arrive aussi que l'architecture soit appelée "conception préliminaire" et la conception proprement dite "conception détaillée". Certaines méthodologies de développement incluent la définition de l'architecture dans une phase plus globale appelée "conception". Cela dit, la distinction suivante est généralement admise et sera utilisée dans la suite de ce cours:  L'architecture logicielle (software architecture) considère le logiciel de manière globale. Il s'agit d'une vue de haut niveau qui définit le logiciel dans ses grandes lignes : que fait-il ? Quelles sont les sous-parties qui le composent ? Interagissent-elles ? Sous quelle forme sont stockées ses données ? etc.  La conception logicielle (software design) intervient à un niveau de granularité plus fin et permet de préciser comment fonctionne chaque sous-partie de l'application. Quel logiciel est utilisé pour stocker les données ? Comment est organisé le code ? Comment une sous-partie expose-t-elle ses fonctionnalités au reste du système ? etc. La perspective change selon la taille du logiciel et le niveau auquel on s'intéresse à lui :  Sur un projet de taille modeste, architecture et conception peuvent se confondre.  A l'inverse, certaines sous-parties d'un projet de taille conséquente peuvent nécessiter en elles-mêmes un travail d'architecture qui, du point de vue de l'application globale, relève plutôt de la conception... III) L'activité d'architecture III.1) Définition Tout logiciel, au-delà d'un niveau minimal de complexité, est un édifice qui mérite une phase de réflexion initiale pour l'imaginer dans ses grandes lignes. Cette definition correspond à l'activité d'architecture. Au cours de cette phase, on effectue les grands choix structurant le futur logiciel : langages, technologies, outils... Elle consiste notamment à identifier les différents éléments qui vont composer le logiciel et à organiser les interactions entre ces éléments. Selon le niveau de complexité du logiciel, l'activité d'architecture peut être une simple formalité ou bien un travail de longue haleine. L'activité d'architecture peut donner lieu à la production de diagrammes représentant les éléments et leurs interactions selon différents formalismes, par exemple UML. III.2) Place dans le processus de création L'activité d'architecture intervient traditionnellement vers le début d'un projet logiciel, dès le moment où les besoins auxquels le logiciel doit répondre sont suffisamment identifiés. Elle est presque toujours suivie par une phase de conception. Les évolutions d'un projet logiciel peuvent nécessiter de nouvelles phases d'architecture tout au long de sa vie. C'est notamment le cas avec certaines méthodologies de développement itératif ou agile, où des phases d'architecture souvent brèves alternent avec des phases de production, de test et de livraison. IV) Notion D’AGL Un atelier de génie logiciel (noté AGL ou en anglais Case, pour Computer Aided Software Environment) est un ensemble d'outils logiciels structurés au sein d'une même interface permettant la conception, le développement et le débogage de logiciels. Un AGL comprend ainsi des outils permettant de modéliser visuellement une application, à produire du code avec des assistants visuels et éventuellement un débogueur permettant de tester le code produit. « Le génie logiciel est l'ensemble des activités de conception et de mise en oeuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi ». Le génie logiciel demande de la part de l'informaticien - utilisation des principes d'ingénierie - des méthodologies et des outils qui permettent de formaliser et même d'automatiser partiellement la production de logiciels - Une bonne formation aux différentes techniques (le « savoir ») - Un certain entraînement et de l'expérience (le « savoir faire ») Les qualités du logiciel lors de l'utilisation - fiabilité (correction et robustesse), - adéquation aux besoins (y compris aux besoins implicites !), - ergonomie (simplicité et rapidité d'emploi, personnalisation), - efficacité, convivialité, - faible coût et respect des délais bien entendu, etc. Les qualités du logiciel lors de la maintenance: un logiciel doit pouvoir être maintenu pour le corriger, l'améliorer, l'adapter aux changements de son environnement, ... uploads/Ingenierie_Lourd/ generalite 1 .pdf

  • 13
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager