===================================================================
Implementation Architecture - Focuses on how the system is built
Which technological elements are needed to implement the system
Software packages, libraries, frameworks, classes, ...
Addresses non-runtime requirements &quality attributes:
configurability, testability, reusability, ...
Components and connectors reflect software entities and their
relationships at the level of source and binary code
Two types of components:
1.Application - are responsible for implementing domain-level responsibilities
2.Infrastructure - are needed to make the system run but are not related to the application
functionality
Often an infrastructure component acts as a “container” for application components
A container component provides an execution environment for the contained components and
manages their lifetime
Connectors represent a “uses” relation
Connectors
API call: Acomponent calls a method in another component(possibly
only if both components are in the same process)
Callback: The caller passes a reference of an object to the callee. The
callee invokes a method on that object later.
Network protocol: Needed when implementation components reside
in different processes on networked machines. Components need to
agree on a common protocol or use a standardized protocol
OS signals: Communication between processes running on the same
machine
Ports are used to represent the communication between inside and
outside of a component
How to design the implementation architecture?
Define application components
Define infrastructurecomponents
Define interfaces
Behaviour design and verification
Mapping of conceptual components to implementation components:
One-to-one
One-to-many
Many-to-one
Two types of prototypes: technical and executable
Technical prototypes - Quickly developed to serve their purpose, but not at product quality
level
Executable prototypes are a skeleton of the system itself
Mock-ups are special technical prototypes, especially for user interfaces
Serve as the communication tool with the stakeholders (and within
the team)
Should give an overview on how the system will look like
But does not contain any functionality
===========================================================================
Certain patterns and structures appear very often, there fore architectural patterns are discovered,
not invented
Architectural style defines the structural pattern, which consists
of the components that are used ,the connections that can be used, set of constraints how they
can be used
Architectural styles are also named architectural pattern
Classification of styles
Data-flow architectures
Data-centered architectures
Abstraction layer architectures
N-tier architectures
Notification architectures
Remote invocation and service architectures
Heterogeneous architectures
Data-flow architectures
Data enter the system and then flows through the componentsone at a time
Data-flow architectures can be classified into batch-sequential
architectures and pipes and filters
In the batch sequential style each step runs to completion
before the next step starts
Conceptually filters consume data from input and write data to output (Variations: structural
andcommunicational)
Data-centered architectures
These architectures have the goal of achieving the quality of
integrability of data
The means of communication distinguishes the two subtypes: repository and blackboard
Blackboard: the system sends notification and data to subscribers
when data of interest changes, and is thus active
One of the most well-known examples of the data-centered
architecture, is a database architecture
Abstract layer architectures
Layering: the structure of the system is organized into set of layers
Each layer is on the top of another layer
Well-defined interfaces between layers
e.g. Operating systems, Virtual machines, Interpreter, Peer-to-peer
The N-tier architecture is the modern client-server architecture
Originated with business applications
Through the popularity of the Web today typically related with
Web applications
3-tier architectures: Presentation, application, data
N-tier architectures are typically data-centric architectures
Rich clients
A rich client contains full knowledge of the application
It has access to the full suite of UI mechanisms on the platform
Two types of rich clients
Clients for standard applications using a standard protocol
(e.g. e-mail clients)
Clients for custom applications using a custom protocol
Thin clients
Thin clients have little knowledge of the application
The complete application knowledge is on the server
Most notably: Webclients
Notification architectures
Architectures where information and activity is propagated by a
notification mechanism
Also called: publish-and-subscribe
Other terminology: listeners and callbacks
===================================================================
Architectural Styles part 2
Network-Centered Style
*Client-Server - Theclient uses a service, The server provides a service
Separation of concerns (SoC)
Functionalityis clearly split into separate components
Twobasictypesoftopologyoftheserver
Single, centralised serveror
Multiple, distributedservers
Centralized servers are easier to administer (install,deploy updates,
maintain, monitor,...)
Distributed servers scale better,but could introduce complexity
Two basic types of scaling:
Vertically, byincreasingthecomputingpowerofasinglemachine (scaleup)
Horizontally, byaddingmoremachines(scaleout)
If the client-server communication is stateful,the server keeps track of the application state
If the client-server communication is stateless,the client is responsible
to keep track of the application state
Cloud Computing - The server is no longer in th eorganizations network,but somewhere in the
Internet
*Peer topeer
Each client is a server at the same time,called peer
Peer topeer
Separation between client and server is removed
Centralized peer to peer and Hybrid peer to peer
Each node is client, as well as server
Remote invocation and service architectures
A client component invokes a method(function)on a remote component
Interceptor - Separate functionality into a separate component
GUI Architectures
ModelViewController (MVC)
==================================================================
Distributed Architectures - Main goal: Scalability
Parallel computing vs. distributed computing
In parallel computing all component share a common memory, typically threads within a single
program
In distributed computing each component has it own memory
Typically in distributed computing the individual componentsare
connected over a network
Share Nothing Architecture
No centralised data storage
Can scale almost infinitely
Used since the beginning of the 80ies, popularised by Google
Only a few systems allow for such an architecture
Group serialisation
Transform an object into a byte array (and back)
Distributed locks
Restrict access to shared resources to only a single node at a time, E.g. allow only a single node to
write to a file
e.g. Blackboard
Barriers
Specific type of distributed lock
Sychronise multiple nodes
Distributed FileSystems
Virtual file system distributed over multiple machines
Sharding
Split the data horizontally
-------
Asynchronous Architectures
Queue and worker architecture
Stream processing - Continuous stream of incoming requests
---
Lambda Architecture
Large amount ofdata
This can also be called a incremental architecture
---
Kappa Architecture
The Lambda Architecture is relatively complex
Most of the problems can be solved via a streaming approach
=========================================================
Which operation should a service execute?
⇒ This is method information
What data should be manipulated?
⇒ This is scoping information
CompetingArchitectures
Resource-Oriented Architectures (RESTful)
Service Oriented Architectures(SOA)
REST-RPC Hybrid Architectures
WSDL (Web Service Description/Definition Language) - XML format to specify the
operations of a service
SOAP (SimpleObject Access Protocol) - one-way, stateless protocol to transfer XML data
to a single receiver (since SOAP 1.2 there can be more receivers)
Binding of Services:
Development-time binding vs. runtime binding
Typical service (component) types in SOA systems:
Application frontend - typically not a service, initiate operation and receive results
Basic services - they build the foundation
Intermediary services - adapters and facades to add functionality, typically stateless
Process centric services - implement the business logic, typically manage the process
state
Public services - for integration, higher levelfunctionality
SaaS Idea
An application is made available via a service interface. The application is hosted by a service
provider via the internet
Microservices
Services are developed and deployed independently from each other
Don't use for small simple systems