软件项目管理探析

时间:2022-03-28 05:25:22

软件项目管理探析

摘要:软件项目管理从一组项目计划活动开始,对软件开发的各个阶段进行管理,增强软件开发的控制能力,提高软件开发质量。可见软件项目的有效管理对项目有着至关重要的作用。主要讨论如何在项目生命周期的早期给出一个好的成本估算和项目进度计划,从而知道如何决定项目人员的任务以及如何组织项目人员,最后讨论如何预测和降低风险。

关键词:软件项目;项目人员;成本估算;风险管理

中图分类号:TP301文献标识码:A文章编号:1672-7800(2012)003-0038-02

作者简介:林美娥(1982-),女,福建泉州人,同济大学厦门软件职业学院工程师,研究方向为计算机与网络教学。

1工作量和成本估算

1.1预测软件规模

为了估算软件项目的工作量和完成期限,首先需要预测软件规模。度量软件规模的常用方法有代码行技术和功能点技术。

代码行技术(LOC)是依据以往开发类似产品的经验和历史数据,估计实现一个功能所需要的源程序行数。把实现每个功能所需要的源程序行数累加,就可得到实现整个软件所需要的源程序行数。但是源程序仅是软件配置的一个部分,用它来代表整个软件的规模似乎不大合理。为了克服代码行技术的缺点,人们提出了功能点技术。

功能点技术(FP)依据软件信息域特性和软件复杂性,用功能点(FP)为单位度量软件规模。这种方法的计算公式是:FP=UFP×TCF。UFP包括各种输入、输出、查询、主文件数、外部接口数等;TCF包括高处理率、性能标准、联机更新、可重用性等复杂性因子。功能点数与所用的编程语言无关,因此在判断信息域特性复杂级别和技术因素的影响程度时,存在着相当大的主观因素。

这两种方法各有优缺点,应该根据软件项目的特点选择适用的软件规模度量方法。

1.2工作量估算

根据项目的规模可以估算出完成项目所需的工作量。表示工作量和影响工作量因素之间关系的模型有很多,我们可以从中选择一个或多个方法进行估算。这类模型的总体结构形式:

E=A+B×(ev)C(1)

其中,A、B和C是常量,E是以人月为单位的工作量,ev是估算变量(KLOC或FP)。

(1) Walston和Felix开发的模型是首批此类模型中的一个,他们根据IBM的60个项目数据得出以下的方程式:

E=5.2×(KLOC)0.91(2)

这种规模用代码行数来测量,其中还包括注释(当然注释不能超过代码行总数的50%)。

(2) Bailey和Basili提出了一种元模型的建模技术,他们用一个由18个科学性项目构成的数据库证明了他们的技术,首先把标准误差估算降到最小,产生一个非常精确方程式:

E=5.5+0.73×(KLOC)1.16(3)

然后根据误差比率调整这个初始估算。

(3) Boehm在其经典着作“软件工程经济学”中,介绍了一种软件估算模型的层次体系,称为COCOMO,它代表了软件估算的一个综合经验模型。COCOMOII是软件成本估算模型,是软件决策中成本和进度关系模型,涉及软件开发工作量、预算、进度、软件质量。COCOMOII给出了3个层次的软件开发工作量估算模型:第一阶段是应用系统组成模型,用于估算构建原型的工作量;第二阶段是早期设计模型,适用于体系结构设计阶段;第三阶段是后体系结构模型,适用于完成体系结构设计之后的软件开发阶段。

当使用COCOMOII和功能点估算时,虽然两者是估算方法中比较科学的方法但也存在一些主观判断,一般存在很大主观判断时采用此方法。

软件成本中最大的部分是工作量,还包括设施、方法和工具等预算。项目的各个阶段都要进行工作量及成本的估算,且随着项目的开展,工作量估算更加准确。

2制定项目计划

项目进度通过列举项目的各个阶段,把每个阶段分解成离散的任务或活动,来描述特定项目的软件开发周期。进度还描绘这些活动之间的交互,并估算每项任务或活动将花费的时间。为此,项目管理者必须制定一个足够详细的进度表,以便监督项目进度并控制整个项目。

常用的制定进度计划的工具主要有Gantt图和项目网络图两种。Ganntt图通过日历形式列出项目活动及其相应的开始和结束日期。在进度报告中很有效,容易于读懂和使用。但是作为计划编制工具不是太强,没有表示活动间的逻辑关系。项目网络图是项目的所有活动以及它们之间逻辑关系或排序的图形显示,表明活动和事件间的相互关系。具有识别关键路径、项目历程和活动排序、表明工作流程、帮助编制计划和组织工作等优点。因此,工程网络图是制定进度计划的强有力的工具。通常,联合使用Gantt图和工程网络这两种工具来制定和管理进度计划,使它们互相补充、取长补短。

