1. Introduction

Design is very similar to designing a house or a car or a dress. You need to work out what the pieces will be, how each piece will be made, and how they will fit together.

Design is typically done from a "top-down" perspective. The idea is to take the software from the high-level features and break it into pieces where it makes the most sense. Then, break it into smaller pieces until you are down to individual classes. This is best done in a group with a team of more than one developer. Then, have each developer define the classes and functions they will be creating and then the whole team reviews the results. The developers can then worry about the internals of their software on their own.


By the end of the design phase you'll also want to have worked out details of how you are going to implement and test the software. This can include:

User Interface

A key factor in any software's success is how it looks to the user. Complex applications and even simple tools can present difficult to understand interfaces to the user. It can be hard to implement and test a whole series of interfaces with a bunch of users. One approach is to bring folks into a room with a large table and layout the user interface as "paper prototypes" where each piece of paper represents one window or dialog in the user interface. Then you can change and move the pages around until your target users understand the flow of the interface.

There is an entire discipline dedicated to formal user interface testing methodology While this can be great it can also be time-consuming and expensive. An easy alternative is to get anyone nearby to take a look at what you are doing and see what they think. Just put them in front of a computer with your software running and see what happens. The biggest challenge is to keep from helping them and instead just take notes on what works and what does not - remember that you will not be there to help them in the future. Take your notes and go back and work on the software again and then retest with the person until they can get through it without a problem. Then, try it on someone else.

Additional Resources

Book: Design Patterns

Book: UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition)

© Copyright 2018 HSU - All rights reserved.