Software Engineering (2+1)

Download Report

Transcript Software Engineering (2+1)

Software Engineering (2+1)
BIT-8
Some Basic Definitions
 Software -- Computer programs, procedures, and possibly
associated documentation and data pertaining to the
operation of a computer system.
 Engineering -- Application of systematic, disciplined,
quantifiable approach to some process.
2
Resulting Definition Of Software Engineering
 Definition -- The application of systematic, disciplined,
quantifiable approaches to software development, operation
and maintenance.*
* - IEEE Standard 610.12-1990, IEEE Standard Glossary of Software
Engineering Terminology, IEEE Standards Collection Software
Engineering, IEEE (1997).
3
The Software Life Cycle
 Development
 Operation
 Maintenance
 Corrective
 Enhancement
4
Nature of Software
 Software is intangible.
 Software is developed or engineered, it is not manufactured in the
classical sense.
 Software does not “wear out” but deteriorate.
 Although the industry is moving toward component-based
assembly, most software continues to be custom built.
Software Success and Failure
 Satisfies user needs.
 Performs flawlessly.
 Easier to use.
 Dissatisfies user needs.
 Error prone.
 Harder to use.
 Harder to modify.
 Easier to modify.
Why do we need Software Eng. ?
 The “Software Crisis”
 First identified at NATO Conference, Garmisch, Germany,
1968
 Characterized by software which is
 of poor quality
 over budget
 late
7
Where Is Software Engineering Today ?
 Although significant improvements have been made in
specific areas, the rapidly evolving nature of the software
industry has resulted in little overall improvement in the
overall situation -- in fact …..
8
The Crisis Persists
 More than 30 years later, the software “crisis” is still with us
 Major problems are still the same:
 poor quality (correctness, bugs, usability, maintainability, etc)
 over budget
 delivered late, or not at all
9
Software Quality Problems
 Correctness, bugs, usability, etc
 Examples - U.S. Strategic Air Command alert (Nov 9, 1979) -- alert
scramble in response to report that Soviet Union had launched
missile attack
 Therac 25 medical linear accelerator treatment device -- two
patients died of severe overdoses of radiation (1985-1987)
 Gulf War (1991) -- U.S. Patriot missile defense failed to detect
Scud missile due to time error -- 28 Americans died as a result.
 Assignment 1: Software Crisis/Failure in History
10
Schedule/Cost Problems
 An example -- U.S. Internal Revenue Service
 Hired Sperry Corporation to build automated income tax form
processing system (1980-1985) --the resulting system couldn’t
handle the work load, cost almost twice what was expected, and
had to be replaced soon after initial installation. By 1996, the
situation had not improved.
11
Not A Crisis -But A Chronic Condition
 Software “Crisis” has lasted too long to be a crisis --
rather, it’s a persistent, chronic condition of the software
business
 Software Engineering is the proposed solution to the
problem. Its aims are:
 production of fault-free software, delivered on time and within
budget, that satisfies the users’ needs, and is easy to maintain.
12
What is software?
 ????????
What is software?
 Computer programs and associated documentation
 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: In a Nutshell
 Software is set of items or objects that form a “configuration” that
includes:
 Computer programs that produce information.
 System documentation that describe the manipulation of information.
 User documentation that describe the operation and use of the
programs.
What are the attributes of good software?
The software should deliver the required functionality
and performance to the user and should be
maintainable, dependable and usable
 Maintainability
 Software must evolve to meet changing needs
 Dependability (reliability, security, safety)
 Software must be trustworthy
 Should not cause physical or economical damage.
 Efficiency
 Software should not make wasteful use of system resources
 Usability
 Software must be usable by the users for which it was designed
Importance of Product Characteristics
The relative importance of these characteristics depends on the
product and the environment in which it is to be used.
 In some cases, some attributes may dominate



In safety-critical real-time systems, key attributes may be
dependability and efficiency.
Costs tend to rise exponentially if very high levels of any one
attribute are required.
Software: Costs
Software costs often dominate system costs. The costs of
software on a PC are often greater than the hardware cost.
 Software costs more to maintain than it does to develop.
 Software engineering is concerned with cost-effective
software development.

Efficiency Costs
Cost
Ef ficiency
Software Applications
 Generic categorization:
 System software,
 real-time software
 business software,
 engineering and scientific software
 embedded software,
 personal computer software,
 web-based software, and
 artificial intelligence software etc.
 How is the nature of software application determined?
 Information content and determinacy.
Software Poses Challenges
How do we ensure the quality of the software that
we produce?
How do we meet growing demand and still
maintain budget control?
How do we upgrade an aging "software plant?"
How do we avoid disastrous time delays?
How do we successfully institute new software
technologies?
Why Software Engineering?
 Software development is not an easy Job !
 Important to distinguish:
 “easy” systems (one developer, one user, experimental use only)
 “hard” systems (multiple developers, multiple users, products)
________________________________________________________
 The problem is complexity
 Many sources, but size is key:
 UNIX contains 4 million lines of code
 Windows 2000 contains 108 lines of code
Software engineering is about managing this complexity.
Software engineering and computer science?
Computer Science
Software Engineering
is concerned with
 theory
 fundamentals


Algorithms, date structures,
complexity theory, numerical
methods
SE deals with practical problems in
complex software products
the practicalities of developing
delivering useful software
Computer science theories are currently insufficient to act as a
complete foundation for software engineering, BUT it is a base for
practical aspects of software engineering
Key challenges faced by software engineering
Software engineering in the 21st century faces three key
challenges:
 Legacy systems
 Old, valuable systems must be maintained and updated
 Heterogeneity
 Systems are distributed and include
hardware and software
 Delivery
 There is increasing pressure
for faster delivery of software
a mix of
Trends — Software Demand
Software Demand
Personal computing,
information,
education
Commercial
Scientific & Technical
195
0
196
0
197
0
198
0
199
0
200
0
 several hundred billion dollars/year spent worldwide and growing
 essential part of almost all organizations
 key part of many products  embedded systems
Trends — Software Effort (Cost)
Man-months
8000
6000
4000
2000
100
200
300
400
500
1000’s of language statements
 sample code sizes:
 hand-held bar code scanner: 10-50KLOC [Symbol Technologies Inc.]
 cellular telephone: 30KLOC [Motorola]
 automated teller network: 600KLOC [IBM]
 B-2 Stealth bomber: 3.5MLOC [Leonard Lee]
 telephone switch; Windows 95: 15MLOC [Nokia; Ted Lewis]
600
Software Engineering: In a Nutshell
 Software engineering (SE) is framework for building software with higher
quality.
 Software engineering is an engineering discipline which is concerned with all
aspect of software production form early stage of system specification to
maintaining the system after it has gone into use (Sommerivlle, 2000).
 http://www.mydropbox.com/
 Click New User link
 3vr64278z8sz
Course outline up gradation
SNO
1
2
3
4
5
6
7
8
9
Topics
Introduction to Software Engineering
Software Process and Its Models
Agility Concepts and Models
PSP, TSP, Extreme Programming Model (XP)
OHT – 1
Object Oriented SE Concepts and Principles
Modeling with UML
Object Oriented Software Requirement Engineering
OHT-2
Object Oriented Analysis
System Design: Decomposing the system, Addressing
design goal
Total Weeks
Duration
1
2
1
1
5
Thank You!