0% found this document useful (0 votes)
49 views

Chapter 1 - Introduction To Software Engineering

The document provides an introduction to key concepts in software engineering. It discusses why software engineering is important given issues like increasing complexity, large projects, and skills shortages that have contributed to a "software crisis". It then covers common software failures and definitions of core terms like software, processes, characteristics and myths. The document aims to establish a foundation for understanding software engineering principles and practices.

Uploaded by

desalew baye
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views

Chapter 1 - Introduction To Software Engineering

The document provides an introduction to key concepts in software engineering. It discusses why software engineering is important given issues like increasing complexity, large projects, and skills shortages that have contributed to a "software crisis". It then covers common software failures and definitions of core terms like software, processes, characteristics and myths. The document aims to establish a foundation for understanding software engineering principles and practices.

Uploaded by

desalew baye
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 45

Introduction to Software

Engineering
Chapter 1
Topics includes…
• Why Software Engineering?
• The Evolving Role of Software
• Factors Contributing to the Software Crisis
• Some Software failures
• What is software?
• Software Product
• What is software engineering?
• Software Process
• Software Characteristics
• The Changing Nature of Software
• Software Myths
• Software Engineering Terminologies
• Role of Management in Software Development
Why Software Engineering?
• Change in nature & complexity of software
• Concept of one “guru” is over
• We all want improvement
The Evolving Role of Software
• Software industry is in Crisis!
The Evolving Role of Software cont…
The Evolving Role of Software cont…
• As per the IBM report, “31%of the project get
cancelled before they are completed, 53%
over-run their cost estimates by an average of
189% and for every 100 projects, there are 94
restarts”.
The Evolving Role of Software cont…
The Evolving Role of Software cont…
• Unlike Hardware
Moore’s law: processor speed/memory capacity
doubles every two year
The Evolving Role of Software cont…
• Managers and Technical Persons are asked:
– Why does it take so long to get the program
finished?
– Why are costs so high?
– Why can not we find all errors before release?
– Why do we have difficulty in measuring progress
of software development?
Factors Contributing to the Software
Crisis
• Larger problems,
• Lack of adequate training in software
engineering,
• Increasing skill shortage,
• Low productivity improvements.
Some Software failures
Ariane 5
• It took the European Space Agency 10 years and $7 billion to produce Ariane
5, a giant rocket capable of hurling a pair of three-ton satellites into orbit
with each launch and intended to give Europe overwhelming supremacy in
the commercial space business.The rocket was destroyed after 39 seconds of
its launch, at an altitude of two and a half miles along with its payload of four
expensive and uninsured scientific satellites.
• When the guidance system’s own computer tried to convert one piece of
data the sideways velocity of the rocket from a 64 bit format to a 16 bit
format; the number was too big, and an overflow error resulted after 36.7
seconds. When the guidance system shutdown, it passed control to an
identical, redundant unit, which was there to provide backup in case of just
such a failure. Unfortunately, the second unit, which had failed in the
identical manner a few milliseconds before
Some Software failures cont…
Some Software failures cont…
Y2K problem
• It was simply the
ignorance about the
adequacy or otherwise
of using only last two
digits of the year. The 4-
digit date format, like
1964, was shortened to
2-digit format, like 64.
Some Software failures cont…
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 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
Some Software failures cont…
The Space Shuttle
• Part of an abort scenario for
the Shuttle requires fuel
dumps to lighten the
spacecraft. It was during the
second of these dumps that a
(software) crash occurred.
• ...the fuel management
module, which had performed
one dump and successfully
exited, restarted when
recalled for the second fuel
dump.
Some Software failures cont…
• A simple fix took care of the problem…but the
programmers decided to see if they could
come up with a systematic way to eliminate
these generic sorts of bugs in the future. A
random group of programmers applied this
system to the fuel dump module and other
modules.
• Seventeen additional, previously unknown
problems surfaced!
Some Software failures cont…
Financial Software
• Many companies have experienced failures in
their accounting system due to faults in the
software itself. The failures range from
producing the wrong information to the whole
system crashing
Some Software failures cont…
Windows XP
• Microsoft released Windows XP on October
25, 2001.
• On the same day company posted 18 MB of
compatibility patches on the website for bug
fixes,compatibility updates, and
enhancements.
• Two patches fixed important security holes
What is software?
• Computer programs and associated
documentation
What is software? cont…
What is software? cont…
• Documentation consists of different types of manuals are:
What is software? cont…
• Documentation consists of different types of manuals are:
Software Product
• Software products may be developed for a
particular customer or may be developed for a
general market

• Software products may be


 Generic - developed to be sold to a range of
different customers
 Bespoke (custom) - developed for a single
customer according to their specification
Software Product cont…
• Software product is a product designated for
delivery to the user
What is software engineering?
• Software engineering is an engineering discipline
which is concerned with all aspects of software
production.
• Software engineers should :
 adopt a systematic and organized approach to their
work
 use appropriate tools and techniques depending on
 the problem to be solved,
 the development constraints and
 use the resources available
