01 - What Is Software

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

1

Chapter 1

What is software?

Learning objectives and assessment criteria

The learning objectives covered within this chapter are:

• Distinguish between systems software and application software.

The assessment criteria addressed within this chapter are:

1.1 Explain the nature of information.

6.1 Discuss the nature and the utility of system software.

At a basic level, software is a collection of instructions (sometimes with data), which perform
tasks on a computer.

From a business point of view, all software should help to improve outcomes. If it does not,
there is no motivation to spend money buying or developing software. Often, commercial off-
the-shelf (COTS) software can meet common business needs. A good example of COTS
software is basic ‘office’ software, such as word processors, spreadsheets, desktop publishing,
graphics manipulation and so on.

Buying off the shelf is invariably cheaper and generally meets all the needs of a business.
Where a COTS solution does not meet all the needs of a business, we need to consider the cost
of developing and maintaining a custom solution versus managing that aspect of business
without software.

If a cost–benefit analysis shows that it is worth developing custom software to meet a business
need, we need to specify the requirements for anything created (see section 4.1). The end users
and customer can be involved in every aspect of development, so any user interface (UI) is
likely to be simple to use and any outputs from the system should be customisable to deliver
2

exactly what the business requires. Developing custom software is generally much more
expensive for a business, but it will give them software that fits their business needs very well
and, if the business does not change significantly, lasts a very long time. Another advantage of
developing a custom solution is that it is relatively simple to customise and update, which
extends the life of any software significantly

1.1 Development options

If we want COTS software, we can use a normal business to consumer (B2C) route to procure
existing solutions. If we have decided that our business needs a custom software solution, we
need to consider how to achieve this. If our business is large enough to have an in-house
software development team, developing in-house can be cheaper than hiring an external
developer or a development agency. An advantage of using an in-house development team is
that we can manage the process and change the outcomes during development, and
theoretically get a solution that better meets the business need once complete. It also means
that we have all the source code, so, if our needs changes, we can modify the software rather
than buying a new solution.

Hiring an external developer or a development agency requires clear communication of the


brief to come to a shared understanding of the requirements and ensure that the project delivers
its goals within a contract acceptable to both parties (see chapter 4). If we outsource the
development even if there are in-house teams, the in-house teams can focus on other priorities
and allow us to exploit the nuanced skills of specialists we may not have in-house.

Another consideration when buying in a solution is ongoing support. If we buy in a solution,


we either accept that it will become outdated over time, or we need to buy in ongoing support
to maintain and/or modify the software over time. It is possible to take over support for a
purchased solution in-house, but this may be more difficult in the long term (see chapter 13).

Considering the end user

When developing software, we need to consider the eventual audience before deciding what to
develop. This is easier with a custom solution, as the customer (usually a business) specifies a
set of requirements to develop to. We may also work with the end users of a system to refine
the front end and ensure its usability (see chapters 2 and 10).

Developing a commercial product, such as a new version of office software, may be more
difficult, as we need someone to simulate our customer, and this person needs to be someone
3

who is aware of our potential market, and knows and understands its needs. Commercial
product development is often handled by a product manager or an existing customer (or group
of customers). The key thing to consider is that, unless we are users ourselves, we need a
customer to help us identify what is required.

If we are developing a new version of a system that already exists, we need to be confident that
what we develop is an improvement or fills a gap in the existing market to ensure the
development time is not wasted.

Regular consultation with the customer or customer representative is critical to establish and
maintain priorities and develop the best software in the time, and for the budget, available.

Open source versus closed source

Software can be developed with an open- or closed-source approach. Open source means that
the source code is available publicly; closed source indicates that it is kept secret and only
available within the project. The availability of open-source code can be useful as it allows us
and others to take existing work and customise it to suit our purposes. To publish our own
projects in an open-source repository (see for example section 10.6 and chapter 13), we need
to ensure personal details or sensitive configuration information is abstracted and not included
in the files we are sharing publicly. Because open-source code is in the public domain, others
can find weaknesses in our product, though this can also lead to a collaborative approach to
improve or add to the codebase, eventually leading to cheaper and more widely tested
improvements.

