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 statementRequirements 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 statement2. Requirements6. Implementation4. Design7. Testing9. Maintenance3. Planning5. Prototyping10. Evaluation8. 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 RequirementsImplementationDesignTestingMaintenancePlanningPrototypingEvaluationDeployment 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.