What Is Software?
Software is the collection of programs — sets of step-by-step instructions — that tell hardware what to do. Hardware cannot function usefully on its own; it needs software to direct its operations.
Software falls into two main categories: system software and application software.
System Software
System software consists of programs that control and maintain the computer's own operations and act as the bridge between users, applications, and hardware.
Operating System (OS)
An operating system is a collection of programs that coordinates all computer hardware activities, manages the system's internal workings (memory, processors, file system, devices), and provides a means for users and other programs to communicate with the computer.
Functions of an Operating System:
1. Boot Operation When a computer is powered on, it relies on firmware stored in ROM called the BIOS (Basic Input/Output System). The BIOS performs POST (Power-On Self Test) — checking hardware components like RAM, the clock, keyboard, and adapter cards. POST results are compared against configuration data stored in CMOS. If POST passes, the BIOS loads the OS kernel from storage into memory, and the OS takes over control.
2. User Interface The OS provides the means by which users interact with the computer. Three types:
- Command-line interface — the user types text commands; the computer displays text output.
- Menu-driven interface — the user selects from a list of options.
- Graphical User Interface (GUI) — uses windows, icons, pointers, and menus for visual interaction.
3. Program Management The OS controls how programs run:
- Single-user/single-tasking — one user, one program at a time.
- Single-user/multitasking — one user, multiple programs simultaneously.
- Multiuser — multiple users running programs at the same time.
- Multiprocessing — multiple processors running programs simultaneously.
4. Memory Management The OS allocates RAM to programs and data while they are being processed and releases memory when it is no longer needed, optimizing the use of available RAM.
5. Job Scheduling The OS determines the order in which jobs (input processing, instruction execution, output delivery, storage transfers) are handled.
6. Device Configuration A device driver is a small program that tells the OS how to communicate with a specific device. Each peripheral has its own driver, which is loaded during boot.
7. File Management and Utilities The OS provides file management capabilities — creating, organizing, copying, moving, and deleting files — as well as other utility functions like disk scanning and image viewing.
8. Network Control A network OS coordinates how multiple users access and share resources over a network. It can be standalone (works with or without a network) or dedicated network OS (resides on a server).
9. Security Administration The network OS allows administrators to set permissions that control which users can access which resources.
10. Performance Monitoring The OS tracks and reports usage of the processor, memory, disk, and network to help identify bottlenecks.
Utility Programs
Utility programs are a second type of system software focused on maintenance tasks — managing the computer, its devices, or its programs. Examples include antivirus software, spyware removers, and file compression tools. While the OS includes built-in utilities, standalone utilities often offer more features.
Application Software
Application software (end-user software) consists of programs that help users accomplish specific tasks — creating documents, managing finances, playing games, communicating, and so on.
Categories of Application Software
- Business — word processing, spreadsheets, databases, project management, accounting.
- Graphics and Multimedia — CAD (computer-aided design), desktop publishing, image/video editing, web page authoring.
- Home/Personal/Educational — photo editing, personal finance, educational games, entertainment.
- Communications — email clients, chat tools, video conferencing.
How Application Software Is Distributed
- Packaged software — mass-produced, copyrighted software sold commercially.
- Custom software — developed specifically for one organization's unique needs.
- Open source software — provided free for use, modification, and redistribution; the copyright holder imposes no restrictions on modification.
- Shareware — copyrighted software distributed free for a trial period; payment required to continue using it.
- Freeware — copyrighted software provided at no cost; the creator retains all rights but makes it freely available.
- Public-domain software — no copyright, trademark, or patent applies; anyone can use, modify, distribute, or sell it without restriction.
Programming Languages
Low-Level Languages
- Machine Language (1st generation) — instructions in raw binary (0s and 1s); directly executable by the hardware.
- Assembly Language (2nd generation) — uses short English-like abbreviations to represent machine code instructions; more readable than binary but still hardware-specific.
Procedural Languages (3rd generation) Use English-like words to write instructions. Examples: COBOL, C.
Object-Oriented Programming Languages Organize code around objects — bundles of data and behavior — that can be reused across many projects. Examples: Java, C++, C#.
Compiler vs. Interpreter
- Compiler — converts the entire source program into machine code (object code) at once. The resulting program runs independently and typically faster, but errors are reported all at once after full compilation.
- Interpreter — translates and executes one statement at a time. Errors appear immediately when encountered, making debugging easier, but interpreted programs run more slowly than compiled ones.