Design phase: Lack of quality during the design process may invalidate the requirements specification and may make proper implementation impossible. Industry practice shows that using a checklist during design helps improve design quality.
Have we considered all the requirements mentioned in the SRS? Was SRS placed under document control? Were the requirements related to the following functions considered during the design? Performance, security, concurrency, usability, portability, testability, language / database / OS / hardware requirements, development environment, compatibility, compliance with industry standards, scalability, exception handling
Is the chosen design methodology suitable for developing a type of software. Clarity: Is the project documentation clear / unambiguous? Could it be technically feasible Compatibility with existing software Determine the impact of this project on existing software We conducted an impact analysis Does this design describe the side effects of other software? Does this design have any dependency on any other related project?
Component Level: Are the interfaces well defined? The basic data structures are defined. Are the basic algorithms defined? Is the data / control flow defined? Data structure and algorithms Are data structures defined? Are access methods to data structures defined? Are algorithms defined? Do data structures and algorithms solve problems
Error / Exception Handling Are there data type errors? Does the software validate user input? Does the software provide explicit, non-threatening messages if an error occurs? (Quality of error messages). Can I restart the software from anywhere after an error? The software gracefully handles exception conditions, such as access violations and floating point errors.
Interfaces of the procedure. Does the number of actual parameters correspond to the number of formal parameters? Do the type and size of the actual parameters match the type and size of the formal parameters? Did we specify local and global functions correctly? Are global variables defined and invariably used in different modules? Are all documented messages (i.e. Parameters and general data)?
Procedure Level Does the procedure perform something very similar to an existing procedure? Is there a library procedure that will do the same? Is the procedure overly complex? Can the procedure be broken down into separate, more logical parts. Is the procedure an acceptable size?
Does the procedure perform only one logical thing? Does the procedure rely on a static variable of the procedure scale? Is the procedure easily stored and properly attached? Is it easy to check the procedure? Are any side effects described?
Quality Are design goals foreseen (reliability, flexibility, maintainability, performance, etc.)? Does the project meet its goals? (Tracking requirements) Is there evidence that more than one design option has been considered? Are there several design options along with a reason for accepting or rejecting them? Are design assumptions established? Are design compromises agreed upon? Is the design efficient? Is the structure repairable? Is the design portable? Can design changes change the environment with minimal changes? Whether the design parameter is controllable or are values ββhardcoded in programs.
Requirements Does the design meet all the requirements? Is there traceability between design and system specifications? Can the design meet the requirements for development costs? Can it be done on time? Does the design stay within the limits of the memory requirements? Does the design stay within the limits of the required disk usage? Does the design meet the requirements of response time? Will the design handle the expected transaction rate? Will the design handle the expected volumes of the data stream?