C6: Architectural Design Flashcards
Software architecture
The style of design of the structure of the system including the interacting and interaction among its major components.
Software architectural design
A decision making process to determine the software architecture for the system under development.
Architectural Design Process
- Determine design objectives
Overall design objects are identified and specified. - Determine type of system or subsystem
- Apply an architectural style or perform custom architectural design
- Specify subsystems functions, interfaces, and interaction behaviour
Interfaces between the subsystems are defined and the interaction behaviour between the subsystems are specified. - Review the architectural design
Review to ensure that it satisfies the requirements, design objectives and software principles.
Determine Architectural Design Objectives
- Ease of change and maintenance
Does the application requires frequent changes to the system to respond to changes in the application such as a response to requirement change? - Use of commercial off the shelf parts
Does the project require or prohibit the use of COTS? - System performance
Does the application require high performance? - Reliability
To what extent does application required system to correctly perform its intended functions under the assumed conditions? - Security
What is the extent of protection of data and programs resources required by the application? - Software fault tolerance
To what extent does the application enquiry system to continue operation when a software problem occurs? - Recovery
to what extent does the application required the system to return to a previous state after a system crash?
Determine System Type
- Interactive system
- Event-Driven Systems
- Transformational systems
- Object persistence systems
Applying Architectural Styles
- N-tier Architecture
- Client-server architecture
- Main program and subroutines architecture
- Event driven system architecture
- Persistence framework architecture
Software Design Principles
Widely accepted guiding rules for the software design - correctly applying these principle can significantly improve software quality.
Guidelines for Architectural Design
- Adapt on architectural when possible
- Apply software design principles
- Apply design patterns
- Check against design objectives and design principles
- Iterate the steps if needed
Applying Agile Principles
● Value working software over comprehensive documentation.
● Apply the 80 - 20 rule, that is, good is good enough.