第二十一章 协同构造

协同开发实践概要

协同构建包括结对编程、正式检查、非正式技术复查、文档阅读,以及让其他开发人员共同承担创建代码及其他工作产品责任的技术。

  • 协同构建是其他质量保证技术的补充;
  • 协同构建有利于传授公司文化以及编程专业知识;
  • 集体所有权适用于所有形式的协同构建;
  • 在构建前后都应保持协作。

结对编程

成功运用结对编程的关键

  • 用编码规范来支持结对编程;
  • 不要让结对编程变成旁观;
  • 不要强迫在简单的问题上使用结对编程;
  • 有规律地对结对人员和分配的工作任务进行轮换;
  • 鼓励双方跟上对方的步伐;
  • 确认两个人都能看到显示器;
  • 不要强迫程序员与自己关系紧张的人配对;
  • 避免新手组合;
  • 指定一个组长。
  • 结对编程的好处

结对编程的好处

  • 结对能够使人们在压力之下保持更好的状态;
  • 能够改善代码质量;
  • 能够缩短时间进度表;
  • 传播公司文化,指导初级程序员,培养集体归属感。

核对表:有效的结对编程

  • [ ] 是否已经有一个编码规范,以便让程序员始终把精力集中到编程,而不是编码风格的讨论上?
  • [ ] 结对的双发是否都积极地参与?
  • [ ] 是否避免了滥用结对编程,而是选择那些能够从中获得好处的工作进行结对编程?
  • [ ] 是否有规律地对人员和工作任务进行轮换?
  • [ ] 结对组合是否在开发速度和个性方面互相匹配?
  • [ ] 是否有一个组长专注于项目管理以及与项目外的其他人沟通?

正式检查

虽然任何复查都设计了于都设计或者代码,但是正式检查(详查)还在几个关键问题上与普通复查有所区别。

  • 详查表关注的是复查者过去所遇到的问题;
  • 详查专注于缺陷的检测,而非修正;
  • 复查人员腰围详查会议做好预先准备,并且带来一份他们所发现的已知问题列表;
  • 参与者都被赋予了明确的角色;
  • 详查的主持人不是被检查产品的作者;
  • 详查的主持人应该已经接受过主持详查会议方面的培训;
  • 只有在与会者都做好充分准备之后才会召开详查会议;
  • 每次详查所收集的数据都会被应用到以后的详查中,以便对详查进行改进;
  • 高层人员不参加详查会议,除非你们正在详查一个项目的计划,或者其他管理方面的资料,但技术负责人可能参加。

详查的一般步骤

  • 计划;
  • 概述;
  • 准备;
  • 详查会议;
  • 相差报告;
  • 返工;
  • 跟进;
  • 第三个小时的会议。

核对表:有效的详查

  • [ ] 你是否有一个核对表,能让评论员将注意力集中于曾经发生过问题的领域?
  • [ ] 你是否专注于找出错误,而不是修正他们?
  • [ ] 你是否考虑制定某些视角或者场景,以帮助评论员在准备工作的时候集中注意力?
  • [ ] 你是否给与评论员足够的时间在详查会议之前进行准备,是否每一个人都做了准备?
  • [ ] 是否每一个参与者都扮演一个明确的角色——主持人、评论员及记录员等?
  • [ ] 会议是否以某种高校的速度进行?
  • [ ] 会议是否限制在两个小时以内?
  • [ ] 是否所有相差会议的参与者都接受了如何进行详查的针对性培训,是否主持人接受了有关主持技巧方面的针对性培训?
  • [ ] 是否将每次详查所发现的错误数据都收集起来,使你能调整本组织以后使用的核对表?
  • [ ] 是否收集了准备速度和详查速度方面的数据,以便你去优化以后的准备和详查工作?
  • [ ] 是否每次详查中被指派下去的活动都被正确跟进了,无论是通过主持人自己还是一词重新详查?
  • [ ] 管理层是否理解他们不应参与详查会议?
  • [ ] 是否有一个用于保证修正正确性的跟进计划?

其它类型的协同开发实践

  • 走查;
  • 代码阅读;
  • 公开演示;

要点

  • 协同开发时间往往能比测试发现跟多缺陷,并且更有效率;
  • 协同开发实践所发现错误的类型通常跟测试所发现的不同,这意味着你需要同时使用详查和测试保证你软件的额质量;
  • 正式检查通过运用核对表、准备工作、明确定义的角色以及对方法的持续改善,将缺陷侦测的效率提升至最高;
  • 通常,结对编程拥有和详查相同的成本,并且能产生质量相当的代码;
  • 正式检查可以应用咋出代码之外的很多工作成果上,例如需求、设计以及测试用例等;
  • 走查和代码阅读是详查的替代方案。代码阅读更富有弹性,能有效地利用每个人的时间。

原文地址:https://www.cnblogs.com/liam-ji/p/11562955.html

时间: 2024-10-15 17:27:16

第二十一章 协同构造的相关文章

2017.2.15 开涛shiro教程-第二十一章-授予身份与切换身份(一) table、entity、service、dao

原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 第二十一章 授予身份与切换身份(一) 1.使用场景 某个领导因为某些原因不能访问一些网站,他想把这个网站上的工作委托给秘书,但是他又不想提供账户.密码.此时可以使用shiro的 RunAs 功能. RunAs:允许一个用户假装为另一个用户(如果获得了允许)的身份进行访问. 注意,本章代码基于<第十六章 综合实例>,详细的数据模型及基本流程见该章. 2.表及数据

