3.1 Defining and understanding the problem

In order for students to be able to develop software to meet an identified need, they first need to be able to understand the specifications of a problem so that they can eventually translate these specifications into code.

As well as having good technical skills, it is necessary for students to have good communication skills so that the users’ requirements can be fully understood and implemented throughout the development process. The modelling tools used should conform to those specified in the Software and Course Specifications document and should provide documentation that can be interpreted by developers and maintainers. Students should develop and refine skills as an integrated part of developing their software solutions. It is important at this initial stage of the process that all relevant social and ethical issues are considered as an integral part of the design and development of the solution.

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  
  • the need to involve and empower the client during the development process

Students Learn To:










• evaluate the extent to which a proposed system will meet user needs

• evaluate the effectiveness of using existing software





• identify the parts of the proposed system that require software to be designed and developed

• identify a relevant approach for a given problem







• develop and interpret design specifications from a user’s perspective

• recognise the difference between the user’s and developer’s perspectives and the communication issues that may arise 




  • differentiate between forms of systems documentation and the purposes for which each is used
  • describe a system by interpreting its diagrammatic representation
  • create a diagrammatic representation for a system using appropriate modeling tools









• effectively communicate with users regarding a proposed software solution