Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. WeltenzyklopÀdie
  2. Architecture logicielle
Architecture logicielle 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
Page d’aide sur l’homonymie

Pour les articles homonymes, voir Architecture (homonymie).

Exemple d'architecture logicielle.

En informatique l’architecture logicielle dĂ©crit d’une maniĂšre symbolique et schĂ©matique les diffĂ©rents Ă©lĂ©ments d’un ou de plusieurs systĂšmes informatiques, leurs interrelations et leurs interactions. Contrairement aux spĂ©cifications produites par l’analyse fonctionnelle, le modĂšle d'architecture, produit lors de la phase de conception, ne dĂ©crit pas ce que doit rĂ©aliser un systĂšme informatique mais plutĂŽt comment il doit ĂȘtre conçu de maniĂšre Ă  rĂ©pondre aux spĂ©cifications. L’analyse dĂ©crit le « quoi faire Â» alors que l’architecture dĂ©crit le « comment le faire Â».

Contexte et motivation

[modifier | modifier le code]

La phase de conception logicielle est l'Ă©quivalent, en informatique, Ă  la phase de conception en ingĂ©nierie traditionnelle (mĂ©canique, civile ou Ă©lectrique) ; cette phase consiste Ă  rĂ©aliser entiĂšrement le produit sous une forme abstraite avant la production effective. Par contre, la nature immatĂ©rielle du logiciel (modelĂ© dans l'information et non dans la matiĂšre), rend la frontiĂšre entre l'architecture et le produit beaucoup plus floue que dans l'ingĂ©nierie traditionnelle. L'utilisation d'outils CASE (Computer-aided software engineering) ou bien la production de l'architecture Ă  partir du code lui-mĂȘme et de la documentation systĂšme permettent de mettre en Ă©vidence le lien Ă©troit entre l'architecture et le produit.

L'architecture logicielle constitue le plus gros livrable d'un processus logiciel aprĂšs le produit (le logiciel lui-mĂȘme). En effet, la phase de conception devrait consommer autour de 40 %[1] de l'effort total de dĂ©veloppement et devrait ĂȘtre supĂ©rieure ou Ă©gale, en effort, Ă  la phase de codage mais il peut ĂȘtre moindre. L'effort dĂ©pend grandement du type de logiciel dĂ©veloppĂ©, de l'expertise de l'Ă©quipe de dĂ©veloppement, du taux de rĂ©utilisation et du processus logiciel.

Les deux objectifs principaux de toute architecture logicielle sont la rĂ©duction des coĂ»ts et l'augmentation de la qualitĂ© du logiciel ; la rĂ©duction des coĂ»ts est principalement rĂ©alisĂ©e par la rĂ©utilisation de composants logiciels et par la diminution du temps de maintenance (correction d'erreurs et adaptation du logiciel). La qualitĂ©, par contre, se trouve distribuĂ©e Ă  travers plusieurs critĂšres ; la norme ISO/IEC 25010[2],[3] est un exemple d'un tel ensemble de critĂšres.

CritÚres de qualité logicielle

[modifier | modifier le code]
Article dĂ©taillĂ© : qualitĂ© logicielle.

L'interopérabilité extrinsÚque exprime la capacité du logiciel à communiquer et à utiliser les ressources d'autres logiciels comme les documents créés par une certaine application.

L'interopérabilité intrinsÚque exprime le degré de cohérence entre le fonctionnement des commandes et des modules à l'intérieur d'un systÚme ou d'un logiciel.

La portabilité exprime la possibilité de compiler le code source et/ou d'exécuter le logiciel sur des plates-formes (machines, systÚmes d'exploitation, environnements) différentes.

La compatibilité exprime la possibilité, pour un logiciel, de fonctionner correctement dans un environnement ancien (compatibilité descendante) ou plus récent (compatibilité ascendante).

La validité exprime la conformité des fonctionnalités du logiciel avec celles décrites dans le cahier des charges.

La vérifiabilité exprime la simplicité de vérification de la validité.

L'intégrité exprime la faculté du logiciel à protéger ses fonctions et ses données d'accÚs non autorisés.

La fiabilité exprime la faculté du logiciel à gérer correctement ses propres erreurs de fonctionnement en cours d'exécution.

La maintenabilitĂ© exprime la simplicitĂ© de correction et de modification du logiciel, et mĂȘme, parfois, la possibilitĂ© de modification du logiciel en cours d'exĂ©cution.

La réutilisabilité exprime la capacité de concevoir le logiciel avec des composants déjà conçus tout en permettant la réutilisation simple de ses propres composants pour le développement d'autres logiciels.

L'extensibilité exprime la possibilité d'étendre simplement les fonctionnalités d'un logiciel sans compromettre son intégrité et sa fiabilité.

L'efficacitĂ© exprime la capacitĂ© du logiciel Ă  exploiter au mieux les ressources offertes par la ou les machines oĂč le logiciel sera implantĂ©.

L'autonomie exprime la capacité de contrÎle de son exécution, de ses données et de ses communications.

La transparence exprime la capacité pour un logiciel de masquer à l'utilisateur (humain ou machine) les détails inutiles à l'utilisation de ses fonctionnalités.

La composabilité exprime la capacité pour un logiciel de combiner des informations provenant de sources différentes.

La convivialité décrit la facilité d'apprentissage et d'utilisation du logiciel par les usagers.

Diminution de la dégradation du logiciel

[modifier | modifier le code]
Graphique de dĂ©gradation du logiciel en fonction de l'architecture. InspirĂ© de : Pressman R. S., Software Engineering: A Practitioner's Approach, Fifth Edition. McGraw-Hill. Chapitre 1, p. 8, 2001.

