1.2 Catégorie de composants physiques

Un composant logique peut être implémenté en utilisant deux sortes de composants de la couche physique : des solutions logicielles externes à la solution et le matériel sur lequel peut reposer une solution logicielle.

Les solutions externes peuvent être des systèmes propriétaires lorsque leur implémentation est connue, ou non propriétaires lorsque la solution externe est considérée comme une boîte noire pour une solution donnée. Le matériel regroupe les périphériques physiques, tels que des disques, des cartes réseau; il n’y a alors aucune couche logicielle séparant le logiciel du matériel sous-jacent.

1.2.1 Pilotes de périphériques et système d’exploitation

La couche d’abstraction la plus proche des périphériques est la première couche logicielle recevant l’information de ces périphériques. Cette couche est habituellement constituée de pilotes fournis par les fabricants de périphériques. Ils complémentent les périphériques et permettent l’interprétation de l’information par le système d’exploitation.

En plus des périphériques, l’unité centrale de traitement d'un ordinateur, complémentée par du matériel connexe tel que la carte maitresse, expose un jeu d'instructions pouvant être utilisés par un logiciel. À moins que ce ne soit dans le cadre de solutions logicielles embarquées, ces instructions sont généralement utilisées par un système d'exploitation. [19]

Figure 1.2 — Périphériques, pilotes et système d'exploitation

Une première abstraction, celle du jeu d’instruction, est déjà faite, autant par le système d’exploitation que par les pilotes des périphériques. Ces pilotes simplifient la communication entre les composants logiciels et les périphériques sous-jacents.

Dans le cadre de développement logiciel, les pilotes sont généralement utilisés par la couche d’abstraction matérielle implémentée par le système d'exploitation [8]. Cette couche d'abstraction, à l'intérieur du système d'exploitation, permet un accès uniforme aux périphériques; le système d'exploitation fournit des interfaces de programmation (API) pouvant être consommées par des solutions logicielles.

1.2.2 Interfaces de programmation

Lors de l’utilisation d’une solution logicielle, la combinaison d’interactions entre les pilotes de périphériques et le système d’exploitation est abstraite par une API. Cela permet d’accéder à l’abstraction des périphériques ainsi qu’au niveau de fonctionnalité additionnel fourni par le système d’exploitation.

Figure 1.3 — Interface et système d'exploitation

Cette API constitue alors un contrat où le système d’exploitation offre des fonctionnalités à la solution logicielle. Une interaction est possible grâce à des pilotes de périphériques qui assurent la communication avec l’interface spécifique fournie par le périphérique en question.

La solution logicielle ne dépend alors que de cette API. Cette couche logicielle englobe l’implémentation spécifique faite par les périphériques et l’implémentation interne des fonctionnalités offertes par le système d’exploitation.

1.2.3 Machines virtuelles

Afin d’enrichir l’interface fournie par le système d’exploitation, des machines virtuelles applicatives ont été créées. En particulier, le CLR et la Java Virtual Machine (JVM) interagissent autant avec le système d'exploitation qu'avec certains pilotes de périphériques dans le but d'offrir un ensemble de fonctionnalités.

Les machines virtuelles applicatives créent un niveau d’abstraction entre le code client et l’API du système d’exploitation. Elles permettent au code client de s’exécuter sur n’importe quel environnement où une machine virtuelle est disponible, dans la mesure où le code client a été conçu pour cette machine virtuelle. [21]

Figure 1.4 — Composant logique, machine virtuelle applicative et API

Le niveau d'abstraction fourni par la machine virtuelle complémente l’API du système d’exploitation. Ces machines virtuelles applicatives offrent une API qui enrichit celles du système d’exploitation. Elles peuvent être utilisées de la même manière, et sont considérées équivalentes.

La disponibilité des machines virtuelles applicatives impacte la disponibilité des composants logiques qui en dépendent. Lors de l’évaluation de la disponibilité d’un composant logique, il faut alors tenir compte de l’ensemble des composants sur lesquels repose ce composant logique. Ces couches incluent donc le système d’exploitation et la machine virtuelle.

1.2.4 Dépendance logicielle unique

Les différentes couches séparant la solution logicielle des périphériques peuvent être complexes. Malgré cela, l’ensemble de ces couches est abstrait par un composant virtuel. Cette couche logicielle constitue une dépendance externe à la solution logicielle. Cette couche d’abstraction des composants physiques est constituée des composants virtuels qui sont des abstractions d’un ou de plusieurs composants physiques dans la couche physique de l’architecture.

Figure 1.5 — Déploiement physique d’un composant virtuel

Ces composants virtuels constituent tout le matériel et les logiciels externes à un composant logique qui sont abstraits pour avoir une flexibilité lors de l’implémentation de la solution. La disponibilité des autres composants physiques sur lesquels repose un composant logique est alors incluse dans la disponibilité de ce composant logique.

Un exemple serait un composant logique qui dépend de la machine virtuelle CLR de Microsoft et d’un système d’exploitation, et qui a une seconde dépendance envers un serveur physique ayant de la mémoire, des disques physiques et une carte réseau. Ce composant logique serait composé de la machine virtuelle, du système d’exploitation et de la mémoire. Il y aurait deux composants virtuels, pour les disques physiques et la carte réseau. Par contre, si ce même contexte doit tenir compte d’une flexibilité de l’implémentation physique de la mémoire, il pourrait y avoir une abstraction de ce composant physique pour en faire un composant virtuel dont dépendrait le composant logique.

Toute couche logicielle ou matérielle qui n’est pas incluse dans un composant virtuel est implicitement incluse dans le composant logique. Si une couche est partagée entre plusieurs composants virtuels, elle peut être incluse dans le composant logique lorsqu’elle est partagée entre tous les composants virtuels de ce composant logique. Si cette couche n’est pas partagée entre tous les composants virtuels d’un composant logique, elle doit être ajoutée à chacun des composants virtuels. Si une couche est partagée entre plusieurs composants logiques, elle doit être incluse dans tous les composants logiques.

Table des matières · 5/26