CSE403 Software Engineering, Autumn 1999

Gary Kimura

 

Lecture #4 Notes

Prototyping

 

1)      Software Prototyping

a)      Today we’ll look at how to build and use software prototypes

b)      The purpose of prototyping

c)      Some examples of prototyping

d)      The upside and downside of prototyping

2)      What is prototyping

a)      Building the throw away model

b)      Building models that demonstrate properties of the real product

c)      Building something faster and cheaper than the real product

3)      Why prototype

a)      To reduce risk

b)      To learn while you have the luxury

i)        How people will use and interact with the product

ii)       How to build the real product

c)      To tweak the design before it is too late

i)        Change requirements

ii)       Change interface

iii)     Change architecture

4)      Examples of prototyping

a)      The wooden Palm Pilot

b)      Model cars

c)      Storyboards

d)      Mock-ups (space station, airplanes, kitchens, etc.)

e)      A subset of an API set can be a prototype

f)        A non-fully featured app can be a prototype (then it can act as a sales tool)

g)      There is really a wide spectrum from paper design notes to full featured prototypes (for example an building architects sketches to stick models)

h)      At Microsoft before building each building they put up a fake wall (a good example of learning how to build the real product and ensuring it meets its requirements)

i)        Goal is to convey enough information to judge the design and the process necessary to build the product

5)      What is in a software prototype

a)      Isn’t the previous version a prototype

i)        It can often be used as a basis for prototyping

ii)       What to do in the absence of a previous version

b)      Screenshots and storyboards

c)      Languages and tools for prototyping

d)      Not everything is easy to prototype

i)        UI’s are easier

ii)       API sets are hard

6)      What is missing from a software prototype

a)      The code is missing

i)        Typically most of the error handling is missing

ii)       May not be extensible, maintainable or just well designed

iii)     Typically not fully featured

(1)   It maybe of limited size and scope

(2)   It maybe slow

b)      The documentation, testing, performance, and support considerations are missing

7)      When do we do a prototype and when to start and stop prototyping

a)      When potential payoff outweighs the cost of doing a prototype

b)      Finish the prototype when you’ve learned what you wanted to know

c)      Also move on when other risks become more pressing

8)      Who builds, sees and uses the prototype

a)      The program manager

b)      The customer to test usage scenarios

c)      The developer to see what to build

d)      Testing, product support, et cetera

9)      Risks of prototyping

a)      Slows the process

i)        Time to market often translates to increased revenue

ii)       SDEs don’t like to wait for the PM to say what to build

iii)     SDEs don’t listen to PM

b)      PM believes their prototype should be the product

c)      PM convinces upper management that the product is possible because the prototype works

10)  NT Experience

a)      Prototype the kernel

i)        Temporary scaffolding served to help prototype the system (e.g., basic file system operations was first provided via scaffolding)

ii)       Some of the API set really wasn’t prototyped very well

iii)     Underlying Time is messed up

b)      UI prototyping done with screenshots and storyboards

11)  TAG 2000 prototypes

a)      Do you need to do a prototype

b)      What type of prototype