A Problem-solving Approach to Software Architecture
What is problem-solving?
Problem-solving is the act of defining a problem, determining the cause of the problem, determining what features a proposed solution should have, identifying, prioritizing and selecting alternatives for a solution, and implementing a solution.
More common than you may think
We all employ similar processes (whether we do it implicitly, or explicitly) in our everyday life; from choosing what to eat at a new restaurant, choosing our next cell phone, or more complex and specialized scenarios like how to fix a performance issue in a mobile app we are developing.
Our Framework
The following framework, provides an easy to follow, step-by-step approach to problem-solving, with 6 discrete steps.
1.Problem Statement
This is the most critical step in the process. The quality of the solution is going to be directly proportional to the quality of the problem statement. Some important characteristics for your problem statement should be:
- Differentiate fact from opinion
- Specify underlying causes
- Consult each faction involved for information
- State the problem specifically
- Determine in which process the problem lies
- Avoid trying to solve the problem without data
2. Solution Statement
A Solution statement provides an opportunity to restate the problem, but framing it from a different vantage point. It should outline what features the proposed solution should include.
3. Key Attributes
These should be a list of Key Attributes in a provided solution to the problem. It would be important to list them from the most important/relevant to the least important.
4. Ranking
Take the top Key Attributes, and try to keep them to a maximum of 5 items, as the number of attributes to be compared can increase the difficulty in comparing alternate solutions.
Assign a weight to each item on your list, so that it makes computing a score easy and straightforward.
5. Proposed Solutions
Your list of ranked Key Attributes should serve as the basis for developing a road map for investigating alternatives. Considering multiple alternatives can significantly enhance the value of your ideal solution. For each alternative solution, consider the pros and cons of how it addresses the Key Attributes.
Many alternative solutions to the problem should be generated before the final evaluation. A common mistake in problem-solving is that alternatives are evaluated as they are proposed, so the first acceptable solution is chosen, even if it’s not the best fit. If we focus on trying to get the results we want, we miss the potential for learning something new that will allow for real improvement in the problem-solving process.
5.1 Evaluation Matrix
Evaluation Matrix
Based on the ranking and weight of each Key Attribute, provide a score for each of the alternative solutions.
6. Selected Solution
Document the selected solution, and any additional information that may be relevant.