You are on page 1of 9


Computer software, or simply software, also known as computer programs, is the non-tangible
component of computers. It represents the set of programs that govern the operation of a
computer system and make the hardware run. Computer software contrasts with computer
hardware, which is the physical component of computers. Computer hardware and software
require each other and neither can be realistically used without the other.
Computer software includes all computer programs regardless of their architecture; for
example, executable files, libraries and scripts are computer software. Yet, it shares their
mutual properties: software consists of clearly defined instructions that upon execution,
instructs hardware to perform the tasks for which it is designed. Software is stored in computer
memory and cannot be touched, just as a 3D model shown in an illustration cannot be touched.
At the lowest level, executable code consists of machine language instructions specific to an
individual processor typically a central processing unit (CPU). A machine language consists of
groups of binary values signifying processor instructions that change the state of the computer
from its preceding state. For example, an instruction may change the value stored in a
particular storage location inside the computer an effect that is not directly observable to the
user. An instruction may also (indirectly) cause something to appear on a display of the
computer system a state change which should be visible to the user. The processor carries out
the instructions in the order they are provided, unless it is instructed to "jump" to a different
instruction, or interrupted.
Software is usually written in high-level programming languages that are easier and more
efficient for humans to use (closer to natural language) than machine language. High-level
languages are compiled or interpreted into machine language object code. Software may also
be written in a low-level assembly language, essentially, a vaguely mnemonic representation of
a machine language using a natural language alphabet. Assembly language is converted into
object code via an assembler.
The first piece of software was arguably created by Ada Lovelace in the 19th century, for the
planned analytical engine. However, it was never executed. The first theory about software -
prior to the creation of computers as we know them today - was proposed by Alan Turing in his
1935 essay Computable numbers with an application to the Entscheidungsproblem (decision
This eventually led to the creation of the twin academic fields of computer science and
software engineering, which both study software and its creation. Computer science is more
theoretical (Turing's essay is an example of computer science), whereas software engineering is
focused on more practical concerns. However, prior to 1946, software as we now understand it
- programs stored in the memory of stored-program digital computers - did not yet exist.
In his manuscript "A Mathematical theory of Communication", Claude Shannon (1916-2001)
provided an outline for how binary logic could be implemented to program a computer.
Subsequently, the first computer programmers used binary code to instruct computers to
perform various tasks. Nevertheless, the process was very arduous. Computer programmers
had to enter long strings of binary code to tell the computer what data to store. Other methods
that computer programmers used were much more laborious such as with the Manchester
Small-Scale Experimental Machine. Computer programmers literally had to load information
onto computers using various tedious mechanisms, including flicking switches or punching
holes at predefined positions in cards and loading these punched cards into a computer. With
such methods, if a mistake was made, the whole program might have to be loaded again from
the beginning.
Later, software was sold to multiple customers by being bundled with the hardware by Original
equipment manufacturers (OEMs) such as Data General, Digital Equipment and IBM. When a
customer bought a minicomputer, at that time the smallest computer on the market, the
computer did not come with Pre-installed software, but needed to be installed by engineers
employed by the OEM. Most companies

had their software on the books for 0 dollars, unable
to claim it as an asset (this is similar to financing of popular music in those days)
This bundling attracted the attention of US antitrust regulators, who sued IBM for improper
"tying" in 1969, alleging that it was an antitrust violation that customers who wanted to obtain
its software had to also buy or lease its hardware in order to do so. Although the case was
dropped by the US Justice Department after many years of attrition as "without merit", IBM
started selling software separately anyway. This began the age of commercial software.
Very quickly, commercial software started to be pirated, and commercial software producers
were very unhappy at this. Bill Gates, cofounder of Microsoft, was an early moraliser against
software piracy with his famous Open Letter to Hobbyists in 1976.
Data General also encountered legal problems related to bundling - although in this case, it was
due to a civil suit from a would-be competitor. When Data General introduced the Data General
Nova, a company called Digidyne wanted to use its RDOS operating system on its own hardware
clone. Data General refused to license their software (which was hard to do, since it was on the
books as a free asset), and claimed their "bundling rights". The US Supreme Court set a
precedent called Digidyne v. Data General in 1985, and the Supreme Court let a 9th circuit
decision stand, and Data General was eventually forced into licensing the operating system
because it was ruled that restricting the license to only DG hardware was an illegal tying
arrangement. Unable to sustain the loss from lawyer's fees, Data General ended up being taken
over by EMC Corporation.
The rather absurd legal precedent in Digidyne v. Data General regarding bundling has never
been applied to Apple, which might never have been as profitable as it is today had it been
forced to license its Macintosh operating systems to competitors (although it did do so
temporarily, voluntarily, on a limited scale and for a limited period of time).
Just like the auto industry, the software industry has grown from a few visionaries operating
(figuratively or literally) out of their garage with prototypes. Steve Jobs and Bill Gates were the
Henry Ford and Louis Chevrolet of their times, who capitalized on ideas already commonly
known before they started in the business. A pivotal moment in computing history was the
publication in the 1980s of the specifications for the IBM Personal Computer published by IBM
employee Philip Don Estridge, which quickly led to the dominance of the PC in the worldwide
desktop and later laptop markets - a dominance which continues to this day. Today his move
would be seen as a type of crowdsourcing.
Based on the goal, computer software can be divided into:
Application software uses the computer system to perform useful work or provide
entertainment functions beyond the basic operation of the computer itself.
System software is designed to operate the computer hardware, to provide basic
functionality, and to provide a platform for running application software.
software includes:
o Operating system, an essential collection of computer programs that manages
resources and provides common services for other software. Supervisory
programs, boot loaders, shells and window systems are core parts of operating
systems. In practice, an operating system comes bundled with additional
software (including application software) so that a user can potentially do some
work with a computer that only has an operating system.
o Device driver, a computer program that operates or controls a particular type of
device that is attached to a computer. Each device needs at least one
corresponding device driver; thus a computer needs more than one device
o Utilities, software designed to assist users in maintenance and care of their
Malicious software or malware, computer software developed to harm and disrupt
computers. As such, malware is undesirable. Malware is closely associated with
computer-related crimes, though some malicious programs may have been designed as
practical jokes.

Application software is a set of one or more programs designed to carry out operations for a
specific application. Application software cannot run on itself but it is dependent on system
software to execute. For example: MS Word, MS Excel, Tally software, Library management
system, billing system, etc.
The term is used to contrast such software with another type of computer program referred to
as system software, which manages and integrates a computer's capabilities but does not
directly perform tasks that benefit the user. The system software serves the application, which
in turn serves the user.
Examples include accounting software, enterprise software, graphics software, media players,
and office suites. Many application programs deal principally with documents. Applications may
be bundled with the computer and its system software or published separately, and can be
coded as university projects.
Application software applies the power of a particular computing platform or system software
to a particular purpose.
Some applications are available in versions for several different platforms; others have
narrower requirements and are thus called, for example, a Geography application for Windows,
an Android application for education, or Linux gaming. Sometimes a new and popular
application arises which only runs on one platform, increasing the desirability of that platform.
This is called a killer application.
There are many different ways to divide up different types of application software, and several
are explained here.
Since the development and near-universal adoption of the web, an important distinction that
has emerged has been between web applications written with HTML, JavaScript and other
web-native technologies and typically requiring one to be online and running a web browser,
and the more traditional native applications written in whatever languages are available for
one's particular type of computer. There has been contentious debate in the computing
community regarding web applications replacing native applications for many purposes,
especially on mobile devices such as smart phones and tablets. Web apps have indeed greatly
increased in popularity for some uses, but the advantages of applications make them unlikely to
disappear soon, if ever. Furthermore, the two can be complementary, and even integrated.
Application software can also be seen as being either horizontal or vertical. Horizontal
applications are more popular and widespread, because they are general purpose, for example
word processors or databases. Vertical applications are niche products, designed for a
particular type of industry or business, or department within an organization. Integrated suites
of software will try to handle every specific aspect possible of, for example, manufacturing or
banking systems, or accounting, or customer service.
There are many types of application software:
An application suite consists of multiple applications bundled together. They usually
have related functions, features and user interfaces, and may be able to interact with
each other, e.g. open each other's files. Business applications often come in suites, e.g.
Microsoft Office, LibreOffice and iWork, which bundle together a word processor, a
spreadsheet, etc.; but suites exist for other purposes, e.g. graphics or music.
Enterprise software addresses the needs of an entire organization's processes and data
flow, across most all departments, often in a large distributed environment. (Examples
include financial systems, customer relationship management (CRM) systems and supply
chain management software). Departmental Software is a sub-type of enterprise
software with a focus on smaller organizations and/or groups within a large
organization. (Examples include travel expense management and IT Helpdesk.)
Enterprise infrastructure software provides common capabilities needed to support
enterprise software systems. (Examples include databases, email servers, and systems
for managing networks and security.)
Information worker software lets users create and manage information, often for
individual projects within a department, in contrast to enterprise management.
Examples include time management, resource management, documentation tools,
analytical, and collaborative. Word processors, spreadsheets, email and blog clients,
personal information system, and individual media editors may aid in multiple
information worker tasks.
Content access software is used primarily to access content without editing, but may
include software that allows for content editing. Such software addresses the needs of
individuals and groups to consume digital entertainment and published digital content.
(Examples include media players, web browsers, and help browsers.)
Educational software is related to content access software, but has the content and/or
features adapted for use in by educators or students. For example, it may deliver
evaluations (tests), track progress through material, or include collaborative capabilities.
Simulation software simulates physical or abstract systems for either research, training
or entertainment purposes.
Media development software generates print and electronic media for others to
consume, most often in a commercial or educational setting. This includes graphic-art
software, desktop publishing software, multimedia development software, HTML
editors, digital-animation editors, digital audio and video composition, and many

Product engineering software is used in developing hardware and software products.
This includes computer-aided design (CAD), computer-aided engineering (CAE),
computer language editing and compiling tools, integrated development environments,
and application programmer interfaces.
Applications can also be classified by computing platform such as a particular operating system,
delivery network such as in cloud computing and Web 2.0 applications, or delivery devices such
as mobile apps for mobile devices.
The operating system itself can be considered application software when performing simple
calculating, measuring, rendering, and word processing tasks not used to control hardware via
command-line interface or graphical user interface. This does not include application software
bundled within operating systems such as a software calculator or text editor.

While developing any kind of software product, the first question in any developer's mind is, What
are the qualities that a good software should have ?" Well before going into technical characteristics,
I would like to state the obvious expectations one has from any software. First and foremost, a
software product must meet all the requirements of the customer or end-user. Also, the cost of
developing and maintaining the software should be low. The development of software should be
completedin the specified time-frame.

Well these were the obvious things which are expected from any project (and software development
is a project in itself). Now lets take a look at Software Quality factors. These set of factors can be
easily explained by Software Quality Triangle. The three characteristics of good application software
are :-
1) Operational Characteristics
2) Transition Characteristics
3) Revision Characteristics

