3.3 Implementation of software solution

In the implementation phase of the software development cycle, previously developed algorithms are converted to a form that can be processed by a computer. 

Students will need to learn the syntax of the language, macro or script being used to successfully implement their solutions. 

Knowledge of a metalanguage such as EBNF or railroad diagram(s) is essential in understanding both the syntax of a language and how a translator can detect syntax errors in source code. 

The need for a translation process should be recognized. In the case of code, students should be aware of the relevance of the different translation methods available. 

Students will need to recognise the approach being used (that is, sequential or event-driven) and will need to make appropriate decisions about the design of interfaces and the documentation produced. 

Relevant social and ethical issues should be considered during this implementation process.

Outcomes

A student:

  • H1.1 explains the interrelationship between hardware and software
  • H1.2 differentiates between various methods used to construct software solutions
  • H1.3 describes how the major components of a computer system store and manipulate data
  • H2.1 explains the implications of the development of different languages
  • H2.2 explains the interrelationship between emerging technologies and software development
  • 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.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.

Students Learn About:    

Implementation of the design using an appropriate language

  • the different programming languages and the appropriateness of their use in solving different types of problems
  • construction of syntactically correct code that implements the logic described in the algorithm
Language syntax required for software solutions
  • use of EBNF and railroad diagrams to describe the syntax of statements in the selected language






The need for translational to machine code from source code
  • translation methods in software solutions including:
    • compilation
    • interpretation
  • advantages and disadvantages of each method
  • steps in the translation process
    • lexical analysis including token generation
    • syntactical analysis including parsing
    • code generation



The role of machine code in the execution of a program
  • machine code and CPU operation
    • instruction format
    • use of registers and accumulators
    • the fetch–execute cycle
    • use of a program counter and instruction register
  • execution of called routines
  • linking, including use of DLLs
Techniques used in developing well-written code
  • the use of good programming practice, including:
    • a clear and uncluttered mainline
    • one logical task per subroutine
    • use of stubs
    • appropriate use of control structures and data structures
    • writing for subsequent maintenance
    • version control
    • regular backup
    • recognition of relevant social and ethical issues
  • the process of detecting and correcting errors, including:
    • types of error
      • syntax errors
      • logic errors
      • runtime errors, including:
        • arithmetic overflow
        • division by zero
        • accessing inappropriate memory locations
    • methods of error detection and correction
      • use of flags
      • methodical approach to the isolation of logic errors
      • use of debugging output statements
      • peer checking
      • desk checking
      • structured walkthrough
      • comparison of actual with expected output
  • the use of software debugging tools, including:
    • use of breakpoints
    • resetting variable contents
    • program traces
    • single line stepping
Documentation of a software solution
  • forms of documentation, including:
    • log book
    • user documentation, including:
      • user manual
      • reference manual
      • installation guide
      • tutorial
      • online help
    • technical documentation, including:
      • systems documentation
      • algorithms
      • source code
  • use of application software including CASE tools to assist in the documentation process 
  • recognition of relevant social and ethical issues
Hardware environment to enable implementation of the software solution
  • hardware requirements
    • minimum configuration
    • possible additional hardware
    • appropriate device drivers or extensions
Emerging technologies
  • the effect of emerging hardware and software technologies on the development process (see Course Specifications document) such as:
    • iPhone
    • Wii remote
    • handheld communication devices
    • scanning pen
    • biometric devices
    • multi-point surface software
    • radio-frequency identification (RFID)
    • social networking software

Students Learn To:



  • identify an appropriate language to solve a particular problem
  • recognise the appropriateness of either a sequential or event-driven approach to solve a particular problem
  • develop syntactically correct code to solve a problem in a given language


  • interpret metalanguage definitions for commands in a selected language
  • produce syntactically correct statements using the metalanguage definitions
  • produce a generic metalanguage definition for a set of  syntactically correct statements that use the same command
  • implement a solution from a complex algorithm using syntactically correct statements


  • explain the use of tokens and the role of the parsing process during the translation of source code to machine code



  • recognise that machine code is the only code able to be executed by a computer
  • identify the most appropriate translation method for a given situation
  • use the features of both a compiler and an interpreter in the implementation of a software solution




  • recognise, interpret and write machine code instructions for a problem fragment









  • employ good programming practice when developing code

  • justify the use of a clear modular structure with separate routines to ease the design and debugging process








  • differentiate between types of errors 
  • recognise the cause of a specific error and determine how to correct it























  • produce user documentation (incorporating screen dumps) that includes:
    • a user manual
    • a tutorial
    • online help
  • differentiate between types of user documentation
  • identify the personnel who would be likely to use the different types of documentation
  • produce technical documentation for an implemented software solution






  • recognise the need for additional hardware 
  • identify potential compatibility issues for a newly developed software solution







  • recognise the implications of emerging technologies for the developer in terms of the code written to make use of these technologies
  • recognise the implications of emerging technologies for the code development process