一、系统设计的核心定位
目标:将需求阶段的“做什么”逻辑模型,转化为“怎么做”的物理模型,制定系统蓝图。
主要内容:包括总体结构、代码、输入输出、处理过程、数据存储、用户界面、安全控制等设计。
常用方法:面向数据流的结构化设计(SD)、面向对象的分析与设计方法(OOD)。
核心步骤:分为概要设计和详细设计两个阶段,前者关注整体架构,后者聚焦实现细节。
二、概要设计的核心内容
概要设计是系统设计的关键环节,直接影响软件系统的可维护性、可扩展性和整体质量,包含三项核心任务:
软件系统总体结构设计
- 任务:根据功能需求将系统划分为若干模块,明确各模块的功能职责、调用关系及接口定义(如参数传递方式)。
- 方法:常采用模块化设计思想,使用层次结构图或结构图表示模块间的组织关系。
- 质量评价标准:高内聚、低耦合,确保模块独立性强,便于开发与维护。
- 影响:为后续详细设计、编码、测试提供基础框架,决定系统整体架构方向。
数据结构及数据库设计
- 数据结构设计:在需求分析的数据基础上进一步细化,概要设计中以抽象数据类型(ADT)形式描述;进入详细设计后确定具体的数据表示与算法实现。
- 数据库设计(分三步):
- 概念设计:通过自底向上法构建实体-联系模型(E-R 模型),清晰表达现实世界中的数据实体及其关联关系。
- 逻辑设计:将 E-R 模型转换为特定 DBMS 支持的数据模型(如关系模型),设计规范化的关系表结构。
- 物理设计:结合具体的数据库平台(如 MySQL、Oracle),规划数据的存储结构、索引策略、分区方案等物理层面细节,优化访问性能。
编写概要设计文档
- 主要产出物包括:
- 概要设计说明书:描述系统模块结构、接口规范、运行环境等。
- 数据库设计说明书:涵盖概念、逻辑与物理设计结果,含 E-R 图、表结构定义等。
- 用户手册(初稿):初步说明系统功能与操作流程。
- 修订后的测试计划:根据系统架构调整测试策略与资源安排。
概要设计与详细设计是系统设计过程中的两个关键阶段,二者在目标、内容和抽象层次上有明显区别:
- 主要产出物包括:
设计目标不同
- 概要设计:关注“系统整体架构”,将需求转化为高层次的系统结构,回答“系统由哪些主要部分组成,如何组织”。
- 详细设计:聚焦“具体实现细节”,为每个模块提供可编码的详细说明,回答“每个模块内部如何实现”。
抽象层次不同
- 概要设计:处于较高抽象层级,不涉及具体算法或代码逻辑,重点在于模块划分、接口定义和数据总体结构。
- 详细设计:进入低层设计,明确每个模块的内部算法流程、局部数据结构、类的属性与方法(面向对象)、异常处理机制等。
主要内容差异
- 概要设计包括:
- 系统模块结构图
- 模块间调用关系与接口规范
- 数据库概念与逻辑结构设计
- 抽象数据类型定义
- 详细设计包括:
- 模块内部流程图或伪代码
- 类图、时序图等细化设计模型(OOD)
- 具体的数据结构实现方式
- 接口参数的具体格式与传输协议
- 错误处理与安全控制细节
- 概要设计包括:
输出文档不同
- 概要设计产出:《概要设计说明书》《数据库设计说明书》《修订测试计划》
- 详细设计产出:《详细设计说明书》《界面原型细化文档》《模块实现规格书》
后续影响不同
- 概要设计决定系统的可维护性、可扩展性和技术路线;
- 详细设计直接影响编码质量、开发效率和缺陷率。
✅ 总结:
概要设计是“搭骨架”,构建系统整体框架;
详细设计是“填血肉”,完善每一个功能细节,为程序员提供直接依据。