高级设计 vs. 低级设计
1. 概述
本文中,我们将探讨软件工程中的低级设计和高级设计。
2. 什么是高级设计?
建筑的鸟瞰图显示了其整体结构、住宅楼层、商业空间和便利设施,以及它们是如何无缝连接的。类似地,高级设计(HLD)就像软件系统的鸟瞰图。它定义了总体架构、主要组件以及它们之间的交互方式。我们可以把它看作是为我们的软件体系结构奠定基础的蓝图。
因此,HLD 是设计过程的初始阶段的结果,在该阶段,架构师、系统设计师或项目经理在高层讨论系统的结构和组件。HLD 展示了系统的总体架构和功能,而没有深入研究实现细节。要了解更多关于系统体系结构的信息,请查看关于分层体系结构的文章。
让我们深入了解 HLD 的一些关键特性:
- 它规定了数据库设计、系统、服务、平台以及模块之间的关系
- 它包含硬件、软件接口以及用户接口的描述
- 由方案架构师创建
- 它详细介绍了用户的典型流程工作流以及性能规范
- 它描述了系统的重大限制和权衡
就像建筑师在进行高级设计时关注建筑的预算和时间表一样,在这个阶段,我们会权衡软件的建筑设计选择的成本和收益。尽管功能和可扩展性很重要,但忽视财务和资源影响可能会导致开发周期后期的效率低下和预算超支。为了让团队做出符合项目目标和约束条件的明智决策,他们还必须考虑这些因素。这涉及到开发时间、维护复杂性、基础结构要求和潜在的可扩展性问题。
3. 什么是低级设计?
在建筑内部,我们深入了解确切的布局、材料、管道、电线等。类似地,低级设计(LLD)充实了 HLD 中指定的每个组件的实现细节,例如类图、算法、数据库模式和错误处理机制。
简单地说,LLD 是设计过程的下一个阶段,设计师和开发人员将高级设计转化为详细的技术规范。
LLD的一些关键特性是:
- 它由开发经理和设计师创建
- 它涉及所有系统组件的实际逻辑
- 它包括系统实施的逐步计划
它在编码过程中为开发人员提供指导,确保系统功能准确高效
我们可以说,LLD 深入研究了技术细节,将高级设计转化为详细的实施计划:
4. HLD vs. LLD
因此,我们有两种设计类型:
我们来总结它们的不同之处:
低级设计 | 高级设计 | |
---|---|---|
关注点 | 详细的实现细节 | 总体系统架构和设计 |
涵盖的组件 | 单个组件/模块 | 主要系统组件及其相互作用 |
设计工件 | 类图、数据结构、算法、数据库架构、错误处理 | 架构图、组件图、接口定义、数据流图 |
输入 | 高级设计 (HLD) | 业务需求、限制和目标 |
输出 | 代码级实现 | 高级设计 (HLD) 计划 |
实现所见 | HLD 之后,在编码阶段 | 在软件开发生命周期的早期 |
决策示例 | 数据结构选择、算法设计、数据库规范化 | 架构风格(例如,微服务、单体)、技术栈、集成点 |
别名 | Macro-level design | Micro-level design |
结果 | 评审记录、功能设计、数据库设计 | 程序规范和单元测试计划 |
HLD 设置了软件系统的总体架构和功能,为满足需求的开发提供了路线图,而 LLD 处理实现方面。
5. 结论
本文中,我们解释了低级和高级软件设计。HLD 提供了愿景,LLD 提供了执行的详细蓝图。了解如何创建这两个计划对于软件开发的成功至关重要。