a) Correctness: The software which we are making should meet all the specifications
stated by the customer.
b) Usability/Learnability: The amount of efforts or time required to learn how to use the
software should be less. This makes the software user-friendly even for IT-illiterate people.
c) Integrity : Just like medicines have side-effects, in the same way a software may have a
side-effect i.e. it may affect the working of another application. But a quality software should
not have side effects.
d) Reliability : The software product should not have any defects. Not only this, it
shouldn't fail while execution.
e) Efficiency : This characteristic relates to the way software uses the available
resources. The software should make effective use of the storage space and execute
command as per desired timing requirements.
f) Security : With the increase in security threats nowadays, this factor is gaining
importance. The software shouldn't have ill effects on data / hardware. Proper measures
should be taken to keep data secure from external threats.
g) Safety : The software should not be hazardous to the environment/life.

These engineering based factors of the relate to 'interior quality' of the software like efficiency,
documentation and structure. These factors should be in-build in any good software. Various
Revision Characteristics of software are :-

a) Maintainability : Maintenance of the software should be easy for any kind of user.
b) Flexibility : Changes in the software should be easy to make.
c) Extensibility : It should be easy to increase the functions performed by it.
d) Scalability : It should be very easy to upgrade it for more work(or for more number of users).
e) Testability : Testing the software should be easy.
f) Modularity : Any software is said to made of units and modules which are independent of each
other. These modules are then integrated to make the final software. If the software is divided into
separate independent parts that can be modified, tested separately, it has high modularity.

