1
 软件工程
1.10.3.3 8.3.3 程序设计小组的组织形式

8.3.3 程序设计小组的组织形式

通常认为程序设计工作是按独立方式进行的,程序人员独立地完成任务,但这并不意味着程序员之间没有联系。程序员之间联系的多少和联系的方式与生产率直接相关。程序设计小组内人数越少(如2~3人),则人员之间的联系就越简单;但在增加人员数目时,相互之间的联系复杂起来,并且复杂度不是按线性关系增加的。并且,正在进行的软件项目在任务紧张、延误了进度的情况下,不鼓励增加新成员给予协助。除非分配给新成员的工作是比较独立的任务,并不需要对原任务有更细致的了解,也没有技术细节的牵连。

img156

图8-5 软件开发组织的矩阵型模式

小组内部人员的组织形式对生产率也有影响。现有的组织形式有如下三种。

1.主程序员制小组

主程序员制小组是由Mills和Baker等人提出的一种方式。它的特点是强调“一元化”领导,小组的核心由1名主程序员、2~6名技术员、1名后援工程师组成。主程序员负责小组全部技术活动的计划、协调与审查工作,还负责设计和实现项目中的关键部分。技术员负责项目的具体分析与开发,以及文档资料的编写工作。后援工程师支持主程序员的工作,为主程序员提供咨询,也做部分分析、设计和实现的工作,并在必要时能代替主程序员工作。主程序员制小组还可以由一些专家、辅助人员、软件资料员协助工作。

主程序员制小组突出了主程序员的领导,见图8-6(a),省略了组员间的通信,提高了效率。但是这种集中领导的组织形式能否取得好的效果,很大程度上取决于主程序员的技术水平和管理才能。当开发小组内只有一个是高级程序员,其余均为初、中级程序员时,可采用这种方式。

2.民主制小组

Weinberg认为,软件开发是一种合作的事业,最理想的形式是组成“无我小组”。这种民主制小组中提倡“无我程序设计”,人人把小组开发的程序看成是“我们的程序”,而不是“我的程序”,遇到问题时组内成员之间可以平等地交换意见,见图8-6(b)。这种组织形式强调发挥小组每个成员的积极性,要求每个成员充分发挥主动精神和协作精神。但小组的组长由上级指定,当组内发生意见分歧时,由组长作最后决定。有人认为这种组织形式适合于研制时间长、开发难度大的项目。民主制小组的人数通常为5~7人。

3.层次式小组

在层次式小组中,组内人员分为:组长(项目负责人)一人负责全组工作,包括任务分配、技术评审和走查、掌握工作量和参加技术活动,直接领导2~3名高级程序员,每位高级程序员通过基层小组管理若干位程序员。这种组织结构只允许必要的人际通信,比较适用于项目本身就是层次结构的课题,见图8-6(c)。

可以把项目按功能划分成若干子项目,把子项目分配给基层小组,由基层小组完成。基层小组的领导与项目负责人直接联系。这种组织方式比较适合于大型软件项目的开发。

img157

图8-6 三种不同的小组结构

以上三种组织形式可以根据实际情况组合起来灵活运用。总之,软件开发小组的主要目的是发挥集体的力量进行软件研制。