Technique for Designing the System Architecture
You can follow the below mentioned steps to design the system architecture:
1. Identify Architecture Objective
Clear objectives help you to focus on your architecture and on solving the right problems in your design. Precise objectives help you to determine when you have completed the current phase, and when you are ready to move to the next phase.
-
Identify your architecture goals at the start.
Before start designing the architecture, note down all the architecture goals. It helps in identifying the amount of time required in each phase of architecture and design will also depend on these goals. For example, are you building a prototype, testing potential paths, or embarking on a long-running architectural process for a new application?
-
Identify target audience of the design.
Determine if your design will be used by other architects, or referred by developers and testers or operations staff, and management. Consider the expectations and experience of your audience to make your resulting design more meaningful to them.
-
Identify your constraints.
Understand below constraints at the start so that you do not waste time or encounter surprises later in your application development process:
- Technology options and constraints
- Usage constraints
- And deployment constraints.
2. Identify and Use Key Scenarios
Use key scenarios to focus your design on what matters most, and to evaluate your candidate architectures when they are ready. Key scenarios can be defined as any scenario that meets one or more of the following criteria:
- It represents an issue; a significant unknown area or an area of significant risk.
- It refers to an architecturally significant use case.
- It represents the intersection of quality attributes with functionality.
- It represents a tradeoff between quality attributes.
3. Identify Application
Identify your application type, deployment architecture, architecture styles, and technologies in order to connect your design to the real world in which the application will operate.
- Determine your application type
- Identify your deployment constraints
- Identify important architecture design styles.
- Determine relevant technologies
4. Identify Key Design Considerations
Identify key design consideration based on quality attributes and crosscutting concerns. These are the areas where mistakes are most often made when designing an application.
- Quality Attributes
- Crosscutting Concerns
- Deployment Strategy
- And, other NRFs.
5. Define Candidate Solutions
Create an architecture spike or prototype that evolves and improves the solution and evaluate it against your key scenarios, issues, deployment constraints and key design consideration before beginning the next iteration of your architecture.
- Define Baseline and Candidate Architectures
- Define Architectural Spikes/Prototype
- And, other Architecture related analysis.
6. Review your Architecture
It is always good to review the design and make the changes wherever it is required.
7. Representing and Communicating Your Architecture
There are several well-known ways to document, present and communicate your architecture to others, few of them are listed below which you can add/modify as per your need:
- High level Software architecture diagram to provide the high level overview.
- Below mentioned views can be used to represent the architecture:
- Logical view, such as the object model.
- Process view, such as concurrency and synchronization aspects.
- Physical view, the map of the software application/layers/components with hardware infrastructure.
- Business scenarios and use cases for the software.
- Use UML 2.0 where diagrams are categorized into behavior and structure. Commonly used are:
- Use Case diagram
- Sequence diagram
- Activity diagram
- Component diagram
- Class diagram
- Deployment diagram
- Use BPMN to represent business processes.