(a)
Explain and justify the structure of the solution.
(b)
Describe the parts of the solution using algorithms, justifying how the algorithms form a complete solution to the problem.
(c)
Describe usability features to be included in the solution.
(d)
Identify key variables/data structures/classes, justifying choices and any necessary validation.