Skip to content

Architectural Characteristics

Posted on:September 17, 2023 at 01:23 PM

architectural-characteristics-cover Photo by Ricardo Gomez Angel Unsplash

Table of Contents

Open Table of Contents

Architectural Characteristics

Architectural characteristics, describe the desired attributes or properties of a software system’s architecture.

Architectural characteristics help guide the design and implementation of the system to meet specific goals and requirements.

It is also known as non-domain design, non-functional requirements, or architectural qualities.

After system requirements are mapped to architectural characteristics, these characteristics can indicate one or multiple forms of the architectural styles. (These styles can be microservices, event-driven architecture, microkernel, layered monolith, service-oriented architecture, …)

An application can support multiple architectural characteristics but it should not. If an application supports numerous or many architectural characteristics, the application may become more complex. Therefore we should select optimal and minimum architectural characteristics as possible.

All of the architectural characteristics can’t be implemented. One of them can affect to other one. For example in the scenario that security is requested, security can impact performance negatively. (Encryption, Decryption, Hashing, etc. CPU-bound works)

Operational Architectural Characteristics:

Defines operational qualities of the system.

Structural Architectural Characteristics:

These characteristics affect code.

Cross-Cutting Architectural Characteristics

Those that are important but not in any obvious category.


How to Identify Architectural Characteristics

It is incorrect if we are extracting architectural characteristics from domain concerns and giving them to stakeholders to prioritize them. We should say to them select the three most important from the end list.

Examples:

For example, if the user count is constant and it is known before then scalability may not be required.

Firstly separate architectural characteristics into explicit and implicit ones. The explicit architectural characteristics are extracted from the system requirements. The implicit architectural characteristics are the required ones that do not exist in the system requirements. (e.g. Availability, Security, Reliability).

If there are no statements about implicit characteristics in the system requirements they are handled normally otherwise they are prioritized. For example, in a web application security is important but it is not the most important one so it is handled normally. (Encrypted communication, encryption of the credit card data, etc.) But in the defense industry security may be the most important architectural characteristic and it is prioritized.

Some systems are scalable but not elastic. If the user count will increase from thousand to million in the long term, the system should be scalable. If the request count arresting to the web server varies from thousands to millions, the system should be elastic. (elasticity). They are implemented together generally.

Reliability should be considered when integrating with third-party systems. What happens if the third-party system crashes?


Conclusion