Social and Ethical Issues

This topic identifies social and ethical issues that arise in the development and use of software. You should be aware of these issues early in the course so that you can act in a socially responsible and ethical way throughout the course. Although these issues are taught specifically as part of this topic, it is also reconsidered as each new topic is discussed. Thus, for example, interface design issues, duplication of code or ideas and language used in documentation should all be considered again at relevant parts in the course.

You should be able to:

  • identify significant milestones in the evolution of software applications and design features
  • analyse the issues relating to intellectual property
  • appropriately acknowledge externally sourced code
  • use software in an ethically and legally correct manner
  • design and evaluate software interfaces in terms of inclusivity
  • identify ways in which privacy can be protected
  • identify the range of skills required to complete a minor software project

Software Development Approaches

There are a number of different approaches that can be taken when developing software. Five are prescribed for study in this course. There are many ways in which software is commercially developed, from an ad-hoc approach to the more formalised structured approach. The approach or combination of approaches used depends on the nature of the problem to be solved, the resources
available and the experience of those involved.

You should be able to:

  • identify each of these stages in practical programming exercises
  • design and develop a limited prototype as a proposed solution, or part of a solution, to a problem
  • analyse the effectiveness of the prototyping approach in developing a software solution
  • use an existing software package to develop a solution using a RAD approach
  • discuss the advantages and disadvantages of end user developed software
  • compare and contrast structured and agile approaches
  • recognise reasons for the failure of solutions
  • select appropriate software development approaches for specific purposes
  • identify characteristics of projects that lend themselves to a specific development approach
  • recognise that a single solution may involve a combination of approaches
  • identify characteristics of projects that require a combination of approaches

Hardware and Software

Hardware and software are mutually dependent components of a computer system. To fully appreciate their role in a computer system they should be examined in conjunction with data, processes and personnel.

You should be able to:

  • identify the elements of a computer system and their role in that system
  • describe the significance of and interaction between the elements comprising computer systems
  • describe how data is captured, stored, manipulated or displayed on a variety of hardware devices (see Course Specifications
  • competently use computer hardware, selecting appropriate hardware for specific tasks
  • identify the impact of using particular devices on the development and use of software
  • competently use a range of software
  • describe the development of the generations of programming languages
  • identify the effect of the generations of programming languages on software development practices
  • distinguish between methods of translation
  • identify typical tasks performed by operating systems
  • describe what happens during each of the steps of the fetch–execute cycle
  • identify the role of specific hardware used during each step of the fetch–execute cycle