Professional Documents
Culture Documents
Chapter 1
Tadele M.
1
Contents
What is software?
Types of software,
Nature of software.
What is software engineering?
Why Software Engineering?
Software crises
Some examples of software failures
Reason for software failure
Silver bullet ?
Software quality
Software Engineering and the Engineering Profession
Ethics in Software Engineering
2
What is software?
Software is
set of instruction or programs that direct the computer hardware or that
help user to perform users task.
collection of computer programs, procedures, rules, and associated
documentations and data (IEEE).
Software have variety of application or touch all aspect of
human life.
Some of them are:
business domain
engineering domain(software used for drawing, drafting,
modelling, etc)
Education domain (e-learning, ...)
3 etc
Types of software
There are different types of software based on different criteria
One way to classify software is as
System Software and Application Software
In another way software can be classified as
Custom (Bespoke) : For a specific customer
Example: web sites, air traffic system, etc
Generic: Often called COTS (Commercial Off The Shelf) or
Shrink-wrapped.
used for a number of different purposes without requiring
modification
Example: word processors, spread sheets, compilers, etc
Embedded: Built into hardware
4 E.g. Motion detection systems in security cameras.
Types of software…
Software can also be classified as
Real time software: Must react immediately
Safety is often a concern
e.g. control and monitoring systems
Almost all embedded systems have hard real-time constraint.
Data processing software: Used to run businesses
Accuracy and security of data are key concerns
Functions: recording sales, managing accounts, printing bills
Some software has both aspects
e.g.. Telephone system (managing phone calls and billing for those
calls)
5
The Nature of Software
Software is intangible: Hard to understand development effort
Software is easy to reproduce: Cost is in its development
in other engineering products, manufacturing is the costly stage
The industry is labor-intensive: Hard to automate
Untrained people can hack something together
Quality problems are hard to notice
Software is easy to modify
People make changes without fully understanding it.
Software does not ‘wear out’: It deteriorates by having its
design changed:
Changes often tend to introduce new defects
6
What is Software Engineering?
The process of solving customers’ problems by the systematic
development and evolution of large, high-quality software
systems within cost, time and other constraints
Other definitions:
IEEE: (1) the application of a systematic, disciplined, quantifiable
approach to the development, operation, maintenance of software;
that is, the application of engineering to software. (2) The study of
approaches as in (1).
The Canadian Standards Association: The systematic activities
involved in the design, implementation and testing of software to
optimize its production and support.
7
What is Software Engineering?...
Solving customers’ problems: is the goal of every software
engineering
Systematic development and evolution: An engineering process
involves applying well understood techniques in a organized and disciplined way
Many well-accepted practices have been formally standardized e.g. by the
IEEE or ISO
Large, high quality software systems: Software engineering
techniques are needed because large systems cannot be completely understood by
one person.
Teamwork and co-ordination are required
Cost, time and other constraints: Finite resources
o Inaccurate estimates of cost and time have caused many project failures
8
Why software Engineering?
Just like mechanical engineers design mechanical systems and
electrical engineers design electrical systems software
engineers design software systems.
Software appears, by its nature, to be difficult to engineer on a large
scale.
Because software differs in important ways from the artifacts produced by
other engineering discipline.
We continue to be dogged by large numbers of project failures, on
small and large projects.
Many of these are due to mistakes in project management.
Nevertheless, there is an insatiable demand for sizeable, well-
engineered software.
9
Why software Engineering?...
As per the IBM report, “31% of the project get cancelled before they
are completed, 53% overrun their cost estimates by an average of
189% and for every 100 projects, there are 94 restarts”.
Lack of adequate training in software engineering
The causes of the software crisis were linked to the overall complexity
of hardware and the software development process.
The crisis manifested itself in several ways:
Projects running over-budget and over-time.
Software was very inefficient and of low quality
Software often did not meet requirements.
Projects were unmanageable and code difficult to maintain.
Software was never delivered.
Property damage and loss of life
10
Some software failures
Ariane 5
It took the European Space Agency 10
years and $7 billion to produce Ariane 5,
Ariane 5 is a giant rocket capable of hurling a
pair of three-ton satellites into orbit
The rocket was destroyed after 39
seconds of its launch, at an altitude of
two and a half .
Reason: Overflow error when converting
data from 64-bit format to 16-bit format
11
Some software failures…
The Patriot Missile
First time used in Gulf war
Used as a defense from Iraqi Scud missiles
Failed several times including one that killed
28 US soldiers wounded 110 in Dhahran,
Saudi Arabia
Reasons:
A small timing error in the system’s clock
accumulated to the point that after 14 hours,
the tracking system was no longer accurate.
In the Dhahran attack, the system had been
operating for more than 100 hours.
12
Some software failures…
Y2k (the Year 2000 Problem)
was a problem for both digital (computer-related)
and non-digital documentation and data storage
situations which resulted from the practice of
abbreviating a four-digit year to two digits.
Businesses spent billions on programmers to fix a
glitch in legacy software.
United States spent about $100 billion combating
the bug.
•Reason: To save computer storage space, legacy software often stored the
year for dates as two digit numbers, such as “99″ for 1999. The software
also interpreted “00″ to mean 1900 rather than 2000, so when the year
2000 came along, bugs would result.
13
Some software failures…
Therac 25 incident
The Therac-25 was a radiation therapy
machine produced by Atomic Energy of
Canada Limited(AECL).
It was involved with at least six accidents
between 1985 and 1987, in which patients
were given massive overdoses of radiation,
approximately 100 times the intended dose.
Three of the six patients died as a direct
consequence.
Reason: bad software design and
development practices
14
Reason for software failure
Why?
we can’t find all errors before release
Poor planning: It takes so long to get the program finished
Inadequate use of resources: It cost so high
Lack of detail control: there is a difficulty in measuring progress of
software development….
17
Software Quality
Is the degree to which a system, component or process meets
customer or user needs or expectations. Some examples of SQ
Usability: Users can learn it and fast and get their job done easily
Efficiency: It doesn’t waste resources such as CPU time and
memory
Reliability: It does what it is required to do without failing
Maintainability: It can be easily changed
Reusability: Its parts can be used in other projects, so
reprogramming is not needed
Software quality can be
Internal or external
Short term or long term
18
Software Quality…
External quality of software: quality of software on the eye of users
Examples: Usability, efficiency, accuracy, …
Internal quality: refers to Characterize aspects of the design and source
code of the software
Have an effect on the external quality attributes
E.g. The amount of commenting of the code, The complexity of the code
Short term quality:
Does the software meet the customer’s immediate needs?
Is it sufficiently efficient for the volume of data we have today?
Long term quality:
Maintainability
Customer’s future needs
Scalability: Can the software handle larger volumes of data?
19
Software Quality…
All kinds of software qualities are important .
However, the relative importance of each will vary from
stakeholder to stakeholder and from system to system
Different qualities can conflict each other
Increasing efficiency can reduce maintainability or reusability
Increasing usability can reduce efficiency
Solutions
Setting objectives for quality is a key engineering activity
You then design to meet the objectives
Avoids ‘over-engineering’ which wastes money
Optimizing is also sometimes necessary
E.g. obtain the highest possible reliability using a fixed budget
20
Software Engineering and the Engineering Profession
The term Software Engineering was coined in 1968
People began to realize that the principles of engineering
should be applied to software development
Engineering is a licensed profession
In order to protect the public
Engineers design artifacts following well accepted practices
which involve the application of science, mathematics and
economics
Ethical practice is also a key tenet of the profession
In many countries, much software engineering does not require
an engineering license, but is still engineering
21
Ethics in Software Engineering
22