SEM12 Lecture 1 SE Basics

advertisement
AGENDA
• Review Syllabus
- Course Overview
• Introductions
• The Software Crisis
- What is it?
- How real is it?
1
CISH-6050 - Software Engineering Management
AGENDA …
• Software Engineering Basics
and Definitions
- Software
 Quality
 Development
- Software Engineering
 Software Process Framework
 Software Processes
2
CISH-6050 - Software Engineering Management
AGENDA …
- Software Engineering
Management
• Software Process & Product
Quality
3
CISH-6050 - Software Engineering Management
The Software Crisis
What is it?
4
CISH-6050 - Software Engineering Management
Software Crisis Examples
• IRS – Business Systems
Modernization - $8B Upgrade
– Launched in 1999
– CADE- 1st software release 3 years
late & $36.8M over budget
– 8 other major projects missed
deployment deadlines
– Cost Overruns > $200M
5
CISH-6050 - Software Engineering Management
Software Crisis Examples …
Ongoing IRS Modernization Projects
IRS Project
Status
E-Services
2004
Deployments
2 years
$86M
Customer Account
1st release
Data Engine (CADE) August, 2004
3 years
$36.8
Integrated Financial
Target
System
October, 2004
1 year
$50M
Scheduled for
Spring, 2004
4 months
$17.1M
Custodial
First phase
Accounting Project August, 2004
20 months
$59.5M
Modernized E-file
Past Due $ Overrun
6
CISH-6050 - Software Engineering Management
Software Crisis Examples …
Completed IRS Modernization Projects
IRS Project
Status
$ Overrun
Security and Technology
Infrastructure Release 1
5 months late
$7.6M
Customer Communications 2001
9 months late
$5.3M
Customer Relationship
Management Exam
3 months late
($1.9M Under
budget)
Human Resource Connect
On time
$200K
Internet Refund Fact of Filing
14 months late
$12.9M
7
CISH-6050 - Software Engineering Management
Software Crisis Examples …
• Bank of America – MasterNet
– Spent $23M on an initial 5 year
accounting & reporting system
– Spent $600M trying to make it work
– Project cancelled
– Lost customer accounts - $Billons
8
CISH-6050 - Software Engineering Management
Software Crisis Examples …
• Allstate Insurance – In 1982
– $8M computer system to automate
business
– EDS providing software
– Initial 5 year project continued for
10 years, until 1993
– Cost approached $100M
9
CISH-6050 - Software Engineering Management
Software Crisis Examples …
• Blue Cross and Blue Shield of
Wisconsin - 1983
– EDS hired to build $200M computer
system
– Delivered on time in 18 months
– System didn’t work – issued $60M in
overpayments and duplicate checks
– BC lost 35,000 policy holders by 1987
10
CISH-6050 - Software Engineering Management
Software Crisis Examples …
• Therac-25: 1985 - 1987
– Computerized radiation therapy
machines made by Atomic Energy
Canada Limited (AECL)
– Massive radiation overdoses by the
Therac-25 between 6/85 and 1/87
– 4 deaths and serious injuries
– Original User Interface faulty, allowing
techs to administer high dosages
11
CISH-6050 - Software Engineering Management
The Software Crisis
• Software development projects
suffering from:
–
–
–
–
Cost overruns
Schedule delays
Reduced functional deliverables
Potential project cancellation
12
CISH-6050 - Software Engineering Management
Software Crisis Stats
• Standish Group ‘94 CHAOS Report:
– The US spends $250B on IT projects
– 31.3% of projects will be cancelled
before being completed
– 52.7% will cost 189% of original est.
– 78.4% of software projects deployed
with at least 74.2% of features
– $140B in project waste
13
CISH-6050 - Software Engineering Management
The Software Crisis
How did it start?
14
CISH-6050 - Software Engineering Management
The Software Crisis History
• 1950s and 1960s – Programs are
procedures to run hardware
– Procedural, sequential thought
process
– Assembler level coding languages
– Modules, interfaces, state machines,
data abstractions, etc. not familiar
concepts to most practitioners
15
CISH-6050 - Software Engineering Management
The Software Crisis History …
− Procedurally coded instructions led
to subroutines and macros
– Monitor programs evolved that could
invoke and provide services to other
programs
– Late 1960s, Monitor programs
evolved to operating systems
16
CISH-6050 - Software Engineering Management
The Software Crisis History …
• Late 1960s – Operating Systems
– Utility programs developed for
repeated data manipulation
– FORTRAN and COBOL
– Assembler programs with I/O
devices called at machine lang level
– New subsystems - Databases to
handle mass of data
17
CISH-6050 - Software Engineering Management
The Software Crisis History …
• 1970s – Software Properties
– Complex
 Rapid growth in size of apps
