第十一章 软件项目管理
主要内容:
项目管理过程
软件生产率和质量的度量
软件项目的估算
软件项目计划的目标
软件开发成本估算
本章要点
1/了解软件过程的概念。
2/了解软件项目管理的过程。
3/了解软件度量的种类。
4/了解软件成本估算的概念。
5/了解风险分析的步骤、风险的种类、风险项目和风险的构成。
6/了解软件进度安排方法及图形工具
7/掌握loc估算和cocomo成本估算方法。
项目管理过程
软件项目管理的对象是软件工程项目。
为使软件项目开发获得成功,关键问题是必须对软件开发项目的工作范围、可能风险、需要资源(人、硬件/软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等做到心中有数。
启动一个软件项目
在制定软件项目计划之前,必须:明确项目的目标和范围、考虑候选的解决方案、标明技术和管理上的要求。
度量
进行度量工作,是为了了解产品开发的技术过程和产品本身。
度量的作用是为了有效地定量的进行管理。
估算
在软件项目管理过程中关键的活动就是制定项目计划。
在做计划时必须就需要的人力(以人月为单位)、项目持续时间(以年份或月份为单位)、成本(以元为单位)做出估算。
风险分析
风险分析对于软件项目管理是决定性的,然而现在还有许多项目考虑风险就着手进行。
所谓风险分析实际上就是一系列风险管理步骤,其中包括风险识别、风险估计、风险优化、风险管理策略、风险解决和风险监督。
进度安排
每一个软件项目都要求制定一个进度安排,但不是所有的进度都得一样安排。
对于进度安排,需要考虑的是:
预先对进度如何计划?
工作怎样就位?
如何识别定义好的任务?
追踪和控制
一旦建立了开发进度安排,就可以开始着手追踪和控制活动。
由项目管理人员负责追踪在进度安排中标明的每一个任务。
还可对资源重新定向
对任务重新安排
(作为最坏的结果)可以修改交付日期以调整已经暴露的问题。用这种方式,可以较好的控制软件的开发。
软件生产率和质量的度量
生产率与质量的度量是以投入工作量为依据的软件开发活动的度量和开发成果的度量。
为什么要对软件进行度量?
面向规模的度量
面向功能的度量
软件质量的度量
在软件工程过程中使用度量
为什么要对软件进行度量?
1、表明软件产品的质量
2、弄清软件开发人员的生产率
3、给出使用了新的软件工程方法和工具所得到的效益
4、建立项目估算的“基线”
5、帮助调整对新的工具和附加培训的要求。
度量的方式
在物理世界中的度量有两种方式:直接度量和间接度量。
软件度量也同样分为两类:直接度量与间接度量。
面向规模的度量
面向规模的度量是对软件和软件开发过程的直接度量。
可以建立一个面向规模的数据表格来记录项目的某些信息。
面向功能的度量
面向功能的软件度量是对软件和软件开发过程的间接度量。
面向功能度量主要考虑程序的“功能性”和“实用性”,而不是对LOC计数。
功能点计算
确定五个信息域的特征,并在表格中相应位置给出计数。
1、 用户输入数
2、 用户输出数
3、 用户查询数
4、 文件数
5、 外部接口数
复杂性校正值Fi
1、 系统是否需要可靠的备份和恢复?
2、 是否需要数据通信?
3、 是否有分布处理的功能?
4、 是否性能成为关键?
5、 系统是否运行在既存的高度使用化的操作环境中?
6、 系统是否需要联机数据项?
7、 联机数据项是否需要建立多重窗口显示和操作,以处理输入处理。
8、 主文件是否联机更新?
9、 输入、输出、文件、查询是否复杂?
10、 内部处理过程是否复杂?
11、 程序代码是否可复用?
12、 设计中是否包括了转移和安装?
13、 系统是否设计成重复安装在不同机构中
14、 系统是否设计成易修改和易使用?
软件质量的度量
质量度量贯穿于软件工程的全过程中以及软件交付用户使用之后。
在软件交付之前的到的度量可作为判断设计和测试计量好坏的依据。
在软件交付之后的度量则把注意力集中于还未发现的差错数和系统的可维护性发面。
使用得最广泛软件质量的事后度量包括正确性、可维护性、完整性和可适用性。
1、 正确性:一个程序必须正确的运行,并未它的用户提供某些输出。正确性要求软件执行所要求的功能。
2、 可维护性:软件维护比其他的软件工程活动需要更多的工作量。还没有一种方法可以直接度量可维护性,因此必须采取间接度量。
3、 完整性:完整性度量一个系统抗拒对它的安全性攻击(事故的和人为的)的能力。
4、 可使用性:如果一个程序不具有“用户友好性”,即使它所执行的功能很有价值,也常常会失败。
在软件工程过程中使用度量
建立基线
为了将LOC和FP用于软件估算技术中,必须建立历史数据基线。
根据历史经验,在软件工程过程的衔接处划出一条基线,在此基线上附有一些用于度量的经验目标信息,作为工程过程评估的依据,判断工程过程的完成是否达到预想的要求。
软件开发中的资源
人:需要的技能,开始时间,工作期限,有效性
硬件:开发系统,目标机器,新系统其他硬件部分
软件:支持软件,使用软件,投入时间,持续时间,有效性
通常,对每一种资源,应说明以下四个特性:1、资源的描述2、资源的有效性说明3、资源在何时开始需要4、使用资源的持续时间