发信人: hyenachenyao()
整理人: majorsun(2000-03-07 20:15:43), 站内信件
|
1.概述
同其他任何工程项目一样,软件项目同样存在一个非常重要的问题,这就是软件 管理
的问题,而这一问题通常容易被一般的软件开发人员所忽视。在一般的软件工程 资料
中所讨论的重点也只是软件开发方法,对软件管理问题大多一笔带过。在一个小 的软
件开发项目中也许还无所谓,但一个大型的软件开发项目如果没有优秀的软件管 理人
员来领导和协调整个项目,其失败的可能性就很大了。因此有必要引起大家对此 问题
的重视,这也是本文的目的所在。
软件管理工作涉及到软件开发工作的方方面面,其直接对象包括人、财、物,简 单地
说,人就是指软件开发人员,财就是指项目经费,物就是指软件项目。也许还没 有关
于这方面的专门理论,但在工商管理领域已经有十分成熟的管理学理论,他山之 石,
可以攻玉,所以我们完全可以引进到软件项目方面的管理。本文就主要谈谈管理 学理
论在软件管理方面的应用。
作为软件管理人员,应该站在高处来俯瞰整个项目,如果有不识庐山真面目的感 觉就
不太好了。有了俯瞰全局的意识这一前提,采用适当的管理技术,项目开展就容 易罗。
软件项目的管理工作可以分位四个方面:软件项目的计划、软件项目的组织、软 件项
目的领导和软件项目的控制,下面对这四个方面进行详细的介绍。
2.软件项目的计划
软件开发项目的计划包括定义项目的目标,以及达到目标的方法。他涉及到项目 实施
的各个环节,带有全局的性质,是战略性的。计划应力求完备,要考虑到一些未 知因
素和不确定因素,考虑到可能的修改。计划应力求准确,尽可能提高所依据的数 据的
可靠程度。主要工作集中在软件项目的估算、软件开发成本的估算和软件项目进 度安
排。软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出 合理
估算的框架。这些估算应在软件项目开始时的一段有限时间内作出,并随着项目 的进
展进行更新。
软件项目的估算
软件项目管理过程开始于项目的计划,在做项目计划时,第一项活动是估算。现 在已
经使用的使用技术是时间和工作量的估算。因为估算是其他项目计划活动的基石 ,而
且项目计划又未软件工程过程提供了工作方向,所以我们不能没有计划就着手开 发,
否则就会陷入盲目性。
估算本身带有风险,估算资源、成本和项目进度时需要经验、有用的历史信息、 足够
的定量数据和作定量度量的勇气。估算的精确程度受到多方面的影响。首先,项 目的
复杂性对于增加软件计划的不确定性影响很大,复杂性越高,估算的风险就越高 。复
杂性是相对度量的,他与项目参加人员的经验有关,比如如果让搞MIS的项目组去 搞
操作系统设计显然增加了复杂性。其次,项目的规模对于估算的精确性和功效的 影响
也比较大,因为随着软件规模的扩大,软件相同元素之间的相互依赖、相互影响 也迅
速增加,因而估算时进行问题分解也会变得更加困难。还有项目的结构化程度也 影响
项目估算的风险,这里的结构性是指功能分解的简便性和处理信息的层次性,结 构化 程
度提高,进行精确估算的能力就提高,相应风险将减少。此外,历史信息的有效 性也
影响估算的风险,在对过去的项目进行这综合的软件度量之后,就可以借用来比 较准
确地进行估算。影响估算的因素远不止这些,比如用户需求的频繁变更给估算带 来非
常大的影响。
估算的依据是软件的范围,包括功能,性能、限制、接口和可靠性。在估算开始 之前,
应对软件的功能进行评价,并对其进行适当的细化以便提供更详细的细节。由于 成本
和进度的估算都与功能有关,因此常常采用功能分解的办法。性能的考虑主要包 括处
理和响应时间的需求。约束条件则标识外部硬件、可用存储和其他现有系统对软 件的
限制。
另外软件项目计划还要完成资源估算,包括人力资源、硬件资源和软件资源。在 考虑
各种软件开发资源时最重要的是人,必须考虑人员的技术水平、专业、人数以及 在开
发过程各阶段对各种人员的需要。硬件资源作为一种工具投入。软件资源包括各 种帮
助开发的软件工具,比如编程工具、管理工具、测试工具,还有操作系统和数据 库等。
工作两估算是最普遍使用的技术。经过功能分解之后,可以估计出每一个项目任 务的
分解都需要花费若干人年,总计之后就知道软件项目总体工作量。下面就是一个 示意
性工作量估算表。
表格 1 某软件系统工作量估算表(单位:人日)
任务需求分析设计编码测试小计用户定义2510.58.5系统定义2510.58.5广告预定
41020.516.5划版520100.535.5制作和组版353112总计164517381
软件开发成本的估算
软件开发成本主要是指软件开发过程所花费的工作量及其相应的代价。它不同于 其他
物理产品的成本,它主要包括人的劳动的消耗,人的劳动的消耗所需的代价就是 软件
产品的开发成本。
开发成本的估算方法有很多种,象简单的代码行技术,任务分解技术,自动估计 成本
技术,专家判定技术,还有参数方程法,标准值法,以及COCOMO模型法。其中
COCOMO (Constructive Cost Model)模型法是一种精确、易于使用的成本估算方 法,该
模型按其详细程度分为三级:基本COCOMO模型、中间COCOMO模型和详细
COCOMO模型[3]。
软件项目进度安排
软件项目的进度安排主要是考虑软件交付用户使用的这一段开发时间的安排。进 度安
排的准确程度可能比成本估计的准确程度更重要。软件产品可以靠重新定价或者 靠大
量的销售来弥补成本的增加,但进度安排的落空会导致市场机会的丧失或者用户 不满
意,而且也会导致成本的增加。因此在考虑进度安排时要把人员的工作量与花费 的时
间联系起来,合理分配工作量,利用进度安排的有效分析方法严密监视软件开发 的进
展情况,以使得软件开发的进度不致被拖延。
在进行进度安排时要考虑的一个主要问题是任务的并行性问题。当参加项目的人 数不
止一人是软件开发工作就会出现并行情况。因为并行任务是同时发生的所以进度 计划
表必须决定任务之间的从属关系,确定各个任务的先后次序和衔接,确定各个任 务完
成的持续时间。另外还应注意关键路径的任务,这样可以确定在进度安排中应保 证的
重点。常用的进度安排方法有两种,即甘特图(Gantt Chart)法和工程网络法。
3.软件项目的组织
参加软件开发的人员如何组织起来,使他们发挥最大的工作效率,对成功地完成 软件
项目极为重要。
组织结构
开发组织采用什么形式由软件项目的特点决定,同时也与参加人员的素质有关。 通常
有三种组织结构模式:
1. 按课题组划分的模式:把开发人员按课题组成小组,小组成员自始至终承担课 题的
各项任务。该模式适用于规模不大的项目,并且要求小组成员在各方面有技术专 长。
2. 按职能划分的模式:把开发项目的软件人员按任务的工作阶段划分为若干工作 小
组。要开发的软件在每个专业小组完成阶段加工后沿工序流水线向下传递。这种 流水
作业的方式使用于多项目并行的情况。
3. 矩阵形模型:这种模式是以上两种模式的复合。一方面按工作性质成立一些专 门小
组,另一方面每一个项目都有它的经理人员负责。每一个软件开发人员属于某一 个专
门小组,有参加某一个项目的工作。该模式的优点有一方面参加专门组的成员可 以在
组内交流在各个项目中取得的经验,这更有利于发挥专业人员的作用;另一方面 ,各
个项目有专门的人员负责,有利于软件项目的完成。这种模式比较适合于规模比 较大
的项目。
组织结构的最后一层是程序设计小组的组织形式。通常认为程序设计工作是按独 立的
方式进行的,程序人员独立地完成任务。但这并不意味着相互之间没有联系。一 般在
人数比较少时组员之间的联系比较简单,但随着人数的增加,相互之间的联系变 得负
责起来。小组内部人员的组织形式对对生产率有着十分重要的影响。
常见的小组组织形式有三种,这三种形式可以灵活使用。
1. 主程序员制小组:相当于组长负责制,小组的核心由一位主程序员,另外配备 两到
三位技术员、一位后援工程师组成。这种组织结构突出主程序员的领导,强调主 程序
员与其他技术人员的联系。
2. 民主制小组:在民主制小组中,遇到问题可以在组员之间平等地交换换意见, 工作
组目标的制定以及决定的作出都由全体人员参加。这种组织形式强调发挥每个成 员的
积极性,并要求每个成员发挥主动精神和协作精神。
3. 层次式小组:在层次式小组中,组内人员分位三级:组长(项目负责人)一人 负责
全组工作,他直接领导两到三名高级程序员,每位高级程序员通过基层小组,管 理若
干位程序员。这种结构比较适合于项目本身就是层次结构的课题。
人员配备
合理地配备人员是成功地完成软件项目的切实保证。所谓合理地配备人员应包括 按不
同阶段适时运用人员,恰当掌握用人标准。一般来说,软件项目不同阶段不同层 次技
术人员的参与情况是不一样的。下图是典型的软件开发人员参与情况曲线。
<图片>
在人力配备问题上,由于配置不当,很容易造成人力资源的浪费,并延误工期。 特别
是采用恒定人员配备方案时在项目的开始和最后都会出现人力过剩,而在中期又 会出
现人力不足的情况。
4.软件项目的领导
5.软件项目的控制
对后面两个主题以后再讨论。其实本文所讨论的东西大多还没有涉及太多管理学 方面
的内容,但这方面确实有许多值得研究的东西,由于时间关系不能深入下去。姑 且作
为一个引子吧!
END
参考文献:
、斯蒂芬P罗宾斯,《管理学》,黄卫伟等译,中国人民大学出版社。
、张海潘,《软件工程导论》第三版,清华大学出版社。
、郑人杰,殷人昆,《软件工程概论》,清华大学出版社。
---------------------------------------------------------------------- --
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 210.72.251.198]
|
|