1/37
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
What is software architecture?
The fundamental organization of a system embodied in its components, their relationships to each other and the environment, and the principles guiding its design and evolution.
What are quality attributes (non-functional requirements)?
System properties that describe how well the system performs its functions, including performance, availability, security, modifiability, usability, and testability.
What is a quality attribute scenario?
A structured way to specify quality requirements consisting of stimulus, source, environment, artifact, response, and response measure.
What is a context diagram?
A high-level diagram showing the system boundary and its interactions with external entities in its environment.
What is the 3+1 approach to architectural description?
A method using four views: Module view (static structure), Component & Connector view (runtime behavior), Allocation view (deployment), and Plus (+1) view (scenarios/use cases).
Why do we need multiple architectural views?
Different stakeholders have different concerns, and no single view can capture all architecturally significant information about a complex system.
What is UML in architectural description?
Unified Modeling Language - provides standardized notation for documenting software architecture across different views and diagrams.
What are architectural styles?
Named collections of architectural design decisions that constrain architectural elements and their relationships (e.g., layered, pipe-and-filter, client-server).
What are architectural tactics?
Design decisions that influence specific quality attributes - concrete techniques to achieve quality goals (e.g., redundancy for availability, caching for performance).
What is the "rational design process" paradox?
The idea that while we should present design as a rational process, the actual design process is iterative, messy, and involves backtracking - but we document it as if it were linear.
Name key availability tactics.
Fault detection (ping/echo, heartbeat), fault recovery (active/passive redundancy), fault prevention (removal from service).
Name key performance tactics.
Resource demand (manage sampling rate, limit event response), resource management (introduce concurrency, maintain copies), resource arbitration (scheduling policies).
What is the intensionality/locality thesis?
Design decisions should be localized to single modules, and the intent (what) should be separated from the implementation (how).
What is the ③①② process for design problems?
③ Identify what varies, ① Encapsulate variation behind interfaces, ② Program to interfaces not implementations.
Strategy Pattern
Define a family of algorithms, encapsulate each one, and make them interchangeable at runtime.
Observer Pattern
Define a one-to-many dependency so that when one object changes state, all dependents are notified automatically.
Abstract Factory Pattern
Provide an interface for creating families of related objects without specifying their concrete classes.
Façade Pattern
Provide a unified interface to a set of interfaces in a subsystem, making the subsystem easier to use.
What is architectural prototyping?
Creating experimental implementations to explore, validate, or communicate architectural decisions before full implementation.
When should you use architectural prototyping?
When analytical methods are insufficient, when exploring new technologies, or when validating performance assumptions and design decisions.
How does architectural prototyping differ from regular prototyping?
Focuses specifically on architectural concerns (quality attributes, structural decisions) rather than functional requirements or user interfaces.
What is the emerging vs. implicit architecture challenge in agile?
Balancing the agile principle of emerging design with the need for deliberate architectural decisions to avoid implicit, poor architectural choices.
How can architecture work in agile development?
Through lightweight documentation, architectural spikes, continuous refactoring, and regular architecture reviews integrated into sprints.
What are the risks of "agile in distress"?
Technical debt accumulation, architectural erosion, and inability to scale when architecture is completely emergent without guidance.
What is ATAM (Architecture Tradeoff Analysis Method)?
A scenario-based evaluation method that identifies architectural risks, non-risks, sensitivity points, and tradeoffs through stakeholder participation.
What is aSQA (architectural Software Quality Assurance)?
A lightweight, continuous evaluation technique using architectural metrics and automated analysis to monitor architectural quality.
What are the main goals of architectural evaluation?
Identify risks early, validate quality attribute requirements, compare architectural alternatives, and communicate architectural decisions.
What is a software ecosystem?
A collection of software projects that are developed and co-evolve together in the same environment, sharing common platforms, technologies, or business models.
What are the three structures in ecosystem analysis?
Software structures (technical dependencies), business structures (value networks), and organizational structures (governance and relationships).
What determines ecosystem health?
Activity levels, diversity of contributors, platform stability, and ability to attract and retain participants.
What defines a legacy system?
An older system that remains in use despite being based on outdated technologies, often business-critical but difficult to maintain or modify.
What are the main approaches to legacy system modernization?
Big bang replacement, gradual migration, wrapping/encapsulation, and maintenance-only approaches.
What ethical considerations exist in software engineering?
Responsibility for system consequences, user privacy, security obligations, and the impact of technical decisions on society.
What is architecture erosion?
The gradual degradation of architectural integrity as systems evolve, where implementation deviates from intended design.
What is the Symphony approach?
A view-driven architecture reconstruction method using source views (existing artifacts), target views (architecture-as-implemented), and hypothetical views (architecture-as-designed).
What is reverse engineering vs. reengineering?
Reverse engineering analyzes existing systems to understand their architecture; reengineering involves both reverse engineering and forward engineering to create improved systems.
What are polymetric views?
Visualization technique combining software metrics with visual representations to understand system structure and evolution patterns.
What is dynamic analysis in architecture reconstruction?
Analyzing runtime behavior through execution traces, profiling, and monitoring to understand the actual component interactions and performance characteristics.