Une architecture faible ou absente peut entraßner de graves problÚmes lors de la maintenance du logiciel. En effet, toute modification d'un logiciel mal architecturé peut déstabiliser la structure de celui-ci et entraßner, à la longue, une dégradation (principe d'entropie du logiciel). L'architecte informatique devrait donc concevoir, systématiquement, une architecture maintenable et extensible.

Dans les processus itĂ©ratifs comme le processus unifiĂ©, la gestion des changements est primordiale. En effet, il est implicitement considĂ©rĂ© que les besoins des utilisateurs du systĂšme peuvent changer et que l'environnement du systĂšme peut changer. L'architecte informatique a donc la responsabilitĂ© de prĂ©voir le pire et de concevoir l'architecture en consĂ©quence ; la plus maintenable possible et la plus extensible possible.

Développement pour et par la réutilisation

[modifier | modifier le code]
logo universel du recyclage
logo universel du recyclage

La réutilisation de composants logiciels est l'activité permettant de réaliser les économies les plus substantielles[4], encore faut-il posséder des composants à réutiliser. De plus, la réutilisation de composants nécessite de créer une architecture logicielle permettant une intégration harmonieuse de ces composants[5]. Le développement par la réutilisation logicielle impose donc un cycle de production-réutilisation perpétuel et une architecture logicielle normalisée.

Une rĂ©utilisation bien orchestrĂ©e nĂ©cessite la crĂ©ation et le maintien d'une bibliothĂšque logicielle et un changement de focus ; crĂ©er une application revient Ă  crĂ©er les composants de bibliothĂšque nĂ©cessaires puis Ă  construire l'application Ă  l'aide de ces composants. Une telle bibliothĂšque, facilitant le dĂ©veloppement d'application est un framework (cadriciel) d'entreprise et son architecture, ainsi que sa documentation sont les pierres angulaires de la rĂ©utilisation logicielle en entreprise.

Le rÎle de l'architecte informatique se déplace donc vers celui de bibliothécaire. L'architecte informatique doit explorer la bibliothÚque pour trouver les composants logiciels appropriés puis créer les composants manquants, les documenter et les intégrer à la bibliothÚque. Dans une grande entreprise, ce rÎle de bibliothécaire est rempli par l'architecte informatique en chef qui est responsable du développement harmonieux de la bibliothÚque et de la conservation de l'intégrité de son architecture.

L'architecture une question de point de vue

[modifier | modifier le code]

La description d'un systĂšme complexe comme un logiciel informatique peut ĂȘtre faite selon plusieurs points de vue diffĂ©rents mais chacun obĂ©it Ă  la formule de Perry et Wolf[6] : architecture = Ă©lĂ©ments + formes + motivations. Selon le niveau de granularitĂ©, les Ă©lĂ©ments peuvent varier en tailles (lignes de code, procĂ©dures ou fonctions, modules ou classes, paquetages ou couches, applications ou systĂšmes informatiques), ils peuvent varier en raffinement (Ă©bauche, solution Ă  amĂ©liorer ou solution aboutie) et en abstraction (idĂ©es ou concepts, classes ou objets, composants logiciels). Les Ă©lĂ©ments peuvent Ă©galement possĂ©der une temporalitĂ© (une existence limitĂ©e dans le temps) et une localisation (une existence limitĂ©e dans l'espace).

Si les éléments sont, en général, représentés par des rectangles ou des ovales, les formes sont quant à elles constituées, la plupart du temps, d'éléments reliés par des droites ou des flÚches. La sémantique des liens détermine la majeure partie de la sémantique du diagramme et l'aspect du systÚme qui y est décrit.

Principaux types de liens

[modifier | modifier le code]

La dépendance fonctionnelle, signifie que l'élément source nécessite l'élément de destination pour réaliser ses fonctionnalités.

Le flot de contrÎle, signifie que l'élément de destination prendra le contrÎle de l'exécution aprÚs la terminaison de l'élément source.

La transition d'état, signifie que le systÚme passera de l'état source à l'état de destination.

Le changement d'activité, signifie que le systÚme réalisera l'activité de destination aprÚs l'activité source.

Le flot de données, signifie que l'information s'écoule de l'élément source vers l'élément de destination.

Le lien de communication, signifie que deux éléments échangent de l'information.

La composition, signifie que l'élément source est composé d'une ou de plusieurs données du type de l'élément de destination.

L'héritage (généralisation), signifie que l'élément source possÚde l'ensemble des données et des comportements de l'élément de destination.

L'envoi de message, signifie que l'élément source envoie un message à l'élément de destination.

Les modĂšles d'architecture

[modifier | modifier le code]

Indépendamment de la forme que prend un diagramme d'architecture, celui-ci ne représente toujours qu'un point de vue sur le systÚme considéré, le plus important étant les motivations. En effet, à quoi sert de produire un diagramme s'il est inutile (pas utilisé) ou si les raisons des choix architecturaux sont vagues et non-explicités. Pour éviter de formuler les motivations pour chaque diagramme, l'architecte informatique produira les différents diagrammes en fonction d'un modÚle de conception et réutilisera des patrons de conception éprouvés.

