Software Architecture Flashcards

1
Q

Describe architectural design

A

The design process for identifying the sub-systems making up a system and the framework for subsystem control and communication.
Involves identifying major system components and their communications.
Output is a description of the software architecture.
A creative process so it differs depending on the type of system being developed.
A number of common decisions span all design processes.

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

List some architectural design considerations

A

Is there a generic application that we can base our architecture on?
How will the system be distributed across hardware?
What architectural patterns or styles might be used?
What will be the fundamental approach used to structure the system?
What strategy will be used to control the operation of the components in the system?
How should the architecture me documented?
What architectural organisation is best for delivering the non-functional requirements of a system?
How will the structural components in the system be decomposed into sub-components?

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

Why is good architecture important?

A

Lack of architecture can lead to messy, difficult to read (spaghetti) code.

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

Describe component-based architecture

A

Code is sorted into classes which are in turn sorted into components.
Classes manage the complexity of of programme code.
Components manage the complexity of classes.
Each component has an internal structure (classes and code) and an external publicly visible interface that the rest of the system can use to interact with it.

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

What is a component?

A
A software package, a web service, or a module that encapsulates a set of related functions.
System processes are placed into components so that all data and functions in the component are related. This makes components modular and cohesive.
Components communicate to each other via interfaces. The client does not need to know the inner workings of the component in order to use it. This makes the component encapsulated.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is modularity?

A

The property of a system that has been decomposed into a set of cohesive and loosely coupled modules.

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

Describe encapsulation

A

No part of a complex system should be dependent on the inner workings of another part. Encapsulation involves hiding the detail of object attributes and internal operations. Component design extends the concept of encapsulation from classes to components.

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

Describe three-tier architecture

A

Presentation, application, data (PAD)
Presentation: User interface (e.g. implemented in HTML/Javascript)
Application: Software modules/classes
Data: Database (e.g. implemented in SQL)

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