软件项目管理是指软件生存周期中软件管理者所进行的一系列活动,其目的是在一定的时间和预设范围内有效地利用人力、资源、技术和工具,使软件系统或软件产品按原定计划和质量要求如期完成。
一、软件项目管理涉及范围
涉及的范围 有效的软件项目管理集中在4个P上,即人员(Person)、产品(Product)、过程(Procedure)和项目(Project)。
1、人员
人员是软件工程项目的基本要素和关键因素,在对人员进行组织时,有必要考虑参与软件过程(及每一个软件项目)的人员类型。一般来说,可以分为以下5类。
(1)项目管理人员
(2)高级管理人员
(3)开发人员
(4)客户
(5)最终用户
2、产品
在进行项目计划之前,应该首先进行项目定义,也就是定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束等。软件范围是通过回答下列问题来定义的。
1)项目环境
要开发的软件如何适应于大型的系统、产品或业务环境,该环境下要施加什么约束?
2)信息目标
软件要产生哪些客户可见的数据对象作为输出?需要什么数据对象作为输入?
3)功能和性能
软件要执行什么功能才能将输入数据变换成输出数据?软件需要满足什么特殊的性能要求
软件项目范围必须是无二义的和可理解的,为控制其复杂性,必要时还需对问题进行分解。
3、过程
传统的项目管理有大项目、项目、活动、工作包、工作单元等多种分解层次,对于软件项目来说,强调的是对其进行过程控制,通常将项目分解为任务、子任务等,其分解准则是基于软件工程的过程。 软件过程提供了一个项目团队要选择一个适合于待开发软件的过程模型。
4、项目
1)明确目标及过程
充分理解待解决的问题,明确定义项目目标及软件范围,为项目小组及活动设置明确、现实的目标,并充分发挥相关小组的自主性。
2)保持动力
为了维持动力,项目管理者必须提供激励措施以保持人员变动为绝对最小量。小组应该强调所完成的每个任务的质量,而高层的管理应该尽量不干涉项目小组的工作方式。
3)跟踪进展
针对每个软件项目,当每个任务的工作制品(如规约、源代码、测试用例集合等)作为质量保证活动的一部分而被批准(通过正式的技术评审)时,对其进展进行跟踪,并对软件过程和项目进行测量。
4)做出明智的决策
在本质上,项目管理者和软件小组的决策应该"保持其简单"。只要有可能,就使用商用成品软件或现有的软件构件或模式,可以采用标准方法时避免定制接口,识别并避免显而易见的风险,以及分配比你认为的时间更多的时间来完成复杂或有风险的任务。
5)进行事后分析
建立统一的机制,从每个项目中获取可学习的经验。评估计划的进度和实际的进度,收集和分析软件项目度量数据,从团队成员和客户处获取反馈,并记录所有的发现。
二、软件项目估算
软件项目估算沙及人、技术、环境等多种因素,因此很难在项目完成前准确地估算出开发软件所需的成本,持续时间和工作量。因此,需要一些方法和技术来支持项目的估算. 常用的估算方法有下列3种。
(1) 基于已经完成的类似项日进行估算。这是一种常用的也是有效的估算方法。
(2)基于分解技术进行估算。分解技术包括问题分解和过程分解。问题分解是将一个复杂问题分解成若干个小问题,通过对小问题的估算得到复杂问题的估算。过程分解是指先根据软件开发过程中的活动(分析、设计、编码、测试等)进行估算,然后得到整个项目的估算值。
(3)基于经验估算模型的估算。典型的经验估算模型有IBM估算模型、CoCoMo模型和Putnam模型。
三、进度管理
软件开发项目的进度安排有两种方式;系统最终交付日期已经确定,软件开发部门必须在规定期限内完成系统最终交付日期只确定了大致的年限,最后交付日期由软件开发部门确定。进度安排的常用图形描述方法有甘特(Gamt)图和计划评审技术(PERT)图。
1、Gantt 图
Gantt 图中横坐标表示时间,纵坐标表示任务,图中的水平线段则表示对一个任务的进度安排,线段的起点和终点对应在横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间。
Gmm 图能清晰地描述每个任务从何时开始,到何时结束以及各个任务之间的并行性∶但是它不能清晰地反映出各任务之间的依赖关系,难以确定整个项目的关键所在。也不能反映计划中有潜力的部分。
2、PERT图
PERT图是一个有向图,箭头表示任务,它可以表示完成该任务所需的时间;箭头指向节点表示流入节点的任务的结束。并开始流出节点的任务,这里把节点当成事件。只有当流入该节点的所有任务都结束时,节点所表示的事件才出现,流出节点的任务才可以开始。事件本身不消耗时间和资源,它仅表示某个时间点。一个事件有一个事件号和出现该事件的最早时刻和最迟时刻。每个任务还有一个检验时间,表示在不影响整个工期的前提下,完成该任务有多少机动余地。
PERT图不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的关系,即哪些任务完成后才能开始另外一些任务,以及如期完成整个工程的关键路径。松弛时间则反映了完成某些任务是可以推迟其开始时间或延长其所需的完成时间。但是PERT图不能反映任务之间的并行关系。
四、软件项目组织
开发组织采用什么形式组织。不仅要考虑软件项目的特点,还需要考虑参与人员的素质。在软件项目组织中,其组织原则有以下3条。
(1)尽早落实责任。在软件项目开始组织时,要尽早指定专人负责,使他有权进行管理,并对任务的完成负全责。
(2)减少交流接口。一个组织的生产率随着完成任务时存在的通信路径数目的增加而降低。要有合理的人员分工、好的组织结构、有效的通信,减少不必要的生产率的损失。
(3) 责权均衡。软件管理人员承担的责任不应比赋予他的权利还大。
五、软件配置管理
软件配置管理(Software Configure Manngement,SCM)用于整个软件工程过程。其目标是标识变更、控制变更、确保变更正确地实现、报告有关变更。SCM是一组管理整个软件生存期各阶段中变更的活动。
1、基线
基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果。因此,基线作为一个检查点,在开发过程中,当采用的基线发生错误时,可以知道所处的位置,返回到最近和最恰当的基线上。
2、软件配置项
软件配置项(SCD是软件工程中产生的信息项,它是配置管理的基本单位,对已经成为基线的SCL.虽然可以修改。但必须按照一个特殊的,正式的过程进行评估,确认每一件修改。
3、版本控制
表达系统不同版本的一种表示方法如下图所示。
4、变更控制
变更控制是一项最重要的软件配置任务。为有效地实现变更控制,须借助配置数据库和基线的概念。 配置数据库可以分为3类,即开发库、受控库和产品库。
六、风险分析
1、 风险识别
风险识别是试图系统化地确定对项目计划的威胁。风险识别的一个方法是建立风险条目检查表。该检查表可以用于识别风险,并使得人们集中来识别下列常见的、已知的及可预测的风险产品规模、商业影响、客户特性、过程定义、开发环境等。
2、风险预测
风险预测又称为风险结算。它从两个方面评估一个风险风险发生的可能性或损率以及如果风险发生所产生的后果。通常项目计划人员与管理人员,技术人员一起,讲行4 种风险预测活动∶建立一个尺度成标准,以反映风险发生的可能性;摧述风险的后果;估计风险对项目和产品的影响标注风险预测的整体精确度,以免产生误解。
3、风险评估
在进行风险评估时,建立了以下形式的三元组,
式中:r为凤险;l为风险发生的概率;x为风险产生的影响。
一个对风险评估很有用的技术就是定义风险参照水准。对于大多数软件项目来说,成本、进度和性能就是3种典型的风险参照水准。
在风险评估过程中,需要执行下面步骤∶
①定义项目的风险参考水平值;
②建立每一组与每一个参考水平值之间的关系;
③预测一组临界点以定义项目终止区域;
④预测什么样的风险组合会影响参考水平值。
4、凤险控制
一个有效的策略必须考虑3个问题∶
①风险避免;
②风险监控;
③风险管理及意外事件计划。
如果软件项目组对于风险采取主动的方法,则避免是最好的策略。
未完待续。。。
更多知识传送:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以上内容整理参考《软件设计师教程(第5版)》和《软件设计师考试同步辅导(第四版)》(忘记是哪个老师的了,侵删)。本文章内容旨在帮助更多想要进军软考,给自己镀金的小伙伴。有兴趣的小伙伴可以共勉。