Skip to content
Skip to main content

About this free course

Become an OU student

Download this course

Share this free course

Approaches to software development
Approaches to software development

Start this free course now. Just create an account and sign in. Enrol and complete the course for a free statement of participation or digital badge if available.

Problem and solution

By dividing one large problem into a set of smaller sub-problems, we might expect to reach a point where we can capture, understand and describe each sub-problem. But there are two difficulties.

  • How do we know that each identified sub-problem is any easier to understand and solve than the original problem?
  • How do we know that all of our sub-problems will fit back together again and recreate that original problem?

The key to finding sub-problems that you recognise and understand is prior knowledge and experience. As a developer, you may know how to create a good design or a good program, but you may not be familiar with the problem domain.

As a developer, the problem that you face is in the world outside the computing system, where you aim to provide a solution. The software that you construct can provide solutions to problems because they are connected to the world outside, as illustrated in Figure 1.

Described image
Figure 1 Separating a problem from its solution

The main issue that you as a developer should focus on is solving the problems identified by the users, rather than worrying about how to write the program code. When projects fail it may be because of mistakes that were made quite early on in the design stage, often resulting from poor understanding of the problem domain, not because of what happens at the coding stage.

Example 7

One way to find out whether you have a good solution to a problem is to consider the kinds of complaint you would receive from users if your software did not work properly. For example, suppose someone had made a reservation to stay in a hotel but when they arrived, the receptionist told them that there was no reservation in their name. In another case, they might have reserved rooms for six people only to find that there was only room for one.

By doing such thought experiments you may often be able to spot flaws in your solution, although of course there may always be situations you have overlooked, so you can never be completely certain that your solution is comprehensive.