Non-Functional Architecture

From the chapter “Software Product Levels”, we learned that we need an NFA architecture that natively supports the deployment of assemblies belonging to different software product layers to different machines, transforming software product layers into software product tiers, or, at the same time, natively supports the deployment of the entire software product as a single unit.

The following diagram provides very high-level schema of such an NFA:

A diagram of a computer system

AI-generated content may be incorrect.

NFA consists of several components, but they are not aware of each other's existence. The management system connects them all and services the communications between them, passing the data container from one component to another.

The NFA receives the request at the receiver (controller) (1) and passes it to the management system (2). In turn, the management system passes the request to the request redirector (3). The request redirector attempts to find a transition handler according to the request metadata contained in the data container.

If the request redirector cannot find a request handler that matches the request metadata, then it redirects the request to management system (4), which passes it on to the transmitter (HTTP client) (7), which sends the request to the next layer of the application (8). If the request redirector finds a transition handler, it passes the request data to the found handler (5). The transition handler processes the request according to its programmed functionality.

While processing the request, transition handler can rase an event to send the request to the next layer of the application (6). The management system handles this event and forwards the request to the transmitter (HTTP client) (7), which sends the request to the next layer of the application (8).

Transition handler may raise an event to the management system itself asking it to, say, save the data to the file system (9), or it may operate on a database (10).

 

Table of Content Software Architecture Previous: Functional Architecture Next: DNS Server