BIT-8 Software Engineering (2+1). 2 Some Basic Definitions Software -- Computer programs,...

31
BIT-8 Software Engineering (2+1)

Transcript of BIT-8 Software Engineering (2+1). 2 Some Basic Definitions Software -- Computer programs,...

BIT-8

Software Engineering (2+1)

2

Some Basic DefinitionsSoftware -- 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.

3

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

4

The Software Life CycleDevelopment OperationMaintenance

CorrectiveEnhancement

Nature of SoftwareSoftware 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.

Easier to modify.

Dissatisfies user needs.

Error prone.

Harder to use.

Harder to modify.

7

Why do we need Software Eng. ?The “Software Crisis”

First identified at NATO Conference, Garmisch, Germany, 1968

Characterized by software which isof poor qualityover budgetlate

8

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

9

The Crisis PersistsMore than 30 years later, the software

“crisis” is still with usMajor problems are still the same:

poor quality (correctness, bugs, usability, maintainability, etc)

over budgetdelivered late, or not at all

10

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

11

Schedule/Cost ProblemsAn example -- U.S. Internal Revenue

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

12

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.

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 beGeneric - developed to be sold to a range of different customersBespoke (custom) - developed for a single customer according

to their specification

Software: In a NutshellSoftware 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?

MaintainabilitySoftware must evolve to meet changing needs

Dependability (reliability, security, safety)Software must be trustworthyShould not cause physical or economical damage.

EfficiencySoftware should not make wasteful use of system resources

UsabilitySoftware must be usable by the users for which it was

designed

The software should deliver the required functionality and performance to the user and should be

maintainable, dependable and usable

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

Software: Costs

Efficiency CostsCost

Ef ficiency

Software ApplicationsGeneric 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 complexityMany sources, but size is key:

UNIX contains 4 million lines of codeWindows 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

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

theory fundamentals

Algorithms, date structures, complexity theory, numerical methods

the practicalities of developing delivering useful software

SE deals with practical problems incomplex software products

Key challenges faced by software engineering

Software engineering in the 21st century faces three key challenges:

Legacy systemsOld, valuable systems must be maintained and updated

HeterogeneitySystems are distributed and include

a mix of hardware and software Delivery

There is increasing pressure for faster delivery of software

Trends — Software Demand

several hundred billion dollars/year spent worldwide and growing

essential part of almost all organizations

key part of many products embedded systems

Soft

ware

Dem

and

1950

1960

1970

1980

1990

2000

Personal computing,information,education

Commercial

Scientific & Technical

Trends — Software Effort (Cost)

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]

Man-m

onth

s

100 200 300 400 500 600

2000

4000

6000

8000

1000’s of language statements

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 link3vr64278z8sz

Course outline up gradationSNO Topics Duration

1 Introduction to Software Engineering 1

2 Software Process and Its Models 2

3 Agility Concepts and Models 1

4 PSP, TSP, Extreme Programming Model (XP) 1

5

OHT – 1

5 Object Oriented SE Concepts and Principles

6 Modeling with UML

7 Object Oriented Software Requirement Engineering

OHT-2

8 Object Oriented Analysis

9 System Design: Decomposing the system, Addressing design goal

Total Weeks

Thank You!