MEGA programming - Chaims - The Stanford University InfoLab

advertisement
CS466: Tools and Processes for
Software
Gio Wiederhold
Dorothea Beringer
Anca-Juliana Stoica
September 1999
Overview Software Engineering
1
Goals, Lectures
Goal:
» Overview of some important topics of software engineering
» Basis for future studies - ongoing education
• UML modeling
• Design patterns
• Software development process models
• Software reuse, component-oriented software
development
• Software cost estimation
• ...
» Different views, invited speakers
September 1999
Overview Software Engineering
2
Sign Up
• check out http://www-db.stanford.edu/cs446
September 1999
Overview Software Engineering
3
Assignments
• Modeling with UML
– Assignment 1: Actors and Use Cases, Domain Model, for an
electronic bookstore
– Assignment 2: Design Model and Interaction diagrams for same
problem as in assignment 1
– Assignment 3 (reverse engineering): Given a small software package
and an incomplete use case model, make the interaction diagrams,
the class diagram, a state chart, and try to model two additional
features
• Design Patterns
– Assignment 4: apply and detect design patterns while modeling two
(three) smaller problems
• Cost Estimation
– Assignment 5: Develop an estimate for a software product using tools
and models: getting problem solution, analysis of results, option
analysis, opportunity analysis, personnel impact, addressing the
risks, model calibration
September 1999
Overview Software Engineering
4
Books for Assignments
UML modeling:
• "UML distilled", by Martin Fowler, 1997/1999
or another UML book
Design Patterns:
• "Design Patterns", by Erich Gamma, Richard Helm,
Ralph Johnson, John Vlissides, 1994
or another book containing the GoF design patterns
September 1999
Overview Software Engineering
5
Assignments: how to
– Teams of two allowed for some assignments
– Assignment 4 and 5: plan ahead!
– Due dates: mostly Monday, yet plan for previous Friday!
No late days!
– Modeling assignments: require thinking and redoing. Goal is
not to have just a model, but to have a good model!
September 1999
Overview Software Engineering
6
Reading for specific lectures
• "No Silver Bullet: Essence and Accidents of Software
Engineering", for Sept. 27
• "A Spiral Model of Software Development and Enhancement", for
Oct. 6
• A case study for the lecture on software reuse organizations, for
Oct. 13
• "Risk Management for Software Development", for Oct. 16
• "Software Cost Estimation", "Estimating work with use cases", for
Nov. 17
September 1999
Overview Software Engineering
7
NO Silver Bullet...
Why no easy remedies?
• Progress in hardware and thus possibilities for ever
more complex software
• Inherent characteristics of software (essence):
»
»
»
»
invisibility, many dimensions, hard to visualize
complexity, non-linear in scaling up
conformity, arbitrary complexity, interfaces
changeability, no classic production, glue, takes over soft
parts of processes
• Accidental difficulties:
» ...
September 1999
Overview Software Engineering
8
Tools and Processes for Software (1)
What do we need to develop a software system?
• Basic tools: Languages, Compilers, Debuggers
• Basic know how: Basic tools, Language
features, Algorithms, ...
• More advanced tools: Libraries, Databases,
Window-systems, Distribution-systems, …
• More advanced know how: Features of
advanced tools and their languages, Distributed
architectures, Solutions to specific problems, …
Let’s start developing the new baggage-control system
for the next new airport….
or do we need something else?
September 1999
Overview Software Engineering
9
Processes and Tools for Software (2)
no
c o n t r o l,
i.e. for larger
projects
( > a few hours):
- results not predictable
- schedule unknown
- organizational chaos
- random communication
project
September 1999
mana
Overview Software Engineering
10
Processes and Tools for Software (3)
damaged good
s
unpredictable and unexpected
behavior
quality assur
ance
September 1999
Overview Software Engineering
11
Processes and Tools for Software (4)
ad hoc handc
rafting
engineering
- planning
- documenting
- testing
September 1999
Overview Software Engineering
12
Risk analysis
Silver Bullets
Life-cycles
Reuse
Use-case driven
Design Patterns
Maintenance
IEEE standards
SEI PMM
Prototyping
Quality
assessment
ISO 9000
User acceptance
Evolutionary
Iteravite
Spiral
Paradigms Waterfall
Requirements
Frameworks
Componentengineering
Reviews
management
Participative
Objectory
ConfigurationInspection development
Activities
management
Requirements Analysis
Object-oriented
elicitation
UML
Design
Booch
Phases
Process models
WalkthroughsTeam buildingTesting
RAD
CASE-tools
Software metrics
Reliability
Viewpoints
Milestones
Project metrics
TQM
September 1999
Overview Software Engineering
Modeling
Cost estimation techniques
13
Standards (1)
There exist many standards:
Booch
• Process models, e.g. Spiral model
UML
of Boehm, Objectory of Rational
SEI CMM
• SEI Capability Maturity Model
• IEEE standards, e.g. requirements
IEEE standards
document,
• ISO standards, e.g. ISO 9000 - 9001
ISO 9000
Many companies have in-house standards:
– complementing public standards (e.g. ISO 9000)
– adaptations of public standards, methods and models
September 1999
Overview Software Engineering
14
Standards (2)
Standards describing overall Software Process Maturity
September 1999
http://www.software.org/quagmire/
15
Overview Software Engineering
Standards (3)
http://www.ansi.org/catalog, search for software engineering
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
1: IEEE 610.12-1990 : Standard Glossary of Software Engineering Terminology
3: IEEE 1348-1995 : Recommended Practice for the Adoption of CASE
4: IEEE 1219-1993 : Software Maintenance
5: ANSI Z94.7 -1998 : Engineering Economy
7: IEEE 1008-1987 : Software Unit Testing
8: IEEE 1028-1988 : Software Reviews and Audits
9: IEEE 1063-1989 : Software User Documentation
10: ANSI/AIAA R-013-1992 : Software Reliability
11: IEEE 1045-1993 : Software Productivity Metrics
12: IEEE 1044-1994 : Classification for Software Anomalies
15: ANSI/ANS 10.3-1995 : Documentation of Computer Software
16: IEEE 828-1990 : Software Configuration Management Plans
17: IEEE 829-1983 (R1991) : Software Test Documentation
18: IEEE 1042-1987 : Guide to Software Configuration Management
19: IEEE 1058.1-1987 : Software Project Management Plans
20: IEEE 1061-1993 : Software Quality Metrics Methodology
21: ANSI/NISO Z39.67-1993 : Computer Software Description
………………...
September 1999
Overview Software Engineering
16
Dividing up the time-scale
• having milestones, phases, activities
• having models describing it (life-cycle models,
process models)
• having standards describing or requiring these models
Process models
Life-cycles
Evolutionary
Iterative
Prototyping
Spiral
Waterfall
Milestones
Objectory
Phases
Activities
Inception
Req. elicitation
Elaboration
Analysis
Construction
Design
Transition
Implementation
Maintenance
September 1999
Overview Software Engineering
IEEE standards
ISO 9000
17
Modeling
How do I catch and communicate my thoughts,
concepts, and plans?
Modeling
techniques
Booch
UML
VDM
Z
Patterns
Paradigms
Design patterns
Architecture patterns
Frameworks
Object-oriented
Use-case driven
Data driven
Risk driven
Architecture driven
CASE-tools
September 1999
Overview Software Engineering
18
What - When?
Activities
Analysis
Design
Implementation
Testing
Modeling
techniques
Risk analysis
Booch
UML
VDM
Z
Project reviews
Process models
Milestones
Phases
Inception
Elaboration
Construction
Transition
September 1999
Prototypes
Overview Software Engineering
wwwwhh
when, what, who, where,
how, how much
19
Money - People
A software development project costs money.
A software development project is carried out by people.
Viewpoints
Project metrics
RAD
Team building
Cost estimation
Prototyping
Paradigms
Milestones
Process models
September 1999
Overview Software Engineering
Object-oriented
Use-case driven
20
Supermen
Requirements
engineering
Participative
development
• What is the best,
yet appropriate solution?
• Bugs, bugs,
User acceptance
Viewpoints
Reviews
Walkthroughs
Inspection
Testing
Prototyping
• What is the problem?
Quality
assessment
Reliability
Phases
Frameworks
September 1999
Design Patterns
Milestones
Analysis
Design
Overview Software Engineering
21
Order
Standards
Configurationmanagement
Modeling
techniques
CASE-tools
Componentmanagement
Standards
Process model
Cost estimation
Teambuilding
September 1999
Components
Frameworks
Design Patterns
Reuse
Overview Software Engineering
22
Quality
Assurance
Project
Management
quality personnel
project leader
Risk analysis
Life-cycles
Reuse
Design Patterns
Use-case driven
Maintenance
IEEE standards
Evolutionary
Iteravite
Spiral
ISO 9000 User acceptance
Paradigms Waterfall
Quality
assessment
Requirements
Frameworks
Componentengineering
Reviews
management
Participative
ObjectoryConfigurationInspectiondevelopment Activities
management
Analysis
Requirements
Object-oriented
elicitation
UML
Design
Booch
Phases
Team buildingTesting Process models
Walkthroughs
SEI PMM
Prototyping
RAD
CASE-tools
Software metrics
Viewpoints
Reliability
Milestones
Project metrics
TQM
Modeling
Cost estimation techniques
programmers,
developers
Software
Engineering
September 1999
Overview Software Engineering
23
Business
Sciences
Engineering
Sciences
Risk analysis
Life-cycles
Reuse
Design Patterns
Use-case driven
Maintenance
IEEE standards
Evolutionary
Iteravite
Spiral
ISO 9000 User acceptance
Paradigms Waterfall
Quality
assessment
Requirements
Frameworks
Componentengineering
Reviews
management
Participative
ObjectoryConfigurationInspectiondevelopment Activities
management
Requirements Analysis
Object-oriented
elicitation
UML
Design
Booch
Phases
Team
building
Process models
Testing
Walkthroughs
RAD
CASE-tools
Software metrics
Reliability
SEI PMM
Prototyping
Viewpoints
Milestones
Project metrics
TQM
Modeling
Cost estimation techniques
Social
Sciences
September 1999
Overview Software Engineering
24
Download