首页 > 技术文章 > 构建之法读后感2

gong123 2017-01-31 19:17 原文

第四章  两人合作

  结对编程是什么?

   结对编程技术是一个非常简单和直观的概念,能达到事半功倍的工作效果。但是,人与人之间的合作不是一件简单的事情——尤其当人们都早已习惯了独自工作的时候。实施结对编程技术将给软件项目的开发工作带来好处,只是这些好处必须经过缜密的思考和计划才能真正体现出来。而另一方面,两个有经验的人可能会发现配对编程里没有什么技能的转移,但是让他们在不同的抽象层次解决同一个问题会让他们更快地找到解决方案,而且错误更少。两个程序员具有相同的缺点和盲点的可能性很小,所以当我们采用结对编程的时候会获得一个强大的解决方案。而这个解决方案恰恰是其它软件工程方法学中所没有的。在我们平时的编程当中,如果遇到一个非常难解决的问题(困难到对该项目产生厌烦的态度),那么你势必会希望录求帮助,无论是从信息量庞大的网上,还是从身边的技术大师那里,你都会努力去解决(前提是你有对计算机知识的热爱)。这个时候不妨采用结对编程试一下,其它的不说,可能感觉就不同。其实结对编程坐起来很简单也很有趣,找个水平差的不太远的程序员和自己配成一对。只用一台计算机,大家选一个人坐在键盘前面负责输入,另一个人坐在后面口述。两个人要不断的交流,频率不应低于一分钟一次。整个的设计思想由后面只动口不动手的人主导,而由操键盘的人做实现。由于人的思维速度是快于输入代码的速度的。那么观看的人可以有空闲的时间做额外的思考,观察代码写的有没有问题,结构有没有问题。关于结对编程,发现了一些新的受益之处。首先,它可以促进参与项目的程序员自身的提高,一对程序员工作的时候,水平较低的一方会潜移默化地受水平略高的程序员影响,学到一些新的东西。而水平高的一方同样因为不断地把自己的想法说出来而整理了自己的思路。

 

第五章  团队和流程

  团队和流程的作用?

  软件团队的形式

  软件团队有各种形式, 适用于不同的人员和需求。软件团队的形式, 最初是混沌的一窝蜂形式: 一群人开始写代码, 希望能写好好软件。随着团队的成熟和坏境的变化, 团队模式会演变成下面的几种形式之一:一窝蜂模式 (chaos team);主治医师模式: (Chief-Programmer Team, surgical team);明星模式(Super-star model);社区模式(Community Model);业余剧团模式(Amateur Theater Team);秘密团队(skunk work team);特工(SWAT) 团队;交响乐团模式(Orchestra);爵士乐模式(Jazz Band);功能团队模式(feature team);官僚模式(bureaucratic model)。

  我们在开发,运营, 维护软件的过程中有很多技术, 做法, 习惯, 和思想。软件工程把这些相关的技术和过程统一到一个体系中, 叫“软件开发流程”,软件开发流程的目的是为了提高软件开发, 运营, 维护的效率;以及用户满意度, 可靠性,和软件的可维护性。瀑布模型(waterfall model)--软件工程还是年幼的行业的时候, 它从别的成熟行业(硬件设计, 建筑工程) 借用了不少经验和模型。在那些”硬” 的行业中, 产品大多遵循[分析-> 设计-> 实现(制造) -> 销售 -> 维护] 这个流程。 由于在硬行业中产品一旦大规模生产, 要再返回去修改时非常困难, 甚至不可能的。因此这个模型描述了单向的, 不可逆的生产过程。生鱼片模型(各相邻模块像生鱼片那样部分重叠)大瀑布带着小瀑布,为了解决不同子系统之间进度不一, 技术要求迥异, 需要区别对待的问题。有人引入了子瀑布模型。

推荐阅读