04 Software Architecture Flashcards

1
Q

what is stakeholder communication

A

discuss system without confusing details

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

software architecture components

A

identify structure of software system with a set of interacting components and design guiding principles

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

what is project planning

A

high level architecture view

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

what is large scale resue

A

architecture tat may be reusable across a range of systems

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

why is software architecture important

A
  1. affects performance, robustness, distributability and maintainability
  2. show how system is organised and how components interoperate
  3. refactoring system architecture is expensive as many components will be affected
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

architecture decision factors

A
  1. non functional characteristics
    - affects all users
  2. product lifetime
    - long life = need architecture to be evolvable
  3. software reuse
    - save time/effort but may constrain architectural choices
  4. number of users
    - support quick scale and down to prevent performance degrade
  5. software compatibility
    - adopt products in different system limit architectural choices
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

types of software architectural patterns

A
  1. model view controller MVC
  2. layered
  3. repository
  4. client server
  5. peer to peer
  6. pipe and filter
  7. plugin
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

model view controller MVC pattern

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

when should we choose MVC pattern

A
  1. when multiple ways to view and interact with data are needed.
  2. when future requirements for interactions are unknown
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

MVC pattern advantages and disadvantages

A

advantages

  • allow data to change independently of its representation and vice versa
  • present data in different ways

disadvantages
- may involve additional code and complexity

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

layered pattern

A
  1. organises system into layers with associated functions each
  2. layer only provides services to layer above it
  3. lowest layer is the core service
  4. when a layer changes, only adjacent layers affected
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

when should layered pattern be used

A
  1. when building new facilities on top of existing systems

2. development spread across multiple team responsible for a layer each

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

layered pattern advantages and disadvantages

A

advantages

  • able to replace entire layer with interface maintained
  • redundant facilities provide at each layer

disadvantages
- clean separation of layers is difficult

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

repository pattern

A

large amount of shared data held in central database that can be accessed by all subsystems

components only communicate with the repository

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

when should repository pattern be used

A
  1. large volume of data generated and stored for a long time

2. when inclusion of data in repository triggers actions in data-driven system

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

repository pattern advantages and disadvantages

A

advantages

  • no need to know the existence of other components
  • all data is consistent

disadvantages

  • failure in repository affects entire system
  • inefficient communication
  • distributing central repository across several PC is difficult
17
Q

client server pattern

A

functionality organised as services which may be stored in different servers

clients access servers for services

18
Q

when should client server pattern be used

A

data is stored in database and is accessed from different location

19
Q

client server pattern advantages and disadvantages

A

advantages

  • servers can be distributed across network
  • easy to add or upgrade servers

disadvantages

  • susceptible to attacks
  • performance is unpredictable and depends on network
  • difficult to manage if servers are owned by different organisations
20
Q

peer to peer pattern

A

peer act as client and server

responsibility for hosting and managing services are shared amongst clients

21
Q

when should peer to peer pattern be used

A

need computational power but constrained by hardware capabilities

22
Q

peer to peer pattern advantages and disadvantages

A

advantages

  • decentralised
  • reliable
  • failure of 1 peer does not affect others

disadvantages

  • how to look for other peers offering the same services
  • unsure is peers are trustable
23
Q

pipe and filter pattern

A

data processed and then used

24
Q

pipe and filter pattern advantages and disadvantages

A

advantages

  • easy to understand
  • supports transformation reuse
  • easy to add transformations

disadvantages

  • long system overhead
  • cannot reuse with incompatible data
25
Q

plugin (microkernel) pattern

A

flexible for users to extend their own functionality

core systems is always present

26
Q

when should plugin pattern be used

A

need easy extension of more functionalities

need additional features to be added in later

27
Q

when should plugin pattern be used

A

need easy extension of more functionalities

need additional features to be added in later

28
Q

plugin pattern advantages and disadvantages

A

advantages

  • app remains small
  • customisable, small, easily added

disadvantages

  • difficult to decide what to put into the micokernel
  • too many plugin slows down application
  • slow testing