Home / Definitions / Software

Software

Abby Braden
Last Updated February 16, 2024 2:39 am

What is software?

Software is a set of instructions, data, or programs used to operate a computer and execute specific tasks. In simpler terms, it tells a computer how to function. It’s a generic term used to refer to applications, scripts, and programs that run on devices such as PCs, mobile phones, tablets, and other smart devices. This contrasts with hardware, which is the physical aspects of a computer that perform the work.

Without software, most computers would be useless. For example, a web browser is a software application that allows users to access the internet. Without it, reading this page on Webopedia wouldn’t be possible.
Similarly, an operating system (OS) serves as the interface between other applications and the hardware on a computer or mobile device. TCP/IP is built into all major operating systems to allow computers to communicate over long distance networks. Without the OS or the protocols built into it, it wouldn’t be possible to access a web browser.

The majority of software is written in high-level programming languages due to the language being closer to natural human language as opposed to machine language. The high-level language is then translated into low-level machine code using a compiler or interpreter for the computer to understand. It can also be written in a low-level assembly language, but it is less common.

History of software

Computing as a concept dates back to ancient times with inventions such as the abacus. However, these inventions were fully hardware - software requires a general-purpose processor and computer memory in which reusable sets of routines and mathematical functions can be stored, started, and stopped. This type of technology surfaces fairly recently in history.

Ada Lovelace wrote the first known computer program in 1843 for the Analytical Engine. The Analytical Engine was designed by Charles Babbage in 1837 and was the concept for the first general mechanical computer. The program, however, remained theoretical as the Analytical Engine was never physically constructed. The first modern theory of software was proposed by Alan Turing in his 1935 essay, “Computable numbers with an application to the Entscheidungsproblem (decision problem)

The first time a stored-program computer held a piece of software in electronic memory and executed it successfully was on June 21, 1948. Computer Scientist Tom Kilburn and his colleague Freddie William built one of the earliest computers, the Manchester Small-Scale Experimental Machine (SSEM) at the University of Manchester in England. The SSEM was programmed to perform mathematical calculations using machine code instructions. The software took 52 minutes to correctly compute the greatest divisor of two to the power of 18 (262,144).

In the late 1950s, the first programming language emerged: Fortran. Other languages soon followed, including COBOL and BASIC. These languages allowed programs to be specific in an abstract way and were not dependent on the details of the hardware architecture of the computer. The languages were chiefly intended for specifying numerical calculations.

Software became popular in the 1970s and 80s with the arrival of personal computers. Apple released Apple II in 1977, an 8-bit home computer and one of the world’s first successful mass-produced microcomputer products. VisiCalc, the first spreadsheet software for personal computers, was released for the Apple II in 1979. It was written in specialized assembly language. Other companies such as IBM soon developed home computers.

Software for productivity and business dominated the early stages of personal computing. Popular applications during this time included AutoCAD, Microsoft Word, and Microsoft Excel.

Another major innovation was the emergence of open-source software in the 1990s. The Linux kernel was released in 1991, and interest in open-source options skyrocketed after the 1998 publication of the source code for the Netscape Navigator Browser.

Also read: Input Definition and Meaning

Software vs. hardware

Computer software and hardware require each other – neither can be used on its own. A book provides a useful analogy. The pages and ink of a book are the hardware. The words, sentences, paragraphs, and overall meaning are the software. Without it, a computer is like a book full of blank pages.

While both are necessary, there are big differences between the two:

  • Hardware is a physical device, such as a motherboard, whereas software is a collection of code needed to be installed into the system.
  • Each one is mutually dependent – neither can function alone.
  • Hardware wears out with time, software does not.
  • Hardware only understands machine level language. Software takes input in human-readable languages and transforms it to machine level language.
  • Software can be easily created, changed or deleted, whereas switching out hardware takes greater skill and is typically more expensive to do.

Software

Hardware

Definition

Collection of instructions that enables a user to interact with the computer

Physical devices that are required to store and execute (run) the software

Types

System, programming application are all varieties of software

Input, storage, processing, control, and output devices

Function

Provides the instruction to the hardware

Performs the task at machine level

Faults

Failure is systematic. Software does not have an increasing failure rate.

Hardware failure is random. Hardware has increasing failure at the last stage.

Durability

Software is durable and doesn’t wear out, but with time, bugs may arise which could be rectified.

Hardware wears out with time.

Nature

Software is logical in nature.

Hardware is physical in nature.

Examples

QuickBooks, Adobe Acrobat, Google Chrome, Microsoft Word, Microsoft Excel, Apple Maps

CPU, Hard drive, RAM, keyboard, mouse, USB drive

 

What Types of Software Exist?

The four major varieties of software are:

  • Application
  • System
  • Programming
  • Driver

Let’s explain all four types separately.

Application

