Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 1 Chapitre 3. Approche
Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 1 Chapitre 3. Approche Orientée Objet et UML 3.1. Introduction Deux types de motivation orientent actuellement les concepteurs dans le choix des méthodes de conception : la possibilité de prendre en compte des applications et des systèmes de plus en plus complexes et le souci de diminuer les coûts de réalisation et de maintenance. Avec l’ère des nouvelles technologies, des réseaux informatiques et systèmes répartis, les applications ont atteint elles aussi un niveau de complexité croissant et de ce fait, elles nécessitent à l’heure actuelle, des outils de programmation sophistiqués. On constate que les applications dites technique, telles que la CAO, la cartographie, les systèmes de contrôle temps réel, le CoDesign, représentent une activité croissante et nécessitent une plus grande participation des personnes aussi bien pour l'effort de conception et validation que de maintenance et d'évolution. Ces constats ont mis en évidence la nécessité de promouvoir l’abstraction de données, la modularité et la réutilisabilité des composants fabriqués. Ainsi, beaucoup de méthodes ont vu le jour, chacune tentant à sa manière d’apporter une solution satisfaisante et parmi elles, les méthodes objets (orientées objet) et leurs techniques d’analyse et de conception appropriées. Pourquoi parler de Programmation Orientée Objets (POO) ? La complexité et la taille des projets nécessitent des outils de programmation nombreux et perfectionnés pour mener à bien les applications dans les meilleurs délais. En fait, les langages à objets connaissent un succès grandissant, aussi bien dans le domaine de l’Intelligence Artificielle (IA) que dans celui du Génie Logiciel ou Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 2 des BD, car ils constituent sans doute la solution la plus souple et offre plus de perspectives pour répondre à ces différents besoins. 3.2. Les concepts de base Un objet est une abstraction d'une donnée du monde réel caractérisée ainsi : Objet = identité + état + comportement L'identité d'un objet est représentée par un identifiant (object identifier ou OID) unique et invariant qui permet de référencer l'objet indépendamment des autres objets. L'état d'un objet est une valeur qui peut être simple, par exemple, un littéral, ou structurée, par exemple, une liste. Dans le dernier cas, l’état peut être composé de valeurs simples, de références à d'autres objets, ou de valeurs elles-mêmes structurées. Le comportement d'un objet est défini par un ensemble d'opérations applicables à l'objet et définies dans sa classe d'appartenance. En résumé, nous avons la définition suivante : Objet: abstraction d'une donnée caractérisée par un identifiant unique et invariant, un état représenté par une valeur simple ou structurée, et une classe d'appartenance. L'identité et l'égalité de deux objets sont deux notions différentes. Deux objets o1 et o2 sont identiques si leurs identifiants sont égaux (o1==o2). Deux objets o1 et o2 sont égaux si leurs états sont égaux (o1=o2). Donc nous avons (o1==o2)(o1=o2). L’univers devient donc une structure composée d’ensemble d’objets. Les types d'objets seront des classes, et les objets (instances) seront considérés comme représentants de classes. Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 3 Exemple: Figure : Exemple de représentation d'un objet d'une classe Les principes énoncés plus haut offrent des qualités pour mettre en œuvre des méthodes rigoureuses. Ainsi, on doit retrouver dans une approche objet au moins 4 principes obligatoires : abstraction, encapsulation, modularité, hiérarchie ; auxquels on peut ajouter 3 principes complémentaires : typage, simultanéité, persistance. Abstraction (définition d’une classe) L’abstraction est le processus qui consiste à représenter des objets qui appartiennent au monde réel dans le monde du programme que l’on écrit. Il consiste essentiellement à extraire des variables pertinentes, attachées aux objets que l’on souhaite manipuler, et à les placer dans un modèle informatique convenable. Encapsulation La première étape du travail de conception a consisté à définir les données intéressantes, et à les regrouper dans des structures qui ont un sens. La deuxième étape consiste à définir les méthodes d’accès à ces données, et les calculs qui seront effectués dessus. L’idée de la programmation objet est de Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 4 regrouper ces méthodes d’accès et de calcul dans la même structure que les données. Le regroupement des données et des méthodes est un des points importants des langages objet, qui n’est absolument pas supporté dans des langages tels que le C, Pascal ou Fortran. C’est cela que l’on appelle l’encapsulation. Modularité La modularité est la propriété d’un système décomposé en ensemble de modules cohérents faiblement couplés. La modularité suppose également la modificabilité : les objets sont faciles à changer. Hiérarchie (héritage) L'héritage (en anglais inheritance) est un principe propre à la programmation orientée objet, permettant de créer une nouvelle classe à partir d'une classe existante. Le nom d'"héritage" (pouvant parfois être appelé dérivation de classe) provient du fait que la classe dérivée (la classe nouvellement créée) contient les attributs et les méthodes de sa superclasse (la classe dont elle dérive). L'intérêt majeur de l'héritage est de pouvoir définir de nouveaux attributs et de nouvelles méthodes pour la classe dérivée, qui viennent s'ajouter à ceux et celles héritées. Par ce moyen on crée une hiérarchie de classes de plus en plus spécialisées. Cela a comme avantage majeur de ne pas avoir à repartir de zéro lorsque l'on veut spécialiser une classe existante. Le typage Dans la programmation par objets, chaque objet est typé. Le type définit la syntaxe (« Comment l'appeler ? ») et la sémantique (« Que fait-il ? ») des messages auxquels peut répondre un objet. Il correspond donc, à peu de chose Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 5 près, à l'interface de l'objet. Toutefois, la plupart des langages objets ne proposent que la définition syntaxique d'un type (C++, Java, C#…) et rares sont ceux qui fournissent aussi la possibilité de définir aussi sa sémantique (Eiffel). Un objet peut appartenir à plus d'un type : c'est le polymorphisme ; cela permet d'utiliser des objets de types différents là où est attendu un objet d'un certain type. Une façon de réaliser le polymorphisme est le sous-typage (appelé aussi héritage de type) Simultanéité Deux objets différents doivent pouvoir agir en même temps et à des endroits différents (soit sur la même machine, soit sur des machines différentes,…). Persistance Ceci concerne la durée de vie d’un objet (important dans les BD, ou les données sont disponibles pendant longtemps). 3.3. Cycle de vie Le cycle de vie d’un logiciel est généralement proche de l’incrémental (par opposition au cycle itératif classique). Les étapes de spécification sont : - étude du vocabulaire du projet : noms, verbes, objets, … - identification des objets physiques. - Formalisation d’un modèle (liens, communication, …) Figure : Cycle de vie spécifique Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 6 Rappel de quelques définitions Analyse : Partant de la spécification du problème, l'analyste construit un modèle du monde réel mettant en évidence les propriétés importantes. Le modèle d'analyse est une abstraction précise et concise du but de l'application et non de la façon dont elle sera bâtie. Conception du système : Le concepteur du système prend des décisions de haut niveau sur l'architecture d'ensemble du système. Pendant cette phase, le système cible est découpé en sous-systèmes fondés à la fois sur la structure de l'analyse et sur l'architecture proposée. Le concepteur du système doit décider quelles sont les caractéristiques de performances du système à optimiser. Conception des objets : Le modèle de conception objet s'appuie sur le modèle d'analyse mais contient des détails d'implémentation. Implémentation : Les classes d'objets et leurs relations développées durant la phase de conception des objets sont finalement traduites dans un langage de programmation. 3.4. Les « modèles » Les langages de modélisation (à l’instar de UML) permettent de représenter une conception orientée objet. Les modèles (« patterns ») s’intéressent quant à eux aux résultats du processus et fournissent des exemples. Dans plusieurs cas, les projets rencontrent des problèmes parce que leurs responsables ne maîtrisent pas des méthodes bien connues des concepteurs expérimentés. Les modèles décrivent des façons de procéder courantes. Les modèles de conception décrivent des techniques de conception. Ils sont recueillis par des Cours d’Ingénierie du Logiciel Elvis Noël IRAMBONA, MSc. 7 personnes qui repèrent les thèmes récurrents de la conception. Ces personnes examinent chaque thème et le décrivent pour que d’autres puissent étudier le modèle et voir comment l’appliquer. 3.5. Le langage UML La première moitié des années 90 a vu fleurir une cinquantaine de méthodes objets. L'examen des méthodes dominantes a permis de dégager un consensus autour d'idées communes. Les grands traits des objets, repris par de nombreuses méthodes, s'articulent autour des notions de classe, d'association (James Rumbaugh), de partition en sous-systèmes (Grady Booch) et autour de l'expression des besoins à partir de l'étude de l'interaction entre l'utilisateur et le système (les use cases d'Ivar Jacobson). En 1994, on recensait plus de 50 méthodologies orientées objets. C’est dans le but de remédier à cette dispersion que les « poids-lourds » de la méthodologie orientée objets ont entrepris de se regrouper autour d’un standard. Partant de la constatation que uploads/Ingenierie_Lourd/ chapitre-3-ingenierie-du-logiciel.pdf
Documents similaires










-
32
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 14, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.5937MB