Lecture 3 Flashcards
What are software architecture tactics?
Low-level, reusable architectural decisions that guide how a system fulfills quality attributes.
Why are software architecture tactics important?
They improve system quality, provide structured problem solving, and enhance communication and reusability.
What is a quality attribute scenario?
A structured way to specify quality attribute requirements using stimulus, source, environment, artifact, response, and response measure.
What are two general approaches to achieving quality attributes?
Design Tactics and Architectural Patterns.
What is availability in software systems?
The degree to which a system is operational and accessible when required for use.
What are tactics to achieve high availability?
Redundancy
* Have a backup ready if something fails.
Failover Mechanism
* Automatically switch to a backup system without
interrupting the service.
Load Balancing
* Distribute the user load across multiple servers
Health Monitoring
* Continuously check if the system parts are healthy and
working
Scheduled Maintenance
* Plan downtimes during low-usage hours.
Automatic Restart
* Systems should auto-restart if they crash
What is performance in software architecture?
How quickly a system responds to events, including timing and resource usage.
Name common performance tactics.
Caching, Load Balancing, Parallelism/Concurrency.
What is security in software systems?
The ability to protect data and resources against unauthorized access or attacks.
What are the key characteristics of security?
Confidentiality, Integrity, Availability, Authentication, Authorization.
What is modifiability?
How easily a software system can be changed or adapted after implementation.
What supports modifiability?
Good modularity, clear interfaces, code readability, and documentation.
What is testability?
How effectively and efficiently a system or its components can be tested.
How can you improve testability?
Use modular code, avoid hard-coded dependencies, add logging, use dependency injection.
What is usability?
How easy it is for users to accomplish tasks and how well the system supports the user.
What tactics support usability?
UI design, feedback mechanisms, accessibility.
What tactics support availability?
Fault Tolerance, Monitoring and Alerting, Disaster Recovery.
What tactics support maintainability?
Modularity, Documentation, Testability.
What tactics support scalability?
Horizontal Scaling, Vertical Scaling, Elasticity.
Name a common mistake in software design.
Not defining clear requirements, not testing the design, or not documenting the design.
What are the 7 important system qualities
❖ Availability
❖ Performance
❖ Security
❖ Modifiability
❖ Testability
❖ Usability
❖ Sustainability