Un modĂšle de conception (ou d'architecture) est composĂ© d'un ensemble de points de vue, chacun Ă©tant composĂ© d'un ensemble de diffĂ©rentes sortes de diagrammes. Il propose Ă©galement des moyens pour lier les diffĂ©rentes vues et diagrammes les uns aux autres de maniĂšre Ă  naviguer aisĂ©ment, il s'agit des mĂ©canismes de traçabilitĂ© architecturale. La traçabilitĂ© doit Ă©galement s'Ă©tendre aux spĂ©cifications systĂšmes et mĂȘme jusqu'aux besoins que ces spĂ©cifications comblent. La devise des trois pĂšres fondateurs d'UML est « CentrĂ© sur l'architecture, pilotĂ© par les cas d'utilisation et au dĂ©veloppement itĂ©ratif et incrĂ©mentiel Â». Cette devise indique clairement qu'aucune dĂ©cision architecturale ne doit ĂȘtre prise sans que celle-ci ne soit dirigĂ©e (pilotĂ©e) par la satisfaction des spĂ©cifications systĂšmes (cas d'utilisation).

Le modĂšle conventionnel

[modifier | modifier le code]
ModĂšles d'analyse et d'architecture centrĂ©es sur les donnĂ©es avec traçabilitĂ©. D'aprĂšs : Pressman R. S., Software Engineering: A Practitioner's Approach, Fifth Edition. McGraw-Hill. Chapitre 13, p. 337, 2001.

Ce diagramme dĂ©crit, Ă  gauche, les spĂ©cifications systĂšmes qui sont Ă©galement reprĂ©sentĂ©es par des diagrammes (EntitĂ©s-Relations, Flux de donnĂ©es, États-Transitions). Et Ă  droite, nous avons les diffĂ©rentes activitĂ©s de conception prenant comme intrants les livrables de la phase d'analyse. Nous voyons que l'architecture logicielle traditionnelle nĂ©cessiterait de produire au moins quatre vues distinctes : une architecture des donnĂ©es (conception des donnĂ©es), une architecture fonctionnelle et/ou modulaire (conception architecturale), une autre architecture fonctionnelle et/ou modulaire pour les interfaces utilisateurs (conception des interfaces) et une architecture dĂ©taillĂ©e (ordinogrammes, Ă©tats-transitions) des diffĂ©rents modules (conception des composants).

La pyramide exprime que chaque couche est bĂątie sur la prĂ©cĂ©dente. En effet, les composants rĂ©alisant les fonctionnalitĂ©s du logiciel doivent manipuler des Ă©lĂ©ments de donnĂ©es qui doivent donc ĂȘtre prĂ©alablement dĂ©crits. De mĂȘme, les composants rĂ©alisant les interfaces utilisateurs doivent utiliser les fonctionnalitĂ©s du logiciel prĂ©alablement dĂ©crites. Et finalement, la crĂ©ation de l'architecture dĂ©taillĂ©e de chacun des composants du logiciel nĂ©cessite, Ă©videmment, que ceux-ci soient prĂ©alablement inventĂ©s.

Ce modÚle d'architecture impose une séparation claire entre les données, les traitements et la présentation.

ModĂšle d'analyse ou modĂšle d'architecture ?
[modifier | modifier le code]

Puisque l'analyse produit Ă©galement des diagrammes, il est naturel de se questionner, en effet, quand se termine l'analyse et quand commence l'architecture ? La rĂ©ponse Ă  cette question est fort simple : les Ă©lĂ©ments des diagrammes d'analyse correspondent Ă  des Ă©lĂ©ments visibles et comprĂ©hensibles par les utilisateurs du systĂšme, alors que les Ă©lĂ©ments des diagrammes d'architectures ne correspondent Ă  aucune rĂ©alitĂ© tangible pour ceux-ci.

Le modĂšle des 4 + 1 vues

[modifier | modifier le code]
ModĂšle d'architecture de Philippe Kruchten (modĂšle des 4 + 1 vues) D'aprĂšs : Muller P-A, Gaertner N., ModĂ©lisation objet avec UML, 2em Ă©dition. Eyrolles, p. 202, 2003.

Le modÚle de Kruchten[7] dit modÚle des 4 + 1 vues est celui adopté dans le processus unifié[8]. Ici encore, le modÚle d'analyse, baptisé vue des cas d'utilisation, constitue le lien et motive la création de tous les diagrammes d'architecture.

La vue des cas d'utilisation
[modifier | modifier le code]
Article dĂ©taillĂ© : Cas d'utilisation.

La vue des cas d'utilisation est un modÚle d'analyse formalisé par Ivar Jacobson. Un cas d'utilisation est défini comme un ensemble de scénarios d'utilisation, chaque scénario représentant une séquence d'interaction des utilisateurs (acteurs) avec le systÚme.

L'intĂ©rĂȘt des cas d'utilisation est de piloter l'analyse par les exigences des utilisateurs. Ceux-ci se sentent concernĂ©s car ils peuvent facilement comprendre les cas d'utilisation qui les concernent. Cette mĂ©thode permet donc d'aider Ă  formaliser les vĂ©ritables besoins et attentes des utilisateurs; leurs critiques et commentaires Ă©tant les briques de la spĂ©cification du systĂšme.

L'ensemble des cas d'utilisation du logiciel en cours de spĂ©cification est reprĂ©sentĂ© par un diagramme de cas d'utilisation, chacun des scĂ©narios de celui-ci Ă©tant dĂ©crit par un ou plusieurs diagrammes dynamiques : diagrammes d'activitĂ©s, de sĂ©quence, diagrammes de communication ou d'Ă©tats-transitions.

La vue logique
[modifier | modifier le code]

La vue logique constitue la principale description architecturale d'un systĂšme informatique et beaucoup de petits projets se contentent de cette seule vue. Cette vue dĂ©crit, de façon statique et dynamique, le systĂšme en termes d'objets et de classes. La vue logique permet d'identifier les diffĂ©rents Ă©lĂ©ments et mĂ©canismes du systĂšme Ă  rĂ©aliser. Elle permet de dĂ©composer le systĂšme en abstractions et constitue le cƓur de la rĂ©utilisation. En effet, l'architecte informatique rĂ©cupĂ©rera un maximum de composants des diffĂ©rentes bibliothĂšques et cadriciels (framework) Ă  sa disposition. Une recherche active de composants libres et/ou commerciaux pourra Ă©galement ĂȘtre envisagĂ©e.

La vue logique est reprĂ©sentĂ©e, principalement, par des diagrammes statiques de classes et d'objets enrichis de descriptions dynamiques : diagrammes d'activitĂ©s, de sĂ©quence, diagrammes de communication ou d'Ă©tats-transitions.

La vue des processus
[modifier | modifier le code]

La vue des processus décrit les interactions entre les différents processus, threads (fils d'exécution) ou tùches, elle permet également d'exprimer la synchronisation et l'allocation des objets. Cette vue permet avant tout de vérifier le respect des contraintes de fiabilité, d'efficacité et de performances des systÚmes multitùches.

Les diagrammes utilisĂ©s dans la vue des processus sont exclusivement dynamiques : diagrammes d'activitĂ©s, de sĂ©quence, diagrammes de communication ou d'Ă©tats-transitions.

La vue de réalisation
[modifier | modifier le code]

La vue de rĂ©alisation permet de visualiser l'organisation des composants (bibliothĂšque dynamique et statique, code source...) dans l'environnement de dĂ©veloppement. Elle permet aux dĂ©veloppeurs de se retrouver dans le capharnaĂŒm que peut ĂȘtre un projet de dĂ©veloppement informatique. Cette vue permet Ă©galement de gĂ©rer la configuration (auteurs, versions...).

Les seuls diagrammes de cette vue sont les diagrammes de composants.

La vue de déploiement
[modifier | modifier le code]

La vue de déploiement représente le systÚme dans son environnement d'exécution. Elle traite des contraintes géographiques (distribution des processeurs dans l'espace), des contraintes de bandes passantes, du temps de réponse et des performances du systÚme ainsi que de la tolérance aux fautes et aux pannes. Cette vue est fort utile pour l'installation et la maintenance réguliÚre du systÚme.

Les diagrammes de cette vue sont les diagrammes de composants et les diagrammes de déploiement.

ModĂšles structurels

[modifier | modifier le code]

Un modĂšle structurel d'une architecture se focalise sur la dĂ©composition d'un systĂšme en un ensemble d'Ă©lĂ©ments interconnectĂ©s plus simples. Un systĂšme peut ainsi ĂȘtre dĂ©composĂ© en sous-systĂšmes, puis en modules ou composants, et en Ă©lĂ©ments plus simples. La modĂ©lisation UML permet cette vision structurelle par des diagrammes de dĂ©ploiement, des diagrammes de composants, des diagrammes de structure composite, des diagrammes de paquetage, et des diagrammes de classe. La modĂ©lisation C4 permet la visualisation de la dĂ©composition en systĂšmes, en conteneurs (c'est-Ă -dire en sous-systĂšme exĂ©cutable qui peut ĂȘtre dĂ©ployĂ© de façon indĂ©pendante) et en composants[9].

Les styles architecturaux

[modifier | modifier le code]

L'architecture logicielle, tout comme l'architecture traditionnelle, peut se catĂ©goriser en styles[10]. En effet, malgrĂ© les millions de systĂšmes informatiques construits de par le monde au cours des cinquante derniĂšres annĂ©es, tous se classent parmi un nombre extrĂȘmement restreint de styles architecturaux[11]. De plus, un systĂšme informatique peut utiliser plusieurs styles selon le niveau de granularitĂ© ou l'aspect du systĂšme dĂ©crit. Nous ferons remarquer que, comme en architecture traditionnelle, c'est souvent par le mĂ©lange d'anciens styles que les nouveaux apparaissent.

Architecture en appels et retours

[modifier | modifier le code]

L'architecture en appels et retours est basĂ©e sur le raffinement graduel proposĂ©[12] par Niklaus Wirth. Cette approche, Ă©galement appelĂ©e dĂ©composition fonctionnelle, consiste Ă  dĂ©couper une fonctionnalitĂ© en sous-fonctionnalitĂ©s qui sont Ă©galement divisĂ©es en sous-sous-fonctionnalitĂ©s et ainsi de suite ; la devise diviser pour rĂ©gner est souvent utilisĂ©e pour dĂ©crire cette dĂ©marche.

Si Ă  l'origine cette architecture Ă©tait fondĂ©e sur l'utilisation de fonctions, le passage Ă  une mĂ©thode modulaire ou objet est toute naturelle ; la fonctionnalitĂ© d'un module ou d'un objet est rĂ©alisĂ©e par des sous-modules ou des sous-objets baptisĂ©s travailleurs (worker). Le terme hiĂ©rarchie de contrĂŽle est alors utilisĂ© pour dĂ©crire l'extension de cette architecture au paradigme modulaire ou objet. Une forme dĂ©rivĂ©e de cette architecture est l'architecture distribuĂ©e oĂč les fonctions, modules ou classes se retrouvent rĂ©partis sur un rĂ©seau.

Architecture en couches

[modifier | modifier le code]

La conception de logiciels nĂ©cessite de recourir Ă  des bibliothĂšques. Une bibliothĂšque trĂšs spĂ©cialisĂ©e utilise des bibliothĂšques moins spĂ©cialisĂ©es qui elles-mĂȘmes utilisent des bibliothĂšques gĂ©nĂ©riques. De plus, comme nous l'avons dĂ©jĂ  mentionnĂ©, le dĂ©veloppement efficace de composants rĂ©utilisables nĂ©cessite de crĂ©er une bibliothĂšque logicielle ; l'architecture en couches est la consĂ©quence inĂ©luctable d'une telle approche. En effet, les nouveaux composants utilisent les anciens et ainsi de suite, la bibliothĂšque tend donc Ă  devenir une sorte d'empilement de composants. La division en couches consiste alors Ă  regrouper les composants possĂ©dant une grande cohĂ©sion (sĂ©mantiques semblables) de maniĂšre Ă  crĂ©er un empilement de paquetages de composants ; tous les composants des couches supĂ©rieures dĂ©pendants fonctionnellement des composants des couches infĂ©rieures.

Architecture centrée sur les données

[modifier | modifier le code]

Dans l'architecture centrĂ©e sur les donnĂ©es, un composant central (SGBD, Datawarehouse, Blackboard) est responsable de la gestion des donnĂ©es (conservation, ajout, retrait, mise Ă  jour, synchronisation
) . Les composants pĂ©riphĂ©riques, baptisĂ©s clients, utilisent le composant central, baptisĂ© serveur de donnĂ©es, qui se comporte, en gĂ©nĂ©ral, de façon passive (SGBD, Datawarehouse). Un serveur passif ne fait qu'obĂ©ir aveuglĂ©ment aux ordres alors qu'un serveur actif (Blackboard) peut notifier un client si un changement aux donnĂ©es qui le concerne se produit.

