You can use it for interviews or assessments, pre-sales, or estimations.
1. Understand Problem and Scope
- Recognize stakeholders and prioritize them. Create a RACI matrix
- Understand business drivers of the project
- Recognize end-users of the project and understand how they use that system
- Check functional requirements
- Define external dependencies
- Suggest additional features
- Remove items that interviewer considers out of scope
2. Think about constraints and non-functional requirements(use PASSME (performance/availability/security/scalability/maintainability/extensibility) if you do not remember all of NFRs)
- Recognize the number of users
- Estimate users growth rate (for the next year/next five years)
- Define average response time
- Understand database size (current / for the next year/ for the next five years)
- Understand storage size (current / for the next year/ for the next five years)
- Recognize security needs
- Define acceptable downtime of the system
- Recognize the number of requests (per month/per second)
- Estimate reads vs. writes operations percentage
- Define time to market
- Check customer related NFR: legacy/proprietary soft, etc
3. Detect Architecture Significant Requirements
- Mix between FRs and NFRs to detect ASRs
4. Abstract Design
- Choose which architectural views to define based on the stakeholders’ matrix. Use common C4/4+1/etc otherwise
- Choose Architecture Style (Monolith, SOA — microservices, layered architecture, etc.)
- Choose between cloud solution or on-premise servers
- Consider authentication/authorization and privacy
- Suggest security rules and protocols
- Define infrastructure: load balancing, messaging
- Make a rough overview of any critical algorithm that drives the service
- Consider bottlenecks and determine solutions
- Choose storage type (SQL or NoSQL)
- Understand what data should be cached and how to improve performance/security/availability with caching
- Choose monitoring system and logging. Analytics and automatically reboot the system in case of exceptions
- Define separation between public and restricted areas
You can find text version here https://github.com/NikAshanin/Software-Architect-Cheat-Sheet/blob/master/README.md
Top comments (0)