从零开始的linux 第二十一章(Inode以及Block详解其二与软链接)

从零开始的linux 第二十一章 在紧张的学习中,又迎来了新的一周~~小编也在同学们的迫切要求下继续来更新博客咯~~ 同学们:"我们才没要求你!" 唉??同学们一点都不配合呢~~别不好意思嘛~~ 好啦~不逗你们了,小编就节省大家的时间,赶快开始这章的课程吧~~ 在上一章中,小编给同学们讲了 Inode号 和 Block,不过还没有给同学们讲完哦~所以上一章的题目是 其一 ,那么毫无疑问这一章就是其二的内容咯~从上一章同学们已经了解了什么是Inode和Block,以及Inode中包含哪些

第二十一章

孔德之容,唯道是从.道之为物,唯望唯沕.沕呵望呵,中有象呵:望呵沕呵,中有物呵:幽呵冥呵,中有精呵:其精甚真,其中有信.自今及古,其名不去,以顺众父.吾何以知众父之然也?以此. “   孔德之容”,大德的这种运动“唯道是从”,它只是去追随道的运转,或者是按照道的这个运转规律去运转,所以老子在这讲出来道是德的内在动力,德是道的外在体现,大德,德行的这种运动完全是按照道的规律去运转的,叫唯道是从.您如果懂得了道的原理,您就能够从容的去做这个德了 沕是深远的意思,那个望是辽阔辽远的意思,没有边界,这个

C#高级编程第11版 - 第二十一章

导航 C# 全版本特性一览 全书目录 第二十一章 Tasks and Parallel Programming 21.1 概述 459 21.2 Parallel 类 460 21.2.1 使用Parallel.For()方法循环 460 21.2.2 提前中断Parallel.For 462 21.2.3 Parallel.For()方法的初始化 462 21.2.4 使用Parallel.ForEach()方法循环 463 21.2.5 通过Parallel.Invoke()方法调用多个方法

第二十一章、使用查询表达式来查询内存中的数据

什么是语言集成查询(LINQ) 对从应用程序代码中查询数据的机制进行了“抽象”.这个功能称为“语言集成查询”(Language Integrated Query). LINQ的设计者大量借鉴了关系数据库管理系统(例如Microsoft SQL Server)的处理方式,将“数据库查询语句”与“数据在数据库中的内部格式”分隔开.LINQ的语法和语义和SQL很像,具有许多相同的优势.要查询的数据的内部结构发生改变后,不必修改查询代码.注意,虽然LINQ和SQL看起来很像,但LINQ更加灵活,而且能处

第二十一章 命名空间和程序集

命名空间和程序集引用其他程序集mscorlib库命名空间命名空间名称命名空间的补充命名空间跨文件伸展嵌套命名空间using 指令using命名空间指令using别名指令程序集的结构程序集标识符强命名程序集创建强命名程序集程序集的私有方式部署共享程序集和GAC把程序集安装到GACGAC内的并肩执行配置文件延迟签名 命名空间和程序集 引用其他程序集 在第1章中,我们在高层次上观察了编译过程.编译器接受源代码文件并生称名称为程序集的输出文件.这一章中,我们将详细阐述程序集以及它们是如何生成和部署的.你

TCP/IP详解 卷1 第二十一章 TCP的超时与重传

21.1 引言 可靠性的保证之一就是超时重传 前面两个超时重传的例子 1)  ICMP端口不能到达时,TFTP客户使用UDP实现了一个简单的超时和重传机制,假定5s是一个适当是时间间隔,并每隔5s进行重传 2)  在向一个不存在的主机发送ARP的 例子中,可看到当TCP试图建立连接的时候,在每个重传之间使用一个较长的时延来重传SYN 对于每个连接,TCP管理4个不同的定时器: 1)  重传定时器使用于当希望收到另一端的确认 2)  坚持(persist)定时器使窗口大小信息保持不断流动,即使另一

《FPGA全程进阶---实战演练》第二十一章 电源常用类型:LDO和 DCDC

高速电路中的电源设计 高速电路中的电源设计大概分为两种,一种是集总式架构,一种是分布式架构.集总式架构就是由一个电源输入,然后生成多种所需要的电压.如图1所示.这种架构会增加多个DC/DC模块,这样成本不可控,PCB面积也需要增加,但集总式分布架构可以提高整体电源转换效率. 图1 集总分布架构 分布式架构是先由一个模块生成一个中间电压,然后再去转换成其他单板所需要的电压,如图2所示.第一级输出可以要求有较大的噪声和纹波,第二级电源输出所需要的各种电源,这时必须考虑纹波和噪声问题.但分布式也有一个

《FPGA全程进阶---实战演练》第二十一章之 几种常用电平分析及特性

TTL,CMOS以及LVTTL,LVCMOS TTL和CMOS是数字电路中两种常见的逻辑电平,LVTTL和LVCMOS是两者低电平版本.TTL是流控器件,输入电阻小,TTL电平器件速度快,驱动能力大,但功耗大.CMOS是MOS管逻辑,为压控器件,且输入电阻极大,CMOS电平器件速度慢,驱动能力不足TTL,但功耗小.正是由于CMOS器件输入阻抗很大,外界微小的干扰就有可能引起电平的翻转,所以CMOS器件上未使用的输入引脚应做上下拉处理,不能浮空. 由于TTL和CMOS电平在0或1时不一样,所以需要