Part 3 - Research the problem
In this part of developing a solution to a problem, you need to:
a) Research the problem and solutions to similar problems to identify and justify suitable approaches to a solution.
b) Describe the essential features of a computational solution explaining these choices.
c) Explain the limitations of the solution.
Things to consider doing:
a) Put a heading, Researching the problem and potential solutions.
b) How will you provide evidence of 'researching the problem', and 'researching solutions to similar problems' so you can 'identify and justify suitable approaches'.
c) Ask yourself how you will fully understand the problem that has to be solved.
d) You will almost certainly need to do at least one in-depth interview, to find out what it is your user wants. You will need to identify what the product will look like when it is finished, what features it will have, what functions it can perform, how it will be used, who will use it, where any data it needs will come from, what validation rules each piece of data might need, what input and output might be necessary, what any screens will look like, what security arrangements (log-ins and passwords, for example) need to exist, what back-up arrangements need to be in place and so on.
e) Plan the interview questions in advance. Keep a diary.
f) Can you identify similar problems and see how they were solved? For example, can you find a game with some input and output and see how they handled that? If you are writing an adventure or dungeons and dragons game, can you find the code for a working game and have a look at it? How did they store characters? how did they keep track of each character's attributes? How did they actually get two characters to 'fight'. You can learn a lot by looking at existing similar problems and solutions.
g) Your evidence for this section could be summaries of the main findings from interviews, signed and dated by your user(s), and some examples of similar solutions you've looked at with some specific examples of techniques used that you might consider using yourself.
h) Put a heading, Essential features.
i) Now you know what the problem area is in some detail, you can set about describing how you will solve the problem (by writing a program). What are the key parts of the problem you have identified so far that you will solve and how will you go about solving them? You could do this using a table. for example, if you have identified that you need to store data, what data structures will you use and why? If you have to reorder data, what sorting algorithm will you use and why? How will you go about producing a graphical user interface if you are using a language like Python?
j) Put a heading, The limitations of the solution.
k) Can you identify two or three things that you could do, that perhaps your user has said would be good if you could, but you are not going to? These are limitations (and they can also be things that you can suggest for the future). Why are you not going to do them? Is it because of time problems. Is it because you have drawn up a list (with evidence) of the most important things, and then a list of other things if there is time? Is it because you don't have access to the technology e.g. the user wanted to scan in something using biometrics. Is it because you don't have the necessary skills to connect your proposed solution to the customer's database? There are all kinds of things that you potentially could do, but aren't going to!