|
|
|
|
|
|
|
An interface design prototype provides the chance to test the look and feel of your product with potential users. |
|
|
|
|
|
|
|
|
A functionality prototype does not have the final user interface, but allows users to try out various features, such as forwarding messages or attaching files. |
|
|
|
|
|
|
|
|
Finally, an architecture prototype might be designed to give you a chance to develop a smaller version of the program and to assess how easily your design decisions will scale up as the program is fleshed out. |
|
|
|
|
|
|
|
|
It is imperative to keep your prototyping goals clear. Are you examining the user interface, experimenting with functionality, or building a scale model of your final product? A good architecture prototype makes a poor user-interface prototype, and vice versa. |
|
|
|
|
|
|
|
|
It is also important to keep an eye on over-engineering the prototype, or becoming so concerned with the investment you've made in the prototype that you are reluctant to tear down the code and redesign as you progress. |
|
|
|
|
|
|
|
|
A good design rule of thumb at this stage is to design for those things that 80% of the people want to do 80% of the time, and to set aside your concerns about the remaining 20%. The boundary conditions will need to be addressed sooner or later, but the core of your design should focus on the 80/80. |
|
|
|
|
|
|
|
|
Accordingly, you might decide to start by designing the principal classes, setting aside the need for the secondary classes. Further, when you identify multiple classes that will have similar designs with only minor refinements, you might choose to pick one representative class and focus on that, leaving until later the design and implementation of its close cousins. |
|
|
|
|
|
|
|
|
There is another rule, the 80/20 rule, that states: The first 20% of your program will take 80% of your time to code; the remaining 80% of your program will take the other 80% of your time! |
|
|
|
|
|
|
|
|
|
Designing the PostMasterMessage Class |
|
|
|
|
|
|
|
|
In keeping with these considerations, you decide to focus on the PostMasterMessage. This is the class that is most directly under your control. |
|
|
|
|
|