Software design is where we:
- Gather requirements
- Create specifications from requirements
- Implement a solution based on the specifications
- Review results and iterate to improve the solution
Traditional waterfall development depends on a perfect understanding of the product requirements at the outset and minimal errors being executed in each phase. Source: http://scrumreferencecard.com/scrum-reference-card/
![](https://static.packt-cdn.com/products/9781787281394/graphics/assets/f5c992cc-900b-4779-a0f7-ae8becc51e7a.png)
Scrum blends all the development activities into each iteration, adapting to discovered realities at fixed intervals:
![](https://static.packt-cdn.com/products/9781787281394/graphics/assets/a47606ac-e40b-4d9b-ade4-1a135616b624.png)
In the process of creating specifications, artifacts such as Unified Markup Language (UML) diagrams are often created to help us think about the problem and craft a viable solution.
Analysis is where we model real-world operations, breaking apart pieces...