Hierarchical Architecture

Introduction to Hierarchical Architecture

Hierarchical architecture is a form of control system. It includes a set of devices and controlling software arranged in a hierarchical tree. Hierarchical architecture is used in organization of the class libraries such as .NET class library in namespace hierarchy.

What are the styles included in the hierarchical architecture?

In hierarchical architecture, the software system is decomposed into logical modules or subsystems at different levels in the hierarchy. This architecture is used in designing system software such as network protocols and operating system.

There are the three types of hierarchical architecture:

types of hierarchical architecture

1. Main-Subroutine
  • Main-subroutine is a style of hierarchical architecture which dominates the software design methodologies for a very long time.
  • Main-subroutine reuses the subroutines and have individual subroutines developed independently.
  • Using main-subroutine, a software system is decomposed into subroutines hierarchically refined according to the desired functionality of the system and each module reads input files and writes output files.

  • main subroutine architecture

  • Main-subroutine has a benefit, it is easy to decompose the system based on the definition of the tasks in a top-down refinement manner.
  • Main-subroutine has a limitation because of tight coupling it may cause more ripple effects of changes as compared to object-oriented design.
2. Master-slave
  • Master-slave is a modification of the main-subroutine architecture.
  • Master-slave architecture provides fault tolerance and system reliability.

  • master slave architecture

  • In master-slave architecture, slave provides duplicate services to the master and the master chooses a particular result between slaves by a certain selection strategy.
  • It provides replicated services to the master.
  • Master-slave architecture is suitable for applications where reliability of software is critical issue and can be implemented to minimize semantic errors.
  • This architecture has faster computation and easy scalability.
  • Master-slave architecture has limitations also, it is hard to implement, not all problems can be divided and has portability issue.
  • Slave performs the same functional task by different algorithms and methods or totally different functionality.
3. Virtual Machine
  • Virtual machine architecture provides a virtual abstraction, a set of attributes and operations.
  • This architecture appears similar to emulator software, for eg. JVM, Virtual Box.
  • It pretends some functionality, which is not native to the hardware or software on which it is implemented.
  • Virtual machine architecture is suitable for solving a problem by simulation or translation if there is no direct solution.
  • It includes interpreters of microprogramming, XML processing, script command language execution, Smalltalk and Java interpreter typed programming language.
  • The examples of virtual machines are rule-based system, syntactic shells and command language processors.
  • It introduces modifications at runtime and provides flexibility through the ability to interrupt.
  • It provides portability and machine platform independency.
  • Virtual machine architecture has disadvantage, it slows execution of the interpreter due to the interpreter nature and it incurs extra performance cost because of the additional computation involved in execution.

Layered Style

  • In Layered style, it decomposes the system into a number of higher and lower layers and each layer has its responsibility.
  • Using layered architecture, applications involve distinct classes of services that can be organized hierarchically and have clear divisions between core services, critical services, user interface services etc.
  • Layered architecture design is based on incremental levels of abstraction.
  • It is implemented by using component-based technology which makes the system much easier to allow for plug-and-play of new components.
  • Using layered architecture, It is easy to decompose the system based on the definition of the tasks in a top-down refinement manner.