− Error Prone
 Inherited ‘spaghetti’ code
− Labor-intensive
 Very few good development tools
18
CISH-6050 - Software Engineering Management
The Software Crisis History …
• Cost overruns become the norm
− Software complex, labor intensive,
and high volume of errors
– More time needed than planned to
develop code
• More focus needed
– How software developed
– Process of developing software
19
CISH-6050 - Software Engineering Management
The Software Crisis History …
• 1970s - concepts & practices
developed to manage size and
complexity
− Lifecycle models
− Defect detection earlier in cycle
− Improved testing methodologies
− Design and code inspections
− Program proof of correctness
20
CISH-6050 - Software Engineering Management
The Software Crisis History …
• Despite improvements from the
1970s to 1980s, investing in
software development still
viewed as “bottomless pit”
− Highly error prone
− Labor-intensive
− Cost overruns
21
CISH-6050 - Software Engineering Management
The Software Crisis History …
• Early 1980s – hardware costs
decreased
• Software development & service
dominating cost factor
• Led to shift in industry:
− Defect Prevention
− Defect Removal
− Software Development Tools
22
CISH-6050 - Software Engineering Management
The Software Crisis – Why?
“The most likely way for the world to
be destroyed, most experts agree, is
by accident. That's where we come
in; we're computer professionals.
We cause accidents."
- Nathaniel Borenstein
23
CISH-6050 - Software Engineering Management
The Software Crisis – Why?
• Why are late deliverables and
poor quality tolerated?
• For other items:
– Defects not tolerated – cars,
appliances, homes, etc.
– High quality expected
– Compensation for defects
– Contractual obligation
24
CISH-6050 - Software Engineering Management
The Software Crisis – Why?
• Arguments – Valid or Invalid?
– Software is an art form; planning and
cost management will damage
creativity.
– Defect-free software can’t be
produced.
25
CISH-6050 - Software Engineering Management
The Software Crisis – Why?
• How long will this be tolerated?
– Until someone does it better
– Until the defects cause damage
• If there are no improvements and
customers don’t suffer intolerable
pain, the market place could
continue as it has
26
CISH-6050 - Software Engineering Management
The Software Crisis - Improving
• General public no longer shielded
from computers or software:
– Critical component in products
 Brakes cars, flies planes,
manages financial transactions,
runs machinery, etc.
– General public more intolerant of
software flaws
27
CISH-6050 - Software Engineering Management
The Software Crisis - Improving
• Is the Software Crisis real?
– Really a crisis?
– Or, a chronic affliction causing pain?
• Did (or will) it escalate as
originally predicted?
• If it’s improving, is it over now?
28
CISH-6050 - Software Engineering Management
The Software Crisis - Improving
• Robert Glass, author of a number
of books on software failures:
"I look at my failure stories and see
exception reporting, spectacular
failures in the midst of many
successes, a cup that is nearly full."
29
CISH-6050 - Software Engineering Management
The Software Crisis - Improving
• March, 2004 CHAOS Chronicles
Report shows big improvements:
– Project success rate increased to 34%
(1994: 16% success rate)
– Project failures rate declined to 15%
(1994: 31% failure rate)
– Challenged projects account for
remaining 51%
30
CISH-6050 - Software Engineering Management
The Software Crisis - Improving
– 51% of challenged projects have a
lower overrun ratio than in 2000
– 43% average cost overrun
(1994: 180% cost overrun)
– $55B spent on project waste
(1994: $140B project waste)
 $17B cost overruns (1994: $59B)
 $38B lost projects (1994: $81B)
