软件开发过程中的审查 (Review)

软件开发过程中的审查 (Review)

 

希望别人做些什么->定义出流程

希望别人做出正确的结果->定义出审查制度 

 

软件开发项目中包括很多的审查动作,贯穿于整个开发过程。个人认为审查主要有以下目的:

1.尽早排查出潜在的问题(Potential Risk/Issue)

  经过其他人的参与,以不同的视角提出不同的看法,会有类似头脑风暴的效果,集思广议来查找工程师未能注意的问题。

2.保持良好且有效的双向沟通

  很多时候沟通并不充分,总有许多以为明白,实际并不明白的情况。组织管理人员需要及时通过审查的方式,与开发人员进行有效的沟通。 同时,审查会使开发有更多的表达和相互沟通的机会,提高参与度,所以审查也可以提高开发人员的认同感和归属感。如果大家都能从审查中得到有效的指导和帮助,也会有助于提高审查效率。

3.通过以上两点,来达成最终正确的结果。

 

管理者需要对最终的结果负责,不能坐等问题发生,一定要先行加以预防,所以需要不断的进行审查。而组员通常对于所谓的审查会有一定的戒心,害怕批评或出丑,或者觉得没有必要,于是管理要确保在审查时做到对事不对人,并能针对问题提供有价值的指导。审查的对象是当前状态及产出,审查的目的在于确保最终的正确产出,审查的方式就是质询,而质询的基础就是审查制度。

 

审查制度可以很灵活,比如在项目开始定义出项目的角色及职责(ARCI矩阵), 然后针对不同的Milestones或任务设置检查点(Check point),重要的环节加以定义,使得审查有据可循。如针对Design Spec,我们需要宣布以下规则:

  1. Design Spec需要遵循公司统一规范。

  2. Design Spec中需要描述清楚Block diagram, Interface defintions等等。

  3. Design Spec什么时候提交给哪些人做审查。

  4. 什么时候举行Design Spec的审查会议,哪些人会参加,等等。

这是针对工程师而言的。Design Spec中的内容相应会有一个审查表(Check List)来进行审查,这就是规则。同样针对管理者也可以设定一个审查表,如:

  1. 必须向所有组员说明一次公司相关的文档规范。

  2. 必须定义清楚撰写及审查的时间安排,并向所有组员宣布,确保大家可以执行。

  3. 必须提供相应的审查记录。

 

对于需求分析、Functional Spec、代码管理、版本控制、发布控制、BUG管理及成本控制,都可以细化相应的动作,加以审查。审查对象包括项目中的各个角色。

 

总结一下,项目中审查制度的建立有以下步骤:

  1. 项目中角色及职责定义(R&R, Who)

  2. 定义审查点 (Check Point, When)

  3. 定义审查内容、范围及目标(Check List, What)

  4. 定义出审查人员 (Who)

 

*SMART原则是目标管理的重要参考法则,对于这个的审查制度有很强的指导性。

 

上面的审查制度是常态性的,另外还有一些突发状况需要由管理者适时判断审查的必要性。

 

如果突然遇到之前未能预估到的技术难题时,管理者必须特别为这个问题设定应急计划和一个更为紧凑的审查机制。比如在应急计划如下:

  1.召开会议,寻求资深工程师的帮助。[负责人及时间]

  2.安排其他人员支援。[负责人及时间]

  3.寻求第三方公司的支持。[负责人及时间]

  4.网络寻求解答。[负责人及时间]

  5.向相关人员报告细节问题,对于项目管理人员要考虑有无替代方案。[负责人及时间]

 

相应的审查一方面要针对每项进行,另外也要有一个统一个状态报告会议,以此来加强组织的有效性。当然这样的问题应及早被识别成风险或问题来加以预防,越少发生越好。

 

 

还有一种主动的自我审查方式。

 

无论对于管理者还是工程师,一定要清楚,你的主管、客户和老板,都需要知道你在做什么!及时的汇报是非常必要的,这也是一种主动的审查,它的效率更高。所以我们可以要求承担重点开发任务的人员周期性提交状态报告,将做过的事情、遇到的问题、后续的计划表列出来。其他人可以另作要求。管理者则应主动为其提供相应支持,这样就可以保持一个较为良性的互动。

 

审查之所以重要,是因为我们处在越来越讲求效率与生产力的环境,走越少的弯路,我们的企业才会更多的利润,员工才有更大的空间。这是管理者与工程师需要共同承担的责任。

*有点乱,先写到这,以后再完善!

时间: 2024-09-19 09:47:39

软件开发过程中的审查 (Review)的相关文章

软件开发过程中90%的公司会遇见的问题

软件开发过程中公司常遇见的问题1.项目进度难以掌控,客户希望能随时了解产品研发进度及查看现有功能.2.能力评估以及项目评估,研发能力无法数据化来决定项目接单能力,而往往开发公司又承诺太多,到最后无法实现.3.需求变化快,客户的需求,产品经理的需求,开发的实现,需求在不断变化,难以快速响应,项目返工严重影响项目质量.4.沟通成本高,异地交付.异地办公.异地沟通,甲乙双方就像是在进行一场异地恋,存在时间.空间等制约因素,效率低且成本高.5.研发流程乱,在研发过程管理当中没有协调管理好各方的工作,一旦

透视软件开发过程中的难点

