Software design methodology

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/

Scrum blends all the development activities into each iteration, adapting to discovered realities at fixed intervals:

 Source: http://scrumreferencecard.com/scrum-reference-card/

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 into components. Design is where we craft a software solution based on the analysis work, our IT environment, and the frameworks/technology stacks at our disposal.

We abstract away all the concerns that are not pertinent. So, during analysis and design, we take away and break apart our problem into components that do simple things.

Implementation is when we put those simple things back together again.