Cette architecture sĂ©pare clairement les donnĂ©es (serveurs) des traitements et de la prĂ©sentation (clients) et permet ainsi une trĂšs grande intĂ©grabilitĂ©, en effet, des clients peuvent ĂȘtre ajoutĂ©s sans affecter les autres clients. Par contre, tous les clients sont dĂ©pendants de l'architecture des donnĂ©es qui doit rester stable et qui est donc peu extensible. Ce style nĂ©cessite donc un investissement trĂšs important dans l'architecture des donnĂ©es. Les datawarehouses et les bases de donnĂ©es fĂ©dĂ©rĂ©es sont des extensions de cette architecture.

Architecture en flot de données

[modifier | modifier le code]

L'architecture en flot de données est composée de plusieurs composants logiciels reliés entre eux par des flux de données. L'information circule dans le réseau et est transformée par les différents composants qu'elle traverse. Lorsque les composants se distribuent sur une seule ligne et qu'ils ne font que passer l'information transformée à leur voisin, on parle alors d'architecture par lot (batch). Si les composants sont répartis sur un réseau informatique et qu'ils réalisent des transformations et des synthÚses intelligentes de l'information, on parle alors d'architecture de médiation. Les architectures orientées évÚnements font également partie de cette catégorie.

Architecture orientée objets

