让你提前认识软件开发(47):同行评审_代码同级评审-程序员宅基地

技术标签: 软件研发项目工作总结  

第3部分 软件研发工作总结

同行评审

 

         在《浪潮之巅》这本书中,吴军老师描述了在Google早期的工作方式,其中有一段是这么写的:我一般会在吃完晚饭后把代码修改的清单发给克雷格做代码审核,他一般晚上10点左右会回复我,给我修改意见,详细到某一行多了一个空格。

        吴军老师所描述的内容,其实就是软件开发中的同行评审流程

        几乎在所有的软件项目中,都需要同行评审。一个人不管能力多强,看问题的角度总会受到限制,写出来的程序和文档等定不会是十全十美的。如果能够让懂行的同事给参阅一下,并提出他们认为正确的意见,那么势必会减少软件产品中的缺陷,取得个人难以达到的效果。因此,同行评审流程对于广大的软件工程师来说,是十分重要的,也是不可或缺的。

        1. 什么是同行评审?

        同行评审(Peer Review)是一种结构化的正式评审,由生产者(作者)的同行为识别异常和需要修改的部分而对工作产品进行的有组织、有计划的检查。

        同行评审并不是对个人的工作不信任,其目的是尽早有效地消除软件工作产品中的异常。

 

         2. 为什么要做同行评审?

        在学校的时候,老师教导我们要独立完成作业,因此,如果你在那个时候对别人的作业或在考试过程中进行“同行评审”,那就是违规的。但软件开发是一项团队性的工作,需要大家协作来完成,所以,那种不愿意公开自己工作成果的做法是行不通的。

        为什么要做同行评审呢?

        第一,凡是人皆有出错的时候,要保证你做出的东西里面的错误尽量少,就需要他人对其进行评审。

        第二,对于软件产品来说,缺陷发现得越早,纠正缺陷所需的费用就越少。因此,在软件的开发阶段,如果严格进行同行评审,那么后续流程中出现的错误就会越少,这也可以为公司节约纠错的成本。

        第三,同行评审过程中发现的错误可作为案例传承下去,避免开发人员再次掉进同一个陷阱。“前事不忘,后事之师”,别人所犯的错误对自己有警示的作用。特别是对于新员工来说,经常参与同行评审,可减少试错的次数,也能够达到对新工作及早上手的目的。

 

        3. 同行评审有哪几种类型?

        同行评审的类型包括:审查走查单人复审多人复审等。

 

        4. 同行评审的对象是什么?

       在产品开发的各阶段中,需要参与同行评审的对象包括:

       (1) 概念阶段:产品需求说明书等。

       (2) 计划阶段:系统方案、项目计划等。

       (3) 开发阶段:详细设计、单元测试规程(方案)、集成测试规程(方案)、代码、数据库脚本等。一般而言,在开始编码之前,先要进行详细设计评审,以确保程序的正确性,减少后续修改带来的不良影响。

       (4) 验证阶段:系统测试计划、系统测试规程(方案)等。

 

        5. 什么是审查?审查的角色都有哪些?审查的步骤有哪些?有效评审的原则有哪些?

        审查是同行评审的一种,在软件项目中占有重要地位。

        (1) 审查定义审查(Inspection)是一种正规的同行评审,适用于重要性和重复性较高的软件工作产品。

        (2) 审查(评审)角色:包括主持人、讲解员、记录员、作者和审查员。一般说来,参与审查的人有37人。各角色的分工如下:

        1) 主持人:需要具备领导技巧,负责管理审查过程,是审查流程的关键角色。

        2) 作者:提供审查材料,并提供概要介绍;此外,作者也可以充当评审员。

        3) 记录员:按照主持人的示意记录产品和程序等的异常,在记录的同时要记录异常分类,并大声朗读记录下来的缺陷。

        4) 讲解员:充分理解审查材料,并在讲解的同时加以解释。该角色不能由作者担当。

        5) 审查员:所有参与审查的人员都可以是评审员;主要负责理解被审材料、进行个人检查、做好准备并参加审查会议。

        (3) 审查活动的步骤有7个,如下图所示:

        (4) 有效评审的原则包括:

        1) 在预审期间要使用检查单,以避免发现缺陷不知道记录在哪里的情况发生。

        2) 避免过度依赖检查单。

        3) 审查会议要限制在2小时之内,以避免长时间讨论而偏离了审查会议的主题。

        4) 审查的对象是产品而非生产者(作者),因此要避免对作者本人进行人身攻击。

        5) “磨刀不误砍柴工”,要给评审员提供足够的预审时间,一般以提前两天为佳。

        6) 如果有与会人员未准备好,则将会议延期;如果有人确实抽不出时间,则取消评审。

 

        6. 什么是代码评审?其目的是什么?

        对于软件开发工程师来说,代码评审是不可缺少的一个环节,也是提高代码质量的一种有效的手段。

        (1) 代码评审的定义:代码评审是一种正式的针对程序发起的一项同行评审活动,它由一组职责明确的主持人、作者、记录员、审查员等人员通过一系列明确定义的过程对代码进行静态检查来发现代码中的异常。

        (2) 代码评审的目的:提早发现代码缺陷、去除缺陷,以降低开发成本并提高产品质量。

 

         如前所述,同行评审流程固然重要,但要彻底地执行下去,需要做到以下几点:

        第一,作者本人要持有开放心态,愿意分享自己的工作成果,并勇于承认自身的不足而加以改进。人都不大乐意被别人指出自身的问题,而同行评审的目的就是要发现问题,因此,这在一定程度上是对作者心态的考验,要明白是产品有缺陷,对产品中的问题进行完善。

        第二,评审人员要对事不对人,要懂得同行评审是为了发现产品的缺陷,而非人自身的问题。不要将同行评审活动变性为针对作者本人的人身攻击,这就有伤整个团队的凝聚力。同行评审的一个宗旨就是大家在一起学习,取长补短,共同提高。

        第三,很重要的一点,公司要对同行评审的结果进行总结,并以文档的形式保存起来,方便后期查阅。很多软件产品出现的问题都是相似的,在着手开发产品之前,如果能够了解前期类似产品中出现的问题,那么可以少走很多弯路,节约了工作时间,提高了工作效率。

 

       为了确保产品的质量,产品的所有工作成果(包括程序、文档、图形等)都应该接受同行评审。“三人行,则必有我师”,不管是老员工,还是新员工,都能够从同行评审中受益。

 

 

