Technical documentation creation is a critical step for a successful IT project, no matter whether it is big or small. When you have a team of people working on the same product, building it for someone else, communication is vital.
Technical documentation (TD) is one of the ways to bring everyone on the same page. It provides and explains the logical design of the upcoming (or existing) code and sets the expectations for features and modules the developer needs to create.
From a business standpoint, it is also an important step. Good technical documentation for a software project helps lower costs (especially sudden overhead), achieve high reliability, create a maintainable product, and streamline communication between the business and IT people (who often think differently).
There are several types of technical documentation, and in this article, we’ll look at such things as HLD, LLD, and DLD. Not sure what these mean and when to use which one? Read on.
Types of Design
High-Level Design (HLD)
High-Level Design (HLD) is a general system design. It includes the description of the following parts:
- System architecture
- Database design
- Brief mention of all the platforms, systems, services, and processes the product would depend on
- Brief description of relationships between the modules and system features
All the data flows, flowcharts, data structures, etc. are in these docs so that developers can understand how the system is expected to work with regards to the features and the database design.
Low-Level Design (HLD)
Low-Level Design (LLD) is a component-level design process that follows a step-by-step refinement process. It provides the details and definitions for the actual logic for every system component. It is based on HLD but digs deeper, going into the separate modules and features for every program in order to document their specifications.
Detailed-Level Design (HLD)
Detailed Level Design (DLD) is the most detailed technical document, which describes user stories, error processing algorithms, state transitions, logical sequences, and others. DLD describes the interaction of every low-level process with each other.
You might also be interested: What Code Repository to Choose for Your Project
HLD vs LLD
|High-Level Design||Low-Level Design|
|HLD is a macro-level design or system design. It allows seeing the “Big Picture.”||LLD is a micro-level design or detailed design. It allows seeing the minutiae.|
|The overall architecture of the application and the network design as well as relationships between various system modules and functions.||A detailed description of each and every module that is mentioned in the high-level design (HLD.)|
|Target audience: clients, designers, reviewers, management team members, program and solution teams.||Target audience: designer teams, operation teams, and implementers.|
|Main idea: HLD is required to understand the flow across various system entities. For example, if you have several integrated solutions, HLD describes how everything works as a single organism.||Main idea: provides information for building the product, its configuration, and troubleshooting. For example, if you have several solutions, LLD describes each one in detail, like a single organ in a body.|
|Goal: converts business goals and requirements into a high-level solution.||Goal: converts a high-level solution into a detailed solution ready for building.|
|Chronologically, HLD is created before any other technical documentation.||Chronologically, LLD is created after the high-level design document.|
|HLD Creator: Solutions Architect.||LLD Creator: Designers & Developers with PM.|
|Input Data: software requirement specifications (SRS.)||Input Data: reviewed and authorized high-level design document (HLD.)|
|Results: database design, functional design, and review record.||Results: program specification and unit test plan.|
Here is a convenient infographic that shows the difference between HLD and LLD: