You are on page 1of 22

Software Engineering

Chapter 1

Software Engineering Fundamentals

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….

 Software engineering appears to be among the few options


available to tackle the present software crisis.
 Demand for software is high and rising
 Much software has poor design and is getting worse
 We are in a perpetual ‘software crisis’
 We have to learn to ‘engineer’ software
 But is there sliver bullet to tackle the problem?
15
No Silver Bullet
 The hardware cost continues to decline drastically.
 However, there are desperate cries for a silver bullet
something to make software costs drop as rapidly as computer
hardware costs do.
 But as we look to the horizon of a decade, we see no silver
bullet.
 There is no single development, either in technology or in
management technique, that by itself promises even one order
of magnitude improvement in productivity, in reliability and
in simplicity.
 However, though there is no royal road, there is a path
forward.
16
Looking for silver bullets
 Tools
 Structured programming, object-oriented programming, CASE tools, Ada, Java,
documentation, standards, and Unified Modelling Language were touted as
silver bullets
 Discipline
 The software crisis was due to the lack of discipline of programmers
 Formal methods
 Apply formal engineering methodologies to software development, to make
production of software as predictable as other branches of engineering, proving
all programs correct
 Process
 Processes and methodologies like the Capability Maturity Model
 Professionalism
 This led to work on a code of ethics, licenses, and professionalism

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

 Software engineers shall


 Act consistently with public interest
 Act in the best interests of their clients
 Develop and maintain with the highest standards
possible
 Maintain integrity and independence
 Promote an ethical approach in management
 Advance the integrity and reputation of the profession
 Be fair and supportive to colleagues
 Participate in lifelong learning

22

You might also like