Lecture 2 Flashcards
What does the ‘S’ in SOLID stand for?
Single Responsibility Principle
What does the ‘O’ in SOLID stand for?
Open/Closed Principle
What does the ‘L’ in SOLID stand for?
Liskov Substitution Principle
What does the ‘I’ in SOLID stand for?
Interface Segregation Principle
What does the ‘D’ in SOLID stand for?
Dependency Inversion Principle
What is the purpose of SOLID principles?
To create understandable, readable, and testable code that many developers can collaboratively work on.
What is the Single Responsibility Principle?
A class should have only one reason to change, meaning it should have only one job or responsibility.
What is the Open/Closed Principle?
Software entities should be open for extension but closed for modification.
What is the Liskov Substitution Principle?
Objects of a superclass should be replaceable with objects of its subclasses without altering correctness.
What is the Interface Segregation Principle?
Clients should not be forced to depend on interfaces they do not use.
What is the Dependency Inversion Principle?
High-level modules should not depend on low-level modules. Both should depend on abstractions.
What is a Software Quality Attribute?
A measurable or testable property of a software system indicating how well it satisfies stakeholder needs.
What is a System Quality Attribute?
Describes the overall quality of the entire system including software and hardware aspects.
Give an example of a Software Quality Attribute.
Maintainability, Modifiability, or Testability.
Give an example of a System Quality Attribute.
Availability, Scalability, or Reliability.
What are non-functional requirements?
Qualities, characteristics, and constraints of a system beyond specific functionalities.
What are functional requirements?
Describe what the system does, like user login or order management.
What is the difference between Software and System Quality Attributes?
Software attributes focus on the software’s internal behavior, while system attributes include both software and hardware.
How can you specify a software quality attribute requirement?
Using a scenario with stimulus, source, environment, artifact, response, and response measure.
What are the stakeholders in software architecture according to ISO/IEC/IEEE 42010:2011?
Users, Acquirers, Developers, and Maintainers of the system.
What are Architectural tactics?
Architectural tactics are design decisions or strategies that software architects use to achieve or improve specific quality attributes (like performance, security, modifiability, etc.) in a system
What are tactics?
Tactics, like design patterns, are techniques that architects have been using for years.
What are Quality attribute scenarios?
Quality attribute scenarios are a structured way to define and express non-functional requirements
A complete quality attribute scenario includes:
* Source of stimulus – Who or what generates the event?
* Stimulus – What event occurs?
* Environment – What are the system conditions at the time?
* Artifact – What part of the system is affected?
* Response – What is the system’s reaction?
* Response measure – How is the response measured?
How does patterns differ from patterns?
Tactics are small-scale design decisions to achieve specific quality attributes while patterns are high-level solution templates for common architecture problems. Tactics are narrow and only target on specific concern/quality attribute while patterns are broad and targets to improve system structure