Hoofdstuk 8 - Software Architecture Flashcards
What’s the role of a software architecture?
◦ Maps requirements onto system structure
◦ A description of components and the connectors between them specified in a view to show the relevant functional and non-functional properties.
What is a component? And what’s a connector?
◦ A component is an encapsulated part of a software system with designated interface, either a module/class/object/set/subsystem
◦ A connector is a connection between two components, either static (in source code) or dynamic (temporary invocations)
What is coupling? What is cohesion? What should a good design do with them?
◦ Coupling is a measure of the strength of a connector (how strongly it is connected)
◦ Cohesion is a measure of how well the parts of a component belong together
◦ Both help us evaluate architecture trade-offs, it’s best to minimize coupling and maximize cohesion
What is a pattern? Why is it useful for describing architecture?
◦ A pattern is the essence of a solution to a recurring problem in a particular context
◦ It’s easy to recall and customize, it documents existing experiences, it states when to apply and lists trade-offs
◦ It allows experts to have deep discussions in a few words
Can you name the components in a 3-tiered architecture? And what about the connectors?
◦ The database, domain and application layers
◦ The Database Connection and the Application Logic
Why is a repository better suited for a compiler than pipes and filters?
Compiler problem: needs flexible integration of partial solutions
What’s the motivation to introduce an abstract factory?
Need for a class hierarchy with abstract roots representing a family of objects
→ concrete leaves representing particular configurations
Can you give two reasons not to introduce an Adapter (Wrapper)?
◦ If separately developed classes evolve much, adapter must change accordingly
◦ overhead in maintenance & performance
What problem does an abstract factory solve?
Invoking constructors implies tight coupling with concrete leaves instead of abstract roots
List three trade-offs for the Adapter pattern.
◦ How much adapting is required?
◦ How will the separately developed classes evolve?
◦ Does the merging work in one direction or in both directions?
◦ How much overhead in performance and maintenance can you afford?
How do you decide on two architectural alternatives in scrum?
By using Spikes (a.k.a. Knowledge Acquisition Stories/Proof-of-concept)
What’s the distinction between a package diagram and a deployment diagram?
◦ A package diagram decomposes a system into packages
◦ A deployment diagram shows the physical lay-out of run-time components on hardware nodes
Define a sensitivity point and a trade-off point from the ATAM terminology
◦ Sensitivity point: property of 1 or more components that is critical for achieving a quality attribute response
◦ Trade-off point: involves 2 or more conflicting sensitivity points