Date post: | 15-Dec-2015 |
Category: |
Documents |
Upload: | evelyn-brake |
View: | 213 times |
Download: | 0 times |
Unit 1, Lesson 4
Software Development Cycle
AOITIntroduction to Programming
Copyright © 2009–2012 National Academy Foundation. All rights reserved.
Software development requires a structured process
• A software development process defines the steps to develop a software product.
• The software development process is also called the software life cycle.
Why do you think a development process would be called a life cycle?
There are two main models for software development
• The waterfall model
• The iterative (or incremental) model
Can you predict any differences between the waterfall model and the iterative model?
The waterfall model flows down
Problem statement
Requirements
Coding, testing
Design
Deployment
Maintenance
What are the problem statement and requirements for circle.py?
How is software typically “deployed” to users?
The waterfall model has important limitations
• Too “linear” (no way to “circle back” during the process to correct or to apply lessons learned along the way)
• No user feedback after deployment
What does linear mean?
How does the waterfall model illustrate a linear process?
The iterative model is cyclical
1. Problem statement
2. Requirements
6. Implementation
4. Design
7. Testing
9. Maintenance
3. Planning
5. Prototyping10. Evaluation
8. Deployment
Circular,not linear
The agile development process is based on the iterative model
• Cross-functional teams collaborate
• Requirements and solutions evolve iteratively through collaboration
• Project management involves discussion, inspection, adaptation
What can you learn from the diagram about important aspects of Agile development?
The agile development process is based on the iterative model
• Cross-functional teams collaborate• Each team member can perform
several functions
• For example, coders can also act as testers.
• Requirements and solutions evolve iteratively through collaboration
• Project management involves discussion, inspection, adaptation
Why is it important for teams to be "cross-functional"?
The iterative model has many advantages
• Test ideas by prototyping
• Divide the software project into more manageable “releases” of code
• Respond to customer feedback
• Change even the original problem statement (if necessary) after experience in the field
Most software development uses a team approach
• Marketing team• Management team• Architecture and design team • Software development team• Test team • Information development team • Customer support team
This course also has programming teams
• Our programming pairs are a small team.
• We take advantage of multiple skills.
• We divide up the work.
• We try out different roles.
How else are programming pairs like a mini software development team?
Our teams are using the iterative model
1. Write problem statement.2. Write requirements.3. Create design of the first “iteration” (e.g., Basic
Snowman) and evaluate for extensibility.4. Code, test, fix bugs, deploy first iteration.5. Design next iteration (e.g., Advanced
Snowman).6. Code, test, fix bugs.7. Deploy, maintain, evaluate for the next
“product release.”
What might happen in the next iteration of the Snowman program?
The Snowman project followed this process
Problem statement
Requirements
Implementation
Design
Testing
Maintenance
Planning
PrototypingEvaluation
Deployment
When you did the Snowman project, how many times did you go around the circle?
Professionals use the software life cycle
• Software development requires structure.
• The iterative model is preferred because• it allows multiple teams to work on different parts of the
cycle at the same time, and• it allows teams to learn and improve on their program
designs over time.
• We use a simplified version of the iterative model in this course, developing skills required in the professional programming environment.