Classifying software

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

A10.1Operating systems, software and translatorsA level30 min

Covers OCR H446 1.2.2 Applications Generation · AQA 7517 4.6.1.2 Classification of software · AQA 7517 4.6.1.3 System software · Eduqas A500QS 2.7 The need for different types of software systems and their attributes

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

The program's loop calls sqrt in the math library three times; the library only runs when calledyour programapplication codemath librarypre-written, tested routinessqrtsincosfloorno main program of its ownsqrt(2500)= 50sqrt(169)= 13sqrt(289)= 17callanswer
The cell's three calls. Each one jumps into the library's sqrt and comes back with an answer (50, 13, 17 cm). The library's other routines sit unused: it does nothing unless a program calls it.

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.
Two separate questions about an application: how many kinds of task, and who it was made forgeneral purposemany kinds of taskspecial purposeone kind of taskoff-the-shelfbought ready-madebespokewritten for oneorganisationword processorspreadsheetdatabase packageroute plannerschool timetablerpayroll packageone firm's own payrollsystem, built to itsexact rulesrare: few organisationspay for a word processorof their ownevery application gets one answer to each question
The two classifications answer different questions, so an application has one of each: a spreadsheet is general purpose and off-the-shelf. Payroll is special purpose whichever way it is bought.

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 hands over the source code; closed source hands over only compiled codeopen sourcesource codepublishedanyone maystudy, modify, shareGPL: a changedversion stays openMIT: a changedversion may be closedclosed sourcesource codekept secretcompilercompiledcode onlyuser runsitas the licence allows:no changing, limited copying
The difference is what reaches the user. With open source the code itself comes too, so anyone can change it; the licence decides whether their version must stay open. With closed source only the owner ever sees the code.
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.