Document:

9.1 Development and Impact of Software Solutions

9.1.1 Social and ethical issues

Students undertaking the HSC course should be aware of the broader social and ethical issues associated with the development and use of software.

This topic builds on the concepts covered in the Preliminary course and looks specifically at the rights and responsibilities of developers from a number of perspectives. Both past and current problems arising from the use of software are investigated to illustrate the effects on society of these and similar problems.

Outcomes:

A student:
H2.2 explains the relationship between emerging technologies and software development H3.1 identifies and evaluates legal, social and ethical issues in a number of contexts.

Students Learn about:

  • The impact of software The impact of software

    • inappropriate data structures, for example the year 2000 problem
    • computer malware such as viruses
    • reliance on software
    • social networking
    • cyber safety
    • huge amounts of information (which may be unsupported, unverifiable, misleading or incorrect) available through the internet
  • Rights and responsibilities of software developers: Rights and responsibilities of software developers

    • acknowledging the intellectual property of others
    • recognition by others of the developer’s intellectual property
    • producing quality software solutions
    • appropriately responding to user-identified problems
    • adhering to code of conduct
    • neither generating nor transmitting malware
    • addressing ergonomic issues in software design
    • ensuring software addresses inclusivity issues
    • ensuring individuals’ privacy is not compromised
  • Software piracy and copyright Software piracy and copyright

    • concepts associated with piracy and copyright, including:
      – intellectual property
      – plagiarism
      – copyright laws
      – licensing issues
      – licence conditions
      – shareware
      – public domain
      – open source
      – ownership versus licensing
      – collaboratively developed software
      – reverse engineering
      – decompilation
    • current and emerging technologies used to combat software piracy (see Course Specifications document)

9.1.2 Application of software development approaches

Students Learn about:

  • Software development approaches
    • approaches used in commercial systems, including:
      – Structured approach
      – Agile approach
      – Prototyping
      – RAD
      – End user approach
      – combinations of any of the above
    • use of Computer Aided Software Engineering (CASE) tools and their application in large systems development, including:
      – software version control
      – test data generation
      – production of documentation
      – production of code
    • methods of installation of new or updated systems methods of installation
      – direct cut over
      – parallel
      – phased
      – pilot
    • employment trends in software development, for example:
      – outsourcing
      – contract programmers
    • trends in software development trends in software development
      – changing nature of the environment in which
      developers work while creating software solutions
      – changing nature of applications (see Course Descriptions documents)

9.2 Software Development Cycle

9.2.1 Defining and understanding the problem

Outcomes:

A student:
H1.2 differentiates between various methods used to construct software solutions
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.1 assesses the skills required in the software development cycle
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:

Defining the problem

  • identifying the problem
    – needs of the client

  • functionality requirements

  • compatibility issues

  • performance issues
    – boundaries of the problem
    Issues relevant to a proposed solution

  • determining if an existing solution can be used
    – social and ethical considerations
    – consideration of existing software products
    – customisation of existing software
    solutions
    – cost effectiveness
    – licensing considerations

  • selecting an appropriate development approach if there is no appropriate existing solution

  • Design specifications

  • specifications of the proposed system

  • developer’s perspective in consideration of:
    – data types
    – data structures
    – algorithms

  • user’s perspective
    – interface design
    – social and ethical issues
    – relevance to the user’s environment and
    computer configuration

  • System documentation

  • representing a system using systems modeling tools, including:
    – IPO diagrams
    – context diagrams
    – data flow diagrams (DFDs)
    – storyboards
    – structure charts
    – system flowcharts
    – data dictionaries

  • algorithms used to document the logic in modules and subroutines

  • test data and expected output
    Communication issues between client and developer

  • the need to consult with the client

  • the need to incorporate the client’s
    perspective

  • the need for the developer to enable and
    consider feedback

9.2.2 Planning and designing software solutions

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.

Students learn 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)

9.2.3 Implementation of software solution

9.2.4 Testing and evaluating of software solutions

Students learn about:

  • Testing the software solution Testing software

    • comparison of the solution with the design specifications
    • generating relevant test data for complex solutions
    • comparison of actual with expected output
    • levels of testing
      • module
        • test that each module and subroutine functions correctly
        • use of drivers
      • program
        • test that the overall program (including incorporated modules and subroutines) functions correctly
      • system
        • test that the overall system (including all programs in the suite) functions correctly, including the interfaces between programs
        • acceptance testing
    • the use of live test data to ensure that the testing environment accurately reflects the expected environment in which the new system will operate
      – large file sizes
      – mix of transaction types
      – response times
      – volume of data (load testing)
      – effect of the new system on the existing
      systems in the environment into which it will be installed
  • Reporting on the testing process

    • documentation of the test data and output produced (see Course Specifications document) – use of CASE tools
    • communication with those for whom the solution has been developed, including:
      – test results
      – comparison with the original design specifications
  • Evaluating the software solution

    • verifying the requirements have been met appropriately
    • quality assurance
  • Post implementation review

    • facilitation of open discussion and evaluation with the client
    • client sign off process

9.2.5 Maintaining software solutions