标签:
对于《人月神话》这本书,之前也可以说是久仰大名了,但却一直没有着手来看,这学期选修了软件工程这门课,老师更是推荐阅读,于是乎,借着这个机会仔细拜读。
看完此书后,我发现人月神话无处不在,本书作者为人们管理复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践。我从中也得到了很多的体会,读过《人月神话》我得到了一些体会。总结出了以下几点:
1.经济、效率最大化
“一个拿2倍工资的人,生产率可能是其他人的10倍。”短小精悍的团队是最棒的—尽可能用最少的人。两人团队,其中一个当领导者,这通常是最佳的用人方式。绝大多数大型软件系统的经验显示,使用一堆人蛮干的方式最耗成本、最慢、最没有效率,做出来的系统在概念上也最不完整。我觉得,作为公司,应该给最好的人最好的待遇,或者说给比目前更高的待遇。组建一个团队,最好的就是那种精英团队。微软就是这种思路吧,把最聪明的人集中在一起,想不成功都难。
软件编码实现过程中,需要的不是人多,而是少而精额的优秀程序员,编码员。所以整体程序员的素质很重要,有必要培训提高他们的素质。
对于第二系统,甚至第三系统的设计,都是一种倾向于过度设计的现象,这种现象不但消耗了巨大花费,而且将没有经验的开发人员拉进开发是一件很尴尬的事情,并不会给软件管理带来好处,并且,还极有可能会带来对经济的浪费和效率的降低。
2.构架师与概念的完整性
在保持设计的概念完整这一方面上。无论对小软件还是大软件,都必须由一个设计师主导,最多两个人讨论来共同完成软件的整体设计。
构架设计通常有核心设计小组完成,将设计概念传达到整个开发团队是贯彻概念完整性的必然要求。以System 360 的开发经验为例,要贯彻概念完整性,需要团队中保持良好顺畅的沟通和交流,采用形式化定义等技术来确保概念被精确地定义和传达。独立的测试小组是系统质量的良好保证。
对于一个软件,一个系统的编写,必须有一个清晰明确的概念模型,大家都在这个框架下工作,所有的创新发展都必须与基本的概念相吻合。具体的实现人员可以细化概念,但只有总设计者才有否定与发展基本概念的权力。但是,设计中即使是总设计师一直是同一个人,他脑海中所认为理所当然的规则或者概念,很可能由于没有明确的文档化,而没有成为所有开发者共同的概念。对于很多小规模软件,因为开发人员不多,所以开发经理一般都能控制住所有的代码,概念完整性在组织层面就维持住了。但是在以后的Bug修改,功能扩展的时候,也要时刻留意与最初的设计是否概念上相容。对于大规模的软件系统,则必须通过树状组织结构,层层控制,总设计师还是一到两人,每一层都有对下层的绝对把握能力。这软件工程的开发过程中,概念完整性将软件开发连成一条钻石项链,每个部分都不可忽视,不可取代。整体的抽象完整时软件管理的灵魂。一个整洁、优雅的变成产品必须向它的每位用户提供一个条理分明的概念模型,这个模型描述了应用,实现应用的方法以及用来指明操作和各种参数的用户界面使用策略,概念的完整性好是易用性中最重要的因素。而构架师,则是负责保证产品所有方面的概念完整性的,构架师设计的是能够让用户理解产品概念的模型,这包括所有的功能的详细说明以及调用和控制的方法。它就像电影的导演一样。因此,构架师充当着重要的角色。
3.资源的利用、价值的最优
一个已开发的项目,我们需要对它进行后期的维护。其维护基本上不同于硬件的维护,它主要由各种变更组成,如修复设计缺陷、新增功能、或者是使用环境或者配臵转换引起的调整而且维护总成本通常是开发的成本的40%或更多。维护成本受用户数目的严重影响,用户越多,所发现的从错误越多。在每次修复之后,必须重新运行先前所有的测试用例,从而确保系统不会以更隐蔽的方式被破坏。其实,对于一个项目,我们要尽量做到完美,减少以后的维护困难和成本。
调试,是一种检验程序中的方法。然而调试时系统编程中很慢和较困难的部分,而漫长的调试周转时间时调试的祸根。它可以持续一个很长的时间,从而可能影响项目的交付日期。
做好软件开发的前期工作,对成本的降低起到很大的作用。说实在的,编程占得时间并不多。而在前期的准备工作做好了。前期的文档需要分析写好了。后面的软件的编程就水到渠成了。软件编程的那些代码都是死的。都是有固定的算法。编程的方法在那的。唯一变化的是前期的需求分析和文档。做好了这个,这个项目就算成功可一半。 另外,能善于用工具,也能大大的降低成本,提高价值。很多编程都用记事本编写。用工具也能达到同样的效果,还可能比记事本更好,那我们为什么不用工具呢。好的工具能提高办事效率。能缩短我们项目的开发时间,时间就是金钱。
软件系统也是人类创造的错综复杂的食物。只有大家彼此沟通,彼此理解,多讨论,多合作。才能使一个软件更加完善。才能做出精品的软件。
4.成功的秘诀
在编程的过程中,有许多的项目最终是失败的。
我什么他们会失败呢?原因就在与彼此之间缺乏沟通以及交流的结果。客户的前期需求有很大的不确定性,可能在开始时大家都以为说的是同一个事,但当做出来之后客户发现与自己想象的相差太远。同时,用户在操纵上的习惯题目也会成为一个不能忽视的因素,这也应该算作是需求的一部分吧。用户与开发项目组加入不在需求上认真“较真”,那以后额题目就会不断涌来了。这需要靠什么约束呢?靠文档,靠白纸黑字的文档。对于生活呢?我为想在社会生活的更好,良好的沟通与交流是必不可少的。世上有太多的不确定事情,而个人的力量毕竟有限,这就需要借助朋友的力量。再借助朋友的力量时,沟通和交流则是首先必须做到的。怎样的沟通,如何的沟通,这都是我们应该考虑的。
5.坚持不懈的努力与转变
人狼是传说中的妖怪,只有银弹才能杀死他。作者认为软件项目具有人狼的特性,因为软件项目也可能变成一个怪物,一个落后进度、超出预算、存在大量缺陷的怪物。作者通过软件系统的内在特性复杂性、一致性、可变性和不可见性来分析说明了软件天生就没有银弹。 作者试图通过分析软件问题的本质和很多侯选银弹的特征来探究其中的原因。他行动的第一步是将大块的“巨无霸理论”替换成“微生物理论”。
还有中国妈妈和德国妈妈的故事,中国妈妈本来有优越的技巧能够更快的找到针,但中国妈妈却不知道寻找更快的方法,而是一直以与生俱来的方法去寻找,而德国妈妈因为原本的速度慢,因此一直不断的寻找方法提高找针的速度,德国妈妈通过多次找针的实验数据,分析出针掉到整个房间中各个小圈的概率,总结出针在哪个小圈的概率最大,很快就可以找到针,找针的速度早就超过了中国妈妈,在这个故事中德国妈妈把大块的“巨无霸理论”替换成“微生物理论”。
从“巨无霸理论”替换成“微生物理论”这个变化的过程告诉我们。进步是逐步取得的,伴随着辛勤的劳动,对规范化过程应进行持续不懈的努力,以及合适的转变、替换,而这个努力的过程相应的就诞生了软件工程。
总而言之,无论是编程还是人生中,都需要有坚持不懈的精神品格,和对于问题的转换角度解决,换一种角度,换一种方法,或许能够得到更好的答案。
《人月神话》,创造了编程世界的神话,也创造了人生历史的神话,更创造了人生哲理的神话。
《人月神话》,是难得一见好书,读罢,只能说让我受益匪浅!
标签:
原文地址:http://www.cnblogs.com/smh0923/p/5582122.html