Architecture constraints are one of the most challenging attributes of solution design. A solution architect needs to manage architectural constraints carefully and be able to negotiate between them to find an optimal solution. Often, these constraints depend on each other, and emphasizing one limitation can inflate others.
The most common constraints are as following:
As shown in the preceding diagram, solution design helps us understand the following attributes of an application:
- Cost:
- How much funding is available for solution implementation?
- What is the expected Return on Investment (ROI)?
- Quality:
- How closely should outcomes match functional and non-functional requirements?
- How can we ensure and track the quality of the solution?
- Time:
- When should the output be delivered?
- Is there any flexibility regarding time?
- Scope:
- What is the exact expectation?
- How does the requirement gap need to be handled and accommodated?
- Technology:
- What technology can be utilized?
- What flexibility does using legacy versus new technologies provide?
- Should we build in-house or source from a vendor?
- Risk:
- What can go wrong and how can we mitigate that?
- What is the risk tolerance of stakeholders?
- Resource:
- What is required to complete solution delivery?
- Who will work on the solution's implementation?
- Compliance:
- What are the local law requirements that can impact the solution?
- What are the audit and certification requirements?
There could be more specific constraints related to a project, such as storing data in a country due to government regulation and opting for in-house development due to security concerns. Handling constraints could be very tricky. Saving costs by reducing resources may impact the delivery timeline.
Achieving a schedule with limited resources may affect quality, which in turn increases cost due to unwanted bug fixes. So, finding the balance between cost, quality, time, and scope is significant. Scope creep is one of the most challenging situations as it can negatively impact all other constraints and increase risks of solution delivery.
It is essential for a solution architect to understand all the aspects of every constraint and to be able to identify any resulting risk. They must put risk mitigation plans into place and find a balance between them. Handling any scope creep can help a lot in delivering the project on time.