标签:软件开发
人月神话这本书在软件技术人员中很有名,我的软件工程导论老师都建议我们去看。我在网上找到了PDF电子书,就看了一点。作者阐述的主要观点是在软件开发项目上项目进度和增加人员这两个概念是不能互换。
当我看到外科手术队伍这一章节时,这一章节虽然简单,但外科手术队伍这比喻却用得很形象。其中人月,人年这些单位很容易想偏,其实它们讲的都是软件技术人员完成项目所需要的人和时间。比如完成一个项目需要50人月,则需要50个技术人员在1个月完成,人数增加,则时间缩短,反之,则时间增长。而如果人数越来越多 ,是不是时间越来越短呢,作者给的答案是否定的,有些时候,一个小型项目,20个人会比200个人更有效率。20个能干有经验的人更比200个平庸的人有效率。然而,大型项目的开发时,仅仅靠20个人是难以完成的。比如说完成一个项目需要5000人年,200个平庸的人需要25年,而10个人,,假设他们都非常厉害,比一般的编程人员在编程和文档方面的生产率高7倍。假定原有开发人员是一些平庸的编程人员(这与实际的情况相差很远)。同样,假设另一个生产率的改进因子提高了7倍,因为较小的队伍所需较少的沟通和交流。那么,5000/(10×7×7)= 10,他们需要10年来完成5000人年的工作。一个产品在最初设计的10年后才出现,还有人会对它感兴趣吗?或者它是否会随着软件开发技术的快速进步,而显得过时呢?
这时就提出了“外科手术队伍”这个概念。大型项目的每一部分由一个团队组成,如同外科手术方式组建。即一个人来进行问题的分解,其他人给予他所需要的支持,以提高效率和生产力。
将这10个人分工明确,首先是外科医生,也就是首席程序员,他亲自定义功能和性能技术说明书,设计程序,编制源代码,测试以及书写技术文档。副手。他是外科医生的后备,能完成任何一部分工作,但是相对具有较少的经验。他的主要作用是作为设计的思考者、讨论者和评估人员。管理员控制财务、人员、工作地点安排和机器的专业管理人员,该管理员充当与组织中其他管理机构的接口。编辑根据外科医生的草稿或者口述的手稿,进行分析和重新组织,提供各种参考信息和书目,对多个版本进行维护以及监督文档生成的机制。两个秘书。管理员和编辑每个人需要一个秘书。管理员的秘书负责项目的协作一致和非产品文件。程序职员,他负责维护编程产品库中所有团队的技术记录。工具维护人员,是检查他的外科医生所需要的工具。工具维护人员常常要开发一些实用程序、编制具有目录的过程库以及宏库。测试人员,外科医生需要大量合适的测试用例,用来对他所编写的工作片段,以及对整个工作进行测试。因此,测试人员既是为他的各个功能设计系统测试用例的对头,同时也是为他的日常调试设计测试数据的助手。他还负责计划测试的步骤和为测试搭建测试平台。语言专家,寻找一种简洁、有效的使用语言的方法来解决复杂、晦涩或者棘手的问题。他通常需要对技术进行一些研究(两到三天)。通常一个语言专家可以为两个到三个外科医生服务。
现在所面临的问题是如何完成5000人年的项目,而不是20或30人年规模的系统。如果整个工作能控制在范围之内,10人的团队无论如何组织,总是比较高效的。但是当面对几百人参与的大项目时,我们需要将团队扩建,扩建过程的成功依赖于这样一个事实,即每个部分的概念完整性得到了彻底的提高——决定设计的人员是原来的七分之一或更少。所以,可以让200人去解决问题,而仅仅需要协调20个人,即那些“外科医生”的思路。
标签:软件开发
原文地址:http://13271983.blog.51cto.com/13261983/1970339