Architectural synthesis Flashcards
What is an architectural view?
A representation of a system from the perspective of a related set of
concerns [IEE00] (e.g. a concern in a distributed system is how the software components are allocated to network nodes). This representation is comprised of a set of system elements and the relationships associated with them [CBB+02].
What is an architectural pattern?
Architectural pattern = architectural style.
Pattern = focusing on problem-solution
Style = focusing on solution, not context
What is a viewpoint?
A viewpoint focuses on relevant concerns
e.g. how is computation distributed over the nodes
There exists 8 common used viewpoints, what are they?
Component interaction
Distribution
User interaction
Language extension
Adaptation
Data centered
Data flow
Layered
What is the layered view about?
In the Layered View the system is viewed as a complex heterogeneous entity that can be decomposed into interacting parts. The individual parts of the system are components that are decoupled as much as possible from one another. The interaction mechanisms between the components are implemented through
connectors that include appropriate interfaces, states, and interaction protocols.
——————————-
What are the parts that make up the whole system?
———————————–
How do these parts interact with each other?
——————————
How do the parts perform their functionality and still remain decoupled from each
other?
——————————-
How are the quality attributes of modifiability, portability, and performance
supported?
Which pattern can be used with the layered view?
Layered architecture
What is the layered architecture pattern about?
A layer
- may only access the layer(s) below it
–Open = can depend on any lower layer
–Closed = only on the next one
- provides services to the layer above it through a well defined interface
- contains elements work on the same abstraction level
What is the data flow view about?
What are the elements that perform the transformations?
——————————————
What are the elements that carry the streams of data?
—————————————–
How are the two aforementioned types of elements connected to each other?
—————————————-
How are the quality attributes of modifiability, reusability, and integrability supported?
Which patterns can be used with the data flow viewpoint?
pipes and filters
What is the pipes and filters pattern about?
a complex task is divided into several sequential subtasks. Each of these sub-tasks is implemented by a separate, independent component, a filter,
which handles only this task. Filters have a number of inputs and a number of outputs and they
are connected flexibly using pipes but they are never aware of the identity of adjacent filters.
———————————-
- transform input data
- consume and produce data incrementally
- are composed using pipes which stream data
———————————
The use of PIPES
AND FILTERS is advisable when little contextual information needs to be maintained between
the filter components and filters retain no state between invocations.
What is the data-centered view about?
In the Data-centered View the system is viewed as a persistent, shared data store that is accessed and modified by a number of elements. The data store and the elements that access it are components. The data store is independent of
the components, and the components are usually independent of one another. It is possible that
there is more than one data store. The elements that transfer data written or read from the data
stores are connectors that are attached to the data store(s) and the accessors.
————————————–
* How is the shared data store created, accessed, and updated?
* How is data distributed?
* Is the data store passive or active, i.e. does it notify its accessors or are the accessors
responsible of finding data of interest to them?
* How does the data store communicate with the elements that access it?
* Do the accessor elements communicate indirectly through the shared data or also
directly with each other?
* How are the quality attributes of scalability, modifiability, reusability, and integrability
supported?
Which pattern can be used with the data centered viewpoint?
Shared repository, active repository, blackboard
What is the shared repository pattern about?
In the SHARED REPOSITORY pattern one component of the system is used as a central data store, accessed by all other independent components. This SHARED REPOSITORY offers suitable means for accessing the data, for instance, a query API or language. The SHARED REPOSITORY must be scalable to meet the clients’ requirements, and it must ensure data consistency. It must handle problems of resource contention, for example by locking accessed data. The SHARED REPOSITORY might also introduce transaction mechanisms.
———————————————-
Advantage:
- you don’t have to send the data around (compare with micro-services?)
——————————————–
Challenges:
scalability, data consistency, resource contention handling, … as
needed
What is the adaptation viewpoint about?
In the Adaptation View the system is viewed as a core part that remains invariable and an adaptable part that either changes over time or in different versions of a system. The two basic types of elements in this view are the invariable components and the adaptable
components (these are often called variation points). These two kinds of components communicate with each other through connectors that have clearly-specified interfaces.
—————————————–
* How can a system adapt to evolution over time or to multiple different versions of a basic
architecture?
* What is the system functionality that is more likely to change and what will possibly remain
invariable?
* How do the invariable parts communicate with the adaptable parts?
* How are the quality attributes of modifiability, reusability, evolvability, and integrability
supported?
Which patterns can be used with the adaptation viewpoint?
Microkoernel
Reflection
Interceptor
Plugin architecture
What is the Microkernel pattern about?
A MICROKERNEL realizes services that all systems, derived from the system family, need and
a plug-and-play infrastructure for the system-specific services. Internal servers (not visible to clients) are used to realize version-specific services and they are only accessed through the MICROKERNEL. On the other hand, external servers offer APIs and user interfaces to clients by using the MICROKERNEL. External servers are the only way for clients to access the MICROKERNEL architecture
What is the plugin architecture pattern about?
The core application defines a well-defined set of interfaces or extension points that plugins can hook into. These extension points represent specific areas or functionalities within the application where plugins can provide additional functionality or behavior. The plugins, on the other hand, implement the defined interfaces or extension points to extend the functionality of the application
What is the language extension view about?
In the Language Extension View the system is viewed as a part that is native to the software/hardware environment and another part that is not. The native part of the application and the non-native part are components. These communicate
indirectly through another type of component, an interpreter component that “translates” the latter into the former. The connectors between these components are data that contain the program
instructions in the non-native language, as well as the internal state of the non-native part.
————————————————–
* How can a part of the system that is written in a nonnative language be integrated
with the software system?
* How can the non-native part be translated into the native environment?
Which patterns can be used with the language extension viewpoint?
Interpreter
virtual machine
rule-based system
What is the interpreter pattern about?
An INTERPRETER for the language is provided, which provides both parsing facilities and an
execution environment. The program that needs to be interpreted is provided in form of scripts which are interpreted at runtime. These scripts are portable to each platform realization of the INTERPRETER. For instance, the INTERPRETER can define a class per grammar rule of the language. The parser of the interpreter parses language instructions according to these rules and
invokes the interpretation classes.
What is the user interaction view about?
- How is the user interface decoupled from the application logic?
- How are the quality attributes of usability, modifiability, and reusability supported?
- What is the data and the application logic that is associated to the user interface?
Which patterns can be used with the interaction viewpoint?
MVC
What is the MVC pattern about?
The system is divided into three different parts: a Model that encapsulates some application data
and the logic that manipulates that data, independently of the user interfaces; one or multiple. Views that display a specific portion of the data to the user; a Controller associated with each. View that receives user input and translates it into a request to the Model. Views and Controllers constitute the user interface. The users interact strictly through the Views and their Controllers, independently of the Model, which in turn notifies all different user interfaces about updates.
What is the component interaction view view about?
In the Component Interaction View the system is viewed as a number of independent components that interact with each other in the context of a system. The components retain their independence, since they merely exchange data but do not directly
control each other. The components interact with each other through connectors that pass data
from one to another.
————————–
* How do the independent components interact with each other?
* How are the individual components decoupled from each other?
* How are the quality attributes of modifiability and integrability supported?