Read Chapters 5–9 to learn about proper design.
- Have you included a UML class diagram for all your classes?
- Does your design go down to the function level? Have you defined all the major functions your program will include and what each one of them should do?
- Do you have a specificiation document that lists every class, what the class does, and every member function and what it does?
- Have you iterated, selecting the best of several attempts rather than the first attempt?
- Have you tried decomposing the system in several different ways to see which way will work best?
- Have you approached the design problem from the top down or from the bottom up?
- Have you prototyped risky or unfamiliar parts of the system, creating the absolute minimum of throwaway code needed to answer specific questions?
- Has your design been reviewed by others?
- Have you driven the design to the point that its implementation seems obvious?
- Does the design meet the requirements?
- Are you satisfied with the way the program has been decomposed into subsystems, packages, and classes?
- Are you satisfied with the way the classes have been decomposed into routines?
- Do the classes have good names? Do the functions have good names?
- Are classes designed for minimal interaction with each other?
- Is the design lean? Are all of its parts strictly neccessary?
- Does the design help minimize both accidental and essential complexity?
- For the classes: see checklist on page 157.
- For the functions: use checklist on page 185.
- For exceptions and assertions: use checklist on page 211.
- Will you be using the pseudocode programming process of Chapter 9?
Jose M Vidal
Last modified: Wed May 21 15:40:46 EDT 2008