04 Software Architecture Flashcards
what is stakeholder communication
discuss system without confusing details
software architecture components
identify structure of software system with a set of interacting components and design guiding principles
what is project planning
high level architecture view
what is large scale resue
architecture tat may be reusable across a range of systems
why is software architecture important
- affects performance, robustness, distributability and maintainability
- show how system is organised and how components interoperate
- refactoring system architecture is expensive as many components will be affected
architecture decision factors
- non functional characteristics
- affects all users - product lifetime
- long life = need architecture to be evolvable - software reuse
- save time/effort but may constrain architectural choices - number of users
- support quick scale and down to prevent performance degrade - software compatibility
- adopt products in different system limit architectural choices
types of software architectural patterns
- model view controller MVC
- layered
- repository
- client server
- peer to peer
- pipe and filter
- plugin
model view controller MVC pattern
divides system into 3 components
model: data store
view: data representation
controller: server
user use controller
controller manipulate model
model updates view
user sees updated view
when should we choose MVC pattern
- when multiple ways to view and interact with data are needed.
- when future requirements for interactions are unknown
MVC pattern advantages and disadvantages
advantages
- allow data to change independently of its representation and vice versa
- present data in different ways
disadvantages
- may involve additional code and complexity
layered pattern
- organises system into layers with associated functions each
- layer only provides services to layer above it
- lowest layer is the core service
- when a layer changes, only adjacent layers affected
when should layered pattern be used
- when building new facilities on top of existing systems
- development spread across multiple team responsible for a layer each
layered pattern advantages and disadvantages
advantages
- able to replace entire layer with interface maintained
- redundant facilities provide at each layer
disadvantages
- clean separation of layers is difficult
repository pattern
large amount of shared data held in central database that can be accessed by all subsystems
components only communicate with the repository
when should repository pattern be used
- large volume of data generated and stored for a long time
- when inclusion of data in repository triggers actions in data-driven system