Application software helps an end user complete tasks such as doing research, taking notes, setting an alarm, designing graphics, or keeping an account log. Application software lies above the system software and is distinct because it’s designed for the end use and is specific in its functionality. It is sometimes referred to as non-essential software because it’s installed and operated based on the user’s needs. Any application on a mobile phone is an example of application software.

Types of application software include:

  • Word processors: Applications used for documentation. Examples include Microsoft Word, Google Docs, and AppleWorks
  • Spreadsheet software: Used to compute quantitative data. Examples include Microsoft Excel, Google Sheets, and Quattro Pro
  • Database software: Used to create and manage a database to organize data. This is also known as database management software (DBMS). Examples include MySQL, Clipper, and FileMaker
  • Multimedia software: Tools that are able play, create, or record images, audio, or video files. It’s used for video editing, animation, graphics, and image editing. Examples include Adobe Photoshop and Picasa
  • Application suites: A collection of related programs sold as a package. Microsoft Office is the most widely used application suite.
  • Internet browsers: Software used to access and view websites. Examples include Google Chrome and Internet Explorer.
  • Email programs: Software used for emailing. Examples include Outlook and Gmail.

System

System software helps the user, hardware, and application software interact and function with each other. It acts as a mediator or middle layer between the user and the hardware. It’s essential in managing the whole computer system - when a computer is first turned on, it’s the system software that is initially loaded into memory. It isn’t used by end users. Instead, it runs in the background of a device.

The most well-known example of this is the OS, which manages all other programs in a computer. Aside from the OS, other examples include:

  • Basic input/output system (BIOS): the built-in firmware that determines what a computer can do without accessing programs from a disk.
  • Boot: loads the OS into the computer’s main memory or RAM.
  • Assembler: Takes basic instructions and converts them into a pattern of bits that the processor can use to perform basic operations.
  • Device driver: Controls a particular type of device attached to the computer, such as a keyboard or mouse.

Programming

Programming software isn’t used by the end user, but by programmers who are writing code. It’s a program used to write, develop, test, and debug other software. These programs serve as a sort of translator. It takes programming languages such as Python or C++ and translates it into something a computer will understand, known as machine language code. Besides simplifying code, it also:

  • Assigns data storage
  • Enlists source code as well as program details
  • Offers diagnostic reports
  • Recifties system errors during runtime

Also read: Program Definition and Meaning

Driver

Also classified as a type of system software, driver software operates and controls devices and peripherals plugged into a computer, enabling a device to perform the designated task. Hardware devices that need a driver to connect to a system include displays, sound cards, printer, mice, and hard disks.

Since there are numerous types of devices, drivers allow software systems to communicate through a standardized language. An OS typically comes with built-in drivers for a mouse, keyboard, and printer by default, so third-party installations aren’t required. For advanced devices, the driver may need to be installed externally. If multiple OS are used, such as Linux, Windows, or Mac, separate drivers need to be maintained for each. Examples of drivers include:

  • BIOS driver
  • Display driver
  • Motherboard driver
  • ROM driver
  • USB driver
  • VGA driver

Device drivers can run in kernel mode or user mode. Running a driver in user mode improves stability, since a poorly written user mode driver can’t crash the system by overwriting kernel memory. Conversely, kernel mode is preferred for low-latency networking.

SaaS vs. on-premise

Software can be deployed in a few different ways, the two most common being cloud computing and on-premise.

Cloud computing is the delivery of computing services over the internet rather than having local servers or personal devices handle applications. Computing services can include servers, storage, databases, networking, software, analytics, and intelligence. These services are moved outside an organization’s firewall and can be accessed via the web. Software as a Service (SaaS) is a cloud computing service model that provides access to software, its functions, and subsequent updates remotely from a third party, called an Application Service Provider (ASP).

On-premise software is implemented within the physical confines of an enterprise, often in the company’s data center. By installing and running it on hardware located within the premises of the company, IT staff has physical access to the data and can directly control the configuration, management, and security of the computing infrastructure and data.

Companies that provide SaaS often sell their services using a subscription model where customers pay a set amount each week, month, or year, and receive the service in return. Businesses that choose SaaS only pay for the resources they use. Conversely, businesses that choose on-premise are responsible for the ongoing costs of the server hardware, power consumption, and space the hardware takes up.

A company using on-premise software retains more complete control over security. They are responsible for setting user access policies, installing firewalls, antivirus protection, and security patches, and guarding against cyberattacks. For companies with adequate IT support, they don’t have to worry about another company handling their private data. However, if mismanaged, on-premise servers can make a company vulnerable to security breaches.

With cloud computing, data is handled by the cloud provider. Large cloud providers have robust security teams and tight procedures. But with all the sensitive data they store, it provides a tempting target for hackers. When choosing a cloud provider, consider their security protocols to make sure your data is kept safe.

Popular vendors

Software vendors provide services in one of four categories: programming services, system services, open source, and SaaS. Vendors generate revenue from specialized licenses, maintenance services, subscription fees, and support fees. The biggest companies by revenue are: