Quantum Software Architecture Design Course

Written by: Igor Korotach

Section 2

Architectural Quality Attributes & Styles 

Small recap

Architecture quality attributes & Framework

The architecture framework is divided into 3 parts:

  1. Scenarios, quality attributes, and requirements/contraints
  2. App type
  3. Architectural style, also known as architectural patterns

What are the quality attributes?

  • Availability
  • Maintainability
  • Performance
  • Reliability
  • Reusability
  • Security
  • Scalability

Testing Factors

Quality Attr. Definition Test Criteria
Availability Defined as the proportion of time that the system is up and working Can be measured as a percentage of total system downtime over a predefined time period
Maintainability ​Defined as the ability to undergo changes as required ​Can be measured by calculating the time it takes to undergo the changes as required
Performance An indication of the responsiveness of a system to execute our commands within a given interval of time Can be measured in terms of latency or throughput
Reliability Defined as the chances that a product will perform its intended behaviour under the defined circumstances Can be measured in terms of the correlation between two scores of test-retests
Reusability If we can use the product, or some specific part of the product, in the production of any other product Can be tested by evaluating the software system’s functionality in different scenarios, testing modularity and compatibility
Security Measures taken to protect the system and its resources from unauthorized access and attacks Can be tested via penetration testing, security code reviews, security testing tools, security assessments, user acceptance testing, and production monitoring

Testing Factors

Quality Attr. Definition Test Criteria
Scalability Defined as a scale of the system’s increasing or decreasing capability Can be measured in terms of its capacity to extend or reduce the quantity of user requests
Load balancing Defined as a technique used to distribute workloads evenly across multiple computing resources to optimize resource utilization, increase reliability, and improve scalability Can be measured by evaluating the distribution of incoming requests among the servers, response time, resource utilization, and the reliability of the system
Caching The temporary storage of frequently accessed data in a fast-access memory to reduce the number of expensive I/O operations, speed up access to the data, and reduce response time Can be measured by evaluating the hit rate (ratio of cache hits to total requests), response time, and reduction of I/O operations

Constraints in Software Design

  • Performance
  • Security
  • Tech Stack
  • 3rd-party integrations
  • Budget
  • Time to market
  • Operational environment (legacy systems, constrained physical ecosystem)
  • Legal environment

Coming back to application types...

Mobile Apps

Special Traits & Constraints

  • Devices with limited hardware resources
  • Offline access expected
  • Special focus on UX
  • Unique technological stack
  • Unique deployment pattern
  • Security mostly provided by the mobile ecosystem (OS/App Level configurations)

Rich Client/Desktop Apps

Special Traits & Constraints

  • Processing power usually stays on user-device
  • Offline access expected
  • Should be optimized for multiple different hardware specs (e.g. Intel vs Apple Silicon)
  • Unique technological stack
  • Security should be implemented separately

Web Apps

Special Traits & Constraints

  • Processing is usually done on the server
  • Mostly support always-connected scenarios
  • Should be adapted for multiple browser configurations
  • Security is implemented mostly by browser sandboxing

Rich Internet Apps

Special Traits & Constraints

  • Processing is done both on server and in browser
  • Mostly support always-connected scenarios
  • Should be adapted for multiple media formats
  • Security is implemented mostly by browser sandboxing

Service Apps

Special Traits & Constraints

  • Processing is usually done only on the server
  • Support only always-connected scenarios
  • Security is implemented on the server

Cross-cuting concerns!

What the hell are those cross-cutting concerns?

Cross-cutting concern

In aspect-oriented software development, cross-cutting concerns are aspects of a program that affect several modules, without the possibility of being encapsulated in any of them. These concerns often cannot be cleanly decomposed from the rest of the system in both the design and implementation

Popular cross-cutting concerns

  • Logging 
  • Authentication & Authorization
  • Communication
  • Caching
  • Error handling
  • Synchronization 
  • Data validation
  • Memory Management

Next time. Architectural Patterns

Thanks for your attention. You've been awesome!

Questions?

  • Presentation link: https://slides.com/emulebest/architecture-2

Quantum Architecture Course - 2

By Igor Korotach

Quantum Architecture Course - 2

  • 105