http://blog.csdn.net/horkychen/article/details/5035769

软件开发过程中的审查 (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.向相关人员报告细节问题,对于项目管理人员要考虑有无替代方案。[负责人及时间]
 
相应的审查一方面要针对每项进行,另外也要有一个统一个状态报告会议,以此来加强组织的有效性。当然这样的问题应及早被识别成风险或问题来加以预防,越少发生越好。
 
 
还有一种主动的自我审查方式。
 
无论对于管理者还是工程师,一定要清楚,你的主管、客户和老板,都需要知道你在做什么!及时的汇报是非常必要的,这也是一种主动的审查,它的效率更高。所以我们可以要求承担重点开发任务的人员周期性提交状态报告,将做过的事情、遇到的问题、后续的计划表列出来。其他人可以另作要求。管理者则应主动为其提供相应支持,这样就可以保持一个较为良性的互动。
 
审查之所以重要,是因为我们处在越来越讲求效率与生产力的环境,走越少的弯路,我们的企业才会更多的利润,员工才有更大的空间。这是管理者与工程师需要共同承担的责任。
*有点乱,先写到这,以后再完善!

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

  1. 在统一软件开发过程中使用UML

    如何在统一软件开发过程中使用UML? 起始阶段常用UML图 在起始阶段,通常有用例图.类图.活动图.顺序图等UML图的参与. 获取用户需求之后首先要将这些需求转化为系统的顶层用例图. 在确定了用例之后 ...

  2. 软件开发过程中常用的环境解释DEV FAT UAT PRO

    1.DEV Development environment 开发环境,用于开发者调试使用 2.FAT Feature Acceptance Test environment 功能验收测试环境,用于软件 ...

  3. 个人阅读作业2:结合《No Silver Bullet》谈谈我在软件开发过程的遇到的困难与体会

    英文捉急,只能挑一段看得比较懂的,而且正好和我们现在编程任务联系比较紧密的内容来谈一谈体会. 在<No Silver Bullet>中,作者描述了造成软件本质性困难(essence)的四个 ...

  4. 敏捷开发系列之旅 第五站(不一样的RUP统一软件开发过程)

    概述   RUP,统一软件开发过程,是一个面向对象且基于网络的程序开发方法论.根据Rational的说法,RUP就好像一个在线的指导者,他可以为所有方面和层次的程序开发提供指导方针.模板以及事例支持. ...

  5. 保证软件开发过程遵循ISO 26262功能安全标准的十个主要进阶步骤

    保证软件开发过程遵循ISO 26262功能安全标准的十个主要进阶步骤 为保障汽车软件质量,使软件开发符合ISO 26262功能安全标准,需要我们对开发流程做出改进,并与2018年的更新同步. 本视频课 ...

  6. Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计

    Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计 1.1. software development methodology (also known as SDM 1 1 ...

  7. 【转】UML图与软件开发过程那点关系

    首先,软工文档, 软工文档,也就是计划,设计,描述,使用软件的一些文件,它最大的特点就是固定不变,用来给不同的人和计算机来阅读.在期间,文档起到了桥梁的作用,看这张图很形象: 在这里在看一下国家统一规 ...

  8. SubSonic3.0 Demo1.0——应用了T4模版可减少开发过程中70%以上的代码量以及80%以上的出错率

    应网友的要求,抽了点时间写了这个Demo,希望对2.2版想升级到3.0的朋友或正在使用3.0的朋友有所帮助.大家在使用Demo过程中如果发现什么问题或有什么建议,可以直接将Bug提交给我或告诉我,我会 ...

  9. 客户关系管理系统(CRM)的开发过程中使用到的开发工具总结

    开发<客户关系管理系统(CRM)>软件过程,也就是一个标准的Winform程序的开发过程,我们可以通过这个典型的软件开发过程来了解目前的开发思路.开发理念,以及一些必要的高效率手段.本篇随 ...

随机推荐

  1. 5050 [JL] 他爱上了鸭蛋

    5050 [JL] 他爱上了鸭蛋  时间限制: 1 s  空间限制: 1000 KB  题目等级 : 白银 Silver 题解       题目描述 Description 小明爱上了零鸭蛋.他喜欢输 ...

  2. SSH公钥认证+优化

    一 ssh公钥认证流程: sshclinet机器:产生公私钥(公钥相当于一把锁) sshclient:将公钥发给sshserver(抛出锁子) sshclinet去连sshserver不需要密钥   ...

  3. The ServiceClass object does not implement the required method in the following form: OMElement sayHello(OMElement e)

    今天遇到一件诡异的事情,打好的同一个aar包,丢到测试环境tomcat,使用soapui测试,正常反馈结果. 丢到本地tomcat,使用soapui测试,始终报以下错误. <soapenv:En ...

  4. C#模拟POST提交表单(一)--WebClient

    C#的提交表单方式主要有两种WebClient与HttpWebRequest,这里先介绍一种 WebClient,转送门:http://msdn.microsoft.com/zh-cn/library ...

  5. 2015年新版C#从入门到精通(第2版)视频教学录像【无水印版】

    <c#从入门到精通(第2版)>以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍了c#的相关知识和实战技能.<c#从入门到精通(第2版)>第1篇[c#语言基础]主要讲解c# ...

  6. matlab中findstr,strfind,strcmp,strncmp区别与联系

    在Matlab中,这几个函数区分如下: (以下默认S1和S2是字符串,同样也适用于cell细胞类型数据,也就是循环对cell中每个元素分别判断即可.) findstr(S1,S2):寻找是否有S1和S ...

  7. 浪潮之巅IT那点事之一——AT&T的兴衰

    首次接触到<浪潮之巅>这本书,几乎是熬了一个通宵把上下两册全部看完,感慨颇多.从事计算机基础教育多年,每次在讲计算机导论课程时,总是在重复同样的内容,讲一些计算机结构.操作系统.算法.软件 ...

  8. Buffer lab——20145326蔡馨熠

    Buffer lab   缓冲区溢出攻击的原理 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由 ...

  9. Django实际站点项目开发经验谈

    开发了两个月的Django站点正式上线了,看着网站从无到有,从前端到后台,从本地开发到环境部署,一点一滴的堆砌成型,着实带给我不小的乐趣. Django站点介绍: 开发环境:阿里云服务器centos6 ...

  10. LinuxMint下Apache Http源码安装过程

    1. 源码包下载 Apache Http安装要求必须安装APR.APR-Util.PCRE等包. Apache Http包下载地址:http://httpd.apache.org/download.c ...