进度安排是软件项目计划的首要任务,而项目计划则是软件项目管理的首要组成部分。与估算方法和风险分析相结合,进度安排将为项目管理者建立起一张计划图。

3人员组织

3.1人员角色和特性

软件项目管理应该以人为本,有效管理人力资源,合理配置人力资源。决定项目团队成员的角色,要了解每个人员的特性,比如完成工作的能力、开发类似应用的经验、使用类似技术的经验、与他人交流的能力及管理技能等特性。充分发挥每位成员的技术专长,做到人尽其能。在软件开发或维护项目中,开发团队成员会彼此相互交流,也会与用户以及客户交流。人员背景和交流能力也能对项目的成本和进度产生很大影响,很多项目都要求几个人必须共同承担完成一项或多项活动的责任,项目经理在选择同哪些人在一起工作时,应该了解每个人的兴趣和能力。

3.2项目人员组织

在软件工程项目中,人员组织方式有民主制程序员组和主程序员负责制组。

在民主制程序员组里每个小组成员完全平等,过程和个人是分开的,批评只针对产品或结果,并不涉及个人。不论讨论的是设计问题还是测试技术,小组成员投票产生决策。这种态度有助于更快速地发现错误,从而导致高质量的代码。不足的地方在于没有明确的权威指导,组员间缺乏必要的协调,最终可能导致工程失败。

在主程序员负责制组中,有一个人总体负责系统的设计和开发,其他的小组成员向该主程序员汇报,主程序员对每一个决定有最终决策权。同时,组内分工,给主程序员提供充分支持,所有通信都通过一两个人进行。副主程序员(也称后备程序员)是一名候补人员,其主要工作是在必要时替代主程序员。资料员负责维护所有的项目文档,编译和链接代码,并对提交的所有模块进行初步测试。这种工作划分使得程序员能集中精力做编程。

当然,还有许多其它组织开发或维护项目的方式,上面介绍的两种组织结构代表了两种极端的情况。在给定的条件下怎么选择最合适的结构呢?在有着高度确定性、稳定性、一致性和重复性的项目中,使用像主程序员负责制这样的等级组织结构会更有效。这些项目成员之间的交流很少,强调规章、专业、正式以及组织层次的清晰定义。

另一方面,当项目中涉及大量的不确定性时,采用更为民主的方法可能会更好。因为项目的不确定性比较高,参与决策和鼓励开放式交流可能会更为有效。

在适当的时候把两种类型的组织结构组合起来。例如,可以要求程序员独立自主地开发一个子系统,在层次结构内部使用民主制;或者可以为一个结构松散型项目的测试小组规定一个层次结构,指派某人负责所有主要的测试决策。

险管理

在软件开发过程中,经常会碰到对需求的误解、关键人员流失、测试时间不充分、实时性能达不到要求、外部提供的环境达不到要求等风险事项。所以项目经理必须确定在开发或维护过程中是否会出现这些风险事项,并制订计划以避免这些事件。如果这些事件不能够避免,也要把伤害降到最低。风险管理包括识别风险、分析风险、为每个风险分配优先级、降低风险、风险管理计划及风险化解。

首先,评价项目的风险,以便了解在开发或维护过程中可能发生什么。可以通过类似系统的检查清单,以确定新项目是否可能受到清单中风险的影响。其次,分析已经识别的风险,以便能尽可能多地了解风险事项的性质。有很多技术可以增加对风险的了解,包括成本模型、性能模型、网络分析等。最后给所有的风险分配优先级。优先级能够利用有限的资源集解决最有威胁的风险。

可以通过改变性能或功能需求,避免风险;也可以把风险分配到其他系统中,或者购买保险,转移风险。要是风险发生,接受并用项目资源控制风险。在风险管理计划中做好记录,以便他人查阅。随着项目的进展,定期地重新评估风险、风险出现的概率以及风险可能造成的影响。

综上所述,成本估算应当在早期进行并且经常进行。可以将成本估算和风险管理结合起来,通过成本估算,我们在对预算内完成工作表示担忧时,风险管理技术可以用来减少甚至消除风险。

参考文献:

\[1\]张海藩.软件工程导论\[M\].北京:清华大学出版社,2011.

\[2\]R S.PRESSMAN.软件工程-实践者的研究方法\[M\].北京:机械工业出版社,2011.

\[3\]SHARI LAWRENCE PFLEEGER.软件工程\[M\].北京:人民邮电出版社,2010.

上一篇:ADS-B技术在民航空管中的应用及前景展望 下一篇:基于FX2N系列PLC软件环分的设计