[modifier | modifier le code]

Les composants du systĂšme (objets) intĂšgrent des donnĂ©es et les opĂ©rations de traitement de ces donnĂ©es. La communication et la coordination entre les objets sont rĂ©alisĂ©es par un mĂ©canisme de passage de messages. L'architecture orientĂ©e objets est souvent dĂ©crite par les trois piliers : encapsulation, hĂ©ritage et polymorphisme. L'encapsulation concerne l'architecture dĂ©taillĂ©e de chaque objet, les donnĂ©es Ă©tant protĂ©gĂ©es d'accĂšs direct par une couche d'interface. De plus, les sous-fonctions, inutiles pour utiliser l'objet, sont masquĂ©es Ă  l'utilisateur de l'objet. L'hĂ©ritage permet d'Ă©viter la redondance de code et facilite l'extensibilitĂ© du logiciel, les fonctionnalitĂ©s communes Ă  plusieurs classes d'objets Ă©tant regroupĂ©es dans un ancĂȘtre commun. Le polymorphisme permet d'utiliser des objets diffĂ©rents (possĂ©dant des comportements distincts) de maniĂšre identique, cette possibilitĂ© est rĂ©alisĂ©e par la dĂ©finition d'interfaces Ă  implĂ©menter (classes abstraites).

Architecture orientée agents

[modifier | modifier le code]
Article dĂ©taillĂ© : SystĂšme multi-agents.

L'architecture orientĂ©e agents correspond Ă  un paradigme oĂč l'objet, de composant passif, devient un composant projectif :

En effet, dans la conception objet, l'objet est essentiellement un composant passif, offrant des services, et utilisant d'autres objets pour rĂ©aliser ses fonctionnalitĂ©s ; l'architecture objet n'est donc qu'une extension de l'architecture en appels et retours, le programme peut ĂȘtre Ă©crit de maniĂšre Ă  demeurer dĂ©terministe et prĂ©dictible.

L'agent logiciel, par contre, utilise de maniĂšre relativement autonome, avec une capacitĂ© d'exĂ©cution propre, les autres agents pour rĂ©aliser ses objectifs : il Ă©tablit des dialogues avec les autres agents, il nĂ©gocie et Ă©change de l'information, dĂ©cide Ă  chaque instant avec quels agents communiquer en fonction de ses besoins immĂ©diats et des disponibilitĂ©s des autres agents.

Historique

[modifier | modifier le code]

1960 Ă  1970

