Architecture Types: Information System Architectural Styles

Lecture



The level of development of modern technology is so high that it makes it possible to build an IS of any scale, complexity and functionality. However, given business requirements based on the indicators of various business assessments, additional difficulties arise, and resolving them comes down to ensuring a rational approach to the process of designing, implementing and subsequently operating an IS.

Proceeding from this, the chosen architecture can unequivocally be regarded as one of the main indicators of the effectiveness of the IS being created and, consequently, of the success of the business.

The architecture of an IS is its concept, which defines the model, structure, functionality and interrelation of its components.

By the architecture of software systems we shall understand the set of decisions regarding:

- the organization of the software system;

  • - the choice of the structural elements that make up the system and of their interfaces;
  • - the behavior of these elements in interaction with other elements;
  • - the combination of these elements into subsystems;
  • - the architectural style that defines the logical and physical organization of the system: static and dynamic elements, their interfaces and the ways in which they are combined.

The architecture of a software system covers not only its structural and behavioral aspects, but also the rules and possibilities of:

  • - use and integration with other systems;
  • - functionality;
  • - performance;
  • - flexibility;
  • - reliability;
  • - reuse;
  • - completeness;
  • - economic and technological constraints;
  • - organization of the user interface.

The concept of the IS architecture should be formed as early as the feasibility study stage and should be chosen so that the cost of ownership is minimal.

As part of architecture development, the following are defined:

  • - what the system will do;
  • - what components (parts, modules) it will consist of;
  • - exactly where the components will be located;
  • - how the components will interact.

For the architecture, the following are defined and described

  • - the basic parameters and characteristics of the architecture;
  • - the logical and physical structure;
  • - the interaction of system components (subsystems and modules, the synchronicity and asynchronicity of their interaction, communication channels and their characteristics, protocols and interfaces, the type of middleware, the file formats the system will operate with, and other features);
  • - the IT infrastructure elements required to implement the IS architecture being built - the platform (environment), the hardware complex, the DBMS, the tools and the application software;
  • - possible risks, constraints, cost of ownership, economic feasibility.

When considering the architecture of large organizations, it is customary to use the notion of «enterprise architecture». It can be represented as a combination of several types of architecture [22]:

  • - business architecture (Business architecture);
  • - IT architecture (Information Technology architecture);
  • - data architecture (Data architecture);
  • - software architecture (Software architecture);
  • - technical architecture (Hardware architecture).

The enterprise architecture model is shown in Fig. 3.2.

Architecture Types: Information System Architectural Styles

Fig. 3.2. Enterprise architecture model

Technical architecture is the first level of an IS architecture. It describes all the hardware used in performing the declared set of functions, and it also includes the means of providing network communication and reliability. Technical architecture specifies peripheral devices, network switches and routers, hard drives, RAM, processors, connecting cables, uninterruptible power supplies, and so on.

Software architecture is a set of computer programs intended to solve specific tasks. This type of architecture is needed to describe the applications that make up the information system. At this level, software interfaces, components and behavior are described.

Data architecture combines both physical data stores and data management facilities. In addition, it includes logical data stores, and if the company in question is oriented toward working with knowledge, a separate level may be distinguished - knowledge architecture (Knowledge architecture). At this level, logical and physical data models are described, integrity rules are defined, and constraints on the data are established.

The IT architecture level should be singled out in particular, since it is the connecting one. It is where the basic set of services is formed that are used both at the software architecture level and at the data architecture level.

The main function of IT architecture is to ensure the operation of important business applications in order to achieve the stated business goals. If a certain function is required in several applications at once, it should be moved to the IT architecture level, thereby increasing the integration of the system and reducing the complexity of the application architecture.

The last in the hierarchy is the level of business architecture, or business process architecture. At this level, business strategies, management methods, organizational principles and the key processes of enormous importance to the business are defined.

Microarchitecture and macroarchitecture. The terms microarchitecture and macroarchitecture are used to a greater extent to describe software systems. In accordance with the model of IS architecture levels considered above, microarchitecture can be assigned to the levels of software architecture and data architecture, and macroarchitecture to the level of IT architecture.

Microarchitecture describes the internal design of a particular component or subsystem, whereas macroarchitecture describes the design of the entire IS as a combination of its components or subsystems.

The complexity of software systems is constantly increasing. This is due to the growth in the volume of information transmitted and processed, the growing complexity of the information processing tasks themselves, and the increase in the number of such tasks. Without applying some architectural approach when building complex systems, their creation, maintenance and modification will ultimately become unprofitable for the business.