a) Interoperability : Interoperability is the ability of software to exchange information with other
applications and make use of information transparently.
b) Reusability : If we are able to use the software code with some modifications for different
purpose then we call software to be reusable.
c)Portability : The ability of software to perform same functions across all environments and
platforms, demonstrate its portability.

Importance of any of these factors varies from application to application. In systems where human
life is at stake, integrity and reliability factors must be given prime importance. In any business
related application usability and maintainability are key factors to be considered. Always remember
in Software Engineering, quality of software is everything, therefore try to deliver a product which
has all these characteristics and qualities

The different types of application software are used by individual users and business enterprises as
well, and they have many benefits of doing so. This includes word processing software, database
software, multimedia software, editing software and many other different kinds as well. All these
software are either provided individually, or they are packaged together and sold by business to
business sellers. When a whole variety of them are integrated collectively and sold to a business, they
can take up the form of enterprise software, educational software, simulation software, information
worker software etc


When you begin to compare, you will find that the pros outweigh the cons very easily. With that in
mind, here are some of their most popular and widely accepted benefits. Note that in this scenario, we
are speaking of application software that is designed for a specific purpose, to be used either by
individuals or by businesses.

1. Their single biggest advantage is that it meets the exact needs of the user.
Since it is designed specifically with one purpose in mind, the user knows that
he has to use one specific software to accomplish his task.
2. The threat of viruses invading custom-made applications is very small, since
any business that incorporates it can restrict access and can come up with
means to protect their network as well.
3. Licensed application software gets regular updates from the developer for
security reasons. Additionally, the developer also regularly sends personnel to
correct any problems that may arise from time to time.


As is the case with all such matters, there are certain disadvantages of such software as well. Though
these are not spoken about very often, nor are they highlighted, the fact is that they do exist and
affect certain users. But people have accepted these misgivings and still continue to use such software
because their utility and importance is much more profound than their weaknesses.
1. Developing application software designed to meet specific purposes can prove to be quite costly for
developers. This can affect their budget and their revenue flow, especially if too much time is spent
developing a software that is not generally acceptable.
2. Some software that are designed specifically for a certain business, may not be compatible with
other general software. This is something that can prove to be a major stumbling block for many
3. Developing them is something that takes a lot of time, because it needs constant communication
between the developer and the customer. This delays the entire production process, which can prove
to be harmful in some cases.
Application software that is used commonly by many people, and then shared online, carries a very
real threat of infection by a computer virus or other malicious programs.
So whether you are buying them off the shelf, or whether you are hiring a developer to build specific
software for you, all of these points will seem pertinent to you. Many individuals and businesses have
regularly found the need and the requirement for such software, and the fact remains that any
computing device will be utterly useless without such software running on it