Classifying software

System and application software, utilities, libraries and translators, and open versus closed source.

A10.1Operating systems, software and translatorsA level30 min

Do this lesson in the simulator

At GCSE you met the operating system and utility software (F9.9) and wrote your own modules and used libraries (F4.5). At A level you need to classify software precisely, say what each kind is for, and argue which kind of software, and which kind of licence, suits a given situation. This lesson sorts out the vocabulary the rest of the module depends on.

Two classes of software

All software is either system software or application software.

  • System software runs, manages and maintains the computer itself. It exists so that the hardware can be used at all, and so that other programs can run. Without it, every program would have to drive the hardware directly.
  • Application software does a job for the user: writing a document, editing a photo, booking a ticket, or teaching a lesson. It relies on system software to reach the hardware.
The layers of software between the user and the hardwareApplication software: browser, spreadsheet, your programsUtilities, libraries and translatorsOperating system: kernel and device driversFirmware: BIOS or bootloaderHardware: processor, memory, motors, cameraapplicationsystem software
Each layer uses the one below it, so a program never has to drive the hardware itself.

System software

AQA lists four kinds of system software. Learn them as a set.

Kind What it is for Examples
Operating system manages the hardware and shares it between programs; hides the hardware's complexity Windows, Linux, Android, FreeRTOS on BugBot
Utility programs small programs that maintain, protect or tidy the computer backup, compression, disk defragmenter, anti-malware, file manager, encryption
Libraries collections of pre-written, tested, compiled routines that programs can call Python's math, a camera library, the robot's bugbot module
Translators turn source code into a form the processor can run assembler, compiler, interpreter

A library is worth a closer look, because it is easy to confuse with an application. A library does nothing on its own: it has no main program. It is a set of subroutines that other programs link to. Using one saves development time, and its routines have already been written and tested by specialists, but you depend on its authors for fixes and it may do more (or less) than you need. Lesson A10.8 shows how a linker joins library code to your program.

import math            # a library: pre-written, tested routines

# the program is application code; the maths inside sqrt is library code
legs = [(30, 40), (5, 12), (8, 15)]
for across, up in legs:
    print(f"{across} by {up}: straight line {math.sqrt(across ** 2 + up ** 2)} cm")

Run this in the simulator

Application software

Applications are often classified further:

  • General purpose software can be used for many different tasks: a word processor, spreadsheet or database package.
  • Special purpose software does one kind of task: a payroll system, a route planner, a school timetabler.
  • Bespoke software is written for one organisation's exact needs. It fits perfectly and the organisation owns it, but it is expensive, slow to produce, and may have more bugs because few people use it.
  • Off-the-shelf software is bought ready-made. It is cheaper, available now, well tested and supported by a large community of users, but it may not do exactly what is needed.

When a question asks you to justify a suitable application, name the software, then link its features to the scenario. "A spreadsheet, because the club's scores need recalculating automatically whenever a result is added, and a chart can be made from the same cells" earns marks. "A spreadsheet, because it is good" does not.

Open source and closed source

The source code is the program as its programmers wrote it. What the licence lets you do with it splits software into two kinds.

  • Open source software is distributed with its source code, under a licence that lets anyone study, modify and redistribute it. Some licences (such as the GPL) require changed versions to be open source too; permissive licences (such as MIT) do not. FreeRTOS, Linux and Python are open source.
  • Closed source (proprietary) software is distributed only as compiled code. The source is kept secret, and the licence limits how it may be used and copied. Most commercial games and Microsoft Office are closed source.
Open source Closed source
Cost usually free to obtain usually paid for, often per user or per year
Change it anyone can adapt it to their needs only the owner can
Security many people can inspect the code for flaws, but attackers can read it too flaws are hidden, but only the owner can find and fix them
Support community forums, or paid support from a third party the company, often under a contract
For the developer hard to earn money from the code itself the code is protected and can be sold

Neither is automatically better. A school might choose closed source software for guaranteed support and training, while a start-up building a robot might choose an open source operating system so it can change it and ship it without licence fees.

Task: the software audit

Audit the software on a robot and the laptop that programs it. software is a list of tuples (name, kind, licence): name and kind are strings, and licence is "open" or "closed". kind is one of "operating system", "device driver", "translator", "utility", "library" or "application".

Write classify(kind), which returns the string "system" for the five kinds of system software and "application" for applications. Then, for each item in order, print <name>: <group>, <licence> source, for example FreeRTOS: system, open source. After the list, print three totals, one per line: system: <n>, application: <n> and open source: <n>. Count them in your loop rather than typing them. The robot stays still.

# the two lines every program starts with: the commands, then the robot
from bugbot import *
connect()

software = [
    ("FreeRTOS", "operating system", "open"),
    ("motor driver", "device driver", "open"),
    ("pocketpy", "translator", "open"),
    ("backup tool", "utility", "closed"),
    ("lesson browser", "application", "closed"),
    ("maths library", "library", "open"),
    ("spreadsheet", "application", "closed"),
    ("disk defragmenter", "utility", "closed"),
]

def classify(kind):
    pass

Challenges

  1. A device driver is system software. Explain why, in one sentence, using the idea of what it exists for.
  2. A school wants software to run its lunch payments. Argue for bespoke or off-the-shelf software, making three points linked to the school.
  3. Add a cost field to each item and print the total cost of the closed source software.