评审尤其是同行评审,是提前发现缺陷,降低开发成本的有效方法;但是很多企业并不重视,或者效果不佳。
原因有很多:没有获得合适的专家、组织不合理、方法不当等。针对代码评审,我想简单地谈几点(其实其它工程文档的评审存在同样问题):1、评审要计划。
因为大家都很忙,各领域的专家也都有各自的工作,评审结果的好坏对他们工作绩效没有影响,所以专家投入多少精力来用于评审不受控,完全靠他们自己的职业精神。 所以,这就要求项目经理比较有影响力,能够争取到足够的、合适的专家来参与评审。
专家最好要提前协调,当然项目经理首先要知道要请哪些专家(如系统专家、领域专家、测试人员、QA等),这些专家在哪里?能否获得专家资源的支持,是项目经理的项目管理能力一个重要体现。评审时间的投入比例,一般是第一次版本准备时间的3/5以上。
2、评审要分层次和重点。作为项目成员,在代码编写完成后,首先是自检,这时发现的缺陷不计算;然后是项目组内的评审,这时发现的缺陷应计算;最后才是外部评审。
应提前把相关文档和代码交给评审专家,让他们各自评审;根据项目和评审结果的情况,决定是否召开评审会议,评审会议以确认问题为主,而不是讨论解决方案。对于重要的核心的代码,要投入重点评审力量;另外,对于能力不足的成员所完成的代码,也要重点评审。
每个角色也应明白各自评审重点,如QA重点放在编程规范、测试人员侧重在可测性、系统专家侧重在从整体来考虑(如对其它功能的影响、性能等)。3、问题的确认与跟踪。
评审专家发现问题后,首先与该代码的完成人进行确认,如果大家达成一致认可这个问题,然后由代码完成人提出解决方案,这个解决方案要得到问题发现者的同意,然后编程人员编码实现该方案,并进行测试和验证,并将验证结果提交问题发现人,问题发现人确认无误后,该问题就可关闭。所以,评审专家发现问题后并没有结束,而是要负责跟踪该问题。
总之,评审活动的组织其实比较复杂,也是项目经理项目管理能力的一个重要体现,项目经理对评审活动负有重要责任。
代码review主要就是事前的准备,执行,和后期的跟踪事前的准备也叫做review的输入,这个输入是在什么条件下可以做为输入,可以是个人检查完了,也可以是相互交叉的检查,这里有个检查的标准,如有个检查单什么的,等规定的输入完成之后,进行review的执行在review中,主要就是首先保证什么人参加,这是最主要的,如果找几个没有什么经验的,那review的效果肯定是打折扣的,review的多少时间跟踪,主要是问题的跟踪和后期的数据的度量你上面说的相互评审,主要是项目内部的review,review分好几种,有内部的,专家的,客户的review代码时主要看是否符合编码规范,特别是是否符合设计书(需求)的要求,逻辑是否正确,主要是专家级!。
常用的评标方法有 1单项评议法 2综合评标法 3合理单价评标法 常用的评标方法介绍 1单项评议法 单项评议法,又称单因素评议法、低标价法,是一种只对投标人的投标报价进行评议从而确定中标人的评标定标方法,主要适用于小型工程。
单项评议法的主要特点是仅对价格因素进行评议,不考虑其他因素,报价低的投标人中标。当然,这里未考虑的其他因素,实际上在资格审查时已获通过,只不过不作为评标定标时的考虑因素,因而也不是投标人竞争成败的决定性因素。
采用单项评议法评标定标,决定成败的唯一因素是标价的高低。但不能简单的认为,标价越低越能中标。
一般的做法是,通过对投标书进行分析、比较,经初审后,筛选出低标价,通过进一步的澄清和答辩,经终审证明该低标价确实是切实可行、措施得当的合理低标价的,则确定该合理低标价中标。合理低标价不一定是最低投标价。
所以,单项评议法可以是最低投标价中标,但并不保证最低投标价必然中标。 采用单项评议法对投标报价进行评议的方法多种多样,主要有以下三类具有代表性的模式: (1)将投标报价与标底价相比较的评议方法 这种方法是将各投标人的投标报价直接与经招标投标管理机构审定后的标底价相比较,以标底价为基础来判断投标报价的优劣,经评标被确认为合理低标价的投标报价即能中标。
(2)将各投标报价相互进行比较的评议方法 从纯粹择优的角度看,可以对投标人的投标报价不做任何限制、不附加任何条件,只将各投标人的投标报价相互进行比较,而不与标底相比,经评标确认投标报价属最低价或次低价的(即为合理低标价的),即可中标。 这种对投标报价的评议方法,优点是给了投标人充分自主报价的自由,标底的保密性不成问题,评标工作也比较简单。
不足之处是,招标人无需编制标底,或虽有标底但形同虚设,不起什么作用,因而导致投标人对投标报价的预期和认同心中无数,事实上处于一种盲目状态,很难说清楚是否科学、合理。而投标人为了中标常常会进行竟相压价的恶性竞争,也极易形成串通投标。
(3)将投标报价与标底价结合投标人报价因素进行比较的评议方法 这种方法的特点,是要借助于一个可以作为评标定标参照物的价格。这个在评标定标中作为参照物的价格,是指投标报价最接近于该价时便能中标的价格,我们称之为“最佳评标价”。
2综合评标法 综合评议法,是对价格、施工组织设计(或施工方案)、项目经理的资历和业绩、质量、工期、信誉和业绩等因素进行综合评价从而确定中标人的评标定标方法。它是适用最广泛的评标定标方法,各地通常都采用这种方法。
综合评议法按具体分析方式的不同,可分为定性综合评议法和定量综合评议法。 (1)定性综合评议法(评议法) 定性综合评议法,又称评议法。
通常的做法是,由评标组织对工程报价、工期、质量、施工组织设计、主要材料消耗、安全保障措施、业绩、信誉等评审指标,分项进行定性比较分析,综合考虑,经评议后,选出其中被大多数评标组织成员认为各项条件都比较优良的投标人为中标人,也可用记名或无记名投票表决的方式确定中标人。定性评议法的特点是不量化各项评审指标。
它是一种定性的优选法。采用定性综合评议法,一般要按从优到劣的顺序,对各投标人排列名次,排序第一名的既为中标人。
但当投标人超过一定数量(如在5家以上)时,可以选择排序第二名的投标人为中标人。 采用定性综合评议法,有利于评标组织成员之间的直接对话和交流,能充分反映不同意见,在广泛深入地开展讨论、分析的基础上,集中大多数人的意见,一般也比较简单易行。
但这种方法,评议标准弹性较大,衡量的尺度不具体,各人的理解可能会相去甚远,造成评标意见悬殊过大,会使评标决策左右为难,不能让人信服。 (2)定量综合评议法(打分法、百分法) 定量综合评议法,又称打分法、百分制计分评议法(百分法)。
通常的做法是,事先在招标文件或评标定标办法中将评标的内容进行分类,形成若干评价因素,并确定各项评价因素在百分之内所占的比例和评分标准,开标后由评标组织中的每位成员按照评分规则,采用无记名方式打分,最后统计投标人的得分,得分最高者(排序第一名)或次高者(排序第二名)为中标人。 采用定量综合评议法,原则上实行得分最高的投标人为中标人。
但当招标工程在一定限额(如1000万元)以上,最高得分者和次高得分者的总得分差距不大(如差距仅在2分之内),且次高得分者的报价比最高得分者的报价低到一定数额(如低2%以上)的,可以选择次高得分者为中标人。对此,在制定评标定标办法时,应作出详尽说明。
定量综合评议法的主要特点是要量化各评审因素。对各评审因素的量化是一个比较复杂的问题,各地的做法不尽相同。
从理论上讲,评标因素指标的设置和评分标准分值的分配,应充分体现企业的整体素质和综合实力,准确反映公开、公平、公正的竟标法则,使质量好、信誉高、价格合理、技术强、方案优的企业能中标。 3合理单价评标法 “合理低价评标法”应该是“最低价中标”评标法的一次扬弃,存其优化竞争的一面,弃。
代码走查(code walkthrough)和代码审查(code inspection)是两种不同的代码评审方法,
代码审查是一种正式的评审活动,而代码走查的讨论过程是非正式的。
最近对项目组进行代码评审,发觉需要对代码评审中找到的问题进行一下分类,大概可以分成以下几类问题:
1. Comment
注释没写,或者格式不对,或者毫无意义
2. Coding Standard
没遵守代码规范
3. Existing Wheel
重复现成的代码,或者是开源项目,或者公司已有代码
4. Better practice
Java或者开源项目,有更好的写法
5. Performance bottle and Improvement
性能瓶颈和提高
6. Code Logic Error
代码逻辑错误
7. Business Logic Error
业务逻辑错误
代码审查列出问题的类型,并有解决情况报告
1、根据《评标委员会和评标方法暂行规定(国家发展计划委员会、国家经济贸易委员会、建设部、铁道部、交通部、信息产业部、中水利部令第12号)》规定:
“第二十九条 评标方法包括经评审的最低投标价法、综合评估法或者法律、行政法规允许的其他评标方法。”
2、根据上文,评标方法分为最低投标价法、综合评估法两大类。实际应用的各种评标方法多种多样,基本属于以上两类。其中最低投标价法定义简单、明确。而综合评估法设定方法多种多样,内容繁多,体现形式也各有不同。
3、抽签法等不能体现竞争、择优评标方法,不属于法律认可范围。
代码走查(code walkthrough)和代码审查(code inspection)是两种不同的代码评审方法,
代码审查是一种正式的评审活动,而代码走查的讨论过程是非正式的。
最近对项目组进行代码评审,发觉需要对代码评审中找到的问题进行一下分类,大概可以分成以下几类问题:
1. Comment
注释没写,或者格式不对,或者毫无意义
2. Coding Standard
没遵守代码规范
3. Existing Wheel
重复现成的代码,或者是开源项目,或者公司已有代码
4. Better practice
Java或者开源项目,有更好的写法
5. Performance bottle and Improvement
性能瓶颈和提高
6. Code Logic Error
代码逻辑错误
7. Business Logic Error
业务逻辑错误
代码审查列出问题的类型,并有解决情况报告
什么是Code Review?
Code Review代码评审是指在软件开发过程中,通过对源代码进行系统性检查的过程。通常的目的是查找各种缺陷,包括代码缺陷、功能实现问题、编码合理性、性能优化等;保证软件总体质量和提高开发者自身水平。 Code Review是轻量级代码评审,相对于正式代码评审,轻量级代码评审所需要的各种成本要明显低得多,如果流程正确,它可以起到更加积极的效果。正因如此,轻量级代码评审经常性地被引入到软件开发过程中。
为什么Code Review?
1. 提高代码质量。
2. 及早发现潜在缺陷,降低修改/弥补缺陷的成本。
3. 促进团队内部知识共享,提高团队整体水平。
4. 评审过程对于评审人员来说,也是一种思路重构的过程。帮助更多的人理解系统。
5. 是一个传递知识的手段,可以让其它并不熟悉代码的人知道作者的意图和想法,从而可以在以后轻松维护代码。
6. 鼓励程序员们相互学习对方的长处和优点。
7. 可以被用来确认自己的设计和实现是一个清楚和简单的。
评审尤其是同行评审,是提前发现缺陷,降低开发成本的有效方法;但是很多企业并不重视,或者效果不佳。
原因有很多:没有获得合适的专家、组织不合理、方法不当等。针对代码评审,我想简单地谈几点(其实其它工程文档的评审存在同样问题):1、评审要计划。
因为大家都很忙,各领域的专家也都有各自的工作,评审结果的好坏对他们工作绩效没有影响,所以专家投入多少精力来用于评审不受控,完全靠他们自己的职业精神。 所以,这就要求项目经理比较有影响力,能够争取到足够的、合适的专家来参与评审。
专家最好要提前协调,当然项目经理首先要知道要请哪些专家(如系统专家、领域专家、测试人员、QA等),这些专家在哪里?能否获得专家资源的支持,是项目经理的项目管理能力一个重要体现。评审时间的投入比例,一般是第一次版本准备时间的3/5以上。
2、评审要分层次和重点。作为项目成员,在代码编写完成后,首先是自检,这时发现的缺陷不计算;然后是项目组内的评审,这时发现的缺陷应计算;最后才是外部评审。
应提前把相关文档和代码交给评审专家,让他们各自评审;根据项目和评审结果的情况,决定是否召开评审会议,评审会议以确认问题为主,而不是讨论解决方案。对于重要的核心的代码,要投入重点评审力量;另外,对于能力不足的成员所完成的代码,也要重点评审。
每个角色也应明白各自评审重点,如QA重点放在编程规范、测试人员侧重在可测性、系统专家侧重在从整体来考虑(如对其它功能的影响、性能等)。3、问题的确认与跟踪。
评审专家发现问题后,首先与该代码的完成人进行确认,如果大家达成一致认可这个问题,然后由代码完成人提出解决方案,这个解决方案要得到问题发现者的同意,然后编程人员编码实现该方案,并进行测试和验证,并将验证结果提交问题发现人,问题发现人确认无误后,该问题就可关闭。所以,评审专家发现问题后并没有结束,而是要负责跟踪该问题。
总之,评审活动的组织其实比较复杂,也是项目经理项目管理能力的一个重要体现,项目经理对评审活动负有重要责任。
首先,我们先来看看Code Reivew的用处:
Code reviews 中,可以通过大家的建议增进代码的质量。
Code reviews 是一个传递知识的手段,可以让其它并不熟悉代码的人知道作者的意图和想法,从而可以在以后轻松维护代码。
Code reviews 也鼓励程序员们相互学习对方的长处和优点。
Code reviews 也可以被用来确认自己的设计和实现是一个清楚和简单的。
你也许注意到了在上面的Code Reivew中的诸多用处中,我们没有提到可以帮助找到程序的bug和保证代码风格和编码标准。这是因为我们认为:
Code reviews 不应该承担发现代码错误的职责。Code Review主要是审核代码的质量,如可读性,可维护性,以及程序的逻辑和对需求和设计的实现。代码中的bug和错误应该由单元测试,功能测试,性能测试,回归测试来保证的(其中主要是单元测试,因为那是最接近Bug,也是Bug没有扩散的地方)
Code reviews 不应该成为保证代码风格和编码标准的手段。编码风格和代码规范都属于死的东西,每个程序员在把自己的代码提交团队Review的时候,代码就应该是符合规范的,这是默认值,属于每个人自己的事情,不应该交由团队来完成,否则只会浪费大家本来就不够的时间。我个人认为“meeting”是奢侈的,因为那需要大家在同一时刻都挤出时间,所以应该用在最需要的地方。代码规范比起程序的逻辑和对需求设计的实现来说,太不值得让大家都来了。
10年前,上面这两件事会是理所当然的(10年前的中国的软件开发还没有Code Reivew呢),今天,在中国的很多公司上面这两件事依然被认为是Code Reivew最重要的事,所以,我能够看到很多开发Team抱怨Code Review就是一个形式,费时费力不说,发现的问题还不如测试,而评审者们除了在代码风格上有些见术,别的也就没什么用了,长而久之,大家都会开始厌烦这个事了。
所以,在今天,请不要把上面的那两件事分散了Code Review的注意力,取而代之的是,对于Bug,程序的作者要在Review前提交自己的单元测试报告(如:XUnit的测试结果),对于代码规范,这是程序作者自己需要保证的,而且,有一些工具是可以帮你来检查代码规范的。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.953秒