Key Software Architecture Characteristics and Techniques to Improve Them
This article explains the most important non‑functional characteristics of software architecture—such as performance, reliability, availability, resilience, scalability, security, and many others—and provides practical techniques and best‑practice recommendations for enhancing each of these qualities in modern systems.
Software architecture characteristics, often ending with "‑ility" (e.g., scalability, deployability), are non‑functional requirements (NFR) or quality attributes. While there is no fixed checklist, the ISO‑25010 standard provides a reference.
1 Performance
Performance is the system's responsiveness, measured by latency, throughput, usable capacity, schedulable utilization, data loss, etc. Techniques to improve performance include analyzing demand, optimizing hardware (CPU, memory, I/O, network), improving software (framework choice, caching, avoiding reflection), using vertical scaling, concurrency, and applying Amdahl's law.
2 Reliability
Reliability means consistent quality or performance and can be expressed by MTBF (Mean Time Between Failures). It is measured through fault intervals, code coverage, fitness functions, and ISO‑9001 compliance. Techniques include best engineering practices, mutation testing, and chaos engineering.
3 Availability
Availability is the ratio of uptime to total time, building on reliability. It is often expressed using MTBF and MTTR. Improving availability involves fault detection, rapid intervention, and robust monitoring.
4 Resilience
Resilience (or fault tolerance) allows a system to degrade gracefully rather than crash when problems occur, often using circuit‑breaker patterns. It is hard to quantify numerically.
5 Trustworthiness
Trustworthiness aggregates reliability, availability, resilience, sustainability, recoverability, and robustness, and should be considered as a whole.
6 Scalability
Scalability is the ability to handle increased load within acceptable thresholds, including manual and automatic (elastic) scaling. Techniques involve monitoring CPU/memory, horizontal scaling (adding/removing instances), and vertical scaling (adding resources).
7 Security
Security comprises confidentiality, integrity, authentication, authorization (RBAC, ACL, ABAC), and non‑repudiation. Enhancing security starts with detection, then applying flexible response strategies, preferably using mature security solutions.
8 Interoperability
Interoperability is the ability of a system to communicate with external systems, relying on well‑defined contracts and error handling.
9 Adjustability
Adjustability (or mutability) describes how easily a system can accommodate change. Architects should identify high‑change areas and apply SOLID principles, fitness functions, and modular design.
10 Deployability
Deployability means packaging the system into artifacts (WAR, JAR, Docker image, etc.) that can be deployed in appropriate environments, often facilitated by containerization.
11 Testability
Testability requires controlling component inputs/outputs, keeping components small, and applying practices like TDD.
12 Simplicity
Simplicity is hard to achieve but essential for rapid MVP development; it should not be confused with proof‑of‑concept or R&D prototypes. Reusability also matters.
13 Portability
Portability is the ability to move a system across operating systems, often aided by languages like Java (JVM) or Go (static binaries) and containerization.
14 Usability
Usability includes configurability, localization (i18n), accessibility, and supportability, aiming for intuitive and learnable systems.
15 Extensibility
Extensibility describes how easily plug‑in components can be added, exemplified by OSGi or Eclipse platforms.
16 Antifragility
Antifragility is the system's ability to thrive under stress, errors, or attacks, often achieved through CI/CD, defensive mechanisms, and tools like Netflix's Simian Army.
17 Upgradability
Upgradability is the ability to upgrade a system seamlessly, using version control, blue‑green or canary deployments for zero‑downtime releases.
18 Compliance
Compliance ensures legal use of third‑party tools, adherence to licenses, GDPR, ISO standards, and avoids restrictive licenses like GPL.
19 Cost
Cost considerations cover tool licensing, cloud services, personnel, technical debt, testing, and code quality, emphasizing the need to treat many expenses as investments.
20 Archival
Archival (or auditability support) involves timestamping data, moving old records to history tables, or soft‑deleting with consideration of query performance.
21 Auditability / Traceability
Auditability requires recording critical operations, often using ELK stack or Sleuth‑Zipkin, to enable reconstruction of events and legal evidence.
Top Architect
Top Architect focuses on sharing practical architecture knowledge, covering enterprise, system, website, large‑scale distributed, and high‑availability architectures, plus architecture adjustments using internet technologies. We welcome idea‑driven, sharing‑oriented architects to exchange and learn together.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.