Checklist for Java Project Design Report
Formal Requirements
-
Are all the tasks the user wants to perform specified?
-
Are the system inputs fully specified (i.e., source, accuracy, allowable
range)?
-
Are the system outputs fully specified (i.e., destination, expected
range)?
-
Are formats for the system inputs and outputs specified?
-
Are all communication interfaces specified, including use of
standards and provision for handling errors?
-
Are maximun/minimum memory requirements specified?
-
Are timing requirements fully specified (e.g., expected processing time;
the program response time from a user's point of view)?
Formal Architecture
-
Use of User-defined Code versus Library Code
-
Does the architecture describe how reused code will
be made to conform to other architectural objectives?
-
Is the program architecture readily adaptable to change?
-
Program Modules
-
Are the modules well defined, including their functionality
and interfaces to other modules?
-
Are all of the functions listed in the requirements implemented
by too many (or too few) modules?
-
Is the high-level program design independent of the
computer and language that will implementat it?
-
Data Structures and Algorithms
-
Are all key algorithms and data objects described and justified?
-
Are the major data structures and algorithms hidden behind
access routines?
-
Program Input/Output
-
Is the strategy for handling program input/output (I/O) clearly defined?
-
Are all aspects of the program GUI defined?
-
Is the GUI modularized so that changes to it won't affect other
parts of the program?
-
Handling Program Errors
-
Is a coherent strategy for handling errors specified?
-
Does the handling of errors work well with the GUI?
Formal Design
-
GUI Design
-
Is the data input user-friendly?
-
Do the data fields come correctly initialized?
-
Is the output easy to read?
-
Do the components remain usable after the window
has been resized?
-
Are all of the components visible on startup?
-
Exception Handling
-
Is there handling of bad integer ranges?
-
Is there handling of poor date?
-
Does the program provide instructions in the case of errors?
-
Is there handling when memory is not allocated?
-
Code Structure
-
Is the numerical code separated from the GUI code?
-
Is there only one copy of all data?
-
Are the rules of scope obeyed? (e.g., unknowning polymorphism?).
-
Is the code simple and easy to read?
-
Numerical Routines
-
Are the routines correct?
-
Does the code waste time needlessly on operations?
-
Does the code waste system resources (memory allocation)?
References
-
McConnell S., Code Complete, Microsoft Press, 1993.
Developed in April 1999 by Greg Walsh and Mark Austin
Copyright © 2001, Department of Civil Engineering, University of Maryland