软件开发人员的组织与分工.doc
软件开发人员的组织与分工 大型软件项目需要很多人的能力合作,花费一年或数年的时间才能完成。为了提高工作效率,保证工作质量,软件开发人员的组织、分工与管理是一项十分重要和复杂的工作,它直接影响到软件项目的成功与失败。首先,由于软件开以人员的个人素质与差异很大,因此对软件开发人员的选择、分工十分关键。1970年,S ackman 对12名程序员用两个不同的程序进行试验,结论是:程序排错、调试时间差别为18:1;程序编制时间差别为15:1;程序长度庆功别为6:1;程序运行时间差别为13:1。近年来,随着软件开发方法的提高、工具的改善,上述差异 可能会减小,但软件人员的合理选择及分工,充分发挥每个人的特长和经验显然是十分重要的。其次,因为软件产品不易理解、不易维护,因此软件人员的组织方式十分关键。一个重要的原则是,软件开发人员的组织结构与软件项目开发模式和软件产品的结构相对应,这样可以达到软件开发的方法、工具、与人的统一,从而降低管理系统的复杂性,有利于软件开发过程的管理与质量控制。按树形结构组织软件开发人员是一个比较成功的经验。树的根是软件项目经理和项目总的技术负责人。理想的情况是项目经理和技术负责人由一个人或一个小组担任。树的结点是程序员小组, 为了减少系统的复杂性、便于项目管理,树的结点每层不要超过7个,在此基础上尽量降低树的层数。程序员小组的人数应视任务的大小和完成任务的时间机时定,一般是2~5人。为降低系统开发过程的复杂性,程序员小组之间,小组内程序员之间的任务界面必须清楚并尽量简化。 按“主程序员”组织软件开发小组是一条比较成功的经验。“主程序员”应该是“超级程序员”。其他成员,包括程序员、后备工程师等,是主程序员的助手。主程序员负责规划、协调和审查小组的全部技术活动。程序员负责软件的分析和开发。后备工程师是主程序员的助手,必要时能代替 主程序员领导小组的工作并保持工作的连续性。软件开发小组还可以根据任务需要配备有关专业人员,如数据库设计人员、远程通信和协调,提高了工作效率。这种形式的成败主要取决于程序员的技术和管理水平。除了按主程序员负责的程序员小组组织开发人员外,还可以按“无我程序设计”建立软件民主开发小组。这各组织形式强调组内成员人人平等,组内问题均由集体讨论决定。这种组织形式有利于集思广益、互相取长补短,但工作效率比较低。 软件项目或软件开以小组可以配置