Thus, when developing a software system - for example, one that is part of the infrastructure of a large organization - it is represented as a set of modules, each of which performs a particular function, while together they perform the functions of the system itself. In this case, the organization of each module will be the microarchitecture, and the ways the modules interact within the system will be the macroarchitecture.

A reduction in the complexity of implementing the system is achieved by breaking complex tasks down into several simpler ones. As a result, this may lead to the emergence of a large set of simple tasks on the basis of which any task, even a very complex one, can be implemented.

There are two principles that make it possible to assess the mutual influence of system components on one another:

  • - low coupling;
  • - high cohesion.

The Low Coupling principle promotes the distribution of functions among system components in such a way that the degree of coupling between them remains low.

The degree of coupling (coupling) is a measure of the interdependence of subsystems. This principle is related to one of the fundamental principles of the systems approach, which requires minimizing information flows between subsystems.

A subsystem with a low degree of coupling (or loose coupling) has the following properties:

  • - a small number of dependencies between subsystems;
  • - weak dependence of one subsystem on changes in another;
  • - a high degree of subsystem reuse.

The High Cohesion principle, in turn, specifies the property of strong cohesion within a subsystem. As a result, the subsystems turn out to be focused, manageable and understandable.

Cohesion (functional cohesion) - is a measure of how related and focused the functions of a subsystem are. A subsystem has a high degree of cohesion if its functions are closely related to one another and it does not perform large amounts of work.

A subsystem with a low degree of cohesion performs many different functions that are in no way related to one another. It is undesirable to create such subsystems, since they give rise to the following problems:

  • - difficulty of understanding;
  • - difficulty of reuse;
  • - difficulty of maintenance;
  • - unreliability, constant susceptibility to change.

Subsystems with a low degree of cohesion have no clear functional purpose and perform functions that are too disparate and could easily be distributed among other subsystems.

It should be noted that coupling is a characteristic of the system as a whole, whereas cohesion characterizes an individual subsystem.

Coupling and cohesion are system-wide characteristics and can be applied in the design of any systems.

Among the platform solutions for designing an IS architecture, the following stand out:

  • - centralized architecture;
  • - file-server architecture
  • - two-tier client-server architecture
  • - multi-tier client-server architecture',
  • - distributed systems architecture',
  • - web application architecture',
  • - service-oriented architecture.

It should be noted that, like any classification, this classification of IS architectures is not absolutely rigid. In the architecture of any particular IS one can find the influence of several general architectural solutions.

Most IS design processes involve drawing on experience from implementing similar projects. It is hard to imagine a system for whose implementation it would be impossible to apply ready-made solutions or the experience gained in creating them.

An architectural style can be characterized as a similarity in the approaches to accomplishing the tasks at hand that is grounded in experience. It defines the list of system components and the ways and conditions of their interaction. Architectural styles are divided into the following five groups (Fig. 3.3).

  • 1. Data flows (Data Flow Systems).
  • 2. Call and return (Call-and-Return Systems).
  • 3. Independent components (Independent Component Systems).
  • 4. Centralized data (Data-Centric Systems).
  • 5. Virtual machines (Virtual machines).

Architecture Types: Information System Architectural Styles

Fig. 3.3. Classification of architectural styles

In batch sequential processing systems, the task to be solved is divided into a set of subtasks whose solution mechanisms are implemented in separate software modules combined into a linear structure. The output data of one subtask is the input data for another.

The «pipes and filters» style can be considered a generalization of batch sequential processing. Its structure consists of a set of modules, each of which performs one or more processes. The results of one process can be passed to one or to several modules, and in various ways. Such systems implement the pipeline principle, in which feedback loops may be present.

A good example of this approach is a compiler, which sequentially performs lexical analysis, semantic analysis, optimization and code generation.

Systems that operate by means of calls with returns are synchronous software architectures whose client side suspends operation while the server services its request. Such architectures can include an arbitrary number of nesting levels. There are several types of systems of this kind:

  • - main program and subroutines (Main Program and Subroutines);
  • - object-oriented systems (Object-Oriented Systems);
  • - client-server systems (Client-Server Systems);
  • - hierarchically layered systems (Hierarchically Layered Systems).

