7.5.1 系统设计知识点概述
本课核心知识点整理
软件设计分为概要设计和详细设计
系统设计在结构化开发中体现为自顶向下、逐步求精。先做概要设计,得到系统整体框架;再做详细设计,进入模块内部。
| 阶段 | 做什么 | 不做什么 |
|---|---|---|
| 概要设计 | 子系统/模块划分、功能分配、模块关系和接口关系、全局数据设计 | 不展开模块内部具体算法 |
| 详细设计 | 模块内部算法、数据结构、处理路径、内部接口 | 不重新决定系统整体结构 |
课堂提醒:概要设计阶段看不到模块内部,最多看到模块之间的连通关系和接口连接。这就是信息隐藏思想的体现。
信息隐藏为什么重要
信息隐藏不是把信息藏起来不给人看,而是让模块只暴露必要接口,把内部实现封装起来。
| 好处 | 说明 |
|---|---|
| 降低影响范围 | 模块内部实现变化不应影响其他模块 |
| 便于并行开发 | 不同小组只需按接口协作 |
| 便于测试维护 | 问题定位在模块边界内 |
| 支持复用 | 模块对外接口稳定时更容易复用 |
概要设计像“分房间”
课堂用了房子类比:概要设计像确定几室几厅、主卧、次卧、厨房、客厅等大致划分;详细设计像每个房间内部的装修细节。这个类比要记住,因为它能帮你快速区分题目中的阶段。
模块设计原则预告
| 原则 | 含义 |
|---|---|
| 模块大小适中 | 太大难维护,太小管理和调用成本高 |
| 扇入扇出适中 | 不追求极端数量,通常希望多扇入、少扇出但仍要适中 |
| 调用深度适中 | 层次过深会增加理解和调试成本 |
| 单入口单出口 | 控制结构清晰,减少非正常跳转 |
| 功能可预测 | 模块职责应清楚,别人能理解它做什么 |
| 作用域小于控制域 | 判定影响范围尽量控制在本模块或其控制范围内 |
例题
将整个系统划分为多个子系统和模块,并分配任务,属于:
信息隐藏原则强调:
自查要点
- 为什么概要设计比详细设计更抽象?
- 信息隐藏和接口设计是什么关系?
- 模块大小为什么要适中?
- 扇入、扇出、调用深度分别指什么?
- “功能可预测”对维护有什么帮助?