While closed source offers more security than open source, its drawback is that the only people
scrutinising the code are the development team. In contrast, open source opens the code up to
a wider pool of contributors, which can lead to a higher-quality product.

There are also commercial considerations when deciding whether to choose closed or open
source. Anything developed within a closed environment is the property of the organisation
employing the development team. That means if they wish to create a commercially licensed
product, they can do so. Open-source software by definition is freely available, though some
vendors sell commercial support and management licences to help organisations use open-
source software.
4

1.2 Buying and selling software

There are a number of factors to consider when buying or selling software. These depend on
whether we are selling a commercial package or a custom software development for a specific
customer.

If selling commercially, we have to identify a need and establish that the demand is large
enough to justify the cost of development and to make a profit. If developing for a customer,
we need to ensure that all the requirements are met and also consider longer-term support, for
example ongoing maintenance and service contracts.

If buying a COTS solution, we need to look at our requirements and ensure the software meets
as many of them as possible. If the solution does not meet our requirements, we need to find
out how much it might cost to develop something that will. We then need to compare this cost
against the benefit to the business. Whilst a custom solution might meet all our business needs,
there is no point in spending the money if it does not also bring a commercial benefit. A good
example of this are robots: while the technology exists to create a humanoid robot to perform
any number of mundane business tasks, the cost is generally higher than just paying a human
to perform the tasks

1.3 System and application software

We generally categorise software into either system software or application software. System
software controls the operation of a computer and often contains tools to manage aspects of the
system. In contrast, application software can be anything from a simple calculator to a customer
relationship management (CRM) system. Application software performs a task for the user that
is not related to making the computer itself work.

Types of system software include:

• Operating system: this is the software that makes the computer start up and run.
Applications generally need an operating system to run on top of.
• Device driver: this is software that tells the computer how to use a particular piece of
hardware. Every device connected to the computer has a driver, from the mouse to the
screen and graphics card.
• Middleware: this is software that connects and allows communication between the
operating system and applications. It also allows applications to communicate with one
another.
5

• Utility software: while most operating systems contain some utilities to help manage
the computer, customer utility software exists to help analyse, configure, optimise or
maintain a computer.
• Shells and windowing systems: these types of software allow users to interact with
the services of the operating system. A shell, sometimes referred to as terminal or
command prompt, is a text-based interface. A windowing system provides a simple
graphical user interface (GUI).

Application software can be categorised by its function and use (e.g. business processes, office
applications, games, databases and so on). This is a very user-centric way of categorising and
helps users to identify the purpose of an application.

From the point of view of a developer, applications are categorised in terms of the platform
they sit on and the technology they use (e.g web, mobile, desktop, cloud, software-as-a-service,
connectivity and so on). This allows developers to talk about the place an application has within
the environment they are developing for.

When programming, developers have another set of tools: integrated development


environments (IDEs) (see section 8.1) are applications that often contain several of the
following:

• Editors: these are usually text-based environments that allow developers to create and
edit source code.
• Debuggers: these are tools that help to identify and correct code errors.
• Compilers: these are tools that take source code, convert it into machine code and
produce an executable file that can be run.
• Interpreters: these are programs that convert the source code to machine code line by
line, whilst we are running the code. Errors stop the code from executing.
• Linkers: in more complex software, a linker takes multiple objects generated by a
compiler and combines them into a single executable file.
• Loaders: these are part of the operating system and copy executable code into the
random-access memory (RAM) in order for it to be run.
6

Knowledge check 1.1

1. What is the difference between system and application software?

a. One runs the computer, the other manages input/output

b. One is for users to interact with the computer, the other deals with connections between

other software

c. One manages the operation of the computer, the other performs a specified task for the user

d. One controls the hardware, the other manages the software that is running

2. What is the most important factor when considering COTS over developing a custom

solution?

a. Whether the interface is easy to use

b. Whether the end users are familiar with it

c. Whether we get access to the source code

d. Whether it meets all or most of our requirements

You might also like