Prototyping a UI

In previous lessons we developed the User stories and documented the functional and non-functional requirements of the system. Both of these artefacts are key inputs into the UI design phase of the SDLC.

Requirements

Let's imagine we are developing a system for recording apprentice off the job time. Our requirements may look as follows.

Functional

IdPriorityDescription
F1MUSTApprentices need to record their off the job training (OTJ) hours
F2MUSTApprentices need to record the OTJ Date
F3MUSTApprentices need to declare the activity took place during work hours
F4MUSTApprentices need to select a category for the activity they are recording
F5MUSTApprentices need to describe the activity in words
F6BONUSApprentices can access and use default values

Non-functional

IdPriorityDescription
NF1MUSTApprentices need to record their off the job training easily
NF2BONUSApprentices should be motivated to update their OJT
NF3BONUSApprentices can complete their OJT quickly

Start the design process

We now want to translate these requirements (and associated User stories) into a UI design.

The place to start is asking the question of yourself...

What are the inputs to this UI component?

What are the outputs of this UI component?

Once you have the inputs and outputs you can think about the human computer interaction (HCI) and the 10 heuristics. For example if we need to collect a date, which of the 10 heuristics should we consider? Consistency and Standards? Could we consider Systems and Status. Presenting a date input field that was populated with today's date might be a good start? Are their constraints that would help the users? Guide rails; like not picking a date in the future.

You can start to experiment with possible arrangements of the different input fields. One of the non-functional requirements is this data should be quick and easy to collect. So I'm thinking maybe the "submit" action is also the declaration that this activity was performed in work hours?

Free hand sketches

Start in a lose way sketching out different options. Keep referring back to the 10 heuristics. Try lots of different ideas.

sketch of different ideas for UI

From this jam session I like the twisting clock idea, like you'd twist an egg timer to collect a time in hours, but its a bit unusual interaction and people may not know how to use it. I like the chatbot style interaction where the OJT widget is a series of questions. The apprentice only needs to think about 1 thing at a time.

I think this exemplifies the heuristic of Aesthetic and Minimalist Design Interfaces should not contain information which is irrelevant or rarely needed. Some how I think just answering 1 question looks less time consuming than seeing all the inputs all at once. I would also need to show progress through the questions so I'm communicating Visibility of System Status in my design.

Wireframes

I might develop this idea a bit further. In my next prototype I am getting more interested in the details of the interface. What buttons do I need? Where will they go? How will I communicate Visibility of System Status? At this stage I am not concerned with look and feel. I just want to block out the controls and components.

Now you can turn to your prototyping tool of choice. I have done these on "Sketch" for Mac.

wire frames of chat input

Each box represents the different state of the same component as users enter the different data points we need to fullfil the functional requirements. I'm using the row of little circles at the bottom of the component to indicate to the user where they are in the series of inputs, can you recall which heuristic that is honouring? I learn a few things from putting this together. With the slider for hours I might just flash up on the screen the current hour that is selected.

iteration of a number selector

That feels cleaner to me. Wireframes are great because I can easily iterate and try different things out till I'm happy.

High Fidelity

What is it actually going to look like? What colours, fonts etc? How about the true scale of the elements, that needs refining. It's worth working up better mocks to closely resemble what we will finally put in front of users, and have designs that are ready to hand to the developers to actually write the code for our OJT component.

High fidelity mock up of component

It's really helpful to see the new component in the context of the page among the other components. Our high fidelity mock really helps with that. Can you see the other alterations to the design that I ended up making?

component in context of other components

With the high fidelity mockups I can really communicate my idea clearly to stakeholders and other members of the team. I also get to check that my design really will work before spending time on the coding side of things.

Assignment

Can you produce these 3 kinds of UI prototyping artifacts?

  1. In your group start sketching your ideas until you have a favorite or a short list of favorites.
  2. Create some basic wireframes based on your favorite freely drawn sketches.
  3. Once you have a set of wireframes can you work up some into high fidelity mockups.