[modifier | modifier le code]

L’origine de la notion d’architecture logicielle remonte Ă  la fin des annĂ©es 1960 avec l’invention de la programmation structurĂ©e. Un programme informatique Ă©tait alors conceptualisĂ© comme une suite d’étapes (flux de contrĂŽle) reprĂ©sentĂ©e par les premiers diagrammes d’architecture, les organigrammes (ordinogrammes). Au dĂ©but des annĂ©es 1970, avec le dĂ©veloppement de la programmation modulaire, les programmes informatiques furent considĂ©rĂ©s comme des ensembles de composants (les modules) Ă©changeant de l’information. Les diagrammes de flux de donnĂ©es furent alors utilisĂ©s pour reprĂ©senter ce type d’architecture.

  • 1964, crĂ©ation de Simula-I
  • 1967, crĂ©ation de Simula-67

1970 Ă  1980

[modifier | modifier le code]

C’est au cours de la dĂ©cennie 1970–80 que les grands principes architecturaux furent Ă©laborĂ©s. L’on distingua l’architecture systĂšme dĂ©crivant les relations et interactions de l’ensemble des composants logiciels de l’architecture dĂ©taillĂ©e dĂ©crivant l’architecture individuelle de chacun des composants. L’on sĂ©para l’architecture statique dĂ©crivant les interrelations temporellement invariables (dĂ©pendances fonctionnelles, flux de contrĂŽle, flux de donnĂ©es) de l’architecture dynamique, dĂ©crivant les interactions et l’évolution du systĂšme dans le temps (diagrammes d’activitĂ©, de sĂ©quence, d’états, rĂ©seaux de Petri, etc.). C’est Ă©galement au cours de cette dĂ©cennie que furent Ă©laborĂ©s les principes directeurs de l’architecture logicielle contemporaine : masquage de l'information, indĂ©pendance fonctionnelle, forte cohĂ©sion et couplage faible. Les principaux styles architecturaux virent Ă©galement le jour : architecture en appels et retours (hiĂ©rarchie de contrĂŽle), architecture centrĂ©e sur les donnĂ©es, architecture en flot de donnĂ©es, architecture en couches et architecture orientĂ©e objets.

ÉvĂ©nements importants

  • 1970, E. F. Codd publie : « A Relational Model of Data for Large Shared Data Banks Â», ACM, Vol. 13, no 6, pp. 377-387.
  • 1971, N. Wirth crĂ©e le langage Pascal. « The Programming Language Pascal Â», Acta Informatica, no 1, pp. 35-63. La mĂȘme annĂ©e, il publie « Program Development by Stepwise Refinement Â», Comm. ACM, vol. 14, no 4, pp. 221-227.
  • 1972, O. Dahl, E. Dijkstra et C. Hoare publient : « Structured Programming Â», Academic Press.
  • 1973, J.B. Dennis publie : Modularity, In 4dvanced Course in Software Engineering, F. Bauer, Ed., Springer- Verlag, Berlin.
  • 1974, IBM dĂ©finit le langage SEQUEL (Structured English Query Language) et l'implĂ©mente sur le prototype SEQUEL-XRM.
  • 1975, M. A. Jackson. Publie : « Principles of Program Design Â», Academic Press.
  • 1976-77, IBM rĂ©vise SEQUEL appelĂ©e SEQUEL/2 fut dĂ©finie et le nom changĂ© en SQL.
  • 1979, Relational Software introduit son produit Oracle V2 comme systĂšme de gestion de bases de donnĂ©es relationnelles. Cette version implĂ©mente un langage SQL de base (requĂȘte et jointure).
  • 1979, E. Yourdon et L.L. Constantine publient : « Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design Â», Prentice Hall.

1980 Ă  1990

[modifier | modifier le code]

La dĂ©cennie 1980-90 fut celle du dĂ©veloppement de l’architecture orientĂ©e objet. Ce type d’architecture introduisit trois nouveaux types de composants logiciels : l’objet, la classe et la mĂ©ta-classe ; ainsi que des relations ontologiques entre ces composants : est un (hĂ©ritage), est composĂ© de (composition), etc. La relation d’hĂ©ritage est une innovation majeure permettant la rĂ©utilisation de code et facilitant son adaptation Ă  d’autres contextes d’utilisation.

Au niveau industriel, par contre, cette dĂ©cennie est sans conteste celle de l’architecture Ă  trois couches centrĂ©e sur les donnĂ©es (3-tiers). Ce type d’architecture logicielle, sĂ©parant l’architecture des programmes de l’architecture des donnĂ©es, s’oppose ainsi complĂštement au principe de forte cohĂ©sion prĂŽnĂ© par l’architecture objet. L’accent est mis sur l’architecture des donnĂ©es; les diagrammes de ce type d’architecture sont les modĂšles conceptuels de donnĂ©es et les schĂ©mas entitĂ©s relations. Le dĂ©veloppement des systĂšmes de gestion de bases de donnĂ©es relationnelles, des protocoles multibases ainsi que leurs normalisations (standardisations) constituent les fondations technologiques de ce choix architectural.

