《人月神话》读后感

人月神话这本书,把软件项目开发的流程与人类社会的生产生活中实际存在的经验相结合,特别是对大型团队的描述,使没有参与过大型项目开发的人来说,生动的解释如何管理一个团队,以及团队中每一个角色的作用和责任。原来软件工程这种看起来高端的团队,也必须遵守社会生产的某些客观规律。人月神话强调一个说法,人和月不可以完全按照一定的比例替换,人多可以减少月的消耗,但是人越多需要多交流和消息交换出错的消耗也会增加,特别是大量的增加人力,更需要一个清晰高效率的团队架构支撑。

       外科医生的架构是一种高效的开发团队组成,研究表明,优秀程序员和一般程序员之间生产率的差异,比想象的更加夸张。开发的成本主要体现在相互沟通和交流之间的消耗,就像一个简单的传话游戏,第一个人说一句话,到了最后一个人说出来的话可能已经面目全非。而在软件项目中沟通带来的不良影响表明,一个系统应该由尽可能少的人员开发。但是对一个大型系统,面对有大量重复的工作量,过于精简的队伍也不是一个好的选择,因为人数的不足,不能使产品在时间上满足需求。外科医生团队更加注重各人的分工合作,由一个人完成独立的一部分工作,降低每个人的耦合度,每个成员专注于自己的优势项目,建立了一种看起来不平等的成员关系,但是太多的人做决策,在软件工程上并不是一件好事情,因为前面提到优秀程序员和一般程序员之间的差异,决定了并不需要那么多人参与决策。为了满足一个软件项目的概念完整性,也只需要由一个人或者少数几个人来设计架构,而大型项目必须要由大量的开发人员才能在短时间内完成,因此外科医生架构是一种崭新的组建编程开发团队的方法。系统的结构师,就相当于建筑设计师一样,是用户的代理人,他们的工作是运用专业技术只是来支持用户的真正利益,而不是诶胡销售人员鼓吹的利益。

       这种团队的关系可以用贵族统治和民主政治的关系来比较。结构式就像新兴的统治阶级,他们占据了项目的创造性。并非要完全由他们来提出一个软件项目的创意,但是是否将这样一个创意纳入系统完整性的考虑范围之内,是需要他们来决策的。对于普通的程序员来说,纪律的重要性要大于每个人提出的新的思路和想法,很多行业的典型案例表明,下层工人的纪律性和操作的规范性,特别对于一个大型项目是十分有益的。实际上,产品的成本性能比很大程度上要依靠实现人员,就如同易用性很大程度上依赖结构式一样。没有规矩,不成方圆。因此,结构师和底层开发人员之间需要彻底的交流,更需要每一个员工对最终讨论出的方案贯彻执行因此很多公司把操作规范和流程写成员工的清晰简洁有针对性的工作手册。

       巴比伦塔在建造之前被人寄予了很高的期望,然而事实是残酷的。当今天人们重新考虑失败的原因,并非是人力材料时间或者是技术难题。巴比伦王国拥有的资源是完全能胜任这项工程的。在这之中缺少的就是交流,同级员工之间的交流,上层管理者和员工之间的交流。 沟通的障碍和团队建设的缺陷最终导致了部落的分裂,巴比伦塔也再也没有建成。大型的软件项目中,许多小组慢慢地修改自己程序的功能、规模和速度,他们明确或者隐含的更改了一些有效输入和输出结果用法上的约定。开发团队成员之间有效的交流,可能的途径有以下几种。非正式途径,如电话会议。常规的会议,各项目小组对当前小组进度进行阐述介绍。工作手册,需要在一个项目的开始阶段就定下并严格执行的开发章程。公共引用程序的用户在时间和空间上都原理它们的作者,因此对于这类程序,文档的重要性不言而喻,对软件编程产品来说,程序向用户所呈现的面貌和提供给机器识别的内容通用重要。

       对一个大型程序,除了运行时间之外,占用的系统资源也是主要开销。特别是开发专用软件,用户一般对资源的要求十分严格。对项目经理而言,控制规模既是技术工作的一部分,又是管理工作的一部分。空间预算的多少和控制并不能减少程序的规模,程序可以有很多的功能选择,设计人员必须决定用户可用项目的粗细程度,既保持用户的需求满足的情况下,尽量减少多余不必要模块占用资源。更普遍的是,战略上突破常来自数据或表的重新表达,最直接的方法是提升算法的复杂度,但是由新的算法提升程序的性能,成本也不一定比多消耗一些空间来的低。

       就软件开发的工具和开发效率的关系而言,很多软件项目的开发人员使用着自己的工具,这是一个错误的做法,通用的工具也并不能完全解决问题,应该在确定的开发平台上,针对各个开发人员的开发环境进行定制。当今使用高级语言开发的主要原因是生产效率以及调试速度。在调试上,使用高级语言存在更少的bug,它避免在错误面前暴露所有级别的工作。但是,这样开发的方式使得代码量过于庞大,因此程序员更多是要对代码的逻辑进行调试运行。构建单元调试一般分为四个步骤。本机调试,内存转储,快照,和交互式调试。软件系统开发过程中出乎意料的困难部分是系统集成调试。系统调试花费的时间比预料的时间要长。使用完好的、经过调试的构件,能比搭建测试平台和进行全面的构件安全测试节省更多的时间。一种测试平台的形式是伪构件,它仅仅由接口和可能的委书记或者一些小的测试用例组成。另一种形式是微缩文件,很常见的一类bug来自对磁带和磁盘文件格式的错误理解。还有还有一种方式是辅助程序,用来测试数据发生器、特殊的打印输出、交叉引用表分析等,这些都是需要另外开发的专用辅助工具的例子。

       在测试的过程中往往会出现意外,让人们认为项目的进度出现了偏离,然而这些偏离并不是短时间之内造成的,一天一天的进度落后难以识别、不容易防范、难以弥补。为了严格控制项目的进度,一个重要的步骤是制定进度表。进度上的每一件事,被称为一个里程碑。里程碑只有一个原则。那就是里程碑必须是具体的、特定的、可度量的事件。比如一个程序的编写时间达到一半的时候就声称完成90%,调试在大多时候都是99%完成的,这些并不能作为一个里程碑事件。具体的里程碑是百分之百的事件。结构式和实现人员签字认可的规格说明、100%源代码编写完成等等,这些才是一个里程碑事件。里程碑有明显的边界而且,没有歧义,比它容易被老板核实更为重要。如果里程碑定义得非常明确,以致于无法自欺欺人时,很少有人会就里程碑的进展弄虚作假。但是如果里程碑很模糊,老板就常常会得到一份与实际情况不符的报告。毕竟没有人愿意承受坏消息,这种做法只是为了起到缓和作用,并没有任何蓄意的欺骗。如果在某项活动开始之前就着手估计,并且每两周进行一次仔细的修订,这样,随着开始时间的临近,无论最后情况会变得如何的糟糕,它都不会有太大的变化。活动期间,对时间长短过高的估计,会随着活动的进行持续下降。过低估计在活动中不会有太大的变化,一直到计划的结束日期之前大约三周左右。当一线经理发现自己的队伍出现了计划偏离时,他肯定不会马上赶到老板那里去汇报这个令人沮丧的消息。团队可以弥补进度偏差,他可以相处应对方法或者重新安排进度以解决问题,解决这类问题是一线经理的职责。但是每个老板都需要两个信息,需要采取行动的计划方面的问题、用来进行分析的状态数据。

       所有软件活动包括根本任务,即打造由抽象软件构成的复杂概念结构,次要任务,即使用编程语言表达这些抽象实体。软件生产率在今年内取得的巨大进步来自对后天障碍的突破。因此,更重要的是关注软件任务中的必要活动,也就是那些和构造一场复杂的抽象概念结构有关的部分。作者建议,在开发前对市场调研,避免开发已上市的产品。在获取和制定软件需求时,将快速原型开发作为迭代计划的一部分。有机的更新软件,随着系统的运行、使用和调试,逐渐添加越来越多的功能。不断挑选和培养杰出的概念设计人员。大家熟悉的软件项目有一些人狼的特性,常常凯斯简单明了的东西,却有可能变成一个落后进度、超出预算、翠在大量缺陷的怪物。因此,我们听到了近乎绝望的寻求银弹的呼唤,寻求一种可以使软件成本像计算机硬件成本一样降低的方案。但是软件行业和硬件有着明显的区别,有很多工作必须要大量的人力配合熟练才能在短时间内完成。并非一个新技术出来就可以大量的量产,快速提高生产效率。并不是由于软件发展的太慢,而是计算机硬件发展的太快。现代软件系统有一些无法规避的内在特性:复杂度、一致性、可变性和不可见性。团队成员之间的沟通非常困难,导致了产品瑕疵、成本超支和进度延迟,由于函数的复杂度,函数调用变得困难,导致程序难以使用;由于结构性复杂度,程序难以在不产生副作用的情况下使用新函数补充,由于结构性复杂度造成很多安全机制状态上的不可见性。某些情况下,因为是开发最新的软件,所以它必须遵循各种借口,另一些情况下,软件的开发目标是兼容性。在上述的所有情况中,很多复杂性来自保持与其他接口的一致,对软件的任何再设计,都无法简化这些复杂特性。系统中的软件包含了很多功能,而功能是最容易感受变更压力的部分。软件可以很容易的进行修改,它是村翠思维活动的产物,可以无限扩展。功能扩展的主要压力来自那些喜欢基本功能,又对软件提出了很多新用法的用户们。软件的客观存在不具有空间的形体特征,因此没有已有的表达方式,当我们试图用图形来描述软件结构时,我们发现它不仅仅包含一个,而是很多相互关联、重叠在一起的图形。在银弹难以寻找到的状况下,面向对象被认为是铜弹,它强制的模块化和清晰的接口,强调了封装,集成和层次化类机构以及虚函数。面向对象还强调了强抽象数据类型化。然而面向对象发展变得缓慢,OO程序员经理了很多混乱的应用,他们所关注的是低层次而不是高层次的抽象。他们回归到软件的基本问题,主张一种解决软件不能满足要求的方法。面向对象是难以学习的,他们用前期学习的时间来换取后期开发的速度,一个OO程序员的学习时间要比面向过程的程序员学习周期长得多,但是面向对象仍然有取代面向过程语言的趋势。代码重用是提高开发速度的一个重要环节,但是除了一些专业软件,很多公司的重用行研究还没有完全成功。软件系统可能是人类创造中最错综复杂的事物,酸碱工程的交友坑将在未来很长一段时间内会继续的使人们举步维艰,无法自拔。

 

中国科学技术大学软件 庄哲伟 原创作品转载请注明出处

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值