Identifying the Problem to Be Solved

As you define your software architecture, the most important question you need to ask is: “What problem am I solving?” A major reason why software systems don't succeed is that they don't meet the needs of the customer or client who requested the software. In other words, they didn't solve the customer's or client's problem.

In this section, I show you how to identify the problem so that you can develop a solution that both solves the problem and meets your customer's or client's needs.

Breaking the problem into the four attributes

The problems that you solve with software architectures have four main attributes:

  • Function: Describes the problem to be solved
  • Form: Describes the shape of the solution and how it fits into the environment of other systems and technologies
  • Economy: Describes how much it costs to build, operate, and maintain the solution
  • Time: Describes how the problem is expected to change in the future

Understanding these four attributes is critical to identifying the problem to be solved.

images

Ask the customer what he wants in a system and why he wants it. As he explains, take notes, and map them to these problem attributes.

images

Ultimately, the system described by your architecture must do what the customer wants, at a cost the customer ...

Get Pattern-Oriented Software Architecture For Dummies now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.