CSE 230: Introduction to Software Engineering Topics covered: Introduction.
-
date post
22-Dec-2015 -
Category
Documents
-
view
227 -
download
3
Transcript of CSE 230: Introduction to Software Engineering Topics covered: Introduction.
CSE 230: Introduction to Software Engineering
Topics covered:Introduction
Evolution of the software business
First software company was established in 1955:
State of the software business today:
Role of software
Computer systems/software play an important role in virtually everyaspect of our day to day lives:
Software is becoming increasingly sophisticated and permeates every aspect of our lives, it is increasingly important to build it efficiently and right.
And yet…Software development today is fraught with uncertainty and is characterized by (similar to what it was decades ago):
State of the practice
Estimate Early On Time Delayed Canceled
13,000 6.06% 74.77% 11.83% 7.33%
130,000 1.24% 60.76% 17.67% 20.33%
1,300,000
13,000,000
Source: Patterns of software failures and successes, Capers Jones, 1996
•Conclusions:
State of the practice (contd..)
0
10
20
30
40
50
60
Cost overrun Successful CancelledSource: The Standish Group, 1994
•Successful projects (16.2%) •Challenged (52.7%) •Impaired (31.1%)
State of the practice (contd..)
Corporate software is often obsolete before delivery, and is incapable of evolving to meet future needs.
Many projects start with wrong goals and need to restart.
Cost and time overruns:
Software development problems
Software costs are increasing as hardware costs continue to decline.
Software costs
Hardwarecosts
Time
Hardware costs vs. Software costs
Software development problems (contd..)
Software development times are getting longer and longer andmaintenance costs are getting higher and higher
3%8%
7%
15%
67%
Requirements -- 3%Design -- 8%Implementation -- 7%Testing -- 15%Maintenance -- 67%
•Conclusions:
Software development phases & waterfall model
Requirements analysis and definition
Design and specification
Implementation and unit testing
Integration and system testing
Operation and maintenance
Relative costs to fix errors
0
10
20
30
40
50
60
70
80
Requir
em
en
ts
Desi
gn
Imple
menta
tion
Test
ing
Main
tenance
Cost
Cost to fix an error increases as it is found later and later in the software lifecycle.
Software development problems (contd..)
•Air Traffic Control (FAA modernization):•Outages of AT&T long distance switches: •Ariane 5 launch explosion, 4 June 1996:•East coast black-out, Aug. 2003
NIST estimates that the US economy loses approximately $59.5 billion of 0.6% of the GDP due to software failures
Lesson:
Why are software projects late?
Estimating techniques are poorly developed
•Estimates are based on optimism:
•Optimism could be because of the nature of creativity:
Our techniques of estimating are poorly developed. More seriouslythey reflect an unvoiced assumption which is quite untrue, that is,that all will go well. -- Fred Brooks, The Mythical Man-Month
Why are software projects late? (contd..)
Estimating techniques confuse effort with progress.
•Is one man working six months equal to six men working one month?
Our estimating techniques fallaciously confuse effort with progress,hiding the assumption that men and months are interchangeable. - Fred Brooks, The Mythical Man-Month
Why are software projects late ? (contd..)
Do not plan schedule effectively.
•
In examining conventionally scheduled projects, I have found that fewallowed one-half of the projected schedule for testing, but that mostdid indeed spend half of the actual schedule for that purpose. Many ofthe projects were on schedule until and except in system testing….. - Fred Brooks, The Mythical Man-Month.
Why software projects are late? (contd..)
Do not monitor progress effectively
How does a software project get to be a year late?..One day at a time! Fred Brooks, The Mythical Man-Month.
Why are software projects late ? (contd..)
When slippage is recognized, we add people.
•Most tasks require communication among workers, which consists of:
•For n workers, intercommunication:
•Adding more people to an already late project is usually like “Adding gasoline to fire!”
Adding manpower to a late software project makes it later. Fred Brooks, The Mythical Man-Month.
Fred Brooks & The Mythical Man-Month
Fred Brooks became manager for IBM’s OS 360 in 1964. Previous experience in hardware design.
OS/360 (probably) largest software system attempted at that time.
OS/360 results:
The Mythical Man-Month analyzes OS/360 experiences. Professor at UNC Chapel Hill. Experiences and analyses are true even today.
Definition of software engineering
IEEE definition: The application of a systematic, disciplined, quantifiable
approach to the development, operation and maintenance of software; that is, the application of engineering to software.
Roger S. Pressman’s definition: Software engineering is the technology that encompasses
a process, a set of methods and an array of tools. (Software Engineering: A Practitioner’s Approach)
Parnas’ definition: Multi-person construction of multi-version software (Parnas
1978)
We have a “Software Crisis”! (1968)
“Software Engineering” was coined in 1968. NATO conference in Germany.
An “early study” of problem DOD projects revealed the following facts:
Historical perspective of software engineering
“Early days”
Towards a software engineering discipline:
What software engineering is and is not..
Software engineering is concerned with “engineering” software systems, that is, building and modifying practical software systems:
Software engineering is not..
These are the issues that haven’t really surfaced in learning to program.
Transformation/translation of a program to “software”
Programmer vs. software engineer
Students familiar with programs and some forms of documentation through course projects in an academic environment:
Experiences of professionals in the software industry:
Program to a software product transformation
Program Programproduct
Programmingsystem
Programmingsystem product
3X
3X9X
Checking AccountProgram
Program to a software product transformation
Difficult part in designing any software system is usually not the coding of the software.
Software engineering is not about individual programming but about a structured approach for groups to manage complexity and change.
What is a software product?
•Software is:
- Definition offered by R. S. Pressman. (Software Engineering: A Practitioner’s Approach)
•Alternatively,
Software Engineering: Three key elements
Process
Methods:
Tools:
Example: Process, Method, and Tools
Testing of individual code modules (before integration). Process addresses issues such as how it is to be done,
who is responsible for it, when does it get done, etc. Documents
Who has the responsibility?
How do we verify (check) that it has been done?
Example: Process, Method, Tools
Method addresses issues such as what approach will be used? Example: Black-box testing:
Example: White-box or “coverage testing”:
Example: Process, Method, Tools
Tools provide software support for processes and methods: Test case generator:
Regression test environment.
Memory leak tool.
Coverage testing and measurement tool.
Problem reporting and tracking tool.
Test-case matrix.
Summary
Critical aspects of our day to day lives depend on software, yet software development lacks the rigor and discipline of mature engineering disciplines: Too many projects get delayed, costs and schedules slip.
Software engineering is about bringing discipline and rigor to the building and maintenance of software systems.
Study of software engineering focuses on three key elements: process, methods and tools.
In addition to the functionality/feature related requirements, software products are often expected to satisfy various non functional requirements: Relative priorities of these requirements depend on the
nature of the application. May or may not be able to satisfy all the requirements,
tradeoffs may be necessary.