8.2.1 Defining and understanding the problem, and planning and designing software solutions
In planning a solution, students need to understand the problem to be solved and how the solution will be used. In this topic, students will consider all aspects of the solution before starting its implementation. The selection of data types and structures used in the solution of a problem can have a huge impact on the effectiveness of that solution. A variety of data types and structures are introduced in this topic and appropriate algorithms should be developed and implemented that make best use of these. As algorithms become more complex, there is a need for a methodical top-down approach with progressive refinement of detail.
8.2.2 Implementing software solutions
The implementation phase could involve a range of activities from modifying existing code to the development of new code. In order to implement a solution, students need to understand the syntax of the chosen language. Careful consideration needs to be given to the language used to implement solutions. The chosen language should be one that best reinforces the concepts being taught, not simply one that is currently fashionable. In some cases, this may be a scripting language for an applications package.
8.2.3 Testing and evaluating software solutions
Students should check their code using test data that test their programs thoroughly. Students should check that their solution meets the required objectives. Specifications for a problem together with the coded solution to that problem should be given to students and they should be asked to test the solution to see if it meets the specifications. It is important for students to recognise the responsibilities of software developers in terms of providing a software solution that is appropriate to the defined problem and that runs effectively under all possible conditions. Developed software must be thoroughly tested to ensure that it will not fail unexpectedly or produce irrelevant results even when exposed to unusual or unexpected conditions.
8.2.4 Maintaining software solutions
Modifications to code are often required. These modifications need not be made by the original developers. In these situations, original documentation is very important in understanding the logic used in the solution. Students should be given opportunities to modify their code and to gain experience in modifying the code of others with varying amounts of documentation available. Students could be asked to modify solutions as a means of assessing their understanding. Students should be reminded of the ethical issues associated with accessing and modifying the code of others.