Software Architecture Flashcards
Describe architectural design
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.
List some architectural design considerations
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?
Why is good architecture important?
Lack of architecture can lead to messy, difficult to read (spaghetti) code.
Describe component-based architecture
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.
What is a component?
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.
What is modularity?
The property of a system that has been decomposed into a set of cohesive and loosely coupled modules.
Describe encapsulation
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.
Describe three-tier architecture
Presentation, application, data (PAD)
Presentation: User interface (e.g. implemented in HTML/Javascript)
Application: Software modules/classes
Data: Database (e.g. implemented in SQL)