Software Engineering CS 421 / SWE 421 Dan Fleck 1

advertisement
Software Engineering
CS 421 / SWE 421
Dan Fleck
1
Coming up: Why worry about SW Engineering?
Why worry about SW Engineering?

History of SW failures from http://www.wired.com/software/coolapps/news/2005/11/69355




“…Toyota announced a recall of 160,000 of its Prius hybrid vehicles
following reports of vehicle warning lights illuminating for no reason, and
cars' gasoline engines stalling unexpectedly.”
1985-1987 -- Therac-25 medical accelerator. Software replaces
electromechanical safety controls. Operating system race condition kills
5 people. (http://en.wikipedia.org/wiki/Therac-25)
November 2000 -- National Cancer Institute, Panama City. Doctors
“work-around” software problem that wouldn’t allow them to use 5
radiation shields. Their work-around had unintended consequences that
killed 8 patients. Doctor’s indicted for murder.
Many more incidents…
2
Coming up: Why is it so hard?
Why is it so hard?

Lots of “parts”. Many more than mechanical devices





Dishwasher - 128 parts
Car - 14,000 parts
Space shuttle - 2.5 million parts
Red Hat Linux 7.1 - 30 million source lines of code (SLOC)
Mac Office - 30 million SLOC


Using 70 programmers = 428,000 SLOC / programmer
But those are big… what about “normal size programs”?



Average programmer SLOC (Source lines of code) / day = 100
5 days/week * 52 weeks/year = 26,000 SLOC / year
15 programmer team = 390,000 SLOC / year
3
Coming up: Why is it so hard? (continued)
Why is it so hard? (continued)

We’re a young field



ENIAC/ MARK-I in 1946
FORTRAN - 1957
But giant - As of 2004, the U. S. Bureau of Labor Statistics counts 760,840
software engineers holding jobs in the U.S.; for comparison, in the U.S. there are
some 1.4 million practitioners employed in all other engineering disciplines combined.
- http://en.wikipedia.org/wiki/Software_engineering




Still more art than science
Everything we do is “new”. (We don’t build the exact same house 30
times.)
Need to have more reproducible results
Need to have more measurements
4
Coming up: Why do projects fail?
Why do projects fail?
Why do projects fail so often?












Unrealistic or unarticulated project goals
Inaccurate estimates of needed resources
Badly defined system requirements
Question:
Poor reporting of the project's status
Unmanaged risks
Poor communication among customers, developers, and users
Use of immature technology
How many of these are
Inability to handle the project's complexity caused by technical
incompentence in your
Sloppy development practices
developers?
Poor project management
A.0
Stakeholder politics
B.5
C.8
Commercial pressures
List from: http://www.spectrum.ieee.org/sep05/1685
D.All of them
5
Coming up: How do we fix it?
How do we fix it?

Need to have more reproducible results






Standard processes / procedures to produce good outcomes
Design patterns
Object oriented programming (reuse)
More measurements of both the software and the process
More testing at all stages of development
By creating a better understanding of the process we use to create
software, we’ll create better software faster.
Coming up: Software Engineering: A Practitioner’s Approach, 7/e
Chapter 1
Software and Software Engineering
(Slides modified by Dan Fleck)
“Software engineering is the application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of
software.”
- IEEE Standard Glossary of Software Engineering Terminology
For University
Use Only
copyright © 1996, 2001, 2005
R.S. Pressman & Associates, Inc.
May be reproduced ONLY for student use at the university level
when used in conjunction with Software Engineering: A Practitioner's Approach.
Any other reproduction or use is expressly prohibited.
6
Software Engineering: A Practitioner’s Approach, 7/e
Chapter 1
Software and Software Engineering
(Slides modified by Dan Fleck)
copyright © 1996, 2001, 2005
R.S. Pressman & Associates, Inc.
For University Use Only
May be reproduced ONLY for student use at the university level
when used in conjunction with Software Engineering: A Practitioner's Approach.
Any other reproduction or use is expressly prohibited.
7
Coming up:

Wait…. lets build a house first.

See BuildingAHouse.ppt
8
Coming up: What is Software?
What is Software?
Software is
Instructions – computer programs
Data Structures - that enable the programs
to adequately manipulate information
Documentation – the describes the use
and operation of the programs
Coming up: Why is software different than
hardware? Or manufacturing?
9
Why is software different than
hardware? Or manufacturing?




software is engineered
software doesn’t wear out
most software is still custom built
software is complex
10
Coming up: Wear vs. Deterioration
Wear vs. Deterioration
11
Coming up: There are many types of applications
There are many types of applications


system software - OS, file management, networking, drivers, etc…
application software - data processing, point of sale, other business
functions…


engineering/scientific software - CAD, stress analysis, orbital mechanics
embedded software - microwave oven keypad, automobile control, cell phone
software, etc…



product-line software - word processing, inventory control, etc…
WebApps (Web applications) - many different things today
AI software - robotics, data mining, expert systems
12
Coming up: Legacy Software
Legacy Software
Why must it change?




Coming up: Software –
A.True or B.False?
software must be adapted to meet the needs of new
computing environments or technology.
software must be enhanced to implement new
business requirements.
software must be extended to make it interoperable
with other more modern systems or databases.
software must be re-architected to make it viable
within a network environment.
13
Software –
A.True or B.False?
1.
2.
3.
4.
5.
If we get behind schedule we can add more programmers to
catch up
A general statement of objectives is sufficient to begin writing
programs - we can fill in the details later
Project requirements change, but change can be easily
accommodated because software is flexible
Once we write the program and get it working our job is done
Software engineering will make us create unnecessary
documentation and will invariably slow us down
14
Coming up: Software Myths
Software Myths
Affect managers, customers (and other non-technical
stakeholders) and practitioners
 Are believable because they often have elements of
truth,
but …
 Invariably lead to bad decisions,
therefore …
 Insist on reality as you navigate your way through
software engineering
One of the goals in this class is to learn you

how to determine what reality is!
15
Coming up: Fixing the problem
Fixing the problem
Software engineering!

Software engineering is really just a set of ideas and
tools to use (when it makes sense) to give you a higher
liklihood of success on a software project.

Will your project fail if you don’t use any software
engineering techniques? No…. but you have a better
chance at success if you do.
16
Coming up: A Generic Framework

A Generic Framework
Communication


Planning


Creation of models to allow the customer and the developer to better
understand the requirements and design that will achieve those
requirements
Construction


Establish a plan for the work. Technical task to be conducted, risks,
needed resources, work products to be created, and a schedule
Modeling


Heavy collaboration with the customer, other stakeholders and
encompasses requirements gathering and related activities
Combines code generation and testing required to uncover errors in the
code
Deployment

The software (as a complete entity or partially complete increment) is
delivered to the customer who evaluates it and provides feedback.
17
Coming up: A Layered Technology
What is a process framework
Process framework
Framework activities
work tasks
work products
milestones & deliverables
QA checkpoints
Umbrella Activities
19
Coming up: Framework Activities
Framework Activities



Communication
Planning
Modeling



Construction



Analysis of requirements
Design
Code generation
Testing
Deployment
What are some artifacts (work tasks, work products, milestones &
deliverables, QA checkpoints) of each activity? What tools may help support
them?
Coming up: Umbrella Activities
20
Umbrella Activities








Coming up: The Process Model:
Adaptability
Software project management
Formal technical reviews
Software quality assurance
Software configuration management
Work product preparation and production
Reusability management
Measurement
Risk management
21
The Process Model:
Adaptability

The framework activities will always be applied on
every project ... BUT

The tasks (and degree of rigor) for each activity
will vary based on:



the type of project
characteristics of the project
common sense judgment; concurrence of the project
team
22
Coming up: Question
Question

Pick any one of the project types below and tell me
which process activity would be emphasized or
deemphasized and why
Project Types:
- 1.Space Shuttle control system
- 2.Web-based calendar
- 3.Embedded controller in your refrigerator
- 4.Automatic “daily fortune” text-messager
Framework Activities
 Communication
 Planning
 Modeling



Construction



Coming up: How to solve any problem
Analysis of requirements
Design
Code generation
Testing
Deployment
23
How to solve any problem

Polya 1945





Understand the problem
Plan a solution
Carry out the plan
Examine the result for accuracy
Do these agree with our basic framework?
communication, planning, modeling, construction
deployment?
24
Coming up: The CMMI
The CMMI




CMMI defines characteristics shown to achieve good
results.
The CMMI defines each process area in terms of
“specific goals” and the “specific practices” required to
achieve these goals.
Specific goals establish the characteristics that must
exist if the activities implied by a process area are to be
effective.
Specific practices refine a goal into a set of processrelated activities.
PP - project planning
REQM - Requirements Mgmt
MA - Measurement and Analysis
CM - Configuration Mgmt
PPQA - Process and Product QA
Coming up: The CMMI
25
The CMMI






Level 0 - Incomplete - process area is either not performed or does
not achieve all specified goals.
Level 1 - Performed - All specific CMMI defined goals of the process
area have been satisfied
Level 2 - Managed - All work conforms to an organizationally defined
policy; all people doing the work have access to adequate resources
to get the job done; work tasks are monitored, controlled and
reviewed, evaluated for adherence to the process description
Level 3 - Defined - process is tailored according to organization’s
tailoring guidelines. Work products, measurements, etc… are
contributed to the organizational process assets
Level 4 - Quantitatively managed - Process area uses quantitative
measurement to control and improve the process area. Quantitative
objectives for quality and performance are established and used.
Level 5 - Optimized - Process area adapted and optimized to meet
changing customer’s needs and continually improve the process
area
26
Coming up: Process Assessment
Process Assessment



Does your process adhere to the qualities described in XYZ.
The process should be assessed to ensure that it meets a
set of basic process criteria that have been shown to be
essential for successful software engineering.
Many different assessment options are available:




SCAMPI --- assessed for CMMI standards compliance
SPICE --- assessed for ISO/IEC15504 compliance
ISO 9001:2000 --- assessed for ISO 9001 compliance
Process Assessment is often used to “certify” a company as
compliant (“Company X is ISO9001 certified “or “Company
Y is CMM level 4”)
27
Coming up: Assessment and Improvement
Assessment and Improvement
Software Process
is examined by
identifies
modifications to
identifies capabilities
and risk of
Software Process
Assessment
Software Process
Improvement
leads to
leads to
Capability
Determination
motivates
Best use of assessment though is to
improve your process! (Not just “get the
certification”)
28
Coming up: The Waterfall Model
The Waterfall Model

Do all process steps in the following order (this is
generally thought of as the most basic model)
Com m unic a t ion
proje c t init ia t ion
re quire m e nt ga t he ring
Planning
es timating
sc heduling
track ing
Mode ling
analysis
design
Const r uc t ion
code
t est
De ploy m e nt
de liv e ry
s upport
f e e dba c k
1998, the Standish Group analyzed 23,000 projects to determine failure
factors. The top reasons for project failure, according to the report,
were associated with waterfall practices.
- http://www2.umassd.edu/SWPI/xp/articles/r6047.pdf
29
Coming up: Different families of models
Different families of models
Prescriptive
Agile
Prescriptive Models 1970->Present
Agile Models 2001->Present
-Waterfall (1970)
-Evolutionary (1975)
-Incremental (1975)
-Spiral (1988)
-RAD (1991)
- eXtreme Programming (1999)
- SCRUM (1990s)
- DSDM (1997)
- Crystal (2001)
All dates are approximate based on publications
30
Coming up: Different families of models
Different families of models
Prescriptive
Agile
Goal: Higher Quality Software
Goal: Higher Quality Software
Philosophy:
Philosophy:
•Bring order to chaos
•Provide repeatability/consistency
•Provide ability to control
•Provide ability to coordinate teams
•Individuals and interaction over process and tools
•Working software over large documentation
•Customer collaboriation over contract negotiation
•Responding to change over following a plan
Which is probably better for large teams? A. Prescriptive B. Agile C. Same
Which is probably better for a web application?
Which is probably better for Mars rover control system?
Which is produces better software?
End of presentation
31
Download