Process

advertisement
Processes
Outline
•
•
•
•
•
1
Definition of process
Type of processes
Improvement models
Example
Next steps…
Process
• Do you want to build a “dog house” or “high rise”
?
• Process needed to build large /complex software systems
2
Process: a set of ordered tasks
• Typical software tasks:
• What should the system do? (Requirements)
• How should the system do it? (Design)
• Writing the code… (Implementation)
• Making sure the code works (Testing)
• Using the system (Deployment)
Requirements
Design
Implementation
Testing
• Different processes order tasks differently
Deployment
3
Process: Requirements
• What should the system do?
•
•
•
•
4
Requirements
Customers write down what they want
Talk to customers, make diagrams
Watch users to see what’s needed
Look up requirements from standards body (e.g., medical)
Process: Design
• How should the system do it?
• Architectural design- overall structure of the system
• What components?
• How connected?
• Program design- how code should be organized
• Components => Classes and functions
5
Design
Process: Implementation
• Finally, we get to write some code!!
Implementation
• May also include:
•
•
•
•
•
6
Writing comments
Writing documentation
Helping other engineers with coding (e.g., pair programming)
Answering questions
Reading other documentation
Process: Testing
• Does the system work?
•
•
•
•
•
7
Unit testing
System integration testing
Usability testing
Acceptance testing
…
Testing
Process: Deployment
• Using the system (aka Operation)
•
•
•
•
•
8
Distributing code
Providing documentation and support
Debugging
Studying how the system work in practice
Adapting the system
Deployment
Outline
•
•
•
•
•
9
Definition of process
Type of processes
Improvement models
Example
Next steps…
Types of Processes
• Waterfall
• Spiral
• Agile
10
Waterfall process
Requirements analysis
Prototyping
Design
Implementation
Testing
Operation
(No prototyping in a pure waterfall process)
11
Spiral Process
Draft a menu of
program designs
Analyze risk &
prototype
Draft a menu of
architecture designs
Draft a menu of
requirements
Establish
architecture
Plan
12
Analyze risk &
prototype
Establish
requirements
Plan
Operation
Analyze risk &
prototype
Testing
Implementation
Establish
program design
Agile process
Do “spike” to evaluate & control risk
Customer provides “stories”
(short requirement snippets)
Prioritize
stories and plan
Operation
Write/run/modify
unit tests
Implement
System and acceptance tests
13
(Agile processes are rarely this tidy in practice)
Comparing Waterfall, Spiral, Agile
Waterfall
Spiral
Agile
Emphasizes:
-Simplicity
-Traceability
-Risk management
-Exploring alternatives
-Flexibility
-Immediacy
Weakness:
Requirement/design
mistakes can be costly
Exploring alternatives
can be costly
Continual rework
can be costly
Style:
-Highly controlled
-High ceremony
-Moderately controlled
-Moderate ceremony
-Rapid & organic
-Low ceremony
Some definitions
-“traceability”: relationships between requirements and system elements are documented
-“immediacy”: getting some sort of working system to the customer as fast as possible
-“rework”: redesigning the architecture and/or refactoring the program code
-“controlled”: conformance to process is highly valued, even if it slows a project down
-“ceremony”: how much analysis, documentation, and planning is involved
14
When to choose what
• Waterfall: good for smaller systems where requirements can
be fully understood before design and implementation
• Spiral: good for larger systems with vague requirements and
many alternatives for designing and coding
• Agile: good for systems where you can rapidly create
something very small but useful and then expand from there
15
Outline
•
•
•
•
•
16
Definition of process
Type of processes
Improvement models
Example
Next steps…
Improvement Models
• How to improve the system later?
• Iterative
• Get the entire system working really well
• Then add more parts
• Incremental
• Get part of the system working really well
• Then add more parts to the system
17
Improvement Models
• Iterative and incremental can be mixed / matched with process
models
• Iterative Agile
• Incremental Waterfall
• Etc.
18
Improvement Models: How to Choose?
• Incremental is often good when most of a system’s value is
tightly concentrated in a small number of components.
• Iterative is often good when you need to implement most of a
system before you can get much value.
19
Outline
•
•
•
•
•
20
Definition of process
Type of processes
Improvement models
Example
Next steps…
Example: Incremental Spiral Development
• Customer wants “Eco-friendly Amazon.com”
• Why pick spiral over waterfall or agile?
• Big software project
• Vague requirements
• Many alternatives
21
Spiral Process
Draft a menu of
program designs
Analyze risk &
prototype
Draft a menu of
architecture designs
Draft a menu of
requirements
Establish
architecture
Plan
22
Analyze risk &
prototype
Establish
requirements
Plan
Operation
Analyze risk &
prototype
Testing
Implementation
Establish
program design
Incremental Spiral: Draft Menu of Requirements
• Shopping cart
• Database of products
• Define “Eco-Friendly”
• Based on product’s “eco-friendliness”?
• Collect data from producers?
• Collect ratings from watchdog organizations?
• Collect ratings from customers?
• Eco-friendly shipping options?
• Feature to swap / trade items?
23
Incremental Spiral: Review Prototypes with Customers
Paper prototypes Lightweight prototypes
Documentation
These “throwaway” prototypes are cheap to make
because they are usually not interactive.
Let’s suppose that the customer settles on eco-friendliness options based on
watchdog data.
24
Incremental Spiral: Draft Menu of Architectures
Watchdog users
Shopping users
Web application
-Watchdog data input screens
- E-commerce interface
Database
PHP/Apache
Mysql
Linux
Watchdog XML feeds
Shopping users
Scrapers to read watchdog data
E-commerce interface
Database
Mysql
PHP/Apache
25
Linux
Incremental Spiral: Review with Customers and/or Users
More prototypes
And now an XML mockup
And lots of analysis & discussion
about pros/cons/cost/schedule/etc.
26
Documentation
Let’s suppose that the XML feed
architecture is selected, omitting
XML feeds for now (to be added
in later increment).
Incremental Spiral: Draft Menu of Program Designs
• E-commerce interface
•
•
•
•
Make each product its own object?
Make user accounts its own object?
“Hide” database from UI code?
What should be put it “library” classes for reuse in future increments?
• E.g., XML feeds
• …
27
Incremental Spiral: Review Prototypes with Customer
Heavyweight prototypes
Documentation
These prototypes are pretty expensive to make, since they implement
some interactivity.
Therefore, they often are incorporated into the finished product
(“evolutionary” prototypes).
28
Incremental Spiral: Implementation, Testing, Operation
• Wrap up increment #1
•
•
•
•
•
•
•
•
29
Manually load data base with products
Finish coding UI for searching / ordering
Write / run tests
Fix bugs
Deliver code to customer
Customer tests
Deploy to public server
Test, test, test
Incremental Spiral: Increment #2, add XML feed
• Already know this is a requirement
• No need to return to requirements phase
•
•
•
•
•
30
Return to review alternative architectures
Create a menu of program design
Prototype and review
Implement, test, send to customer
…
Incremental Spiral: Increment #3
Pay attention to users, discover new requirements Spiral, spiral, spiral
31
Outline
•
•
•
•
•
32
Definition of process
Type of processes
Improvement models
Example
Next steps…
Next steps…
• Finish your Vision Statement Overview!
• Finalize your team
• Be ready to explain Waterfall, Spiral, and Agile development
•
•
•
•
Definition
Pros / cons of each
Explain when to use, and WHY
When NOT to use…
• Next time: Requirements
33
Download