You are on page 1of 23

IIIT Dharwad Dept.

of DSIS

Software Engineering and Services (DS 203)

Dr. Manjunath K Vanahalli


Department of Data Science and Artifical Intelligence
Indian Institute of Information Technology Dharwad, India

January 16, 2023

1 / 23
IIIT Dharwad Dept. of DSIS

THE NATURE OF SOFTWARE

Today, software takes on a dual role. It is a product, and at the same


time, the vehicle for delivering a product.

As a product, It delivers the computing potential embodied by com-


puter hardware or more broadly, by a network of computers that are
accessible by local hardware.

Whether it resides within a mobile phone, a hand-held tablet, on the


desktop, or within a mainframe computer, software is an information
transformer—producing, managing, acquiring, modifying, displaying,

or transmitting information that can be as simple as a single bit or


as complex as a multimedia presentation derived from data acquired
from dozens of independent sources.

2 / 23
IIIT Dharwad Dept. of DSIS

THE NATURE OF SOFTWARE


As the vehicle used to deliver the product, software acts as the basis
for the control of the computer (operating systems), the communi-
cation of information (networks), and the creation and control of
other programs (software tools and environments).
Software delivers the most important product of our time— informa-
tion. It transforms personal data (e.g., an individual’s financial trans-
actions) so that the data can be more useful in a local context.
It manages business information to enhance competitiveness; it provides
a gateway to worldwide information networks (e.g., the Internet), and
provides the means for acquiring information in all of its forms
The role of computer software has undergone significant change over
the last half-century. Dramatic improvements in hardware performance,
profound changes in computing architectures, vast increases in memory
and storage capacity, and a wide variety of exotic input and output
options have all precipitated more sophisticated and complex computer-
3 / 23
IIIT Dharwad Dept. of DSIS

THE NATURE OF SOFTWARE

Today, a huge software industry has become a dominant factor in the


economies of the industrialized world.

Teams of software specialists, each focusing on one part of the technol-


ogy required to deliver a complex application, have replaced the lone
programmer of an earlier era.

And yet, the questions that were asked of the lone programmer are the
same questions that are asked when modern computer-based systems
are built

4 / 23
IIIT Dharwad Dept. of DSIS

THE NATURE OF SOFTWARE

Why does it take so long to get software finished?

Why are development costs so high?

Why can’t we find all errors before we give the software to our cus-
tomers?

Why do we spend so much time and effort maintaining existing pro-


grams?

Why do we continue to have difficulty in measuring progress as software


is being developed and maintained?

5 / 23
IIIT Dharwad Dept. of DSIS

Defining Software

A textbook description of software might take the following form:

Software is: (1) instructions (computer programs) that when executed


provide desired features, function, and performance; (2) data structures
that enable the programs to adequately manipulate information, and
(3) descriptive information in both hard copy and virtual forms that
describes the operation and use of the programs.

Frequently asked questions about software engineering. What is soft-


ware?

Computer programs and associated documentation. Software products


may be developed for a particular customer or may be developed for a
general market.
6 / 23
IIIT Dharwad Dept. of DSIS

Defining Software

What are the attributes of good software?

Good software should deliver the required functionality and perfor-


mance to the user and should be maintainable, dependable and usable.

What is software engineering?

Software engineering is an engineering discipline that is concerned with


all aspects of software production from initial conception to operation
and maintenance.

7 / 23
IIIT Dharwad Dept. of DSIS

Defining Software

What are the fundamental software engineering activities?

Software specification, software development, software validation and


software evolution.

What is the difference between software engineering and computer sci-


ence?

Computer science focuses on theory and fundamentals; software engi-


neering is concerned with the practicalities of developing and delivering
useful software.

8 / 23
IIIT Dharwad Dept. of DSIS

Defining Software
What is the difference between software engineering and system engi-
neering?

System engineering is concerned with all aspects of computerbased


systems development including hardware, software and process engi-
neering. Software engineering is part of this more general process.

What are the key challenges facing software engineering?

Coping with increasing diversity, demands for reduced delivery times


and developing trustworthy software.

What are the costs of software engineering?

Roughly 60% of software costs are development costs, 40% are testing
costs. For custom software, evolution costs often exceed development
costs.
9 / 23
IIIT Dharwad Dept. of DSIS

Defining Software
What are the best software engineering techniques and methods?

While all software projects have to be professionally managed and devel-


oped, different techniques are appropriate for different types of system.
For example, games should always be developed using a series of pro-
totypes whereas safety critical control systems require a complete and
analyzable specification to be developed. There are no methods and
techniques that are good for everything.

What differences has the Internet made to software engineering?

Not only has the Internet led to the development of massive, highly
distributed, service-based systems, it has also supported the creation of
an “app” industry for mobile devices which has changed the economics
of software.
10 / 23
IIIT Dharwad Dept. of DSIS

Software Product
There are two kinds of software product:
Generic products These are stand-alone systems that are produced by a
development organization and sold on the open market to any customer
who is able to buy them. Examples of this type of product include
apps for mobile devices, software for PCs such as databases, word
processors, drawing packages, and project management tools. This
kind of software also includes “vertical” applications designed for a
specific market such as library information systems, accounting systems,
or systems for maintaining dental records.
Customized (or bespoke) software These are systems that are commis-
sioned by and developed for a particular customer. A software contrac-
tor designs and implements the software especially for that customer.
Examples of this type of software include control systems for electronic
devices, systems written to support a particular business process, and
air traffic control systems.
11 / 23
IIIT Dharwad Dept. of DSIS

Software Product

The critical distinction between these types of software is that, in


generic products, the organization that develops the software controls
the software specification. This means that if they run into develop-
ment problems, they can rethink what is to be developed.