31
CISH-6050 - Software Engineering Management
The Software Crisis - Improving
• Not all good news:
– Time overruns increased to 82%
(2000: 63% time overruns)
− 52% of required features/functions
make it in released product
(2000: 67% features in final product)
(1994: 74% features in final product)
32
CISH-6050 - Software Engineering Management
The Software Crisis - Improving
• Software Engineering and Software
Engineering Management are a
continued effort against the Software
Crisis
• Software and Software Engineering
Basics
33
CISH-6050 - Software Engineering Management
Software Fundamentals
• What is Software? (Pressman)
– Instructions that when executed
perform desired function
– Data structures that enable programs
to adequately manipulate information
– Documents that describe the operation
and use of programs
34
CISH-6050 - Software Engineering Management
Software Characteristics
• Developed or Engineered – not
“manufactured”
– Software is logical system element
– Software projects managed differently
than manufacturing projects
• Software doesn’t physically wear out
like hardware might
• Most software custom built
35
CISH-6050 - Software Engineering Management
Software
• Many Types
– Systems, Real Time, Business,
Scientific, Embedded, PC, Web, AI
• Products
– Generic or Packaged (COTS)
– Custom Built
• Sources
– Open (shareware)
– Closed (Proprietary)
36
CISH-6050 - Software Engineering Management
Software Quality
Expect software to contain sufficient:
– Usability
– Portability
– Learnability
– Efficiency
– Security
– Functionality
– Reliability and
Dependability
– Maintainability
37
CISH-6050 - Software Engineering Management
Software Quality …
• Some attributes are exclusive and
difficult to optimize
– Relationship of cost to improving each
attribute
– Cost vs. efficiency
Cost
Efficiency
38
CISH-6050 - Software Engineering Management
Software Development
Basic Development Activities
1. Understand problem (Requirements)
2. Identify possible solutions (Design)
3. Implement solution (Develop - code)
4. Ensure solution solves problem (Test)
5. Ensure solution continues to solve
problem (Lifecycle Management)
39
CISH-6050 - Software Engineering Management
Myth vs. Reality
• Myth #1
– General statement of objectives is
sufficient to begin writing programs;
the details can be filled in later.
• Reality #1
– Poor definition up front is major cause
of failed software efforts.
40
CISH-6050 - Software Engineering Management
Myth vs. Reality …
• Myth #2
– Project requirements continue to
change, but can be easily
accommodated – software is flexible.
• Reality #2
– Impact of change varies with the
phase it was introduced –
Requirements, Design, Code, Test
41
CISH-6050 - Software Engineering Management
Myth vs. Reality …
• Myth #3
– Once we write the program and get it
to work, our job is done.
• Reality #3
– The sooner you begin writing code,
the longer it will take to get done.
– 60%-80% of all effort expended after
delivered to customer for first time.
42
CISH-6050 - Software Engineering Management
Myth vs. Reality …
• Myth #4
– Until the program is running, there’s
no way to assess its quality.
• Reality #4
– SQA – Formal technical reviews can
be applied from the start of the
project.
43
CISH-6050 - Software Engineering Management
What is Software Engineering?
• Fritz Bauer (Naur, 1969)
– "The establishment and use of sound
engineering principles in order to
obtain economically software that is
reliable and works efficiently on real
machines.“
• Problems with this definition?
44
CISH-6050 - Software Engineering Management
Software Engineering …
• Sommerville (1995)
– "Software engineering is concerned
with the theories, methods, and tools
which are needed to develop the
software for these computers.“
• Problems with this definition?
45
CISH-6050 - Software Engineering Management
Software Engineering …
• IEEE (IEE93)
– " (1) The application of a systematic,
disciplined, quantifiable approach to
the development, operation, and
maintenance of software; that is the
application of engineering to software.
(2) The study of approaches as in (1).”
• Problem with this definition?
46
CISH-6050 - Software Engineering Management
Software Engineering …
• H. Younessi (SE 1)
– "Software Engineering is the collective
term applied to attempts to produce
high quality, complex, and large
software on a largely methodical and
reasonably sustainable basis with an
increasingly scientific and quantitative
orientation.”
• Scientific, Quantitative & Quality
47
CISH-6050 - Software Engineering Management
Software Engineering Process
• Principle Elements of SEP:
1.Methodology
2.People and Organizational Influences
3.Technology
• SEP – A mix of an instance of a
methodology, conducted within an
organizational content, utilizing a
specific set of technologies
48
CISH-6050 - Software Engineering Management
Software Process Framework
• Define Framework as a method or
approach to do something
– Example: Follow recipe to cook a
meal
• Software Process sometimes
inaccurately called a method or
methodology
49
CISH-6050 - Software Engineering Management
Software Process Framework …
• Is a Software Engineering Process
– The process of developing a piece of
code (i.e. using OO methodology)
– Or, is it the process of getting through
a software development project (i.e.
start to finish)?
• Different levels of “Process”
granularity
50
CISH-6050 - Software Engineering Management
Software Process Framework …
• Lower Level
– Describes steps to complete a task
– Methods by which work is done
• Higher Level
– By definition, process contains a
methodology component, as well as
organizational and technology
component
51
CISH-6050 - Software Engineering Management
Software Process Framework …
• Characteristics of Process
Framework:
– Understandable
– Enactable (instantitable)
– Repeatable
– Definable (well defined)
– Manageable (well managed)
– Improvable
52
CISH-6050 - Software Engineering Management
Software Process Framework …
• Development Models used in
Process Framework:
– Waterfall
– V-Model
– Spiral
– Evolutionary
– Rational Unified Process (RUP)
– OPEN
53
CISH-6050 - Software Engineering Management
Software Process Framework …
• Software Process should provide:
– Functionality - appropriateness of use
– Usability
– Clarity of definition
•Software Process (& Framework
that yielded it) should reflect:
– Methodology, Organization,
Technology
54
CISH-6050 - Software Engineering Management
Myth vs. Reality
• Myth #1
– We already have a book full of
standards & procedures for building
software, won't that provide everything
that my developers need to know?
• Reality #1
– Is the book used? Are developers
aware of it? Does it reflect current SE
standards?
55
CISH-6050 - Software Engineering Management
Myth vs. Reality
• Myth #2
– People have state-of-the-art software
development tools, since we buy them
the newest computers.
• Reality #2
– It takes more than the latest model
mainframe, PC, or workstation to do
high-quality software development –
CASE tools.
56
CISH-6050 - Software Engineering Management
Myth vs. Reality
• Myth #3
– Software Engineering will cause us to
create large amounts of unnecessary
documentation and will slow us down.
• Reality #3
– Software Engineering is not about
creating documents. It’s about creating
quality. Better quality leads to reduced
rework, resulting in faster delivery times.
57
CISH-6050 - Software Engineering Management
Myth vs. Reality
• Myth #4
– If we get behind schedule, we can add
more programmers and catch up
• Reality #4
– Software development is not a
mechanistic process like
manufacturing. In the words of Brooks:
"adding people to a late software
project makes it later."
58
CISH-6050 - Software Engineering Management
Software Engineering
Management
Why do Software Engineering
Management?
59
CISH-6050 - Software Engineering Management
Software Engineering
Management …
• SE subject to budget and
schedule constraints
• Project Management ensures
software development done
according to organization’s
constraints: policies, goals,
and requirements
60
CISH-6050 - Software Engineering Management
Software Engineering
Management …
Balance Schedule, Cost, Product
Cost
Product
Schedule
61
CISH-6050 - Software Engineering Management
Software Engineering Mgmt …
• Software Engineering Management
differs from other types of
engineering management
– Intangible product
– No standard process
– Large software projects often ‘one-off’
projects
62
CISH-6050 - Software Engineering Management
Software Engineering Mgmt …
• Software Engineering Management
Fundamentals
– Determine size of product
– Allocate resource for the product
– Create plan for utilizing resource
– Monitor project
– Measure project
63
CISH-6050 - Software Engineering Management
Software Engineering Mgmt …
• Effective Software Project
Management: 4 P’s
– People
– Product
– Process
– Project
64
CISH-6050 - Software Engineering Management
Recap
• The Software Crisis
• Software
– Quality
– Development
• Software Engineering
– Software Process Framework
– Software Processes
• Software Engineering Management
65
CISH-6050 - Software Engineering Management
References
• R. S. Pressman, Software Engineering: A
Practitioner's Approach, 5th ed., McGraw-Hill,
New York, 2001
• I. Sommerville, Software Engineering, 5th ed.,
Addison-Wesley, Reading, MA, 1995
• R. Radice, R. Phillips, Software Engineering:
An Industrial Approach, Prentice Hall,
Englewood Cliffs, NJ, 1988
• P. G. Neumann, Computer Related Risks,
Addison-Wesley, Reading, MA, January, 1995
66
CISH-6050 - Software Engineering Management
References …
• R. L. Glass, Software Runaways, Prentice Hall
PTF, Upper Saddle River, NJ, 1998
• N. G. Leveson, C. S. Turner, "An Investigation of
the Therac-25 Accidents," IEEE Computer, Vol.
26, No. 7, July 1993, pp. 18-41
• W. S. Humphrey, "The Changing World of
Software", Software Engineering Institute,
Carnegie Mellon University, December, 2001.
Available at
http://www.sei.cmu.edu/publications/articles/watt
s-humphrey/changing-world-sw.html
67
CISH-6050 - Software Engineering Management
References …
• H. Younessi, B. Henderson-Sellers, "Cooking up
Improved Software Quality: Developing reliable
and usable critical information systems with
processes", Object Development, October 1997,
pp. 38-42
• S. McConnell, Rapid Development: Taming
Wild Software Schedules, Microsoft Press,
Redmond, Washington, 1996
68
CISH-6050 - Software Engineering Management
References …
• The Standish Group, “The CHAOS Report
(1994)”. Available at
http://www.standishgroup.com/sample_research/
chaos_1994_1.php
• The Standish Group, “Latest Standish Group
CHAOS Report Shows Project Success Rates
Have Improved by 50%”, March 25, 2003.
Available at
http://www.standishgroup.com/press/article.php?
id=2
69
CISH-6050 - Software Engineering Management
References …
• E. Varon, “For the IRS There’s No EZ Fix”, CIO
Magazine, Vol. 17, No. 12, April 1 2004, pp. 5056. Also available at
http://www.cio.com/archive/040104/irs.html
70
CISH-6050 - Software Engineering Management
Download