Introduction
Types of computer software
Software Classification
System software
- controls the various components of the hardware
- helps programmers develop applications
- includes the operating
system and compilers
Application software
- designed to perform a specific task for a user
- includes word processor, database, spreadsheet…
One way of showing the relationships between them…

Software Categories
Vertical software
- developed for a specific 'type' of client, usually a specialist of some
kind (e.g. accountants, doctors, retail outlet)
- may be customisable
Custom software
- written for a specific client
Horizontal software
- designed to be useful for a wide range of users performing varied tasks
System software
- Primarily composed of the operating system
- manages the hardware (using device drivers)
- supports applications
- "hosts" applications
- may provide a graphical user interface (GUI)
- Provides utilities and services
- file management
- backup and restore
- system maintenance
- text and image editing
User Interfaces
Text-based interfaces (CLIs)
- Command line: user tpes in specified commands with fixed syntax
- Menu-driven: user chooses from a 'list' of options ('point and
shoot')
Graphical user interfaces (GUIs)
- user works with operating system through the GUI
- places special demands on hardware (especially display and memory)
- applications are 'tied' to the interface (how strongly varies with the
GUI)
- supports multitasking though use of windows
- may support multiprocessing (multithreading in Windows 95)
- usually combines use of windows, icons, menus
and pointers (WIMP)
Operating systems
- The need for an operating system (O/S)
- in early computers
- in modern systems
- Characteristics of O/S
- single tasking vs multitasking
- interactive vs batch
- timesharing vs single user
Operating system developments on microcomputers
- Virtual memory
- provides more memory without extra (costly) RAM
- requires fast secondary storage
- essential for multitasking
- Print Spooling
- form of background processing
- example of multitasking
- Various forms of cross-platform standardisation
Application software
- Software sold to a "mass market" rather than specialists
- increasingly includes features previously only found in vertical or
custom software
- Needs to provide extensive support for diverse users
- documentation
- tutorials
- demonstrations (videos, animations)
- help systems
- general
- context-sensitive