Design phase

Learning Objectives

Understand the importance of the design phase of the software development lifecycle.

Lesson

The design phase is very important. Developers spend lots of time in the design phase. We don't just start writing code and hope we'll figure it out as we go along. That approach may work as an individual, but will quickly derail a group of developers working together. Working as a group of developers makes it possible to create a more sophisticated piece of software more quickly that working alone. However, to experience this benefit you have to organise your work as a group. Having a clear design makes that much easier.

Design is not just visual design. It includes designing the user interactions, the data model and the interfaces and interactions of classes or modules.

Think back to the Scooter Hire project, we produced UML diagrams to illustrate the user interactions, the class responsibilities and the interactions between classes in the system.

There are a number of design areas you should discuss as a group and document using UML models:

Input

What are the inputs to your software solution? How will you collect these? What validation is required? Figuring this out might require you to also think about the Data Model. Talking through this will also require you to consider the outputs of the software.

Storage and Processing

The inputs you need to collect. How will you store that data? Will the inputs need processing before or after they are stored. What will those processes be?

Output

What are the outputs of your software? This might be views of data that you need to display. Thinking about the outputs can also help define what your inputs need to be and how you need to process or store the data your output will need.

Wireframes

wireframes

Wireframes are low resolution, often grayscale documents that layout the components of a page. You can create wireframes in a Google slide, PowerPoint or use an open source programme like draw.io.

Assignment

Work as a group. Make yourself a JamBoard if you think it will help your design discussions.

In your team, discuss the requirements and come up with a set of designs. Document the design in the following artifacts and commit them to GitHub BEFORE you write any code!

This will take some time, be patient, this is part of planning. With your wireframes, class/data model and interactions planned and documented you will find it much easier to break the work into smaller tasks and divide the tasks up amongst yourselves.