作者:田占海 1 引言 如果你是一个程序员,可能常常为不能按时完成任务而苦恼.如果你是一个项目经理,可能会觉得开发符合预算和进度要求的软件简直难于上青天.实际上,软件项目常常严重超期或超出预算仍是困扰着绝大多数软件机构的难题.据美国一份评估报告显示,17个主要的国防部软件合同中,平均28个月的进度计划推迟了20个月才完成.一个4年应该完成的任务,7年还未提交,其中没有一个项目按时完成.由于存在软件问题,B1轰炸机的部署被推迟了,同样的原因,580亿美元的A12飞机计划也被部分取消了.持续了二三十

对日软件开发过程中的质量管理

质量管理活动背景 开发人员对委托方提供的设计资料的理解程度直接影响着开发进度和质量,从过去的产品质量数据分析结果来看,编程错误和对设计资料的理解错误是产生质量问题的两个主要原因. 特别是对设计资料的理解错误如不从一开始就采取措施进行预防,对程序本身及其他程序的质量将可能产生较大的影响.针对这一点,系统开发事业本部大连开发部开 展了以"预防/消除设计资料理解错误"为主题的质量控制(QC)活动.随着活动开展的深入,质量控制逐渐取得了明显的成效. "预防/消除设计资料理解错误&qu

艾伟也谈项目管理,找出软件开发过程中的BUG,你需要火眼金睛

1)Bug大都出现在程序员的编码过程中.测试人员工作之一就是找出Bug,面对那些难以被人发现的Bug,测试人员通常会采取哪些手段?以您的经验,对广大测试人员有什么好的建议?对于开发人员,您有什么建议让他们减少Bug的产生? 之所以难以发现,大多是测试案例不够完整,检查测试案例是否全面覆盖了需求,等价类划得是不是够细有助于发现更多的问题. 如果已经发现的问题大多是猜测法发现的,那么惨了,这是一个天马行空的测试,所有的BUG都将是难以发现的BUG,碰运气吧.如果你真的是在这个不幸的团队,别伤心,你有

软件开发中的同行评审

在<浪潮之巅>这本书中,吴军老师描述了在Google早期的工作方式,其中有一段是这么写的:我一般会在吃完晚饭后把代码修改的清单发给克雷格做代码审核,他一般晚上10点左右会回复我,给我修改意见,详细到某一行多了一个空格.吴军老师所描述的内容,其实就是软件开发过程中的同行评审流程. 对于同行评审,我有相当的体会.之前在某大公司工作的时候,我参与了多个软件版本的维护工作,发现不同版本程序质量差别很大.究竟是什么原因造成的?细究之后才发现,程序质量高的项目组在最终提交版本之前,无一例外都做了一件事情,

谈谈如何应对软件开发中的需求变更

令人烦恼的需求变更     在软件开发中,大家都会遇到过这样的问题:客户的一个新想法,就推翻了之前与客户经过再三讨论而确认定下来的需求.如果是功能性需求变更还会让人容易接受一些,毕竟功能性需求不实现的话,是会大大影响到软件产品的质量.但是一些非功能性的变更会让人很头疼,许多是看起来无关痛痒的.鸡毛蒜皮的变更,却是极为令人无语和无奈,甚至是烦恼和厌恶的.     (1)什么是软件需求?     在IEEE中,软件需求的定义是:用户解决问题或达到目标所需的条件或功能.一般包含业务需求.用户需求.功能

《软件需求工程(第2版)》一2.3 需求工程在软件开发中的地位

2.3 需求工程在软件开发中的地位 2.3.1 需求工程对软件开发的影响 从软件工程提出的各种开发模型中可看出,需求工程是软件开发过程中的一个阶段.有些改进的开发模型,如快速原型模型也是因用户需求问题而提出的.需求工程处于软件开发的开始阶段,提供了软件项目其余部分得以实施的根基.显然,如果在开发的后期出现错误,受到影响的只是与后期阶段相关的工作,修正错误通常也是相对容易的事情.然而,如果错误出现在开始的阶段,而且没有立即发现和纠正,那么所有后续阶段的工作都是在错误的基础上进行的,修正错误的成本将

安卓,iOS游戏开发过程中动画编辑一般选用什么软件?

问题描述 安卓,iOS游戏开发过程中动画编辑一般选用什么软件? 通过解压别人的游戏,发现序列帧动画全部基于最小尺寸,但是这样的话播放过程中肯定会出现位移现象.是不是对每一帧的坐标进行设置? 解决方案 不知道你说的出现位移现象是什么.当然没有必要保存整个画面,而只要画面中的基本元素,并且计算坐标贴图.

评审技术在高质量软件开发中的应用分析(下)

接评审技术在高质量软件开发中的应用分析(上) 三.评审在高质量软件开发的实际应用 3.1 高质量软件开发项目介绍 高质量软件,如电信软件.金融证券类软件等,有较严格的要求:可用性要求非常高,并且不会因为系统维护和扩展而带来运营中断:支持使用现有管理工具和标准进行远程管理:能够提供更出色的性能以及运营在高可用性集群上的能力,减少任何单点的软硬件失效现象.五个九(99.999%)意味着一个系统的宕机时间一年不超过5分26秒.因此高质量软件项目是一种对可用性.可靠性.稳定性要求非常高的软件项目,要求软