1. 外科医生
首席程序员 。他亲自定义功能和性能技术说明书,设计程序,编制源代码,测
试以及书写技术文档。他使用例如 PL/I 的结构化编程语言,拥有对计算机系统的访
问能力;该计算机系统不仅仅能进行测试,还存储程序的各种版本,以允许简单的
文件更新,并对他的文档提供文本编辑能力。首席程序员需要极高的天分、十年的
经验和应用数学、业务数据处理或其他方面的大量系统和应用知识。
2. 副手
他是外科医生的后备,能完成任何一部分工作,但是相对具有较少的经验。他
的主要作用是作为设计的思考者、讨论者和评估人员。外科医生试图和他沟通设计
,但不受到他建议的限制。副手经常在与其他团队的功能和接口讨论中代表自己的
小组。他需要详细了解所有的代码,研究设计策略的备选方案。显然,他充当外科
医生的保险机制。他甚至可能编制代码,但针对代码的任何部分,不承担具体的开
发职责。
3. 管理员
外科医生是老板,他必须在人员、加薪等方面具有决定权,但他决不能在这
些事务上浪费任何时间。因而,他需要一个控制财务、人员、工作地点安排和机
器的专业管理人员,该管理员充当与组织中其他管理机构的接口。Baker建议仅在
项目具有法律、合同、报表和财务方面的需求时,管理员才具有全职责任。否则,
一个管理员可以为两个团队服务。
4. 编辑
外科医生负责产生文档——出于最大清晰度的考虑,他必须书写文档。对内部
描述和外部描述都是如此。而编辑根据外科医生的草稿或者口述的手稿,进行分析
和重新组织,提供各种参考信息和书目,对多个版本进行维护以及监督文档生成的
机制。
5. 两个秘书
管理员和编辑每个人需要一个秘书。管理员的秘书负责项目的协作一致和非
产品文件。
6. 程序职员
他负责维护编程产品库中所有团队的技术记录。该职员接受秘书性质的培训,
承担机器码文件和可读文件的相关管理责任。 所有的计算机输入汇集到这个职员处
。如果需要,他会对它们进行记录或者标识。输出列表会提交给程序职员,由他进
行归档和编制索引。另外,他负责将任何模型的最新运行情况记录在状态日志中,
而所有以前的结果则按时间顺序进行归档保存。
7. 工具维护人员
现在已经有很多文件编辑、文本编辑和交互式调试等工具,因此团队很少再需
要自己的机器和机器操作人员。但是这些工具使用起来必须毫无疑问地令人满意,
而且需要具备较高的可靠性。外科医生则是这些工具、服务可用性的唯一评判人员
。他需要一个工具维护人员,保证所有基本服务的可靠性,以及承担团队成员所需
要的特殊工具(特别是交互式计算机服务)的构建、维护和升级责任。即使已经拥
有非常卓越的、可靠的集中式服务,每个团队仍然要有自己的工具人员。因为他的
工作是检查 他 的外科医生所需要的工具。工具维护人员常常要开发一些实用程序、
编制具有目录的过程库以及宏库。
8. 测试人员
外科医生需要大量合适的测试用例,用来对他所编写的工作片段,以及对整个
工作进行测试。因此,测试人员既是为他的各个功能设计系统测试用例的对头,同
时也是为他的日常调试设计测试数据的助手。他还负责计划测试的步骤和为测试搭
建测试平台。
9. 语言专家
随着 Algol 语言的出现,人们开始认识到大多数计算机项目中,总有一两个乐于
掌握复杂编程语言的人。这些专家非常有帮助,很快大家会向他咨询。这些天才不
同于外科医生,外科医生主要是系统设计者以及考虑系统的整体表现。而语言专家
则寻找一种简洁、有效的使用语言的方法来解决复杂、晦涩或者棘手的问题。他通
常需要对技术进行一些研究(两到三天)。通常一个语言专家可以为两个到三个外
科医生服务。