CAGL -Conception Architecturale en Génie Logiciel Cours 1 - PDF

Document Details

PromisedMossAgate6451

Uploaded by PromisedMossAgate6451

Université Constantine 2

2024

Dr Boukhelfa Kamel

Tags

software engineering computer science information systems software development

Summary

This document is a course on software engineering. It explains concepts like software design, software quality, and software development processes. It is from the University Constantine 2, Algeria.

Full Transcript

CAGL -Conception Architecturale en Génie Logiciel – Cours 1 – Chapitre 1 : Introduction et Rappels Dr Boukhelfa Kamel NTIC/TLSI...

CAGL -Conception Architecturale en Génie Logiciel – Cours 1 – Chapitre 1 : Introduction et Rappels Dr Boukhelfa Kamel NTIC/TLSI [email protected] Université Constantine 2 2024-2025. Semestre 1 CAGL -Conception Architecturale en Génie Logiciel – Cours 1 – Chapitre 1 : Introduction et Rappels Dr Boukhelfa Kamel NTIC/TLSI [email protected] Etudiants concernés Faculté/Institut Département Niveau Spécialité NTIC TLSI Master 1 Ingénierie des Logiciels et des Systèmes Intelligents Université Constantine 2 2024-2025. Semestre 1 Plan du cours Concepts clés du génie logiciel Qualité de logiciel Les grands principes du génie logiciel Processus de développement logiciel Université Constantine 2 © Dr BOUKHELFA Kamel 3 Concepts clés du génie logiciel Définition (Génie logiciel) Le génie logiciel est un domaine des sciences de l’ingénieur dont l’objet d’étude est la conception, la fabrication, et la maintenance des systèmes informatiques complexes. Université Constantine 2 © Dr BOUKHELFA Kamel 4 Concepts clés du génie logiciel Définition (Système) Un système est un ensemble d’éléments interagissant entre eux suivant un certains nombres de principes et de règles dans le but de réaliser un objectif. La frontière d’un système est le critère d’appartenance au système. L’environnement est la partie du monde extérieure au système. Un système est souvent hiérarchisé à l’aide de sous-systèmes. Un système complexe se caractérise par :  sa dimension, qui nécessite la collaboration de plusieurs personnes ;  son évolutivité. Université Constantine 2 © Dr BOUKHELFA Kamel 5 Concepts clés du génie logiciel Définition (Logiciel) 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. Université Constantine 2 © Dr BOUKHELFA Kamel 6 Concepts clés du génie logiciel Un logiciel est en général un sous-système d’un système englobant. Il peut interagir avec des clients, qui peuvent être :  des opérateurs humains (utilisateurs, administrateurs,... ) ;  d’autres logiciels ;  des contrôleurs matériels. Il réalise une spécification : son comportement vérifie un ensemble de critères qui régissent ses interactions avec son environnement. Le génie logiciel vise à garantir que : 1. la spécification répond aux besoins réels de ses clients ; 2. le logiciel respecte sa spécification ; 3. les coûts alloués pour sa réalisation sont respectés ; 4. les délais de réalisation sont respectés. Université Constantine 2 © Dr BOUKHELFA Kamel 7 Concepts clés du génie logiciel Autres définitions Un modèle : est une représentation schématique (abstraction) de la réalité. L’analyse : c’est un processus d'examen de l'existant La Conception : est un processus de définition de la future application informatique. Université Constantine 2 © Dr BOUKHELFA Kamel 8 Qualité de logiciel En plus du respect (essentiel) de sa spécification, la qualité d’un logiciel dépend des 4 critères suivants : Maintenabilité : Peut-on faire évoluer le logiciel ? Robustesse : Le logiciel est-il sujet à des dysfonctionnements ? Efficacité/Efficience : Le logiciel fait-il bon usage de ses ressources ? Utilisabilité : Est-il facile à utiliser ? Université Constantine 2 © Dr BOUKHELFA Kamel 9 Qualité de logiciel La maintenabilité désigne la capacité d’un logiciel à être modifié après sa mise en production. Cela inclut : La correction de bugs, l'ajout de fonctionnalités L'amélioration des performances. Un logiciel maintenable permet les changements de manière facile et rapide sans nuire à l'intégrité du système. Une meilleure maintenabilité peut être favorisée par l’utilisation d’éléments comme : la modularité, la documentation adéquate, les tests automatisés et l'utilisation de patrons de conception. Université Constantine 2 © Dr BOUKHELFA Kamel 10 Qualité de logiciel La robustesse représente la capacité d’un logiciel à gérer des conditions anormales ou imprévues sans échouer. Un logiciel robuste continue de fonctionner ou se dégrade de manière contrôlée face aux erreurs ou intrants invalides. Des techniques comme la gestion des exceptions, des tests rigoureux, et l’analyse de la tolérance aux pannes sont utilisées pour améliorer la robustesse. L'efficience d’un logiciel concerne l'utilisation optimale des ressources système (temps processeur, mémoire, accès aux données). Un logiciel efficient réalise ses tâches avec le moins de ressources possible tout en maintenant de bonnes performances. L'optimisation des algorithmes et des structures de données, ainsi que l'usage approprié du multithreading et de la gestion des ressources, améliorent l'efficacité. Université Constantine 2 © Dr BOUKHELFA Kamel 11 Qualité de logiciel L'utilisabilité fait référence à la facilité d'interaction d'un utilisateur avec un logiciel. Un logiciel utilisable est intuitif, ergonomique, et accessible. L'interface utilisateur doit être claire, les interactions cohérentes et la capacité à accomplir des tâches sans difficulté excessive. L'évaluation de l’utilisabilité repose sur des tests utilisateur, des études ergonomiques, et des outils de conception centrée sur l’utilisateur. Ces caractéristiques doivent être équilibrées dans les projets pour assurer la qualité globale du système. Université Constantine 2 © Dr BOUKHELFA Kamel 12 Les grands principes du génie logiciel Un certain nombre de grands principes (de bon sens) se retrouvent dans toutes les méthodes de conception. Ghezzi propose dans «Fundamentals of Software Engineering. Prentice Hall, 2nd edition, 2002 » la liste suivante : 1. La rigueur 2. La décomposition des problèmes en sous-problèmes 3. Indépendants 4. La modularité 5. L’abstraction 6. L’anticipation des évolutions 7. La généricité 8. La construction incrémentale Université Constantine 2 © Dr BOUKHELFA Kamel 13 Les grands principes du génie logiciel La rigueur : Les principales sources de défaillances d’un logiciel sont d’origine humaine  Utilisation des outils CASE (Computer Aided Software Engineering) durant le développement peuvent aider à réduire les erreurs (générateurs de code, assistants de preuves, générateurs de tests, etc). La décomposition en sous-problems « Separation of concerns » : Décorréler les problèmes pour n’en traiter qu’un seul à la fois. Simplifier les problèmes (temporairement) pour aborder leur complexité progressivement. Exemple : décomposition en MVC (Model-View-Controller) d’une application web :  Modèle pour gérer le stockage des données.  Vue pour formater les données.  Contrôleur son rôle est de n’autoriser que les modifications correctes. Université Constantine 2 © Dr BOUKHELFA Kamel 14 Les grands principes du génie logiciel La modularité : Il s’agit de partitionner le logiciel en modules qui : ont une cohérence interne (des invariants) ; exposent uniquement les informations essentielles à travers leur interface, ne dévoilant que ce qui est nécessaire aux autres modules. L’abstraction : C’est une instance du principe de décomposition des problèmes. Il s’agit d’exhiber des concepts généraux regroupant un certain nombre de cas particuliers et de raisonner sur ces concepts généraux plutôt que sur chacun des cas particuliers. L’anticipation des évolutions : concerne la maintenance est la gestion des évolutions du logiciel. Prévoir des évolutions possibles d’un logiciel pour que la maintenance soit la plus efficace possible. S’assurer que les modifications à effectuer soient le plus locales possibles. Concevoir un système suffisamment riche pour que l’on puisse le modifier incrémentalement est l’idéal. Université Constantine 2 © Dr BOUKHELFA Kamel 15 Les grands principes du génie logiciel La généricité Un logiciel réutilisable a beaucoup plus de valeur qu’un composant dédié. Un composant est générique lorsqu’il est adaptable. La construction incrémentale Un développement logiciel a plus de chances d’aboutir si il suit une cheminement incremental (pas à pas) Par exemple, au lieu d’écrire l’ensemble du code source d’un programme et compiler, écrire le code source d’une fonction ou module, le compiler, et passer à la suivante. Université Constantine 2 © Dr BOUKHELFA Kamel 16 Processus de développement logiciel Définition (processus de développement logiciel) Un processus de développement logiciel est un ensemble (structuré) d’activités que conduisent à la production d’un logiciel. Il n’existe pas de processus idéal. La plupart des entreprises adapte les processus existants à leurs besoins. Ces besoins varient en fonction du domaine, des contraintes de qualité, des personnes impliquées. Université Constantine 2 © Dr BOUKHELFA Kamel 17 Processus de développement logiciel Activités du développement logiciel Les activités des processus de développement logiciels se regroupent en 5 grandes catégories : 1. La spécification du logiciel pour définir ses fonctionnalités et leurs contraintes. 2. La conception et 3. L’implémentation pour la réalisation du logiciel, en conformité avec sa spécification. 4. La validation pour s’assurer du respect de la spécification par le logiciel produit. 5. L’évolution pour adapter le logiciel aux besoins futurs de ses clients. Université Constantine 2 © Dr BOUKHELFA Kamel 18 Processus de développement logiciel En général, un logiciel complet est le fruit de plusieurs itérations. Chaque itération contient les 5 activités de spécification, conception, implémentation, validation et évolution. Il existe différents modèles de processus qui organisent de façon différentes ces activités, entre eux : le modèle en cascade, le modèle de développement évolutif Le modèle de développement à livraison incrémentale et le modèle de développement par composants. Université Constantine 2 © Dr BOUKHELFA Kamel 19 Processus de développement logiciel Modèle en cascade Processus linéaire (auquel ont été ajoutées les possibilités de retour en arrière dans les versions ultérieures). On ne passe à l’étape n que lorsque l’étape n-1 est terminée. Chaque phase doit se terminer pour commencer la suivante. Des documents sont produits pour concrétiser la réalisation de chaque phase. La production de documents entre chaque phase améliore le suivi du projet. Mieux adapté aux petits projets et à ceux dont les spécifications sont bien connues et fixes. Université Constantine 2 © Dr BOUKHELFA Kamel 20 Processus de développement logiciel Modèle de développement évolutif Les trois activités sont entrelacées. Un prototype est écrit rapidement et est confronté à l’utilisateur. En fonction du résultat, on raffine la spécification. On reprend le prototype ou on le réécrit jusqu’à l’obtention du système final. C’est un processus particulièrement adapté aux projets de taille moyenne (inférieur à 100 000 lignes de code) comme par exemple des grosses applications Web ou encore les solutions intégrées pour les petites entreprises. Université Constantine 2 © Dr BOUKHELFA Kamel 21 Processus de développement logiciel Modèle de développement à livraison incrémentale Une approche à mi-chemin entre les modèles cascade et évolutif, Elle s’appuie sur une livraison incrémentale du produit. On hiérarchise les besoins du client en termes de priorité. Chaque itération du modèle vise à obtenir un ensemble de fonctionnalités par ordre de priorité. Traiter les parties les plus critiques du système en premier minimise les risques d’inadéquation avec le produit final. Cependant, il se peut que les choix pris en amont, trop focalisés sur ce noyau de fonctionnalités, compromettent le développement des fonctionnalités secondaires. Université Constantine 2 © Dr BOUKHELFA Kamel 22 Processus de développement logiciel Modèle de développement par composants Ce modèle vise à développer un logiciel en grande partie à l’aide d’une base de composants génériques pré-existants. L’élaboration de la spécification est dirigée par cette base : une fonctionnalité est proposée à l’utilisateur en fonction de sa facilité à l’obtenir à l’aide d’un composant existant.  Situation typique chez les sociétés de services (hébergement de serveurs, déploiement automatique de site Web,... ). Ce modèle permet d’obtenir rapidement des produits de bonne qualité puisqu’ils sont construits à partir de composants qui ont fait leur preuve. Le travail d’intégration peut s’appuyer sur des outils dirigés par des descriptions de haut niveau du système qui génèrent le code de “glue” par exemple. Université Constantine 2 © Dr BOUKHELFA Kamel 23

Use Quizgecko on...
Browser
Browser