📌目录
- [⚖️ 概要设计阶段的评审:确保设计质量的关键活动](#⚖️ 概要设计阶段的评审:确保设计质量的关键活动)
-
- [🎯 一、概要设计评审概述](#🎯 一、概要设计评审概述)
- [📦 二、概要设计评审的目的](#📦 二、概要设计评审的目的)
- [🌐 三、概要设计评审的内容](#🌐 三、概要设计评审的内容)
- [📊 四、概要设计评审的方法](#📊 四、概要设计评审的方法)
- [📋 五、概要设计评审的流程](#📋 五、概要设计评审的流程)
- [💡 六、概要设计评审的检查清单](#💡 六、概要设计评审的检查清单)
- [📝 七、概要设计评审的注意事项](#📝 七、概要设计评审的注意事项)
- [📊 八、概要设计评审实例](#📊 八、概要设计评审实例)
- [📝 总结](#📝 总结)

⚖️ 概要设计阶段的评审:确保设计质量的关键活动
概要设计评审是软件质量保证的重要活动,它通过对概要设计文档的正式审查,发现设计中的缺陷和问题,确保设计质量,为后续的详细设计和编码实现奠定基础。本文将详细介绍概要设计评审的目的、内容、方法和实施要点。

🎯 一、概要设计评审概述
(一)概要设计评审的定义
概要设计评审是对概要设计文档进行正式审查的过程,目的是发现设计中的缺陷,确保设计质量。
评审概念:
#mermaid-svg-RYCeabdVCiPxITJ4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-RYCeabdVCiPxITJ4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-RYCeabdVCiPxITJ4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-RYCeabdVCiPxITJ4 .error-icon{fill:#552222;}#mermaid-svg-RYCeabdVCiPxITJ4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-RYCeabdVCiPxITJ4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-RYCeabdVCiPxITJ4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-RYCeabdVCiPxITJ4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-RYCeabdVCiPxITJ4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-RYCeabdVCiPxITJ4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-RYCeabdVCiPxITJ4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-RYCeabdVCiPxITJ4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-RYCeabdVCiPxITJ4 .marker.cross{stroke:#333333;}#mermaid-svg-RYCeabdVCiPxITJ4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-RYCeabdVCiPxITJ4 p{margin:0;}#mermaid-svg-RYCeabdVCiPxITJ4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-RYCeabdVCiPxITJ4 .cluster-label text{fill:#333;}#mermaid-svg-RYCeabdVCiPxITJ4 .cluster-label span{color:#333;}#mermaid-svg-RYCeabdVCiPxITJ4 .cluster-label span p{background-color:transparent;}#mermaid-svg-RYCeabdVCiPxITJ4 .label text,#mermaid-svg-RYCeabdVCiPxITJ4 span{fill:#333;color:#333;}#mermaid-svg-RYCeabdVCiPxITJ4 .node rect,#mermaid-svg-RYCeabdVCiPxITJ4 .node circle,#mermaid-svg-RYCeabdVCiPxITJ4 .node ellipse,#mermaid-svg-RYCeabdVCiPxITJ4 .node polygon,#mermaid-svg-RYCeabdVCiPxITJ4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-RYCeabdVCiPxITJ4 .rough-node .label text,#mermaid-svg-RYCeabdVCiPxITJ4 .node .label text,#mermaid-svg-RYCeabdVCiPxITJ4 .image-shape .label,#mermaid-svg-RYCeabdVCiPxITJ4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-RYCeabdVCiPxITJ4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-RYCeabdVCiPxITJ4 .rough-node .label,#mermaid-svg-RYCeabdVCiPxITJ4 .node .label,#mermaid-svg-RYCeabdVCiPxITJ4 .image-shape .label,#mermaid-svg-RYCeabdVCiPxITJ4 .icon-shape .label{text-align:center;}#mermaid-svg-RYCeabdVCiPxITJ4 .node.clickable{cursor:pointer;}#mermaid-svg-RYCeabdVCiPxITJ4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-RYCeabdVCiPxITJ4 .arrowheadPath{fill:#333333;}#mermaid-svg-RYCeabdVCiPxITJ4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-RYCeabdVCiPxITJ4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-RYCeabdVCiPxITJ4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-RYCeabdVCiPxITJ4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-RYCeabdVCiPxITJ4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-RYCeabdVCiPxITJ4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-RYCeabdVCiPxITJ4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-RYCeabdVCiPxITJ4 .cluster text{fill:#333;}#mermaid-svg-RYCeabdVCiPxITJ4 .cluster span{color:#333;}#mermaid-svg-RYCeabdVCiPxITJ4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-RYCeabdVCiPxITJ4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-RYCeabdVCiPxITJ4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-RYCeabdVCiPxITJ4 .icon-shape,#mermaid-svg-RYCeabdVCiPxITJ4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-RYCeabdVCiPxITJ4 .icon-shape p,#mermaid-svg-RYCeabdVCiPxITJ4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-RYCeabdVCiPxITJ4 .icon-shape .label rect,#mermaid-svg-RYCeabdVCiPxITJ4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-RYCeabdVCiPxITJ4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-RYCeabdVCiPxITJ4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-RYCeabdVCiPxITJ4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 概要设计评审
评审对象
评审目的
评审方法
评审结果
概要设计文档
设计模型
发现缺陷
确保质量
达成共识
正式评审
技术评审
通过
修改后通过
不通过
(二)概要设计评审的意义
评审意义:
| 意义 | 说明 |
|---|---|
| 早期发现缺陷 | 在早期阶段发现问题,降低修复成本 |
| 确保质量 | 保证设计的质量和完整性 |
| 达成共识 | 促进各方对设计的理解一致 |
| 降低风险 | 减少后期返工和项目风险 |
| 知识共享 | 促进团队成员间的知识交流 |
| 提高信心 | 增强项目相关方的信心 |
(三)概要设计评审的特点
评审特点:
| 特点 | 说明 |
|---|---|
| 正式性 | 有规范的流程和标准 |
| 系统性 | 系统化的检查方法 |
| 协作性 | 多方参与协作 |
| 迭代性 | 可能需要多次评审 |
| 追溯性 | 问题可以追溯 |
📦 二、概要设计评审的目的
(一)评审目的
评审目的:
#mermaid-svg-VtcuK8tdfd08LilA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-VtcuK8tdfd08LilA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-VtcuK8tdfd08LilA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-VtcuK8tdfd08LilA .error-icon{fill:#552222;}#mermaid-svg-VtcuK8tdfd08LilA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-VtcuK8tdfd08LilA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-VtcuK8tdfd08LilA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-VtcuK8tdfd08LilA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-VtcuK8tdfd08LilA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-VtcuK8tdfd08LilA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-VtcuK8tdfd08LilA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-VtcuK8tdfd08LilA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-VtcuK8tdfd08LilA .marker.cross{stroke:#333333;}#mermaid-svg-VtcuK8tdfd08LilA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-VtcuK8tdfd08LilA p{margin:0;}#mermaid-svg-VtcuK8tdfd08LilA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-VtcuK8tdfd08LilA .cluster-label text{fill:#333;}#mermaid-svg-VtcuK8tdfd08LilA .cluster-label span{color:#333;}#mermaid-svg-VtcuK8tdfd08LilA .cluster-label span p{background-color:transparent;}#mermaid-svg-VtcuK8tdfd08LilA .label text,#mermaid-svg-VtcuK8tdfd08LilA span{fill:#333;color:#333;}#mermaid-svg-VtcuK8tdfd08LilA .node rect,#mermaid-svg-VtcuK8tdfd08LilA .node circle,#mermaid-svg-VtcuK8tdfd08LilA .node ellipse,#mermaid-svg-VtcuK8tdfd08LilA .node polygon,#mermaid-svg-VtcuK8tdfd08LilA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-VtcuK8tdfd08LilA .rough-node .label text,#mermaid-svg-VtcuK8tdfd08LilA .node .label text,#mermaid-svg-VtcuK8tdfd08LilA .image-shape .label,#mermaid-svg-VtcuK8tdfd08LilA .icon-shape .label{text-anchor:middle;}#mermaid-svg-VtcuK8tdfd08LilA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-VtcuK8tdfd08LilA .rough-node .label,#mermaid-svg-VtcuK8tdfd08LilA .node .label,#mermaid-svg-VtcuK8tdfd08LilA .image-shape .label,#mermaid-svg-VtcuK8tdfd08LilA .icon-shape .label{text-align:center;}#mermaid-svg-VtcuK8tdfd08LilA .node.clickable{cursor:pointer;}#mermaid-svg-VtcuK8tdfd08LilA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-VtcuK8tdfd08LilA .arrowheadPath{fill:#333333;}#mermaid-svg-VtcuK8tdfd08LilA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-VtcuK8tdfd08LilA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-VtcuK8tdfd08LilA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-VtcuK8tdfd08LilA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-VtcuK8tdfd08LilA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-VtcuK8tdfd08LilA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-VtcuK8tdfd08LilA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-VtcuK8tdfd08LilA .cluster text{fill:#333;}#mermaid-svg-VtcuK8tdfd08LilA .cluster span{color:#333;}#mermaid-svg-VtcuK8tdfd08LilA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-VtcuK8tdfd08LilA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-VtcuK8tdfd08LilA rect.text{fill:none;stroke-width:0;}#mermaid-svg-VtcuK8tdfd08LilA .icon-shape,#mermaid-svg-VtcuK8tdfd08LilA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-VtcuK8tdfd08LilA .icon-shape p,#mermaid-svg-VtcuK8tdfd08LilA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-VtcuK8tdfd08LilA .icon-shape .label rect,#mermaid-svg-VtcuK8tdfd08LilA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-VtcuK8tdfd08LilA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-VtcuK8tdfd08LilA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-VtcuK8tdfd08LilA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 评审目的
发现缺陷
确保质量
达成共识
降低风险
建立基线
发现设计错误
发现设计遗漏
保证设计正确
保证设计完整
统一设计理解
明确设计范围
减少返工
降低项目风险
建立设计基线
作为开发依据
(二)评审目标
评审目标:
| 目标 | 说明 | 衡量标准 |
|---|---|---|
| 发现缺陷 | 发现设计中的问题 | 缺陷发现率 |
| 确保质量 | 保证设计质量 | 质量特性满足度 |
| 达成共识 | 各方理解一致 | 共识达成度 |
| 建立基线 | 建立设计基线 | 基线建立 |
🌐 三、概要设计评审的内容
(一)评审内容
评审内容:
#mermaid-svg-ueqMMWCPfEGxhTc2{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ueqMMWCPfEGxhTc2 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ueqMMWCPfEGxhTc2 .error-icon{fill:#552222;}#mermaid-svg-ueqMMWCPfEGxhTc2 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ueqMMWCPfEGxhTc2 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ueqMMWCPfEGxhTc2 .marker.cross{stroke:#333333;}#mermaid-svg-ueqMMWCPfEGxhTc2 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ueqMMWCPfEGxhTc2 p{margin:0;}#mermaid-svg-ueqMMWCPfEGxhTc2 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ueqMMWCPfEGxhTc2 .cluster-label text{fill:#333;}#mermaid-svg-ueqMMWCPfEGxhTc2 .cluster-label span{color:#333;}#mermaid-svg-ueqMMWCPfEGxhTc2 .cluster-label span p{background-color:transparent;}#mermaid-svg-ueqMMWCPfEGxhTc2 .label text,#mermaid-svg-ueqMMWCPfEGxhTc2 span{fill:#333;color:#333;}#mermaid-svg-ueqMMWCPfEGxhTc2 .node rect,#mermaid-svg-ueqMMWCPfEGxhTc2 .node circle,#mermaid-svg-ueqMMWCPfEGxhTc2 .node ellipse,#mermaid-svg-ueqMMWCPfEGxhTc2 .node polygon,#mermaid-svg-ueqMMWCPfEGxhTc2 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ueqMMWCPfEGxhTc2 .rough-node .label text,#mermaid-svg-ueqMMWCPfEGxhTc2 .node .label text,#mermaid-svg-ueqMMWCPfEGxhTc2 .image-shape .label,#mermaid-svg-ueqMMWCPfEGxhTc2 .icon-shape .label{text-anchor:middle;}#mermaid-svg-ueqMMWCPfEGxhTc2 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ueqMMWCPfEGxhTc2 .rough-node .label,#mermaid-svg-ueqMMWCPfEGxhTc2 .node .label,#mermaid-svg-ueqMMWCPfEGxhTc2 .image-shape .label,#mermaid-svg-ueqMMWCPfEGxhTc2 .icon-shape .label{text-align:center;}#mermaid-svg-ueqMMWCPfEGxhTc2 .node.clickable{cursor:pointer;}#mermaid-svg-ueqMMWCPfEGxhTc2 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ueqMMWCPfEGxhTc2 .arrowheadPath{fill:#333333;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ueqMMWCPfEGxhTc2 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ueqMMWCPfEGxhTc2 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ueqMMWCPfEGxhTc2 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ueqMMWCPfEGxhTc2 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ueqMMWCPfEGxhTc2 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ueqMMWCPfEGxhTc2 .cluster text{fill:#333;}#mermaid-svg-ueqMMWCPfEGxhTc2 .cluster span{color:#333;}#mermaid-svg-ueqMMWCPfEGxhTc2 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ueqMMWCPfEGxhTc2 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ueqMMWCPfEGxhTc2 rect.text{fill:none;stroke-width:0;}#mermaid-svg-ueqMMWCPfEGxhTc2 .icon-shape,#mermaid-svg-ueqMMWCPfEGxhTc2 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ueqMMWCPfEGxhTc2 .icon-shape p,#mermaid-svg-ueqMMWCPfEGxhTc2 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ueqMMWCPfEGxhTc2 .icon-shape .label rect,#mermaid-svg-ueqMMWCPfEGxhTc2 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ueqMMWCPfEGxhTc2 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ueqMMWCPfEGxhTc2 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ueqMMWCPfEGxhTc2 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 评审内容
需求覆盖
架构合理性
模块独立性
接口清晰性
数据完整性
可行性
可维护性
覆盖所有需求
架构合理
模块独立
接口清晰
数据完整
技术可行
易于维护
(二)质量特性检查
质量特性检查:
| 质量特性 | 检查要点 | 问题示例 |
|---|---|---|
| 需求覆盖 | 设计是否覆盖所有需求 | 遗漏功能 |
| 架构合理性 | 架构是否合理 | 架构混乱 |
| 模块独立性 | 模块是否独立 | 耦合度高 |
| 接口清晰性 | 接口是否清晰 | 接口不明确 |
| 数据完整性 | 数据设计是否完整 | 数据遗漏 |
| 可行性 | 设计是否可行 | 技术不可行 |
| 可维护性 | 设计是否易于维护 | 难以维护 |
(三)详细检查内容
详细检查:
| 检查项 | 检查内容 | 检查方法 |
|---|---|---|
| 系统架构 | 架构是否合理 | 架构评审 |
| 模块划分 | 模块划分是否合理 | 模块评审 |
| 模块接口 | 接口是否清晰 | 接口评审 |
| 数据设计 | 数据设计是否完整 | 数据评审 |
| 运行设计 | 运行设计是否合理 | 运行评审 |
| 出错处理 | 出错处理是否完善 | 出错评审 |
📊 四、概要设计评审的方法
(一)评审方法
评审方法:
| 方法 | 说明 | 适用场景 |
|---|---|---|
| 正式评审 | 严格的评审流程 | 关键设计 |
| 技术评审 | 技术人员评审 | 技术设计 |
| 走查 | 逐步审查 | 日常检查 |
| 检视 | 结构化评审 | 重要文档 |
| 审查 | 正式审查会议 | 基线建立 |
(二)正式评审
正式评审流程:
#mermaid-svg-jTsYARMdZuOXEX0i{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-jTsYARMdZuOXEX0i .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-jTsYARMdZuOXEX0i .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-jTsYARMdZuOXEX0i .error-icon{fill:#552222;}#mermaid-svg-jTsYARMdZuOXEX0i .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jTsYARMdZuOXEX0i .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-jTsYARMdZuOXEX0i .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jTsYARMdZuOXEX0i .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jTsYARMdZuOXEX0i .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-jTsYARMdZuOXEX0i .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jTsYARMdZuOXEX0i .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jTsYARMdZuOXEX0i .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jTsYARMdZuOXEX0i .marker.cross{stroke:#333333;}#mermaid-svg-jTsYARMdZuOXEX0i svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jTsYARMdZuOXEX0i p{margin:0;}#mermaid-svg-jTsYARMdZuOXEX0i .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jTsYARMdZuOXEX0i .cluster-label text{fill:#333;}#mermaid-svg-jTsYARMdZuOXEX0i .cluster-label span{color:#333;}#mermaid-svg-jTsYARMdZuOXEX0i .cluster-label span p{background-color:transparent;}#mermaid-svg-jTsYARMdZuOXEX0i .label text,#mermaid-svg-jTsYARMdZuOXEX0i span{fill:#333;color:#333;}#mermaid-svg-jTsYARMdZuOXEX0i .node rect,#mermaid-svg-jTsYARMdZuOXEX0i .node circle,#mermaid-svg-jTsYARMdZuOXEX0i .node ellipse,#mermaid-svg-jTsYARMdZuOXEX0i .node polygon,#mermaid-svg-jTsYARMdZuOXEX0i .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jTsYARMdZuOXEX0i .rough-node .label text,#mermaid-svg-jTsYARMdZuOXEX0i .node .label text,#mermaid-svg-jTsYARMdZuOXEX0i .image-shape .label,#mermaid-svg-jTsYARMdZuOXEX0i .icon-shape .label{text-anchor:middle;}#mermaid-svg-jTsYARMdZuOXEX0i .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-jTsYARMdZuOXEX0i .rough-node .label,#mermaid-svg-jTsYARMdZuOXEX0i .node .label,#mermaid-svg-jTsYARMdZuOXEX0i .image-shape .label,#mermaid-svg-jTsYARMdZuOXEX0i .icon-shape .label{text-align:center;}#mermaid-svg-jTsYARMdZuOXEX0i .node.clickable{cursor:pointer;}#mermaid-svg-jTsYARMdZuOXEX0i .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-jTsYARMdZuOXEX0i .arrowheadPath{fill:#333333;}#mermaid-svg-jTsYARMdZuOXEX0i .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jTsYARMdZuOXEX0i .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jTsYARMdZuOXEX0i .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jTsYARMdZuOXEX0i .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-jTsYARMdZuOXEX0i .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jTsYARMdZuOXEX0i .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-jTsYARMdZuOXEX0i .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jTsYARMdZuOXEX0i .cluster text{fill:#333;}#mermaid-svg-jTsYARMdZuOXEX0i .cluster span{color:#333;}#mermaid-svg-jTsYARMdZuOXEX0i div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jTsYARMdZuOXEX0i .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-jTsYARMdZuOXEX0i rect.text{fill:none;stroke-width:0;}#mermaid-svg-jTsYARMdZuOXEX0i .icon-shape,#mermaid-svg-jTsYARMdZuOXEX0i .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-jTsYARMdZuOXEX0i .icon-shape p,#mermaid-svg-jTsYARMdZuOXEX0i .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-jTsYARMdZuOXEX0i .icon-shape .label rect,#mermaid-svg-jTsYARMdZuOXEX0i .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-jTsYARMdZuOXEX0i .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-jTsYARMdZuOXEX0i .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-jTsYARMdZuOXEX0i :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
评审准备
预审
评审会议
问题记录
修改
复审
通过?
批准
评审步骤:
| 步骤 | 任务 | 负责人 | 产出 |
|---|---|---|---|
| 准备 | 确定评审范围、组建评审组 | 评审组长 | 评审计划 |
| 分发 | 分发评审材料 | 评审组长 | 评审材料 |
| 预审 | 个人预审 | 评审成员 | 问题列表 |
| 会议 | 召开评审会议 | 评审组长 | 会议记录 |
| 修改 | 修改文档 | 文档作者 | 修改后文档 |
| 复审 | 复审修改结果 | 评审组长 | 评审结论 |
(三)评审技术
评审技术:
| 技术 | 说明 | 适用场景 |
|---|---|---|
| 检查表法 | 使用检查清单 | 标准化检查 |
| 追踪法 | 需求追踪 | 完整性检查 |
| 接口分析 | 分析接口 | 接口评审 |
| 原型法 | 使用原型 | 界面评审 |
| 场景法 | 使用使用场景 | 设计评审 |
📋 五、概要设计评审的流程
(一)评审流程
评审流程:
#mermaid-svg-5PpUIMRHGlpCgU4P{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5PpUIMRHGlpCgU4P .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5PpUIMRHGlpCgU4P .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5PpUIMRHGlpCgU4P .error-icon{fill:#552222;}#mermaid-svg-5PpUIMRHGlpCgU4P .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5PpUIMRHGlpCgU4P .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5PpUIMRHGlpCgU4P .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5PpUIMRHGlpCgU4P .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5PpUIMRHGlpCgU4P .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5PpUIMRHGlpCgU4P .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5PpUIMRHGlpCgU4P .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5PpUIMRHGlpCgU4P .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5PpUIMRHGlpCgU4P .marker.cross{stroke:#333333;}#mermaid-svg-5PpUIMRHGlpCgU4P svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5PpUIMRHGlpCgU4P p{margin:0;}#mermaid-svg-5PpUIMRHGlpCgU4P .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5PpUIMRHGlpCgU4P .cluster-label text{fill:#333;}#mermaid-svg-5PpUIMRHGlpCgU4P .cluster-label span{color:#333;}#mermaid-svg-5PpUIMRHGlpCgU4P .cluster-label span p{background-color:transparent;}#mermaid-svg-5PpUIMRHGlpCgU4P .label text,#mermaid-svg-5PpUIMRHGlpCgU4P span{fill:#333;color:#333;}#mermaid-svg-5PpUIMRHGlpCgU4P .node rect,#mermaid-svg-5PpUIMRHGlpCgU4P .node circle,#mermaid-svg-5PpUIMRHGlpCgU4P .node ellipse,#mermaid-svg-5PpUIMRHGlpCgU4P .node polygon,#mermaid-svg-5PpUIMRHGlpCgU4P .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5PpUIMRHGlpCgU4P .rough-node .label text,#mermaid-svg-5PpUIMRHGlpCgU4P .node .label text,#mermaid-svg-5PpUIMRHGlpCgU4P .image-shape .label,#mermaid-svg-5PpUIMRHGlpCgU4P .icon-shape .label{text-anchor:middle;}#mermaid-svg-5PpUIMRHGlpCgU4P .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5PpUIMRHGlpCgU4P .rough-node .label,#mermaid-svg-5PpUIMRHGlpCgU4P .node .label,#mermaid-svg-5PpUIMRHGlpCgU4P .image-shape .label,#mermaid-svg-5PpUIMRHGlpCgU4P .icon-shape .label{text-align:center;}#mermaid-svg-5PpUIMRHGlpCgU4P .node.clickable{cursor:pointer;}#mermaid-svg-5PpUIMRHGlpCgU4P .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5PpUIMRHGlpCgU4P .arrowheadPath{fill:#333333;}#mermaid-svg-5PpUIMRHGlpCgU4P .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5PpUIMRHGlpCgU4P .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5PpUIMRHGlpCgU4P .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5PpUIMRHGlpCgU4P .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5PpUIMRHGlpCgU4P .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5PpUIMRHGlpCgU4P .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5PpUIMRHGlpCgU4P .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5PpUIMRHGlpCgU4P .cluster text{fill:#333;}#mermaid-svg-5PpUIMRHGlpCgU4P .cluster span{color:#333;}#mermaid-svg-5PpUIMRHGlpCgU4P div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5PpUIMRHGlpCgU4P .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5PpUIMRHGlpCgU4P rect.text{fill:none;stroke-width:0;}#mermaid-svg-5PpUIMRHGlpCgU4P .icon-shape,#mermaid-svg-5PpUIMRHGlpCgU4P .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5PpUIMRHGlpCgU4P .icon-shape p,#mermaid-svg-5PpUIMRHGlpCgU4P .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5PpUIMRHGlpCgU4P .icon-shape .label rect,#mermaid-svg-5PpUIMRHGlpCgU4P .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5PpUIMRHGlpCgU4P .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5PpUIMRHGlpCgU4P .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5PpUIMRHGlpCgU4P :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 评审计划
评审准备
评审执行
问题处理
评审结论
基线建立
流程详解:
| 阶段 | 任务 | 产出 |
|---|---|---|
| 评审计划 | 制定评审计划 | 评审计划 |
| 评审准备 | 准备评审材料 | 评审材料 |
| 评审执行 | 执行评审活动 | 问题列表 |
| 问题处理 | 处理评审问题 | 修改后文档 |
| 评审结论 | 得出评审结论 | 评审报告 |
| 基线建立 | 建立设计基线 | 设计基线 |
(二)评审组织
评审组织:
#mermaid-svg-GslIVTBFJKEWnceA{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-GslIVTBFJKEWnceA .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-GslIVTBFJKEWnceA .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-GslIVTBFJKEWnceA .error-icon{fill:#552222;}#mermaid-svg-GslIVTBFJKEWnceA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-GslIVTBFJKEWnceA .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-GslIVTBFJKEWnceA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-GslIVTBFJKEWnceA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-GslIVTBFJKEWnceA .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-GslIVTBFJKEWnceA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-GslIVTBFJKEWnceA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-GslIVTBFJKEWnceA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-GslIVTBFJKEWnceA .marker.cross{stroke:#333333;}#mermaid-svg-GslIVTBFJKEWnceA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-GslIVTBFJKEWnceA p{margin:0;}#mermaid-svg-GslIVTBFJKEWnceA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-GslIVTBFJKEWnceA .cluster-label text{fill:#333;}#mermaid-svg-GslIVTBFJKEWnceA .cluster-label span{color:#333;}#mermaid-svg-GslIVTBFJKEWnceA .cluster-label span p{background-color:transparent;}#mermaid-svg-GslIVTBFJKEWnceA .label text,#mermaid-svg-GslIVTBFJKEWnceA span{fill:#333;color:#333;}#mermaid-svg-GslIVTBFJKEWnceA .node rect,#mermaid-svg-GslIVTBFJKEWnceA .node circle,#mermaid-svg-GslIVTBFJKEWnceA .node ellipse,#mermaid-svg-GslIVTBFJKEWnceA .node polygon,#mermaid-svg-GslIVTBFJKEWnceA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-GslIVTBFJKEWnceA .rough-node .label text,#mermaid-svg-GslIVTBFJKEWnceA .node .label text,#mermaid-svg-GslIVTBFJKEWnceA .image-shape .label,#mermaid-svg-GslIVTBFJKEWnceA .icon-shape .label{text-anchor:middle;}#mermaid-svg-GslIVTBFJKEWnceA .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-GslIVTBFJKEWnceA .rough-node .label,#mermaid-svg-GslIVTBFJKEWnceA .node .label,#mermaid-svg-GslIVTBFJKEWnceA .image-shape .label,#mermaid-svg-GslIVTBFJKEWnceA .icon-shape .label{text-align:center;}#mermaid-svg-GslIVTBFJKEWnceA .node.clickable{cursor:pointer;}#mermaid-svg-GslIVTBFJKEWnceA .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-GslIVTBFJKEWnceA .arrowheadPath{fill:#333333;}#mermaid-svg-GslIVTBFJKEWnceA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-GslIVTBFJKEWnceA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-GslIVTBFJKEWnceA .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-GslIVTBFJKEWnceA .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-GslIVTBFJKEWnceA .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-GslIVTBFJKEWnceA .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-GslIVTBFJKEWnceA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-GslIVTBFJKEWnceA .cluster text{fill:#333;}#mermaid-svg-GslIVTBFJKEWnceA .cluster span{color:#333;}#mermaid-svg-GslIVTBFJKEWnceA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-GslIVTBFJKEWnceA .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-GslIVTBFJKEWnceA rect.text{fill:none;stroke-width:0;}#mermaid-svg-GslIVTBFJKEWnceA .icon-shape,#mermaid-svg-GslIVTBFJKEWnceA .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-GslIVTBFJKEWnceA .icon-shape p,#mermaid-svg-GslIVTBFJKEWnceA .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-GslIVTBFJKEWnceA .icon-shape .label rect,#mermaid-svg-GslIVTBFJKEWnceA .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-GslIVTBFJKEWnceA .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-GslIVTBFJKEWnceA .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-GslIVTBFJKEWnceA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 评审组织
评审组长
评审成员
记录人员
文档作者
主持评审
做出结论
参与评审
提出问题
记录问题
整理纪要
解释文档
修改文档
评审人员:
| 角色 | 人员 | 职责 |
|---|---|---|
| 评审组长 | 资深专家 | 主持评审、做出结论 |
| 技术专家 | 相关领域专家 | 技术审查 |
| 用户代表 | 最终用户 | 需求确认 |
| 开发人员 | 开发团队成员 | 技术可行性 |
| 测试人员 | 测试团队成员 | 可测试性 |
| 质量保证 | QA人员 | 过程合规性 |
(三)评审会议
会议议程:
| 时间 | 内容 | 负责人 |
|---|---|---|
| 5分钟 | 开场介绍 | 评审组长 |
| 10分钟 | 文档概述 | 文档作者 |
| 60分钟 | 逐段评审 | 全体 |
| 15分钟 | 问题汇总 | 记录人 |
| 10分钟 | 结论讨论 | 评审组长 |
会议规则:
| 规则 | 说明 |
|---|---|
| 对事不对人 | 针对文档,不针对个人 |
| 聚焦问题 | 聚焦发现的问题 |
| 记录问题 | 详细记录所有问题 |
| 不做决策 | 评审会不做修改决策 |
💡 六、概要设计评审的检查清单
(一)系统架构检查清单
系统架构检查:
| 序号 | 检查项 | 检查内容 | 结果 |
|---|---|---|---|
| 1 | 架构合理 | 架构是否合理 | □是 □否 |
| 2 | 技术可行 | 技术是否可行 | □是 □否 |
| 3 | 性能满足 | 性能是否满足 | □是 □否 |
| 4 | 可扩展性 | 是否易于扩展 | □是 □否 |
| 5 | 安全性 | 安全是否保障 | □是 □否 |
(二)模块设计检查清单
模块设计检查:
| 序号 | 检查项 | 检查内容 | 结果 |
|---|---|---|---|
| 1 | 模块完整 | 模块是否完整 | □是 □否 |
| 2 | 功能明确 | 功能是否明确 | □是 □否 |
| 3 | 内聚性高 | 内聚性是否高 | □是 □否 |
| 4 | 耦合性低 | 耦合性是否低 | □是 □否 |
| 5 | 模块独立 | 模块是否独立 | □是 □否 |
(三)接口设计检查清单
接口设计检查:
| 序号 | 检查项 | 检查内容 | 结果 |
|---|---|---|---|
| 1 | 接口完整 | 接口是否完整 | □是 □否 |
| 2 | 接口清晰 | 接口是否清晰 | □是 □否 |
| 3 | 参数明确 | 参数是否明确 | □是 □否 |
| 4 | 异常处理 | 异常是否处理 | □是 □否 |
| 5 | 协议明确 | 协议是否明确 | □是 □否 |
(四)数据设计检查清单
数据设计检查:
| 序号 | 检查项 | 检查内容 | 结果 |
|---|---|---|---|
| 1 | 数据完整 | 数据是否完整 | □是 □否 |
| 2 | 结构合理 | 结构是否合理 | □是 □否 |
| 3 | 命名规范 | 命名是否规范 | □是 □否 |
| 4 | 约束明确 | 约束是否明确 | □是 □否 |
| 5 | 关系清晰 | 关系是否清晰 | □是 □否 |
(五)总体检查清单
总体检查:
| 序号 | 检查项 | 检查内容 | 结果 |
|---|---|---|---|
| 1 | 需求覆盖 | 设计是否覆盖所有需求 | □是 □否 |
| 2 | 设计正确 | 设计是否正确 | □是 □否 |
| 3 | 设计完整 | 设计是否完整 | □是 □否 |
| 4 | 设计一致 | 设计是否一致 | □是 □否 |
| 5 | 设计可行 | 设计是否可行 | □是 □否 |
| 6 | 可维护性 | 设计是否易于维护 | □是 □否 |
| 7 | 可测试性 | 设计是否易于测试 | □是 □否 |
| 8 | 文档规范 | 文档是否规范 | □是 □否 |
📝 七、概要设计评审的注意事项
(一)常见问题
常见问题:
| 问题 | 表现 | 解决方法 |
|---|---|---|
| 评审流于形式 | 走过场,不深入 | 严格评审流程 |
| 问题记录不全 | 遗漏重要问题 | 使用检查清单 |
| 修改不彻底 | 修改不到位 | 复审验证 |
| 评审效率低 | 会议时间长 | 充分预审 |
| 参与不充分 | 人员缺席 | 强调重要性 |
| 范围蔓延 | 评审范围扩大 | 控制评审范围 |
(二)注意事项
注意事项:
#mermaid-svg-rgCKrFcESb0J2qPp{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-rgCKrFcESb0J2qPp .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-rgCKrFcESb0J2qPp .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-rgCKrFcESb0J2qPp .error-icon{fill:#552222;}#mermaid-svg-rgCKrFcESb0J2qPp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rgCKrFcESb0J2qPp .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-rgCKrFcESb0J2qPp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rgCKrFcESb0J2qPp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rgCKrFcESb0J2qPp .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-rgCKrFcESb0J2qPp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rgCKrFcESb0J2qPp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rgCKrFcESb0J2qPp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rgCKrFcESb0J2qPp .marker.cross{stroke:#333333;}#mermaid-svg-rgCKrFcESb0J2qPp svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rgCKrFcESb0J2qPp p{margin:0;}#mermaid-svg-rgCKrFcESb0J2qPp .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-rgCKrFcESb0J2qPp .cluster-label text{fill:#333;}#mermaid-svg-rgCKrFcESb0J2qPp .cluster-label span{color:#333;}#mermaid-svg-rgCKrFcESb0J2qPp .cluster-label span p{background-color:transparent;}#mermaid-svg-rgCKrFcESb0J2qPp .label text,#mermaid-svg-rgCKrFcESb0J2qPp span{fill:#333;color:#333;}#mermaid-svg-rgCKrFcESb0J2qPp .node rect,#mermaid-svg-rgCKrFcESb0J2qPp .node circle,#mermaid-svg-rgCKrFcESb0J2qPp .node ellipse,#mermaid-svg-rgCKrFcESb0J2qPp .node polygon,#mermaid-svg-rgCKrFcESb0J2qPp .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rgCKrFcESb0J2qPp .rough-node .label text,#mermaid-svg-rgCKrFcESb0J2qPp .node .label text,#mermaid-svg-rgCKrFcESb0J2qPp .image-shape .label,#mermaid-svg-rgCKrFcESb0J2qPp .icon-shape .label{text-anchor:middle;}#mermaid-svg-rgCKrFcESb0J2qPp .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-rgCKrFcESb0J2qPp .rough-node .label,#mermaid-svg-rgCKrFcESb0J2qPp .node .label,#mermaid-svg-rgCKrFcESb0J2qPp .image-shape .label,#mermaid-svg-rgCKrFcESb0J2qPp .icon-shape .label{text-align:center;}#mermaid-svg-rgCKrFcESb0J2qPp .node.clickable{cursor:pointer;}#mermaid-svg-rgCKrFcESb0J2qPp .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-rgCKrFcESb0J2qPp .arrowheadPath{fill:#333333;}#mermaid-svg-rgCKrFcESb0J2qPp .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rgCKrFcESb0J2qPp .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rgCKrFcESb0J2qPp .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rgCKrFcESb0J2qPp .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-rgCKrFcESb0J2qPp .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rgCKrFcESb0J2qPp .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-rgCKrFcESb0J2qPp .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rgCKrFcESb0J2qPp .cluster text{fill:#333;}#mermaid-svg-rgCKrFcESb0J2qPp .cluster span{color:#333;}#mermaid-svg-rgCKrFcESb0J2qPp div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rgCKrFcESb0J2qPp .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-rgCKrFcESb0J2qPp rect.text{fill:none;stroke-width:0;}#mermaid-svg-rgCKrFcESb0J2qPp .icon-shape,#mermaid-svg-rgCKrFcESb0J2qPp .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-rgCKrFcESb0J2qPp .icon-shape p,#mermaid-svg-rgCKrFcESb0J2qPp .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-rgCKrFcESb0J2qPp .icon-shape .label rect,#mermaid-svg-rgCKrFcESb0J2qPp .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-rgCKrFcESb0J2qPp .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-rgCKrFcESb0J2qPp .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-rgCKrFcESb0J2qPp :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 注意事项
充分准备
聚焦问题
记录完整
跟踪闭环
持续改进
提前分发材料
对事不对人
详细记录
跟踪修改
总结经验
注意事项详解:
| 注意事项 | 说明 |
|---|---|
| 充分准备 | 提前分发材料,预留预审时间 |
| 聚焦问题 | 针对文档内容,不针对个人 |
| 记录完整 | 详细记录所有发现的问题 |
| 跟踪闭环 | 跟踪问题修改,确保闭环 |
| 持续改进 | 总结经验,持续改进评审过程 |
| 控制范围 | 控制评审范围,避免范围蔓延 |
| 时间控制 | 控制会议时间,提高效率 |
(三)评审度量
度量指标:
| 指标 | 说明 | 计算方式 |
|---|---|---|
| 评审效率 | 单位时间发现的问题数 | 问题数/评审时间 |
| 缺陷密度 | 每页/每功能点的问题数 | 问题数/规模 |
| 评审准备率 | 预审参与率 | 参与人数/应参与人数 |
| 问题关闭率 | 问题解决比例 | 已解决/总问题 |
| 返工率 | 需要复审的比例 | 复审次数/评审次数 |
📊 八、概要设计评审实例
(一)评审背景
项目:电商系统概要设计评审
评审对象:概要设计说明书V1.0
(二)评审准备
评审计划:
| 项目 | 内容 |
|---|---|
| 评审时间 | 2024-04-01 |
| 评审地点 | 会议室A |
| 评审组长 | 张三(资深架构师) |
| 评审成员 | 李四、王五、赵六、钱七 |
| 评审范围 | 系统架构、模块设计、接口设计、数据设计 |
(三)评审执行
评审过程:
#mermaid-svg-lMwSNJGZ33WlVgNX{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-lMwSNJGZ33WlVgNX .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-lMwSNJGZ33WlVgNX .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-lMwSNJGZ33WlVgNX .error-icon{fill:#552222;}#mermaid-svg-lMwSNJGZ33WlVgNX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-lMwSNJGZ33WlVgNX .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-lMwSNJGZ33WlVgNX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-lMwSNJGZ33WlVgNX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-lMwSNJGZ33WlVgNX .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-lMwSNJGZ33WlVgNX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-lMwSNJGZ33WlVgNX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-lMwSNJGZ33WlVgNX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-lMwSNJGZ33WlVgNX .marker.cross{stroke:#333333;}#mermaid-svg-lMwSNJGZ33WlVgNX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-lMwSNJGZ33WlVgNX p{margin:0;}#mermaid-svg-lMwSNJGZ33WlVgNX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-lMwSNJGZ33WlVgNX .cluster-label text{fill:#333;}#mermaid-svg-lMwSNJGZ33WlVgNX .cluster-label span{color:#333;}#mermaid-svg-lMwSNJGZ33WlVgNX .cluster-label span p{background-color:transparent;}#mermaid-svg-lMwSNJGZ33WlVgNX .label text,#mermaid-svg-lMwSNJGZ33WlVgNX span{fill:#333;color:#333;}#mermaid-svg-lMwSNJGZ33WlVgNX .node rect,#mermaid-svg-lMwSNJGZ33WlVgNX .node circle,#mermaid-svg-lMwSNJGZ33WlVgNX .node ellipse,#mermaid-svg-lMwSNJGZ33WlVgNX .node polygon,#mermaid-svg-lMwSNJGZ33WlVgNX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-lMwSNJGZ33WlVgNX .rough-node .label text,#mermaid-svg-lMwSNJGZ33WlVgNX .node .label text,#mermaid-svg-lMwSNJGZ33WlVgNX .image-shape .label,#mermaid-svg-lMwSNJGZ33WlVgNX .icon-shape .label{text-anchor:middle;}#mermaid-svg-lMwSNJGZ33WlVgNX .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-lMwSNJGZ33WlVgNX .rough-node .label,#mermaid-svg-lMwSNJGZ33WlVgNX .node .label,#mermaid-svg-lMwSNJGZ33WlVgNX .image-shape .label,#mermaid-svg-lMwSNJGZ33WlVgNX .icon-shape .label{text-align:center;}#mermaid-svg-lMwSNJGZ33WlVgNX .node.clickable{cursor:pointer;}#mermaid-svg-lMwSNJGZ33WlVgNX .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-lMwSNJGZ33WlVgNX .arrowheadPath{fill:#333333;}#mermaid-svg-lMwSNJGZ33WlVgNX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-lMwSNJGZ33WlVgNX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-lMwSNJGZ33WlVgNX .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lMwSNJGZ33WlVgNX .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-lMwSNJGZ33WlVgNX .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lMwSNJGZ33WlVgNX .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-lMwSNJGZ33WlVgNX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-lMwSNJGZ33WlVgNX .cluster text{fill:#333;}#mermaid-svg-lMwSNJGZ33WlVgNX .cluster span{color:#333;}#mermaid-svg-lMwSNJGZ33WlVgNX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-lMwSNJGZ33WlVgNX .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-lMwSNJGZ33WlVgNX rect.text{fill:none;stroke-width:0;}#mermaid-svg-lMwSNJGZ33WlVgNX .icon-shape,#mermaid-svg-lMwSNJGZ33WlVgNX .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lMwSNJGZ33WlVgNX .icon-shape p,#mermaid-svg-lMwSNJGZ33WlVgNX .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-lMwSNJGZ33WlVgNX .icon-shape .label rect,#mermaid-svg-lMwSNJGZ33WlVgNX .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lMwSNJGZ33WlVgNX .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-lMwSNJGZ33WlVgNX .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-lMwSNJGZ33WlVgNX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 开场介绍
文档概述
逐段评审
问题汇总
结论讨论
发现的问题:
| 序号 | 问题描述 | 严重程度 | 位置 |
|---|---|---|---|
| 1 | 缺少缓存设计 | 高 | 系统架构 |
| 2 | 模块耦合度高 | 中 | 模块设计 |
| 3 | 接口参数不明确 | 中 | 接口设计 |
| 4 | 数据库索引缺失 | 高 | 数据设计 |
| 5 | 缺少日志设计 | 中 | 运行设计 |
(四)问题处理
问题处理:
| 序号 | 问题 | 处理措施 | 责任人 | 完成时间 |
|---|---|---|---|---|
| 1 | 缺少缓存设计 | 增加Redis缓存设计 | 架构师 | 2024-04-05 |
| 2 | 模块耦合度高 | 重构模块,降低耦合 | 设计师 | 2024-04-05 |
| 3 | 接口参数不明确 | 明确接口参数定义 | 设计师 | 2024-04-05 |
| 4 | 数据库索引缺失 | 添加必要索引 | DBA | 2024-04-05 |
| 5 | 缺少日志设计 | 增加日志设计 | 架构师 | 2024-04-05 |
(五)评审结论
评审结论:
| 结论 | 说明 |
|---|---|
| 评审结果 | 修改后通过 |
| 修改要求 | 修改5个问题 |
| 复审时间 | 2024-04-08 |
| 基线建立 | 复审通过后建立 |
📝 总结
概要设计评审是确保设计质量的关键活动。
🎯 评审意义:早期发现缺陷,降低修复成本;确保设计质量;促进各方达成共识;降低项目风险。
📦 评审内容:检查需求覆盖、架构合理性、模块独立性、接口清晰性、数据完整性、可行性、可维护性;检查系统架构、模块设计、接口设计、数据设计、运行设计等。
🌐 评审方法:采用正式评审、技术评审、走查、检视等方法;使用检查表法、追踪法、接口分析等评审技术。
📋 评审流程:评审计划→评审准备→评审执行→问题处理→评审结论→基线建立。
💡 关键要点:充分准备,提高评审效率;聚焦问题,对事不对人;使用检查清单,确保全面性;跟踪闭环,确保问题解决;持续改进,不断提高评审质量。
核心启示:概要设计评审是软件质量保证的重要手段,"预防胜于治疗"。通过评审发现的设计问题,修复成本远低于后期发现。据统计,在设计阶段发现并修复一个错误的成本,可能只有在测试阶段修复成本的1/50。因此,必须重视概要设计评审工作:第一,建立规范的评审流程,不要流于形式;第二,充分准备,预留预审时间;第三,使用检查清单,确保评审全面性;第四,跟踪闭环,确保问题得到解决;第五,持续改进,不断提高评审质量。概要设计评审不是找茬,而是帮助团队发现问题、改进质量。良好的评审文化是项目成功的重要保障。通过系统化的概要设计评审,我们可以确保设计的质量,为后续的详细设计和编码实现奠定坚实的基础。