Description
Election of Architectural Characteristics
Begin by researching various architectural characteristics discussed in the lecture.
1) Choose seven architectural characteristics that you believe are fundamental for the software system described in the Kata below. These characteristics should be selected based on their importance in shaping the architecture of a system and should reflect a balance between technical and non-technical aspects.
2) For each of the selected characteristics, provide a brief explanation of why you believe it is essential in architectural design. Give possible scenarios to support your arguments.You may consider factors such as the relevance to the project’s goals, impact on end-users, or industry standards.
3) Reflect on the trade-offs involved in prioritizing these characteristics. Discuss any potential drawbacks or challenges in emphasizing these characteristics.
————–
An auction company wants to take their auctions online to a nationwide scale–customers choose the auction to participate in, wait until the auction begins, then bid as if they were there in the room, with the auctioneer
Users: scale up to hundreds of participants (per auction), potentially up to thousands of participants, and as many simultaneous auctions as possible
Requirements:
auctions must be categorized and ‘discoverable’
auctions must be as real-time as possible
auctions must be mixed live and online
video stream of the action after the fact
handle money exchange
participants must be tracked via a reputation index
Additional Context:
auction company is expanding aggressively by merging with smaller competitors
if nationwide auction is a success, replicate the model overseas
budget is not constrained–this is a strategic direction
company just exited a lawsuit where they settled a suit alleging fraud
Unformatted Attachment Preview
Software Architectural
Characteristics
Operational Architecture Characteristics
• Availability
The system should be available 24/7 with minimal downtime.
• Continuity
The system should have disaster recovery capabilities to restore
restore service quickly after failures.
• Performance
The system should be stress tested for peak usage and have good
good response times under load.
• Recoverability
The system should recover quickly from failures to meet business
business continuity needs.
• Reliability/Safety
The system should be fail-safe if lives depend on it.
• Robustness
The system should handle errors gracefully and work even if
connectivity is lost.
• Scalability
The system should scale up as usage increases.
Structural Architecture Characteristics
Configurability
Extensibility
Installability
Leverageability/Reuse
Localization
Maintainability
Cross-Cutting Architecture Characteristics
• Accessibility
• Legal
Access to all your users, including those with disabilities like colorblindness or
hearing loss.
• Archivability
• Privacy
Will the data need to be archived or deleted after a period of time?
• Authentication
Any legislative constraints or regulations regarding the system operating,
reservation rights application development?
Ability to hide transactions from internal company employees.
• Security
Security requirements to ensure users are who they say they are.
• Authorization
Security requirements to ensure users can access only certain functions within
•
the application.
Does the data need to be encrypted in the database? Encrypted for network
communication between internal systems? What type of authentication
needs to be in place for remote user access?
Usability/achievability
Level of training required for users to achieve their goals with the
application/solution.
ISO Definitions
• Performance efficiency
• Security
Measure of the performance relative to the amount of resources used under known conditions. This
includes time behavior, resource utilization and capacity.
• Compatibility
Degree the software protects information and data so that people have the degree of data access
appropriate to their levels of authorization. This family of characteristics
includes confidentiality, integrity, nonrepudiation, accountability and authenticity.
Ability of exchanging information with other systems or perform its required functions while sharing the •
same environment. It includes coexistence and interoperability
• Usability
Users can use the system effectively, efficiently, and satisfactorily for its intended purpose. It
includes appropriateness recognizability, learnability, user error protection and accessibility.
• Reliability
Degree to which a system functions under specified conditions for a specified period of time. This
characteristic includes maturity, availability, fault tolerance, and recoverability.
Maintainability
Represents the degree of effectiveness and efficiency to which developers can modify the software. This
characteristic includes modularity, reusability, analyzability, modifiability, and testability.
• Portability
Degree to which developers can transfer a system from one environment to another. This characteristic
includes the subcharacteristics of adaptability, installability and replaceabili
Trade-Offs and Least Worst
Architecture
Architects should be aware of trade-offs between different architecture
characteristics. Trying to optimize for too many can lead to complexity and lack of
focus. Instead, aim for the least worst architecture that meets core needs.
“Never shoot for the best architecture, but rather the least worst architecture.”
Architecture Characteristics Influence Design
Specify Non-Domain
Requirements
Influence Structural Design
Architecture characteristics specify
operational and design criteria for how to
implement domain requirements.
Architecture characteristics require special
structural considerations to support their
capabilities.
Add Complexity
Each architecture characteristic adds
complexity that must be managed by the
architect.
Require Tradeoffs
Iterative Refinement
Tradeoffs must be made between architecture characteristics due to
their conflicting impacts.
Architectures should be designed iteratively to account for
undiscovered impacts.
Differentiating Features
• Specifies non-domain design considerations • Critical for application success
• Influences structural aspects of the design
Identifying Architectural Characteristics
Extracted from domain concerns
Extracted from requirements
Translate domain concerns like user satisfaction into
architectural characteristics
Analyze requirements to identify key architectural characteristics
Identifying the right architectural characteristics is critical for designing a good architecture. Extract them from domain
concerns, requirements, and implicit domain knowledge.
Extracting from requirements
Explicit Characteristics
Appear in the requirements documentation as required specifications
For instance it might specify a need for scalability as the number of users grows
It may also specify elasticity for handling bursts of users. Might be described as Scalability vs Elasticity
Implicit Characteristics
Many characteristics are not specified in the requirements but are important aspects of the desig
such as security.
How Many characteristics should be identified?
The Vasa Ship
The Vasa was a Swedish warship built between 1626 and 1628. It was one of the most
powerfully armed vessels in the world at the time. However, it was overly unstable and
sank on its maiden voyage in 1628.
Cyclomatic complexity
Definition
Calculation
Use cases
Cyclomatic complexity measures the number of
linearly independent paths through a program’s
source code.
Cyclomatic complexity is calculated by creating a graph
of the program’s control flow and counting the number
of linearly independent paths.
Cyclomatic complexity helps developers understand
code complexity and maintainability.
CC = E-N+2
public void decision(int c1, int c2) {
if (c1 < 100)
return 0;
else if (c1 + C2 > 500)
return 1;
else
return -1; }
What is a good CC?
Generally under 10,
If too high, even great code coverage won’t make the code salvageable
Fitness Functions
Any mechanism that provides an objective integrity assessment of some architectural characteristic or combination of characteristics
Cyclic Dependencies
Evaluation of the modularity characteristic
Each Module in the example uses a piece of another module
This eliminates the possibility of a developer using a singular module in
another project without using the whole software
Introduction to
Simian Army
The Simian Army is a suite of tools created by Netflix to induce
various kinds of failures into their cloud infrastructure. By randomly
shutting down instances and services, Netflix is able to test their
systems’ ability to survive inevitable real-world failures and
minimize downtime.
Chaos Monkey
Randomly disables production instances
Tests fault tolerance
Catches weaknesses
Chaos Monkey induces failures so Netflix can build fault tolerance and resilience.
Improving Resilience
By constantly triggering failures like latency delays and instance outages, the Netflix Simian
Army helps improve the cloud platform’s fault tolerance and ability to automatically recover
without customer impact.
Simulating Outages
Chaos Gorilla is a tool developed by Netflix that induces automated failures of entire AWS availability zones. By randomly disabling availability zones, Chaos
Gorilla allows Netflix to test the redundancy and resiliency of their cloud infrastructure across regions.
“With the ever-growing Netflix Simian Army by
our side, constantly testing our resilience to all
sorts of failures, we feel much more confident
about our ability to deal with the inevitable
failures that we’ll encounter in production and
to minimize or eliminate their impact to our
subscribers.”
Purchase answer to see full
attachment