Once the HLD is done, you should move to
detailed level design, which is a graphical
representation of the structures of software, that defines high level
details of each modules including module's interface (input and output
data type), data
structures and a list of any non-functional requirements. In short, DLD
is providing detailed information about each module.
The detailed level design document
for a project should provide a complete and detailed specification of
the design for the software that will be developed in the project,
including the classes,
members, and non-member functions, and associations between classes
that are involved.
During the detailed level design phase
the view of the application developed during the high level design is
broken down into modules and programs.
The DLD will contain: - detailed functional logic of the module in
pseudo code - database tables with all elements including their type and
size - all interface details with complete API references (both
requests and responses) - all dependency issues -error message listings -
complete input and outputs for a module.
DLD should contain a listing of the
declarations of all the classes, non-member-functions, and class member
functions that will be defined during the implementation stage,
along with the associations between those classes and any other details
of those classes that are firmly determined by the detailed level design
stage.
Detailed-level design focuses on implementing the components as
defined by the
high-level design. Whereas a component is a more-or-less "whole"
piece of
functionality, the implementation of a component usually consists of
many
interrelated pieces. A component may be implemented using
object-oriented,
structural, functional, or other design method. Sometimes it
encompasses
outlining the various classes and methods that make up the design,
so that it is
clear how to attach the code to the skeleton.
A DLD should - be internally consistent
- describe the modules
- describe the purpose of each module
- define the interrelationship between the modules.
- identify all the interfaces to the modules
- describe the purpose the purpose and method of use of all interfaces to the modules.
- Physical database design - Regrouping of data set into various files/tables taking into account normalization of data
- Database engineering - Data access methods, optimization techniques, query construction techniques etc are designed here
- User Interface Design - This section describes the managing of input devices, validating user input, handling errors, exceptions and displaying of appropriate messages, proving help and prompts, handling windows and fields scrolling within windows, establishing connections between application software and the interfaces, allowing the users to customize the interface etc