Architecture hiérarchique

L'architecture hiérarchique considère l'ensemble du système comme une structure hiérarchique, dans laquelle le système logiciel est décomposé en modules ou sous-systèmes logiques à différents niveaux de la hiérarchie. Cette approche est généralement utilisée dans la conception de logiciels système tels que les protocoles réseau et les systèmes d'exploitation.

Dans la conception de la hiérarchie du logiciel système, un sous-système de bas niveau fournit des services à ses sous-systèmes de niveau supérieur adjacents, qui invoquent les méthodes du niveau inférieur. La couche inférieure fournit des fonctionnalités plus spécifiques telles que les services d'E / S, les transactions, la planification, les services de sécurité, etc. La couche intermédiaire fournit davantage de fonctions dépendant du domaine telles que la logique métier et les services de traitement de base. Et, la couche supérieure fournit des fonctionnalités plus abstraites sous la forme d'interfaces utilisateur telles que des interfaces graphiques, des fonctionnalités de programmation shell, etc.

Il est également utilisé dans l'organisation des bibliothèques de classes telles que la bibliothèque de classes .NET dans la hiérarchie des espaces de noms. Tous les types de conception peuvent implémenter cette architecture hiérarchique et souvent se combiner avec d'autres styles d'architecture.

Les styles architecturaux hiérarchiques sont divisés comme suit:

  • Main-subroutine
  • Master-slave
  • Machine virtuelle

Sous-programme principal

Le but de ce style est de réutiliser les modules et de développer librement des modules ou sous-programmes individuels. Dans ce style, un système logiciel est divisé en sous-programmes en utilisant un raffinement descendant en fonction de la fonctionnalité souhaitée du système.

Ces raffinements conduisent verticalement jusqu'à ce que les modules décomposés soient suffisamment simples pour avoir sa responsabilité indépendante exclusive. La fonctionnalité peut être réutilisée et partagée par plusieurs appelants dans les couches supérieures.

Les données sont transmises en tant que paramètres aux sous-programmes de deux manières, à savoir -

  • Pass by Value - Les sous-programmes utilisent uniquement les données passées, mais ne peuvent pas les modifier.

  • Pass by Reference - Les sous-programmes utilisent et modifient la valeur des données référencées par le paramètre.

Avantages

  • Décomposition facile du système en fonction du raffinement de la hiérarchie.

  • Peut être utilisé dans un sous-système de conception orientée objet.

Désavantages

  • Vulnérable car il contient des données partagées au niveau mondial.

  • Un couplage serré peut entraîner davantage d'effets d'entraînement des changements.

Maître d'esclave

Cette approche applique le principe «diviser et conquérir» et prend en charge le calcul des défauts et la précision des calculs. Il s'agit d'une modification de l'architecture du sous-programme principal qui assure la fiabilité du système et la tolérance aux pannes.

Dans cette architecture, les esclaves fournissent des services en double au maître, et le maître choisit un résultat particulier parmi les esclaves par une certaine stratégie de sélection. Les esclaves peuvent effectuer la même tâche fonctionnelle par différents algorithmes et méthodes ou des fonctionnalités totalement différentes. Il inclut le calcul parallèle dans lequel tous les esclaves peuvent être exécutés en parallèle.

La mise en œuvre du modèle maître-esclave suit cinq étapes -

  • Spécifiez comment le calcul de la tâche peut être divisé en un ensemble de sous-tâches égales et identifiez les sous-services nécessaires pour traiter une sous-tâche.

  • Spécifiez comment le résultat final de l'ensemble du service peut être calculé à l'aide des résultats obtenus à partir du traitement de sous-tâches individuelles.

  • Définissez une interface pour le sous-service identifié à l'étape 1. Elle sera implémentée par l'esclave et utilisée par le maître pour déléguer le traitement des sous-tâches individuelles.

  • Implémentez les composants esclaves selon les spécifications développées à l'étape précédente.

  • Implémentez le maître selon les spécifications développées aux étapes 1 à 3.

Applications

  • Convient aux applications où la fiabilité du logiciel est un problème critique.

  • Largement appliqué dans les domaines de l'informatique parallèle et distribuée.

Avantages

  • Calcul plus rapide et évolutivité facile.

  • Fournit de la robustesse car les esclaves peuvent être dupliqués.

  • L'esclave peut être implémenté différemment pour minimiser les erreurs sémantiques.

Désavantages

  • Frais généraux de communication.

  • Tous les problèmes ne peuvent pas être divisés.

  • Difficile à mettre en œuvre et problème de portabilité.

Architecture de machine virtuelle

L'architecture de la machine virtuelle prétend certaines fonctionnalités, qui ne sont pas natives du matériel et / ou du logiciel sur lesquels elle est implémentée. Une machine virtuelle est construite sur un système existant et fournit une abstraction virtuelle, un ensemble d'attributs et des opérations.

