文章目录
第六章 软件评审
6.1 为什么需要软件评审
- 软件评审是确保软件开发过程和产品质量的一种重要方法。通过评审,可以发现并纠正潜在的问题、提高软件质量、降低风险和成本。同时,评审可以促进团队协作和沟通,帮助团队成员共同理解需求和标准,提高开发效率和客户满意度。
- 提高项目的生产率。这是由于早期发现了错误,因而 减少了返工时间,还可能减少测试时间
- 通过评审,标志着软件开发的一个阶段的完成。
- 生产出更容易维护的软件。主要原因是:对于被评审 的软件,评审者必须是非常熟悉的;同时,在评审过 程中,一定会产生并利用很多证明文档,于是评审就 迫使开发者产生出许多有用的文档,
6.2 软件评审的角色和职能
- 软件评审通常由专门的评审小组或者专业人士进行,他们的主要职能是识别和纠正软件产品和过程中存在的问题。评审人员应该具备相关的技术知识和经验,并且独立于软件产品的开发和维护人员。
- 评审组(Moderator)
- 宣读员(Reader)
- 记录员(Recorder)
- 作者(Author)
- 评审员(Reviewer、Inspector)
- 熟悉评审内容,为评审做好准备。
- 在评审会议上应该关注问题而不是针对个人。
- 主要的问题和次要的问题可以被分别讨论。
- 在会议前或者会议后可以就存在的问题提 出建设性的意见和建议。
- 明确自己的角色和责任。
- 做好接受错误的准备
6.3 评审的内容
- 评审通常包括管理评审、技术评审、文档评审和过程评审四个方面。
6.3.1 管理评审
- 管理评审主要是对软件项目计划、进度、财务等方面的评审,以保证项目能够按时完成,达到预期的质量和效果。
- 输入
- 近期内、外审的评审结果;
- 顾客信息反馈;
- 相关方关注的问题;
- 工作业绩与存在的问题;
- 纠正与预防措施实施情况;
- 上次管理评审有关决定和措施的执行情况;
- 可能影响管理体系变更的情况 (如:法律、法规的变化,组织机构或产品、活动的 变化、外部环境的变化等);
- 管理方针、目标和指标的适宜性及其实现情况
- 输出
- 管理评审的目的、时间、参加人员及评审内容;
- 管理体系及过程的适用性、充分性、有效性的 综合评价和需要的改进;
- 管理方针、目标、指标适宜性的评价及需要的 更改;
- 资源需求的决定和措施;
- 管理评审所确定的改进措施、责任部门和完成 日期
6.3.2 技术评审
- 技术评审主要是对软件产品设计、代码、测试和实施等技术方面的评审,以保证软件产品符合标准和规范,并且具有良好的可维护性和可扩展性。
- 技术评审的主要目的:是发现软件在功能、逻辑、实现上的错误,确保软件符合需求规格,验证软件符合预先定义的开发规范和标准,保证软件在统一的模式下进行开发,并便于项目管理。
- 技术评审的输入:包括评审的目的、评审内容,以及评审检查单和其他必需文档。评审的内容通常包括需求文档、源代码、测试用例等。
- 技术评审的输出:是技术评审报告,其中包括会议的基本信息、存在的问题和建议措施、评审结论和意见、问题跟踪表以及技术评审问答记录(作为附录出现在报告中)。通过技术评审报告,开发团队可以更好地了解软件存在的问题和改进方向,从而提高软件质量和效率。
6.3.3 文档评审
-
文档评审主要是对各种软件文档(如需求、设计、测试计划等)的评审,以保证文档的完备性、正确性、一致性和易于理解。
-
文档评审的主要目的:是确保软件开发过程中产生的文档符合标准和规范,检查文档内容是否准确、完整、一致,避免可能存在的错误和漏洞,以便及早发现并纠正问题,提高软件质量和效率。
-
在软件开发过程中,需要进行评审的文档很多,主要包括:需求评审、设计评审、代码评审和质量验证评审等。
6.3.4 过程评审
- 过程评审主要是对整个软件开发过程的评审,以保证过程中的各个阶段都能够遵循标准和规范,确保软件质量和效率。
- 过程评审的作用主要包括:评估主要的质量保证流程,考虑如何处理和解决评审过程中发现的不符合问题,总结和共享好的经验,以及指出需要进一步完善和改进的部分。过程评审可以帮助团队更好地了解自己的工作流程,发现并解决问题,提高整体开发效率和质量。
6.4 评审的方法和技术
6.4.1 评审的方法
- 评审的方法包括可行性研究、代码走查、代码审查、测试评审等。其中,代码审查是一种常用的评审方法,可以通过静态分析工具或者手动检查来发现潜在的问题。
- 特别检查(Ad hoc review)
- 轮查(Pass Around)
- 走查(Walkthrough)
- 团队评审(Group Review)
- 检视(Inspection
6.4.2 评审的技术
- 评审的技术包括会议技巧、运用案例和测试技巧等。会议技巧可以帮助评审人员提高沟通和决策能力,运用案例可以帮助评审人员更好地理解需求和标准,测试技巧可以帮助评审人员发现潜在的问题。
- 缺陷检查表
- 规则集
- 评审工具的使用
- Gerrit
- Jupiter
- SourceMonitor
- 从不同角度理解产品
- 场景分析技术
6.5 评审会议流程
- 评审会议的流程包括准备评审会议、召开评审会议和跟踪和分析评审结果三个步骤。在准备评审会议阶段,需要确定评审对象、评审标准和评审计划。在召开评审会议阶段,需要按照预定的计划进行评审,并记录评审结果。在跟踪和分析评审结果阶段,需要对评审结果进行分类和分析,制定相应的改进计划。
6.5.1 准备评审会议
评审会议召开时间点
- 应该根据项目进展情况和评审材料的复杂程度等因素进行合理安排。通常来说,评审会议会在项目开发的中期或者后期召开,以确保评审材料已经具备一定的完整性和可用性。同时,评审会议的召开时间也应该考虑到评审成员的时间安排和工作负担,以避免影响他们正常的工作进度。在确定评审会议召开时间点时,评审组长需要提前通知评审会议成员,并协调好评审会议与项目进度之间的关系,确保评审活动进度的顺畅进行。
选择哪些评审材料
- 需要根据材料的重要性和复杂程度等因素进行筛选,选择最关键、最危险、最具挑战性的部分进行评审。评审材料通常包括可交付产品和文档、前期文档、评审员需要的表格和工具,以及测试文档等。
打包分发评审材料
- 需要确保所有需要评审的部分都被包含,并提供帮助评审员发现缺陷的工具和文档。
合理安排评审活动进程
- 评审组长需要预留足够的准备时间,制定活动进度表、安排会议房间,并提前通知评审会议成员,避免同一个人一天参加多个评审会议,并合理协调项目进度和评审会议之间的关系。
6.5.2召开评审会议
- 需要进行评审预备、评审决议等步骤。
- 评审预备包括评审开始、成员介绍、评审员进行演示或说明、评审员就不清楚或疑惑的地方与作者进行沟通以及记录员在会议过程中完成会议记录。
- 在评审决议阶段,评审会议成员对评审结果进行讨论和决策。
- 评审会议的结束需要对评审结果进行总结,并确定下一步工作计划。
- 在评审过程中,应该把握好几个原则,包括客观公正、尽职尽责、注重质量、考虑安全、实事求是等。
6.5.3跟踪和分析评审结果
- 跟踪
- 有条件接受的缺陷跟踪
- 不接受的缺陷跟踪
- 分析
- 有效性
- 效率和成本
6.6 小结
- 软件评审是保证软件质量和效率的一种重要手段,包括管理评审、技术评审、文档评审和过程评审等方面。评审的方法和技术非常多样化,评审会议流程也需要严格执行,才能有效提高软件开发的质量和效率。
- 人的认识不可能100%符合客观实际,因此在 软件生存期的每个阶段的工作中,都可能引入人 为的缺陷。
- 在某一阶段中出现的缺陷,如果得不到及时的纠正, 就会传播到开发的后续阶段中去,并在后续阶段中引 出更多的缺陷。
- 提交给测试阶段的产品中包含的缺陷越多,经过 同样时间的测试之后,产品中仍然潜伏的缺陷也 越多。
- 必须将发现缺陷的工作提前,在开发时期的每个 阶段,都要进行严格的软件评审,尽量不让缺陷 传播到下一阶段
代码审查
代码审查主要工作
- 发现代码中的bug和考察代码的质量,提出修改建议。具体来说,需要检查是否符合Java开发规范和代码审核检查表。
代码审查流程
- 包括重要性、激活级别、检查项等多个方面。其中,重要性、激活级别和检查项是关键点。常见检查项包括命名规范、代码注释、声明、空白、缩进、语句格式、功能分布、规模、可靠性、可维护性等。
Java代码审查的常见错误
- 常见错误包括多次拷贝字符串、没有克隆返回的对象、自编代码来拷贝数组、未检查new操作结果为null、在catch块中未作清除工作、增加不必要的catch块等。