The «main program and subroutines» style is an implementation of the ideas of structured programming and implies the presence of a main controlling program (a controller) responsible for the operating process, and a set of subroutines that implement the functionality. A variety of this approach is considered to be the «master-slave» architecture (Master-Slave Architecture), in which the main program and the subroutines run at the same time (in parallel). The controller acts as the process dispatcher, while the subroutines carry out assignments and, upon completing them, request new ones from it.

Object-oriented systems are a special case of «main program and subroutines» systems. Communication between objects, which include (encapsulate) code and data, is carried out either through procedure calls or through messages. It should be noted that the calling object must know where the called object is located; in addition, it needs to know the set of interfaces it can use. Encapsulation hides the details of an object's implementation, as a result of which it becomes possible to make changes to it without notifying end users, which is an indisputable advantage of this type of architecture. Its merits also include natural support for parallelizing processes.

Client-server systems can also be considered a special case of the «main program and subroutines» style, with the sole difference that the controller and the subroutines may be located on different network nodes.

For large-scale systems, the hierarchically layered style is used, in which each of the existing layers can be regarded as a set of services for the layer above it. Accordingly, the upper layer is the client and the lower layer is the server. This style is justifiably used to create protocol stacks or operating systems. Its main advantage is the ability to develop each of the layers independently. It is worth noting that not all algorithms can be implemented as a layered structure, so its use is not always justified.

Systems that operate on the principle of independent components use a mechanism of implicit invocation of operators, i.e. the interacting operators can work independently and be located on different network hosts. Two types of such systems are distinguished:

- systems of communicating processes (Communicating Sequential

Processes);

- event-based systems (Event-Based Systems).

The main operating principle of communicating process

systems is the exchange of messages between independent processes.

In event-driven systems, processes are started only at the moment a particular event occurs; however, the recipient of the event message may not know about the sender, nor the sender about the recipient. Interrupt-driven systems have similar operating principles.

When a system has a publicly accessible centralized information store, it is classified as the centralized data (repository) style. With this approach, data is entered into the system once and supplemented as needed. This provides shared access to the data by several applications and the ability to exchange data, eliminates duplication and simplifies scaling. There are two varieties of such systems:

  • - systems based on the use of a centralized database (Database Systems) - most often these imply the presence of a relational database;
  • - systems using the blackboard principle (Blackboard Systems).

Systems built on the blackboard principle are characterized by the presence of a common shared memory (a database) that stores the results of the actions performed by the processes. In such systems it is possible to notify interested processes of changes in the information they require.

Virtual machines are special emulators that provide a software interface different from the one in use. Virtual machines can work directly with the hardware platform or be add-ons to the operating system. If an IS is viewed as a layered structure, the virtual machine will be the top layer, providing interaction with user applications, which include:

  • - interpreters (Interpreters);
  • - rule-based systems (Rule-Based Systems).

Interpreters are intended to ensure the operability

of various kinds of programs originally created for different platforms. For example, running and debugging Linux applications in a Windows environment.

Rule-based systems represent all data and logic as a set of specialized rules. In such systems, for each task there is a set of facts and a set of rules. To solve the task, the rules are applied to the facts until a result is obtained. An example of such systems is CLIPS.

The suitability of using various architectural styles is given in Table 3.1.

Table 3.1

Suitability of applying the styles

Style name

Suitability of application

Batch sequential

The task to be solved can be divided into subtasks that use a single input-output operation

Pipes and filters

The task-solving process can be represented as a sequence of repeating operations on independent data of the same type

Main program and subroutines

A fixed order of operations, idle time due to waiting for responses from components

Object-

oriented

The ability to use inheritance mechanisms, placement of objects on different hosts

Client-server

The ability to represent the task to be solved as a set of requests from clients to the server and responses

Hierarchically

layered

The ability to represent the task as a set of layers with defined interfaces, the need for various options for implementing business logic, portability, use of existing implementations

Communicating

processes

The mechanism of interaction between processes is message exchange, the volume of long-term centralized data is small

Event-driven

Asynchronous operation of the system, the system can be represented as independent processes

Centralized database

A DBMS is available, tasks are divided into producers and consumers of data, the execution order of components is determined by the sequence of incoming requests

Blackboard

A large number of clients communicating with each other

Interpreter

There is a need to smooth out platform specifics and to provide a specific working environment

Rule-based

The solution of the task can be represented as a set of rules and the conditions for applying them

See also

  • [[b12453]]
  • [[b14264]]
  • [[b8566]]
  • [[b14266]]

Comments

To leave a comment

If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Lectures and tutorial on "Software and information systems development"

Terms: Software and information systems development