What is software engineering? cont…
• At the first conference on software engineering in 1968,
Fritz Bauer defined software engineering as “The
establishment and use of sound engineering principles in
order to obtain economically developed software that is
reliable and works efficiently on real machines”.
• Stephen Schach defined the same as “A discipline whose
aim is the production of quality software, software that is
delivered on time, within budget, and that satisfies its
requirements”.
• Both the definitions are popular and acceptable to
majority. However, due to increase in cost of maintaining
software, objective is now shifting to produce quality
software that is maintainable, delivered on time, within
budget, and also satisfies its requirements.
Software Process
• The software process is the way in which we produce
software.

• Why is it difficult to improve software process ?


 Not enough time
 Lack of knowledge
 Wrong motivations
 Insufficient commitments
Software Characteristics
• Software does not wear out.
Software Characteristics cont…
• Software is not manufactured
• Reusability of components
• Software is flexible
Software Characteristics cont…
Comparison of constructing a bridge vis-à-vis writing a program
The Changing Nature of Software
The Changing Nature of Software
cont…
• Trend has emerged to provide source code to
the customer and organizations.
• Software where source codes are available are
known as open source software.

Examples
Open source software: LINUX, MySQL, PHP,
Open office, Apache webserver etc.
Software Myths
Management Perspective
• Management may be confident about good standards
and clear procedures of the company
• Company has latest computers and state-of-the-art
software tools, so we shouldn’t worry about the quality
of the product
• Addition of more software specialists, those with higher
skills and longer experience may bring the schedule back
on the track!
• Software is easy to change
• Computers provide greater reliability than the devices
they replace
Software Myths cont…
Customer Perspective
• A general statement of objectives is sufficient
to get started with the development of
software. Missing/vague requirements can
easily be incorporated/detailed out as they
get concretized.
• Software with more features is better
Software
• Software can work right the first time
Software Myths cont…
Developer Perspectives
• Once the software is demonstrated, the job is done
• Software quality can not be assessed before testing
• The only deliverable for a software development
project is the tested code
• Aim is to develop working programs
Software Engineering Terminologies
Deliverables and Milestones
 Different deliverables are generated during software
development. The examples are source code, user manuals,
operating procedure manuals etc.
 The milestones are the events that are used to ascertain the
status of the project. Finalization of specification is a
milestone. Completion of design documentation is another
milestone. The milestones are essential for project planning
and management.
Software Engineering Terminologies
cont…
Product and Process
 Product: What is delivered to the customer, is called a product.
It may include source code, specification document, manuals,
documentation etc. Basically, it is nothing but a set of
deliverables only.
 Process: Process is the way in which we produce software. It is
the collection of activities that leads to (a part of) a product. An
efficient process is required to produce good quality products.
 If the process is weak, the end product will undoubtedly suffer,
but an obsessive over reliance on process is also dangerous.
Software Engineering Terminologies
cont…
Measures, Metrics and Measurement
 A measure provides a quantitative indication of the extent,
dimension, size, capacity, efficiency, productivity or reliability
of some attributes of a product or process.
 Measurement is the act of evaluating a measure.
 A metric is a quantitative measure of the degree to which a
system, component or process possesses a given attribute.
Software Engineering Terminologies
cont…
Software Process and Product Metrics
 Process metrics quantify the attributes of software
development process and environment; whereas product
metrics are measures for the software product.

 Examples
 Process metrics: Productivity, Quality, Efficiency etc.
 Product metrics: Size, Reliability, Complexity etc.
Software Engineering Terminologies
cont…
Productivity and Effort
 Productivity is defined as the rate of output, or production
per unit of effort, i.e. the output achieved with regard to the
time taken but irrespective of the cost incurred.
 Hence most appropriate unit of effort is Person Months
(PMs), meaning thereby number of persons involved for
specified months. So, productivity may be measured as
LOC/PM (lines of code produced/person month)
Software Engineering Terminologies
cont…
Module and Software Components
•There are many definitions of the term module. They range from
“a module is a FORTRAN subroutine” to “a module is an Ada
Package”, to “Procedures and functions of PASCAL and C”, to “C++
Java classes” to “Java packages” to “a module is a work assignment
for an individual developer”. All these definition are correct. The
term subprogram is also used sometimes in place of module.
•“An independently deliverable piece of functionality providing
access to its services through interfaces”.
•“A component represents a modular, deployable, and replaceable
part of a system that encapsulates implementation and exposes a
set of interfaces”.
Software Engineering Terminologies
cont…
Generic and Customized Software Products
•Generic products are developed for anonymous customers. The
target is generally the entire world and many copies are
expected to be sold. Infrastructure software like operating
system, compilers, analyzers, word processors, CASE tools etc.
are covered in this category.
•The customized products are developed for particular
customers. The specific product is designed and developed as
per customer requirements. Most of the development projects
(say about 80%)come under this category.”.
Role of Management in Software
Development
Role of Management in Software
Development cont…
End of Chapter 1

You might also like