[人月神话]读书笔记2--项目分工&&项目概念完整性

外科手术队伍(The Surgical Team)

效率高和效率低的实施者之间具体差别非常大,经常达到了数量级的水平。
$20,000/年的程序员的生产率可能是$10,000/年程序员的10倍。
需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果(系统调试)。

一拥而上的开发方法是高成本的,速度缓慢的,不充分的,开发出的是无法在概念上进行集成的产品。

例如,考虑OS/360项目,总共5000人年,如果人月可以等量置换的话,200人队伍需要25年的时间
  设想OS/360的工作由一个小型、精干的团队来解决。
1)譬如10人队伍,一般的编程人员在编程和文档方面的生产率高7倍。
2)假设另一个生产率的改进因子提高了7倍。
3)较小的队伍所需较少的沟通和交流。
那么,5000/(10×7×7)= 10,他们需要10年来完成5000人年的工作。
如果人月可以等量置换的话,那么10个人也要500年,但是精英团队10个人只要10年。
仅仅在减少了交流的成本和生产率,就有了这50倍的差距。

Mills的建议
Mills建议大型项目的每一个部分由一个团队解决
1)外科医生。Mills称之为首席程序员。
 极高的天分、十年的经验和应用数学、业务数据处理或其他方面的大量系统和应用知识。
2)管理员
 控制财务、人员、工作地点安排和机器的专业管理人员,该管理员充当与组织中其他管理机构的接口
3)副手
  他是外科医生的后备,能完成任何一部分工作,但是相对具有较少的经验。他的主要作用是作为设计的思考者、讨论者和评估人员。
4)编辑。外科医生负责产生文档,他必须书写文档
5)程序职员
  他负责维护编程产品库中所有团队的技术记录
6)工具维护人员
  保证所有基本服务的可靠性,以及承担团队成员所需要的特殊工具(特别是交互式计算机服务)的构建、维护和升级责任。
7)测试人员
 负责计划测试的步骤和为测试搭建测试平台。
8)语言专家

 总有一两个乐于掌握复杂编程语言的人。他们不同于外科医生,外科医生主要是系统设计者以及考虑系统的整体表现。
 而语言专家则寻找一种简洁,有效地使用语言的方法来解决复杂,晦涩或者棘手的问题。
 通常一个语言专家可以为两个到三个外科医生服务。

Mills概念的真正关键是“从个人艺术到公共实践”的编程观念转换。它向所有的团队成员展现了所有计算机的运作和产物,并将所有的程序和数据看作是团队的所有物,而非私人财产。

□团队的扩建
扩建过程的成功依赖于这样一个事实,即每个部分的概念完整性得到了彻底的提高——决定设计的人员是原来的七分之一或更少。所以,可以让200人去解决问题,而仅仅需要协调20个人,即那些“外科医生”的思路。
要使工作易于管理,必须清晰地划分体系结构设计和实现之间的界线,系统结构师必须一丝不苟地专注于体系结构。

贵族专制、民主政治和系统设计(Aristocracy, Democracy, and System Design)

□概念一致性
为了反映一系列连贯的设计思路,宁可省略一些不规则的特性和改进,也不提倡独立和无法整合的系统,哪怕它们其实包含着许多很好的设计。

□获得概念的完整性
 由于目标是易用性,功能与理解上复杂程度的比值才是系统设计的最终测试标准。功能,而非简洁,总是被用来衡量设计人员工作的出色程度。
 概念的完整性的确要求系统只反映唯一的设计理念

□贵族专制统治和民主政治
概念的完整性要求设计必须由一个人,或者非常少数互有默契的人员来实现

第一种是仔细地区分设计方法和具体实现。
第二种是前一章节中所讨论的、一种崭新的组建编程开发团队的方法。

对于非常大型的项目,将设计方法、体系结构方面的工作与具体实现相分离是获得概念完整性的强有力方法
当然不认为只有结构师才有好的创意。新的概念经常来自实现者或者用户。
 
1)他们一些智力精英,专门来告诉可怜的实现人员如何工作?
 答案是肯定的。他们的工作产物的生命周期比那些实现人员的产物要长,并且结构师一直处在解决用户问题,实现用户利益的核心地位。如

2)难道不能遵循民主的理论,从所有的员工中搜集好的创意,以得到更好的产品,而不是将技术说明工作仅限定于少数人?
 答案是否定的。外部技术说明的编制工作并不比具体设计实现更富有创造性,它只是一项性质不同的创造工作而已。

□在等待时,实现人员应该做什么?
整个创造性活动包括了三个独立的阶段:体系结构(architecture)、设计实现(implementation)、物理实现(realization)。体系结构(architecture)指的是完整和详细的用户接口说明。在实际情况中,它们往往可以同时开始和并发地进行。
当建议由体系结构的团队来编写计算机和编程系统的所有外部技术说明时,编程人员提出了三个反对意见:
  1)该说明中的功能过于繁多,而对实际情况中的成本考虑比较少
    答:确实是一项危险
  2)结构师获得了所有创造发明的快乐,剥夺了实现人员的创造力
   答:并不会因为指定了外部技术说明而大为减少,相反创造性活动会因为规范化而得到增强,整个产品也一样。
  3)当体系结构的队伍缓慢工作时,很多实现人员只能空闲地坐着等待
    答:在说明完成的时候,才雇用编程实现人员。这也正是在搭建一座建筑时所采用的方法。

在外部说明完成之前,设计实现人员有很多的事情可以做。首先,必须设定良好定义的时间和空间目标,了解产品运行的平台配置。接着,他可以开始设计模块的边界、表结构、算法以及所有的工具。
在物理实现的级别,编程也是一项技术,如果是新型的机器,则在库的调整、系统管理以及搜索和排序算法上,有许多事情需要处理。
同工作的水平分割相比,垂直划分从根本上大大减少了劳动量,结果是使交流彻底地简化,概念完整性得到大幅提高。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值