ÉvĂ©nements importants

  • 1983, Grady Booch publie : « Software Engineering with Ada Â», Benjamin Cummings.
  • 1983, Relational Software devient Oracle Corporation et introduit Oracle V3 (support des transactions).
  • 1983-1985, Bjarne Stroustrup dĂ©veloppe le C++ au Bell Laboratory.
  • 1984, U. Dayal and H. Hwang publient : « View definition and generalization for database integration in MULTIBASE: A system for heterogeneous distributed databases Â», IEEE Trans, Software Engineering, SE-10, No. 6, 628-644.
  • 1986, SQL a Ă©tĂ© adoptĂ© par l'institut de normalisation amĂ©ricaine (ANSI), puis comme norme internationale par l'ISO (ISO/CEI 9075).
  • 1987, Ivar Jacobson fonde Objectory Systems pour vendre sa mĂ©thode de dĂ©veloppement : ObjectOry
  • 1990, A.P. Sheth and J.A. Larson publient : « Federated Database Systems and Managing Distributed, Heterogeneous, and Autonomous Databases Â». ACM Computing Surveys.

1990 Ă  2000

[modifier | modifier le code]

Au dĂ©but de la dĂ©cennie 1990-2000 on dĂ©nombrait un trĂšs grand nombre de reprĂ©sentations architecturales distinctes. Apparue en 1995, l'UML (Unified Modeling Language) devint en 2007 une norme internationale (ISO/IEC 19501) notamment utilisĂ©e pour la reprĂ©sentation de l’architecture logicielle. Le dĂ©veloppement orientĂ© objet se rĂ©pand dans l’industrie, les systĂšmes de gestion de bases de donnĂ©es sont maintenant perçus comme une façon commode d’assurer la persistance des objets. Les systĂšmes de gestion de base de donnĂ©es objet-relationnels et objets font leurs apparitions. On voit Ă©galement apparaĂźtre les architectures distribuĂ©es; les programmes informatiques ne sont plus simplement perçus comme devant offrir des services Ă  des ĂȘtres humains mais Ă©galement Ă  d’autres programmes. L’arrivĂ©e des rĂ©seaux ouverts, en particulier Internet, change complĂštement le paysage architectural. L’architecture Ă  trois couches centrĂ©e sur les donnĂ©es (3-tiers) est maintenant rĂ©alisĂ©e par le triplet serveur de base de donnĂ©es, serveur d’application web et navigateur web.

La recherche universitaire sur l’architecture logicielle se concentre davantage sur les problĂšmes de couplage entre objets et d’interopĂ©rabilitĂ© syntaxique et sĂ©mantique. Le problĂšme du couplage est essentiellement perçu comme un problĂšme de communication entre objets, voire de dialogues entre agents intelligents; l’architecture orientĂ©e agent apparaĂźt. Le principe de rĂ©utilisation des composants logiciels est maintenant appliquĂ© Ă  l’architecture. Des façons de faire, principes ou styles architecturaux peuvent ĂȘtre rĂ©utilisĂ©s; les patrons de conception apparaissent.

ÉvĂ©nements importants

  • 1992, Gio Wiederhold publie : « Mediators in the Architecture of Future Information Systems Â», IEEE Computer Magazine
  • 1994, La dĂ©finition moderne d'agent logiciel est acceptĂ© par la communautĂ© scientifique : « Special issue on intelligent services. Â», Communication of the ACM.
  • 1994, Sun Microsystems lance le langage de programmation pur objet Java.
  • 1995, UML voit le jour (OOPSLA'95).
  • 1995, Gamma et al. publient : « Design Patterns: Elements of Reusable Object-Oriented Software Â», Addison-Wesley.
  • 1998, Le W3C recommande le langage Ă  balise XML.

2000 Ă  2010

[modifier | modifier le code]

Cette dĂ©cennie est caractĂ©risĂ©e par un retour des bases de donnĂ©es distribuĂ©es rendu possible grĂące aux technologies XML[rĂ©f. souhaitĂ©e]. Le XML est un ensemble de rĂšgles permettant de reprĂ©senter et de structurer des donnĂ©es, c'est une restriction de SGML. Ces donnĂ©es peuvent ĂȘtre syntaxiquement normalisĂ©es et la souplesse de la technologie permet d'exprimer des sĂ©mantiques variĂ©es. L'architecture 3-tiers traditionnelle peut se retrouver sous la forme de trois couches de mĂ©diations de donnĂ©es  : gestion de donnĂ©es XML, transformation et fusion de donnĂ©es XML et prĂ©sentation de donnĂ©es XML. La technologie XML permet la spĂ©cification syntaxique (DTD, XSD), la transformation (XSLT), la prĂ©sentation (XSL) et la spĂ©cification sĂ©mantique (RDF, RDFS, OWL). Il existe des bibliothĂšques logicielles permettant de gĂ©rer les donnĂ©es XML et la plupart des systĂšmes de gestion de base de donnĂ©es supportent maintenant XML.

Ce nouveau type d'architecture s'oppose Ă  la vision centralisĂ©e des donnĂ©es que l'on retrouve dans une architecture centrĂ©e sur les donnĂ©es traditionnelle (comme le « datawarehouse Â» promu par IBM). Cette forme d'architecture se nomme la mĂ©diation de donnĂ©es, elle est caractĂ©risĂ©e par :

  • Un traitement intelligent de l'information (des donnĂ©es supportant un haut niveau d'abstraction et de gĂ©nĂ©ralisation).
  • Un accĂšs et une intĂ©gration de plusieurs sources d'information.
  • Une transformation dynamique du flux d'information par des filtres et traducteurs.
  • L'existence de rĂ©pertoires intelligents et de bases d'information comme des catalogues.
  • La gestion de l'incertitude reliĂ©e aux donnĂ©es absentes ou incomplĂštes et aux donnĂ©es mal comprises.
  • La gestion explicite de l'interopĂ©rabilitĂ© sĂ©mantique grĂące Ă  des ontologies gĂ©nĂ©rales et de domaines.

