8.6.1 软件任务书评审检查要素
软件任务书评审检查要素如表8-14所示。
表8-14 软件任务书评审检查要素
序号 |
章节 |
内容 |
1 |
资源和进度 |
软件项目组关键人员参加吗?开发进度要求可行吗 |
2 |
技术内容 |
² 软件任务书文档内容是否完整和正确?编制符合要求吗? ² 软件项目的功能描述正确吗? ² 软件项目的功能分配、设计约束、可靠性、安全性、可维护性、质量保证要求合理吗? ² 开发环境要求合理吗 |
3 |
项目费用 |
开发经费的初步计划适当吗 |
8.6.2 软件需求分析评审检查要素
软件需求分析评审检查要素如表8-15所示。
表8-15 软件需求分析评审检查要素
序号 |
章节 |
内容 |
1 |
资源和进度 |
² 项目组主要成员是否参加产品需求评审,确保与需求提供者达成共识? ² 承担需求分析的人员安排合理吗? ² 软件需求分析按进度完成了吗? ² 配置管理得到了适当地实施吗 |
2 |
需求内容 |
² 软件需求规格说明书文档内容是否完整和正确?编制符合要求吗? ² 软件需求说明书、跟踪矩阵是否经过评审? ² 产品需求到软件需求的跟踪关系是否正确和完整? ² 需求规格说明与系统要求一致吗?需求规格说明描述清楚且无二义吗? ² 软件的功能描述完整且正确吗?性能指标定得合理吗?接口描述、数据描述、开发环境、运行环境、可靠性指标符合要求吗? ² 尽可能地列出了所有的不期望事件及其响应吗? ² 是否存在计划等其他工作产品与需求变更不一致的情况?如果存在,项目经理是否在周报中对此不一致进行分析,并制定纠正预防措施 |
3 |
需求变更 |
² 需求变更是否获得合法批准(影响分析、CCB决策)? ² 需求变更时,项目组关键人员是否对变更的影响进行评估? ² 当需求变更发生时,是否对受影响的配置项(项目计划、需求文档、项目计划等)做出必要的修订? ² 当需求变更发生时,受变更影响的文档是否重新基线 |
8.6.3 软件概要设计评审要素
软件概要设计评审要素如表8-16所示。
表8-16 软件概要设计评审要素
序号 |
章节 |
内容 |
1 |
资源和进度 |
² 承担概要设计的人员安排合理吗? ² 概要设计按进度完成了吗? ² 配置管理得到了适当地实施了吗 |
2 |
依从性 |
² 概要设计说明书文档内容是否完整和正确?编制符合要求吗? ² 该文档是否遵循了该项目已文档化的标准? ² 是否采用了所要求的方法和工具来进行设计 |
3 |
功能性 |
² 概要设计是否覆盖需求,与需求规格说明相一致吗?是否各部分的设计都能追溯到需求说明书的需求? ² 是否明确设计任务及约束因素?所划分的软件层次结构合适吗?在软件的各层次中,各模块独立吗?数据流的描述正确且完整吗? ² 业务场景是否充分?模块分解、模块划分是否合理?功能处理是否合理?集成顺序是否合理? ² 如果项目中使用独立的可重用模块或者开发框架,需要描述在项目中使用它们中的哪部分功能,并且说明为何采用?是否对系统所需的关键技术做了说明?是否进行了设计?是否对系统的开发运行环境进行了说明?是否所有的设计决策都能追溯到原来确定的权衡因素?所继承设计的已知风险是否已确定和分析?是否对数据格式兼容性进行分析?考虑到以后新增较小需求的可能性,要考虑保留一定的扩展余地。业务流程在对用户数据进行操作时,是否考虑业务数据的唯一性、安全性、数据操作的合理性?是否所有的假设、约束、策略和依赖都被记录在文档了?是否对软件概要设计进行了同行评审 |
4 |
完整性 |
² 是否以前的TBD(待确定条目)都已经解决? ² 是否设计已可支持本文档中遗留的TBD有可能带来的变更? ² 是否所有的TBD的影响都已经被评估? ² 可能不可行的设计部分已不存在 |
5 |
一致性 |
² 数据元素、流程和对象的命名和使用在整套系统和外部接口之间的是否一致? ² 设计是否反映了实际的操作环境(硬件、软件、支持软件)? ² 是否存在与需求矛盾的现象 |
6 |
可行性 |
² 从进度、预算和技术角度上看该方案是否可行? ² 是否存在错误的、缺少的或不完整的逻辑 |
7 |
数据使用 |
² 所有符合数据元素、参数及对象的概念是否都已经标准化 ? ² 是否还有任何需要的但还没有定义的数据结构,反之亦然? ² 是否已经描述最低级别数据元素?是否已经详细说明取值范围 |
8 |
接口 |
² 外部接口是否被正确描述? ² 功能或业务之间的接口是否被准确描述? ² 是否所有功能的输入和输出都被正确定义? ² 是否所设计的框架,包括数据流、控制流和接口,都清楚地表达了? ² 是否准确描述了并发任务直接的任务之间的创建、同步、互斥、销毁等关系? ² 是否用户界面都被清晰和准确地描述? ² 在与其他平台的交互协议中,业务流程中是否考虑对外来平台数据的合理性、合法性进行检查,有无保护措施 |
9 |
可维护性 |
² 该设计是否是模块化的? ² 这些模块是否具有高内聚和低耦合度? ² 是否已经对继承设计、代码或先前选择工具的使用进行了详细说明? ² 是否提供操作帮助功能 |
10 |
可靠性 |
² 软件可靠性指标的分解、可靠性和安全性设计符合软件需求吗?软件可靠性和安全性设计准则、指南得到了充分的实施吗? ² 是否已考虑非正常情况?是否所有的错误情况都被完整和准确地说明?该设计是否满足该系统进行集成时所遵守的约定? ² 该设计能够提供错误检测和恢复(例如输入输出检查)?对一些关键性操作,是否有提醒确认机制,避免误操作?关键性操作包括手工删除话单、计费数据配置等。 ² 对一些关键性操作,是否有一定的恢复机制?关键性操作主要指手工删除话单、计费数据配置等,可让用户恢复,但要考虑到可恢复机制要占用较多的存储空间和较复杂的处理,因此对于可恢复时间要有一定的限制。 ² 对一些关键性操作,是否有操作日志进行记录,包括操作人、操作时间、操作数据、具体操作等? ² 数据的处理是否具有可恢复性,当某个话单处理步骤异常,进行恢复后,后续的处理应该能够从断点处继续? ² 软件处理上,是否有一定的容错能力,能够防止轻度的软件异常? ² 对异常事件的处理合适吗 |
11 |
性能 |
² 主要性能参数是否已被详细说明(例如实时、速度要求、输入/输出接口等)? ² 有没有考虑出现性能瓶颈的时候,系统会做出怎样的反应? ² 是否对数据的规模进行分析,主要是对系统和子系统的数据处理能力、数据承载能力的考虑 |
12 |
安全性 |
² 是否对操作人员进行了分权处理,存在至少三种操作权限:无权、只读、可维护。必须考虑在本系统中应该提供对数据的哪些操作,这些操作如何进行权限划分和权限控制? ² 操作权限是否可以维护,便于以后功能的扩充不至于对权限造成影响? ² 用户无权限操作的功能是否明确,是否对用户不可见? ² 是否考虑数据传递过程中的安全性,主要指有无校验机制,对传递过程中出现的明显错误有无相应处理机制? ² 是否考虑数据的存储安全性,包括数据的存放周期、数据存放介质能力、多个数据存放点等?数据的存放周期依赖于存储介质的使用周期,如硬盘,超过一定的使用期后应及时更换。 ² 对重大的隐患是否考虑预警功能,包括磁盘空间、数据传送路径等 |
8.6.4 软件详细设计评审检查要素
软件详细设计评审检查要素如表8-17所示。
表8-17 软件详细设计评审检查要素
序号 |
章节 |
内容 |
1 |
资源和进度 |
² 承担概要设计的人员安排合理吗? ² 详细设计按进度完成了吗? ² 配置管理得到了适当地实施了吗 |
2 |
依从性 |
² 详细设计的编制符合要求吗?该文档是否遵循了该项目已文档化的标准? ² 软件详细设计是否进行了同行评审?是否采用了所要求的方法和工具来进行单元设计 |
3 |
功能性 |
² 是否已概要描述了设计单元的所有功能?是否对模块功能进行了详细的描述? ² 是否全面描述功能组件的功能和相互关系? ² 是否已描述重要的类/模块、重要的方法、重要的属性、重要的流程、重要的状态迁移? ² 是否已详细说明开发方法,如开发环境和编译方式等? ² 所使用的数据结构适合吗? ² 确定的输入、输出和处理功能正确吗? ² 是否正确地规定了分支,逻辑没有颠倒? ² 所使用的算法适合吗 |
4 |
一致性 |
² 数据元素的命名和使用在整个单元和单元接口之间是否一致? ² 所有接口的设计是否互相一致并且和更高级别文档一致 |
5 |
数据使用 |
² 是否所有模块/类的数据结构都被详细说明? ² 是否所有修改共享数据(或文件)的程序都考虑到了其他程序对该共享数据(或文件)的存取权限 |
6 |
接口 |
² 接口参数在数量、类型和顺序上是否匹配? ² 是否所有的输入和输出都被正确定义和检查? ² 是否传递参数序列都被清晰地描述? ² 是否所有参数和控制标志由已描述的单元传递或返回? ² 是否详细说明了参数的度量单位、取值范围、正确度和精度? ² 共享数据区域及其存取规定的映射是否一致 |
7 |
可靠性 |
² 软件可靠性、安全性设计准则和指南得到了充分的实施吗? ² 是否执行输入、输出、接口和结果的错误检查?是否对所有错误情况都发出有意义的信息? ² 对特殊情况返回的代码是否和已规定的全局定义的返回代码相匹配? ² 是否所有的程序异常定义了适当的处理方法? ² 对异常事件的处理完善吗 |
8 |
清晰性 |
² 所有设计对象或过程的目的是否都已文档化? ² 数据流、控制流和接口的单元设计是否已清晰地说明 |
9 |
可追溯性 |
² 是否设计的每一部分都能追溯到其他项目文档的需求,也能追溯到更高级别文档的需求? ² 是否从公司模块库或事业部模块库提取出可用模块? ² 是否列出本模块可能输出的共享模块以准备加入模块化库 |
10 |
易测性 |
是否提供了必要的调试支持要求,例如运行日志、Debug信息 |
11 |
性能 |
是否模块/类的所有约束,例如过程时间和规模都被详细说明 |
12 |
可维护性 |
单元是否具有高内聚度和低耦合度,例如对该单元的更改不会在该单元有任何无法预料的影响,并对其他单元的影响很小 |
8.6.5 软件编码和单元测试评审检查要素
软件编码和单元测试评审检查单如表8-18所示。
表8-18 软件编码和单元测试评审检查要素
序号 |
章节 |
内容 |
1 |
资源和进度 |
² 承担软件实现的人员安排合理吗? ² 软件实现按进度完成了吗? ² 配置管理得到了适当地实施了吗 |
2 |
编码和测试 |
² 程序代码与详细设计一致吗? ² 编程格式符合规定吗? ² 模块调试结果正确吗? ² 对异常事件的处理适当吗? ² 静态检查充分吗? ² 单元测试用例正确吗? ² 单元测试指标符合要求吗? ² 程序单元在修改后,进行了回归测试吗? ² 是否填写了单元测试记录单 |
8.6.6 代码走查评审要素
代码走查评审要素如表8-19所示。
表8-19 代码走查评审要素
序号 |
章节 |
内容 |
1 |
代码走查评审要素 |
² 代码的注释与代码是否一致?注释是否是多余的? ² 是否存在超过3层嵌套的循环与/或判断? ² 变量的命名是否代表了其作用? ² 所有的循环边界是否正确? ² 输入参数的异常是否处理了? ² 程序中所有的异常是否处理了? ² 所有的判断条件边界是否正确? ² 是否存在重复的代码? ² 所有的文件名符合文件命名规范,见名知意。 ² 数据库中是否定义有bit类型的字段? ² 常量是否全部大写 |
8.6.7 软件集成测试评审检查要素
软件集成测试评审检查单如表8-20所示。
表8-20 软件集成测试评审检查要素
序号 |
章节 |
内容 |
1 |
资源和进度 |
² 承担软件集成测试的人员安排合理吗? ² 软件集成测试按进度完成了吗? ² 配置管理适当地实施了吗 |
2 |
测试过程 |
² 《软件集成测试报告》的编制符合要求吗? ² 软件的集成过程适合吗? ² 测试用例充分吗?适当吗? ² 测试结果与测试用例的预期结果一致吗? ² 测试环境与运行环境相容吗? ² 测试分析过程与结论正确吗? ² 保存了测试用例、数据及相关程序吗? ² 进行了必要的回归测试吗? ² 问题报告单填写准确、清楚吗 |
8.6.8 软件配置项测试评审检查要素
软件配置项测试评审检查单如表8-21所示。
表8-21 软件配置项测试评审检查要素
序号 |
章节 |
内容 |
1 |
资源和进度 |
² 承担软件配置项测试的人员安排合理吗? ² 测试计划的安排合理吗? ² 软件配置项测试按进度完成了吗? ² 配置管理得到了适当地实施了吗 |
2 |
技术内容 |
² 《软件配置项测试计划》的编制符合要求吗? ² 《软件产品规格说明》的编制符合要求吗? ² 对软件功能,性能的测试合理而又全面吗? ² 测试方案合理且正确吗?测试用例全面吗?合理吗?测试数据全面吗?接口测试正确吗?测试环境选择合适吗?测试环境与运行环境等效吗? ² 强度测试适当吗?可靠性测试、安全性测试合适吗?测试分析结论正确吗?测试结果分析方法适合吗?测试结果与预期的一致吗? |