3.2 Planning and designing software solutions (9.2.2)

To solve complex problems, students need to develop a strategy. 

They need to be able 

  • to identify inputs and outputs, 
  • to select, describe and use relevant data structures, 
  • to explain the procedures required for the solution and explain how each of these will interact. 
Well-structured algorithms should be developed. Desk checking of algorithms and documentation of the proposed solution are also important.

The development of structured algorithms to document the logical solution of problems is a fundamental principle of this course. These must be developed independently of any coding language. Students should appreciate that the real skill is in the development of the algorithm, not the implementation of the logic in a particular language. Not every algorithm developed in this section of the course need be implemented.

Problems must be chosen with an appropriate level of difficulty that reflects the ability level of students. The level of difficulty should be greater than in the Preliminary course. Relevant problems could include the development of games such as hangman, quizzes, mastermind, draughts and search-a-word. These problems should include use of data structures such as arrays of records and multidimensional arrays. 

Students should experience the storing, retrieving and updating of data in files.

Outcomes

A student:

H1.1     explains the interrelationship between hardware and software

H1.3     describes how the major components of a computer system store and manipulate data

H3.1     identifies and evaluates legal, social and ethical issues in a number of contexts

H3.2     constructs software solutions that address legal, social and ethical issues

H4.1     identifies needs to which software solutions are appropriate

H4.2     applies appropriate development methods to solve software problems

H4.3     applies a modular approach to implement well structured software solutions and evaluates their effectiveness

H5.1     applies project management techniques to maximise the productivity of the software development

H5.2     creates and justifies the need for the various types of documentation required for a software solution

H5.3     selects and applies appropriate software to facilitate the design and development of software solutions

H6.2     communicates the processes involved in a software solution to an inexperienced user

H6.3     uses and describes a collaborative approach during the software development cycle

H6.4     develops and evaluates effective user interfaces, in consultation with appropriate people.


Computational Thinking

What is it?
Computational thinking describes the processes and approaches we draw on when thinking about how a computer can help us to solve complex problems and create systems. We often draw on logical reasoning, algorithms, decomposition, abstraction, and patterns and generalisation when thinking computationally.

Australian Curriculum definition
Computational thinking
  • A problem-solving method that involves various techniques and strategies that can be implemented by digital systems. 
  • Techniques and strategies may include 
    • organising data logically, 
    • breaking down problems into parts, 
    • defining abstract concepts and 
    • designing and using algorithms, patterns and models.

Students Learnt About:

Standard algorithms

  • standard logic used in software solutions, namely:
    • finding maximum and minimum values in arrays
    • processing strings (extracting, inserting, deleting)
    • generating a set of unique random numbers
    • processing of sequential files, including:
      • sentinel value
      • priming read 
      • open for input, output or append
      • close
      • appending records
    • processing of relative files, including:
      • open for relative access
      • defining a key field for a relative file
      • retrieving, writing and updating a record in a relative file
    • linear search
    • binary search
    • bubble sort
    • insertion sort
    • selection sort
  • (see Course Specifications document)

 

Custom-designed logic used in software solutions

  • requirements to generate these include:
    • – identification of inputs, processes and outputs
    • – representation as an algorithm
    • – testing of the logic in the algorithm
    • – identification and definition of required data structures
    • – use of data structures, including multidimensional arrays, arrays of records, files (sequential and relative)
  • (see Course Specifications document)
  • customised off-the-shelf packages
    • identifying an appropriate package
    • identifying the changes that need to be made
    • identifying how the changes are to be made
 
Standard modules (library routines) used in software solutions
  • reasons for the development and use of standard modules
  • requirements for generating a module or subroutine for re-use, including:
    • identification of appropriate modules or subroutine
    • appropriate testing using drivers
  • thorough documentation of the routine:
    • author
    • date
    • purpose
    • order and nature of parameters to be passed
  • issues associated with reusable modules or subroutines, including:
    • identifying appropriate modules or subroutines
    • considering local and global variables
    • appropriately using parameters (arguments)
Documentation of the overall software solution
  • tools for representing a complex software solution, including:
    • algorithms
    • refined system modeling tools, including:
      • -        IPO diagrams
      • -        context diagrams
      • -        data flow diagrams (DFDs)
      • -        storyboards
      • -        structure charts
      • -        system flowcharts
      • -        data dictionaries
Interface design in software solutions
  • the design of individual screens in consultation with the client, including:
    •       consideration of the intended audience
    •       identification of screen size
    •       identification of data fields and screen elements required and their appropriate on-screen placement
    •       online help
    •       consistency in approach
    •       recognition of relevant social and ethical issues
    •       current common practice in interface design (see Course Specifications document)
  •  
Factors to be considered when selecting the programming  language to be used
  • sequential or event-driven software
    •       driven by the programmer or user
  • features required, and features available in the language
  • commands within the language to interface with the required hardware
  • ability to run under different operating systems
  •  
Factors to be considered when selecting the technology to be used
  • performance requirements
  • benchmarking

Students Learn To:




  • recognise the logic in a standard approach, such as a sort or search
  • apply standard approaches as part of the solution to complex problems
  • read, interpret and modify algorithms developed by others

















  • document the logic required to solve problems, including:
    •       nesting of control structures
    •       record structure
    •       the use of files (sequential and relative)
    •       random number generators
    •       arrays of records
    •       multidimensional arrays

  •  develop a suitable set of test data
  • desk check algorithms and source code that include complex logic
  • select an appropriate data structure to solve a given problem




 

  • develop and appropriately document a module for use by others
  • correctly incorporate a standard module into a more complex solution, passing parameters effectively








  • represent a software solution in diagrammatic form
  •  interpret and modify existing system modeling diagrams
  •  select and use appropriate software to assist in the documentation of a software solution

 





  • recognise the relevance of CASE tools in the planning and design of a software solution

 

 

 

       design and evaluate effective interfaces for software solutions

       use a RAD environment to produce user interfaces

 

 

 

 

  • recognise that the choice of programming language to be used depends on the problem to be solved





  • interpret a benchmark report to select the most suitable technology for a specified task
  • produce a benchmark report for a simple iterative process running under two different environments or conditions