Doc1
Doc1
By
TechTarget Contributor
What is software?
Software is a set of instructions, data or programs used to operate computers and execute specific
tasks. It is the opposite of hardware, which describes the physical aspects of a computer. Software is
a generic term used to refer to applications, scripts and programs that run on a device. It can be
thought of as the variable part of a computer, while hardware is the invariable part.
The two main categories of software are application software and system software. An application is
software that fulfills a specific need or performs tasks. System software is designed to run a
computer's hardware and provides a platform for applications to run on top of.
Programming software, which provides the programming tools software developers need.
Early software was written for specific computers and sold with the hardware it ran on. In the 1980s,
software began to be sold on floppy disks and, later, CDs and DVDs. Today, most software is
purchased and directly downloaded over the internet. Software can be found on vendor
and application service provider websites.
Among the various categories of software, the most common types include the following:
Application software. The most frequently used software is application software, which is a
computer software package that performs a specific function for a user or, in some cases, for
another application. An application can be self-contained, or it can be a group of programs
that run the application for the user. Examples of modern applications include office suites,
graphics software, databases, database management programs, web browsers, word
processors, software development tools, image editors and communication platforms.
System software. These software programs are designed to run a computer's application
programs and hardware. System software coordinates the activities and functions of the
hardware and software. In addition, it controls the operations of the computer hardware and
provides an environment or platform for all the other types of software to work in. An
operating system (OS) is the best example of system software; it manages all the other
computer programs. Other examples of system software include firmware, computer
language translators and system utilities.
Driver software. Also known as device drivers, this software is often considered a type of
system software. Device drivers control the devices and peripherals connected to a
computer, helping them perform their specific tasks. Every device that's connected to a
computer needs at least one device driver to function. Examples include software that comes
with any nonstandard hardware, including special game controllers, as well as the software
that enables standard hardware, such as USB storage devices, keyboards, headphones and
printers.
Middleware. The term middleware describes software that mediates between application
and system software or between two different kinds of application software. For example,
middleware lets Microsoft Windows talk to Excel and Word. It's used to send a remote work
request from an application in a computer that has one kind of OS to an application in a
computer with a different OS. It also lets newer applications work with legacy ones.
Application software
Application software consists of many programs that perform specific functions for end users, such
as writing reports and navigating websites. Applications also perform tasks for other applications.
Applications on a computer can't run on their own; they require a computer's OS along with other
supporting system software programs to work.
These desktop applications are installed on a user's computer and use the computer memory to
carry out tasks. They take up space on the computer's hard drive and don't need an internet
connection to work. However, desktop applications must adhere to the requirements of the
hardware devices they run on.
Web applications, on the other hand, do require internet access to work, but they don't rely on the
hardware and system software to run. Consequently, users can launch web applications from devices
that have a web browser. Since the components responsible for the application functionality are on
the server, users can launch the app from Windows, Mac, Linux or any other OS.
System software
System software sits between the computer hardware and the application software. Users don't
interact directly with system software as it runs in the background, handling the basic functions of
the computer. This software coordinates a system's hardware and software so users can run high-
level application software to perform specific actions. System software executes when a computer
system boots up and continues running as long as the system is on.
System
software and application software differ in some key ways.
Design and implementation of software
The software development lifecycle is a framework that project managers use to describe the stages
and tasks associated with designing software. The first steps in the design lifecycle are planning the
effort, then analyzing the needs of the individuals who will use the software and creating detailed
requirements. After the initial requirements analysis, the design phase aims to specify how to fulfill
those user requirements.
The next is step is implementation, where development work is completed, and then software
testing happens. The maintenance phase involves any tasks required to keep the system running.
Software design includes a description of the structure of the software that will be implemented,
data models, interfaces between system components and potentially the algorithms the software
engineer will use.
The software design process transforms user requirements into a form that computer programmers
can use to do the software coding and implementation. Software engineers develop the software
design iteratively, adding detail and correcting the design as they develop it.
Architectural design. This is the foundational design, which identifies the overall structure of
the system, its main components and their relationships with one another using architectural
design tools.
High-level design. This is the second layer of design that focuses on how the system, along
with all its components, can be implemented in forms of modules supported by a software
stack. A high-level design describes the relationships between data flow and the various
modules and functions of the system.
Detailed design. This third layer of design focuses on all the implementation details
necessary for the specified architecture.