The Software Development Life Cycle (SDLC) goes through various phases like planning, requirements assessment, analysis, design, execution, documentation, testing, etc. Each phase is further divided into tasks with properly defined objectives and results.

Analysis and Design are phases where the actual architecture, working model, and execution process of building a software product is laid down.

Two crucial steps in these phases are High-Level System Design and Low-Level System Design.

What Is High-Level System Design?

High Level Design Process Image Showing People Working on Compiling a Design Document

High-Level Design (HLD) provides a comprehensive overview of the software development process along with the system architecture, applications, database management, and complete flowchart of the system and navigation. It’s a blueprint that consolidates the various steps and modules, their objectives, variable components, results, architecture, and timeline to develop the software. HLD translates a business plan into a software product or service.

Examples of HLD in software development include system architecture documents, app development flowcharts, etc.

What Is Low-Level System Design?

Low-Level Design Document for an App with Various Components and Modules

Low-Level Design (LLD) deals with the planning, coding, and execution of the various components, modules, and steps in the HLD, at an individual level. Each module in an HLD has a unique LLD document that provides comprehensive details about how the module will be coded, executed, tested for quality, and integrated into the larger program. LLD provides actionable plans by deconstructing HLD components into working solutions.

Examples of LLD in software development include cart integration, security testing, user interface design, etc.

Differences Between HLD and LLD

HLD and LLD also serve different functions and purposes like high-level programming languages and low-level programming languages.

Macro vs. Micro Architecture and Design

HLD is a macro-level design that provides a bird’s eye view of the software development process. It includes diagrams, flowcharts, navigational details, and other technical requirements that will form the crux of the development process.

In addition to flowcharts, diagrams, navigational information, and technical requirements, LLD also has comprehensive information about the step-by-step execution of each component of the HLD. It deals with software development at the micro-level.

Every component of an HLD has a unique LLD document.

Development Chronology

HLD precedes the LLD phase. Once the HLD is in place and approved for execution, work on the individual LLDs can begin.

HLD begins once the planning and requirements stages are dealt with and has no other dependencies.

On the other hand, LLD needs to be executed in a particular order. Some modules must await execution until others have been completed.

LLD falls under the Design phase of the SDLC, whereas the HLD falls under the Analysis phase of the SDLC.

Purpose

  • The purpose of an HLD is to list the functional aspects of the various modules along with the final result.
  • The purpose of an LLD is to detail the logic and execution of each module in an HLD.

Stakeholders

Solution architects are responsible for creating an HLD document. It can have internal and external stakeholders like the review team that takes cognizance of the software metrics, the design team, clients, and managers.

LLD is handled by software developers, web admins, security engineers, etc., who are part of the company or vendor teams. LLDs are generally restricted to internal stakeholders.

Target Audience

HLD documents have the target audience of managers, clients, and software development teams.

Software engineers, coders, testers, and developers working on the project are the target audience for LLD documents.

Expected Outcome

  • The outcome of an HLD is a software product or service ready to be shipped to the end-user.
  • The outcome of an LLD is the completion of a single module of the HLD, like the coding or testing phases.

Understanding Software Design Documents

Software design documents outline the structural, functional, and logical aspects of developing a software product or service in addition to the technical requirements and other implementation details. Whether the design deals with macro-level or micro-level execution, programmers and other stakeholders should knowq and understand the scope and the various steps of the software development process.