For custom products, the specification is developed and controlled by


the organization that is buying the software. The software developers
must work to that specification.

However, the distinction between these system product types is be-


coming increasingly blurred. More and more systems are now being
built with a generic product as a base, which is then adapted to suit
the requirements of a customer. Enterprise Resource Planning (ERP)
systems, such as systems from SAP and Oracle, are the best examples
of this approach.

12 / 23
IIIT Dharwad Dept. of DSIS

Software Application Domains

System software— a collection of programs written to service other


programs. Some system software (e.g., compilers, editors, and file
management utilities) processes complex, but determinate, 3 informa-
tion structures. Other systems applications (e.g., operating system
components, drivers, networking software, telecommunications proces-
sors) process largely indeterminate data.

Application software —stand-alone programs that solve a specific busi-


ness need. Applications in this area process business or technical data
in a way that facilitates business operations or management/technical
decision making.

13 / 23
IIIT Dharwad Dept. of DSIS

Software Application Domains

Engineering/scientific software —a broad array of “number-crunching


programs that range from astronomy to volcanology, from automotive
stress analysis to orbital dynamics, and from computer-aided design to
molecular biology, from genetic analysis to meteorology.

Embedded software— resides within a product or system and is used


to implement and control features and functions for the end user and
for the system itself. Embedded software can perform limited and eso-
teric functions (e.g., key pad control for a microwave oven) or provide
significant function and control capability (e.g., digital functions in an
automobile such as fuel control, dashboard displays, and braking sys-
tems). making.

14 / 23
IIIT Dharwad Dept. of DSIS

Software Application Domains

Product-line software —designed to provide a specifi c capability for


use by many different customers. Product-line software can focus on a
limited and esoteric marketplace (e.g., inventory control products) or
address mass consumer.

Web/Mobile applications —this network-centric software category spans


a wide array of applications and encompasses both browser-based apps
and software that resides on mobile devices.

Artificial intelligence software— makes use of nonnumerical algorithms


to solve complex problems that are not amenable to computation or
straightforward analysis. Applications within this area include robotics,
expert systems, pattern recognition (image and voice), artifi cial neural
networks, theorem proving, and game playing.

15 / 23
IIIT Dharwad Dept. of DSIS

Failure curve for hardware

16 / 23
IIIT Dharwad Dept. of DSIS

Failure curve for hardware


Figure depicts failure rate as a function of time for hardware. The
relationship, often called the “bathtub curve,” indicates that hardware
exhibits relatively high failure rates early in its life (these failures are
often attributable to design or manufacturing defects)

Defects are corrected and the failure rate drops to a steady-state level
(hopefully, quite low) for some period of time.

As time passes, however, the failure rate rises again as hardware com-
ponents suffer from the cumulative effects of dust, vibration, abuse,
temperature extremes, and many other environmental maladies. Stated
simply, the hardware begins to wear out.

Software is not susceptible to the environmental maladies that cause


hardware to wear out. However, the implication is clear—software
doesn’t wear out. But it does deteriorate!
17 / 23
IIIT Dharwad Dept. of DSIS

Failure curves for software

18 / 23
IIIT Dharwad Dept. of DSIS

Failure curves for software


During its life, 2 software will undergo change. As changes are made,
it is likely that errors will be introduced, causing the failure rate curve
to spike as shown in the “actual curve”
Before the curve can return to the original steady-state failure rate, an-
other change is requested, causing the curve to spike again. Slowly, the
minimum failure rate level begins to rise—the software is deteriorating
due to change.
Another aspect of wear illustrates the difference between hardware and
software. When a hardware component wears out, it is replaced by a
spare part. There are no software spare parts. Every software failure
indicates an error in design or in the process through which design was
translated into machine executable code.
Therefore, the software maintenance tasks that accommodate requests
for change involve considerably more complexity than hardware main-
tenance. 19 / 23
IIIT Dharwad Dept. of DSIS

Software engineering
Software engineering is an engineering discipline that is concerned with
all aspects of software production from the early stages of system spec-
ification through to maintaining the system after it has gone into use.
Engineering discipline Engineers make things work. They apply theo-
ries, methods, and tools where these are appropriate. However, they
use them selectively and always try to discover solutions to problems
even when there are no applicable theories and methods. Engineers
also recognize that they must work within organizational and financial
constraints, and they must look for solutions within these constraints.

All aspects of software production Software engineering is not just con-


cerned with the technical processes of software development. It also
includes activities such as software project management and the devel-
opment of tools, methods, and theories to support software develop-
ment.
20 / 23
IIIT Dharwad Dept. of DSIS

Software engineering

Software engineering is important for two reasons:

More and more, individuals and society rely on advanced software sys-
tems. We need to be able to produce reliable and trustworthy systems
economically and quickly.

It is usually cheaper, in the long run, to use software engineering meth-


ods and techniques for professional software systems rather than just
write programs as a personal programming project. Failure to use
software engineering method leads to higher costs for testing, quality
assurance, and long-term maintenance.

21 / 23
IIIT Dharwad Dept. of DSIS

Software engineering

The systematic approach that is used in software engineering is some-


times called a software process. A software process is a sequence of
activities that leads to the production of a software product.

Four fundamental activities are common to all software processes.

Software specification, where customers and engineers define the soft-


ware that is to be produced and the constraints on its operation.

22 / 23
IIIT Dharwad Dept. of DSIS

Software engineering

Software development, where the software is designed and programmed.

Software validation, where the software is checked to ensure that it is


what the customer requires.

Software evolution, where the software is modified to reflect changing


customer and market requirements.

23 / 23

You might also like