software architecture + architectural styles Flashcards
architecture
set of structures needed to reason about the system
in which four ways can we describe architecture
formal notations; mathematical
architecture description languages; e.g. backus naur form
box and line
ball and socket; semiformal development of box and line
what are the 3 steps in architectural design
structuring the system into key components and the communication between them
control modelling to organise the system
modular decomposition of sub systems
what are the 4 steps we take to identify sub systems and their interfaces
identify major functions the system should provide
group together similar functions to get bigger sub systems
can decompose these further
specify interfaces
what should subsystem and component interface descriptions include
a name
operations within it
exception handlers
non-functional properties
ball in ball and socket
provided
provides a service
does the processing
socket in ball and socket
required
service user/caller
control model
controls the flow between subsystems
what are the two types of control models
centralised control and event based systems
centralised control
one subsystem has overall responsibility for control
what are the two types of centralised control
call return model
manager model
manager model
for concurrent systems
the controller controls the stopping and starting and coordination of all system processes
event based systems
each subsystem can respond to externally generated events from other subsystems or the systems environment
call return model
for sequential systems
hierarchical; main() starts the entire system and control is passed down the hierarchy
what does architectural choice usually affect
non functional requirements
what are the 6 architectural concepts that we could trade-off on
performance
security
safety
availability
maintainability
performance
localise critical operations and minimise communications
larger components
security
layered architecture with critical assets in the inner layers
don’t want functionality close to communication or the ui as this makes the system easier to hack
safety
localise safety critical features in a small number of subsystems
keeping it localised makes it harder to hack
availability
redundant mechanisms and components for fault tolerance so if a component crashes its copy can be used
maintainability
fine grain replaceable components which are easy to understand and not highly coupled
architectural styles
specific templates which are general and reusable
what are 5 common architectural styles
input-output-process
plug in
layered
repository
client server
input-output-process
monolithic systems
business logic is decoupled from the ui