(本人微博: http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhouzxi/article/details/38642205

智能推荐

Python 字典的遍历、增删改查_python map 增删改查-程序员宅基地

文章浏览阅读528次。#字典里可以将相关信息关联起来,用{},键和值用':'隔开,通过键可以访问值#可以修改值,添加键值对,删除键值对#字典元素的访问zd = { 'name':'xiaoming','age':8,'sex':'男'}name = zd['name']print('your name is %s !'%name)#your name is xiaoming !#添加元素zd['g..._python map 增删改查

我的第一个ssm项目开发日记(二)- 搭建第一个ssm项目以及问题总结_ssm毕业设计周记-程序员宅基地

文章浏览阅读521次。3/25距离上一次已经过了四天。实际上在 3/22 已经完成到只差 spring 和 mybatis 整合的部分 。但是由于自己不太清楚ssm框架 具体配置原理,也走了很多弯路。 尤其是 maven 里面对 依赖 <dependencies> 的配置 。 因为有些依赖之间,由于版本问题,会产生冲突然后报错。所以 测试完mybatis 、spring 环境都没问题的情况下,结果 由于..._ssm毕业设计周记

ubuntu下安装Sophus库出现问题及解决办法_git checkout a621ff error-程序员宅基地

文章浏览阅读1.2w次,点赞17次,收藏49次。Sophus库是一个较好的李群李代数库,此处安装的是非模板类的Sophus库。具体安装过程如下: 1、安装指令: git clone https://github.com/strasdat/Sophus.git cd Sophus/ git checkout a621ffmkdir build cd build cmake .. make 2、出现问题及解决办法: 问题1..._git checkout a621ff error

Keyguard drawn timeout-程序员宅基地

文章浏览阅读543次。有时log中会出现keyguard 1S超时的log08-05 22:09:48.397957 1109 1184 W WindowManager: Keyguard drawn timeout. Setting mKeyguardDrawComplete//framework部分代码流程PhoneWindowManager.screenTurningOn{mKeyguardDelegate.onScreenTurningOn(mKeyguardDrawnCallback);}--->._keyguard drawn timeout

【OpenFOAM】用VS Code调试OpenFOAM_openfoam debug-程序员宅基地

文章浏览阅读3.6k次,点赞5次,收藏12次。参考https://www.bilibili.com/video/BV1MP4y1u7rS?spm_id_from=333.337.search-card.all.click安装软件准备ubuntu系统安装cmake安装VS Code安装OpenFOAM(我的版本8.0)准备文件CMakeLists.txt文件cavity文件夹myicoFoam2文件夹以下会分别说明注意:这三步无所谓先后顺序1: 准备CMakeLists.txt在桌面上新建一个文件夹myicoFoam2_openfoam debug

NSMutableArray交换数组元素位置的方法_exchangeobjectatindex-程序员宅基地

文章浏览阅读9.8k次。元素除了可以添加删除之外, 还可以交换它们所在的位置, 比如我要用第0个元素和第2个元素交换, 那么我们通过一个简单的方法就可以实现了._exchangeobjectatindex

随便推点

全文检索技术—Solr-程序员宅基地

文章浏览阅读8.3k次,点赞6次,收藏51次。Solr是Apache组织出品的,一个全文检索引擎系统. Solr作用: solr放在tomcat下就能独立运行,因为它是一个现成的系统. 它通过http对外提供全文检索服务,(对索引和文档的增删改查), 它内部提供通过浏览器就能访问的维护界面. 我们如果在企业中开发, 使用它的客户端工具solrJ(就是一个jar包) ,来远程调用solr服务端,服务端对索引库和文档库操作。..._solr

android 使用ffmpeg 并调用接口_android中ffmep-程序员宅基地

文章浏览阅读1.1k次。http://blog.csdn.net/kaven826/article/details/14517189由于最近要做一个音频视频合成的东东,经过各方面的资料查找,开始锁定javaCV,想用它搞定音视频合成的问题。可后来用javacv出现了很多问题,发邮件给javacv的作者,也没有得到很好的答案,后来逼于无奈只好移植ffmepg到andorid,在android上使用ffmpeg合成音_android中ffmep

第二十六节 class 与 struct的默认权限区别_class权限-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏2次。/* class和struct最大的区别:默认权限不同 * class:成员的默认权限是private * struct:成员默认权限为public, 继承也默认为public继承*/class Human { char* name; //默认为private成员 int age; Human(const char* initString); //默认为private成员 ..._class权限

做题-程序员宅基地

文章浏览阅读90次。  来源:微软笔试题。  6、How many times is f() called when calculating f(10)?(5 Points)int f(int x) { if(x <= 2) return 1; return f(x - 2) + f(x - 4) + 1; } A、..._how many times is f() called when calculating f(10)? int f(int x) { if(x <=

【android】给EditText的drawable添加点击事件_android edittext插入图片实现点击-程序员宅基地

文章浏览阅读2.3k次。etPhoneNum.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // et.getCompoundDrawables()得到..._android edittext插入图片实现点击

115_《Delphi信息系统开发实例精选》-程序员宅基地

文章浏览阅读141次。《Delphi信息系统开发实例精选》Delphi 教程 系列书籍 (115) 《Delphi信息系统开发实例精选》 网友(邦)整理 EMail: [email protected]下载地址:Part1 Part2 Part3 Part4作者: 赛奎春 宋坤 赵智勇 刘强等丛书名: 信息系统开发实例精选丛书 出版社:机械工业出版社* ISBN:7111167..._delphi信息系统开发实例精选

推荐文章

热门文章

相关标签