Le dĂ©veloppement orientĂ© agent (OA) sort progressivement des universitĂ©s, il existe une multitude d'outils logiciels pour la conception de systĂšmes basĂ©s sur les agents mais la plupart ne sont pas encore destinĂ©s Ă  devenir des outils de production. Le langage KQML (Knowledge Query and Manipulation Langage) est un langage de communication inter-agent qui pourrait trĂšs bien s'imposer dans un proche avenir. Il n'y aura pas de rĂ©volution au niveau des langages de programmation, les diffĂ©rentes fonctionnalitĂ©s des agents sont implĂ©mentĂ©es Ă  l'aide de bibliothĂšques logicielles. Les trois types d'architectures OA qui se dĂ©gagent sont : l'architecture rĂ©flĂ©chie, l'architecture rĂ©active et l'architecture hybride.

Outils

[modifier | modifier le code]
  • Azuki - Framework Java ayant pour objectif la separation des prĂ©occupations.
  • BoUML- Modeleur UML open source multiplateforme compatible avec la norme UML 2.0 capable d'effectuer de la rĂ©tro-ingĂ©nierie
  • IBM Rational - Le produit des trois amigos fondateurs d'UML
  • Silverrun - Un logiciel de modĂ©lisation pour la mĂ©thode Datarun, version nord-amĂ©ricaine de Merise.
  • Open ModelSphere - ModĂ©lisation de donnĂ©es conceptuelle et relationnelle, modĂ©lisation de processus d'affaires et modĂ©lisation UML sous licence GPL.
  • Acceleo - GĂ©nĂ©rateur de code Open Source basĂ© sur Eclipse et EMF
  • Power Designer - Logiciel de modĂ©lisation des mĂ©thodes Merise, SGBD, UML, Processus mĂ©tiers, Architecture d'entreprise.
  • DocGen BOUML - Plugin de BOUML permettant la gĂ©nĂ©ration des documents d'architecture, d'analyse et de design Ă  partir d'un modĂšle UML et de la philosophie OpenUP[13],[14].
  • Papyrus - Plug-in Eclipse de modĂ©lisation UML2, SysML et MARTE[15].
  • Obeo Designer - Atelier de modĂ©lisation sur-mesure basĂ© sur la plateforme Eclipse et une approche DSL[16]
  • Capella - Un atelier de modĂ©lisation des architectures systĂšmes, matĂ©rielles et logicielles.

Notes et références

[modifier | modifier le code]
  1. ↑ Pressman R. S., Software Engineering: A Practitioner's Approach, Third Édition. McGraw-Hill. Chapitre 4, p. 107, 1992.
  2. ↑ « ISO/IEC 25010:2011 Â», sur ISO (consultĂ© le 15 juillet 2019)
  3. ↑ (en) « ISO/IEC 25010 Â», sur iso25000.com (consultĂ© le 15 juillet 2019)
  4. ↑ Yourdon E., Software Reuse. Application Development Strategies. vol. 1, n0. 6, p. 28-33, juin 1994.
  5. ↑ David Garlan, Robert Allen, John Ockerbloom, Architectural Mismatch: Why Reuse Is So Hard, IEEE Software, Nov./Dec. 1995
  6. ↑ Perry D.E, Wolf A.L., Foundation for the study of Software Architecture. ACM Software Eng. Notes, p. 40-50, octobre 1992
  7. ↑ Philippe B. Kruchten, The 4+1 View Model of Architecture, IEEE Software, novembre 1995.
  8. ↑ Jacobson I., Booch G., Rumbaugh J., The Unified Software Development Process, (ISBN 0-201-57169-2)
  9. ↑ (en) EnrĂ­quez, RenĂ©, Software Architecture with Spring 5. 0 : Design and Architect Highly Scalable, Robust, and High-Performance Java Applications., Packt Publishing Ltd, 2018, 41-44 p. (ISBN 978-1-78899-673-0, OCLC 1053798657, lire en ligne)
  10. ↑ Bass L., Clement P., Kazman R., Software Architecture in Practice, Addison-Wesley, 1998
  11. ↑ David Garlan et Mary Shaw, An Introduction to Software Architecture, CMU-CS-94-166, School of Computer Science, Carnegie Mellon University, janvier 1994
  12. ↑ Wirth N., Program Development by Stepwise Refinement, CACM, vol. 14, no. 4, 1971, pp. 221-227
  13. ↑ « OpenUP Â»(Archive.org ‱ Wikiwix ‱ Archive.is ‱ Google ‱ Que faire ?).
  14. ↑ [1].
  15. ↑ [2].
  16. ↑ [3].
  • icĂŽne dĂ©corative Portail de la programmation informatique
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Architecture_logicielle&oldid=227974830 Â».
CatĂ©gorie :
  • Architecture logicielle
CatĂ©gories cachĂ©es :
  • Article contenant un lien mort
  • Article Ă  rĂ©fĂ©rence souhaitĂ©e
  • Portail:Programmation informatique/Articles liĂ©s
  • Portail:Informatique/Articles liĂ©s

  • indonesia
  • Polski
  • Ű§Ù„Ű±ÙŠŰ©
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • Ù…Ű”Ű±
  • Nederlands
  • æœŹèȘž
  • PortuguĂȘs
  • Sinugboanong Binisaya
  • Svenska
  • ĐŁĐșŃ€Đ°Ń—ĐœŃĐșа
  • Tiáșżng Việt
  • Winaray
  • äž­æ–‡
  • РуссĐșĐž
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id