Dans l'architecture de machine virtuelle, le maître utilise le «même« sous-service »de l'esclave et exécute des fonctions telles que le travail fractionné, l'appel d'esclaves et la combinaison des résultats. Il permet aux développeurs de simuler et de tester des plates-formes, qui n'ont pas encore été construites, et de simuler des modes «catastrophe» qui seraient trop complexes, coûteux ou dangereux à tester avec le système réel.

Dans la plupart des cas, une machine virtuelle sépare un langage de programmation ou un environnement d'application d'une plate-forme d'exécution. L'objectif principal est de fournirportability. L'interprétation d'un module particulier via une machine virtuelle peut être perçue comme -

  • Le moteur d'interprétation choisit une instruction dans le module en cours d'interprétation.

  • Sur la base de l'instruction, le moteur met à jour l'état interne de la machine virtuelle et le processus ci-dessus est répété.

La figure suivante montre l'architecture d'une infrastructure VM standard sur une seule machine physique.

le hypervisor, aussi appelé le virtual machine monitor, s'exécute sur le système d'exploitation hôte et alloue des ressources correspondantes à chaque système d'exploitation invité. Lorsque l'invité effectue un appel système, l'hyperviseur l'intercepte et le traduit en appel système correspondant pris en charge par le système d'exploitation hôte. L'hyperviseur contrôle l'accès de chaque machine virtuelle au processeur, à la mémoire, au stockage persistant, aux périphériques d'E / S et au réseau.

Applications

L'architecture de la machine virtuelle convient dans les domaines suivants -

  • Convient pour résoudre un problème par simulation ou traduction s'il n'y a pas de solution directe.

  • Les exemples d'applications comprennent des interprètes de microprogrammation, de traitement XML, d'exécution de langage de commande de script, d'exécution de système basée sur des règles, de langage de programmation de type Smalltalk et Java.

  • Des exemples courants de machines virtuelles sont les interprètes, les systèmes basés sur des règles, les shells syntaxiques et les processeurs de langage de commande.

Avantages

  • Portabilité et indépendance de la plate-forme machine.

  • Simplicité du développement logiciel.

  • Fournit de la flexibilité grâce à la possibilité d'interrompre et d'interroger le programme.

  • Simulation pour un modèle de travail en cas de catastrophe.

  • Introduisez des modifications lors de l'exécution.

Désavantages

  • Exécution lente de l'interprète en raison de la nature de l'interprète.

  • Il y a un coût de performance en raison du calcul supplémentaire impliqué dans l'exécution.

Style en couches

Dans cette approche, le système est décomposé en un certain nombre de couches supérieures et inférieures dans une hiérarchie, et chaque couche a sa propre responsabilité dans le système.

  • Chaque couche se compose d'un groupe de classes associées qui sont encapsulées dans un package, dans un composant déployé ou sous la forme d'un groupe de sous-programmes au format de bibliothèque de méthodes ou de fichier d'en-tête.

  • Chaque couche fournit un service à la couche supérieure et sert de client à la couche inférieure, c'est-à-dire que la demande à la couche i +1 appelle les services fournis par la couche i via l'interface de la couche i. La réponse peut retourner à la couche i +1 si la tâche est terminée; sinon la couche i appelle continuellement les services de la couche i -1 ci-dessous.

Applications

Le style en couches convient dans les domaines suivants -

  • Applications qui impliquent des classes distinctes de services qui peuvent être organisées hiérarchiquement.

  • Toute application pouvant être décomposée en parties spécifiques à l'application et spécifiques à la plate-forme.

  • Applications qui présentent des divisions claires entre les services de base, les services critiques et les services d'interface utilisateur, etc.

Avantages

  • Conception basée sur des niveaux d'abstraction incrémentiels.

  • Fournit une indépendance d'amélioration car les modifications apportées à la fonction d'une couche affectent au plus deux autres couches.

  • Séparation de l'interface standard et de sa mise en œuvre.

  • Mis en œuvre en utilisant une technologie basée sur les composants qui rend le système beaucoup plus facile pour permettre le plug-and-play de nouveaux composants.

  • Chaque couche peut être une machine abstraite déployée indépendamment qui prend en charge la portabilité.

  • Décomposition facile du système en fonction de la définition des tâches de manière descendante

  • Différentes implémentations (avec des interfaces identiques) de la même couche peuvent être utilisées de manière interchangeable

Désavantages

  • De nombreuses applications ou systèmes ne sont pas facilement structurés en couches.

  • Baisse des performances d'exécution car la demande d'un client ou une réponse au client doit passer par plusieurs couches.

  • Il existe également des problèmes de performances concernant la surcharge du marshaling et de la mise en mémoire tampon des données par chaque couche.

  • L'ouverture de la communication intercouche peut entraîner des blocages et le «pontage» peut provoquer un couplage serré.

  • Les exceptions et la gestion des erreurs sont un problème dans l'architecture en couches, car les défauts d'une couche doivent se propager vers le haut à toutes les couches appelantes