软件项目管理中国科学技术大学课件

上传人:cn****1 文档编号:569184735 上传时间:2024-07-28 格式:PPT 页数:217 大小:443KB
返回 下载 相关 举报
软件项目管理中国科学技术大学课件_第1页
第1页 / 共217页
软件项目管理中国科学技术大学课件_第2页
第2页 / 共217页
软件项目管理中国科学技术大学课件_第3页
第3页 / 共217页
软件项目管理中国科学技术大学课件_第4页
第4页 / 共217页
软件项目管理中国科学技术大学课件_第5页
第5页 / 共217页
点击查看更多>>
资源描述

《软件项目管理中国科学技术大学课件》由会员分享,可在线阅读,更多相关《软件项目管理中国科学技术大学课件(217页珍藏版)》请在金锄头文库上搜索。

1、软件工程学软件工程学中国科学技术大学网络学院中国科学技术大学网络学院11.1 11.1 项目管理过程项目管理过程11.2 11.2 软件生产率和质量的度量软件生产率和质量的度量11.3 11.3 软件项目的估算软件项目的估算11.4 11.4 软件项目计划的目标软件项目计划的目标11.5 11.5 软件成本和工作量估算软件成本和工作量估算11.6 11.6 进度进度计划计划安排安排11.7 11.7 软件项目的组织与计划软件项目的组织与计划11.8 11.8 软件过程与软件过程与能力能力成熟度模型成熟度模型第11章 软件项目管理 11.1项目管理过程软件项目管理的对象是软件项目管理的对象是软件

2、工程软件工程项目项目。它所涉及的范围。它所涉及的范围覆盖了整覆盖了整个软件工程过程个软件工程过程。为使软件项目开发获得成功,为使软件项目开发获得成功,关关键问题键问题是必须对软件项目的是必须对软件项目的工作工作范围范围、可能风险可能风险、需要资源需要资源(人人、硬件硬件软件软件)、要实现的任务要实现的任务、经经历的里程碑历的里程碑、花费工作量花费工作量(成本成本)、进度安排进度安排等做到心中有数。等做到心中有数。启动一个软件项目在制定软件项目计划之前,必须在制定软件项目计划之前,必须 明确项目的目标和范围明确项目的目标和范围 考虑候选的解决方案考虑候选的解决方案 标明技术和管理上的要求标明技术

3、和管理上的要求有了这些信息,才能确定有了这些信息,才能确定合理合理、精确的成本估算精确的成本估算,实际可行的任实际可行的任务分解务分解以及以及可管理的进度安排可管理的进度安排。软件人员和用户是在软件人员和用户是在系统工程步系统工程步骤骤中中确定项目的目标和范围确定项目的目标和范围。目标目标标明了标明了软件项目的目的软件项目的目的但不但不涉及如何去达到这些目的。涉及如何去达到这些目的。范围范围标明了标明了软件要实现的基本功软件要实现的基本功能能,并尽量以定量的方式界定这,并尽量以定量的方式界定这些功能。些功能。当明确了软件项目的目标和范围当明确了软件项目的目标和范围后,就应考虑后,就应考虑候选的

4、解决方案候选的解决方案。有了方案,管理人员和技术人员有了方案,管理人员和技术人员就能够据此选择就能够据此选择一种一种“好的好的”方方法法,给出诸如,给出诸如交付期限交付期限、预算预算、个人能力个人能力、技术界面技术界面及其它许多及其它许多因素所构成的限制。因素所构成的限制。度量进行度量工作,是为了进行度量工作,是为了了解产品了解产品开发的技术过程开发的技术过程和和产品本身产品本身。 度量度量开发过程开发过程的目的是为了的目的是为了改改进过程进过程, 度量度量产品产品的目的是为了提高的目的是为了提高产产品的质量品的质量。度量的作用是为了度量的作用是为了有效地定量地有效地定量地进行管理进行管理。为

5、有效地度量,常常需要考虑:对为有效地度量,常常需要考虑:对于于过程过程和和产品产品, 合适的度量是什么?合适的度量是什么? 所收集的数据如何使用?所收集的数据如何使用? 用于比较个人、过程或产品的度用于比较个人、过程或产品的度量是否合理?量是否合理?管理人员和技术人员可利用这些度管理人员和技术人员可利用这些度量来了解软件工程过程的实际情况量来了解软件工程过程的实际情况和它所生产的产品质量和它所生产的产品质量 。估算在在软件项目管理过程软件项目管理过程中关键的活中关键的活动就是动就是制定项目计划制定项目计划。在做计划时必须就在做计划时必须就需要的人力需要的人力(以人月为单位以人月为单位)、)、项

6、目持续时项目持续时间间(以年份或月份为单位以年份或月份为单位)、)、成成本本(以元为单位以元为单位)做出估算。)做出估算。这种估算大多是这种估算大多是利用以前的花费利用以前的花费做为参考做为参考而做出的。而做出的。如果新项目与以前的一个项目在如果新项目与以前的一个项目在大小大小上和上和功能功能上十分上十分类似类似,则新,则新项目需要工作量、开发持续时间、项目需要工作量、开发持续时间、成本大致与那个老项目相同。成本大致与那个老项目相同。假使项目背景完全生疏,只凭过假使项目背景完全生疏,只凭过去的经验做出估算可能就不够了。去的经验做出估算可能就不够了。现在已有了许多用于软件开发的现在已有了许多用于

7、软件开发的估算技术估算技术。其共同特点是:。其共同特点是: 事先建立软件范围事先建立软件范围 以软件度量(以往的度量)为以软件度量(以往的度量)为基础,以做出估算基础,以做出估算 项目被分解为可单独进行估算项目被分解为可单独进行估算的小块的小块管理人员大多使用不止一种估算管理人员大多使用不止一种估算技术,并用一种估算技术做为另技术,并用一种估算技术做为另一种估算技术的交叉检查。一种估算技术的交叉检查。风险分析每当新建一个程序时,总是存在每当新建一个程序时,总是存在某些不确定性。某些不确定性。 用户要求是否能确切地被理解用户要求是否能确切地被理解? 在项目最后结束之前要求实现在项目最后结束之前要

8、求实现的功能能否建立?的功能能否建立? 是否存在目前仍未发现的技术是否存在目前仍未发现的技术难题?难题? 在项目出现严重误期时是否在项目出现严重误期时是否 会发生一些变更会发生一些变更?等等。?等等。风险分析风险分析对于软件项目管理对于软件项目管理是决是决定性的定性的,然而现在还有许多项目,然而现在还有许多项目不考虑风险就着手进行。不考虑风险就着手进行。所谓所谓风险分析风险分析实际上就是一系列实际上就是一系列风险管理步骤风险管理步骤,其中包括,其中包括风险识风险识别别、风险估计风险估计、风险优化风险优化、风险风险管理策略管理策略、风险解决风险解决和和风险监督风险监督。这些步骤贯穿在软件工程过程

9、中。这些步骤贯穿在软件工程过程中。 进度安排每一个软件项目都要求制定一个每一个软件项目都要求制定一个进度安排进度安排,但不是所有的进度都,但不是所有的进度都得一样安排。得一样安排。对于进度安排,需要考虑的是:对于进度安排,需要考虑的是: 预先对进度如何计划?预先对进度如何计划? 工作怎样就位?工作怎样就位? 如何识别定义好的任务?如何识别定义好的任务? 管理人员对管理人员对结束时间如何掌握结束时间如何掌握 ? 如何如何识别识别和和监控关键路径监控关键路径以以确保确保结束结束? 对进展如何度量?对进展如何度量? 如何建立如何建立分隔任务的里程碑分隔任务的里程碑。软件项目的进度安排与任一个工程软件

10、项目的进度安排与任一个工程项目的进度安排基本相同。首先项目的进度安排基本相同。首先识识别一组项目任务别一组项目任务,再,再建立任务之间建立任务之间的相互关联的相互关联,然后,然后估算各个任务的估算各个任务的工作量工作量,分配人力分配人力和和其它资源其它资源,制制定进度时序定进度时序。追踪和控制一旦建立了一旦建立了开发进度安排开发进度安排,就可以,就可以开始着手开始着手追踪和控制活动追踪和控制活动。由由项目管理人员负责追踪在进度安项目管理人员负责追踪在进度安排中排中标明的每一个任务。标明的每一个任务。如果任务实际完成日期滞后于进度如果任务实际完成日期滞后于进度安排,则管理人员可以使用一种自安排,

11、则管理人员可以使用一种自动的项目进度安排工具来确定在项动的项目进度安排工具来确定在项目的中间里程碑上进度误期所造成目的中间里程碑上进度误期所造成的影响。的影响。还可还可对资源重新定向对资源重新定向对对任务重新安排任务重新安排(做为最坏的结果做为最坏的结果)可以修改交可以修改交付日期以调整已经暴露的问题付日期以调整已经暴露的问题。用这种方式可以较好地控制软件用这种方式可以较好地控制软件的开发。的开发。11.2软件生产率和质量的度量生产率与质量的度量是生产率与质量的度量是以投入工作以投入工作量量为依据的为依据的软件开发活动软件开发活动的度量和的度量和开发成果开发成果质量的度量。质量的度量。 为什么

12、要对软件进行度量为什么要对软件进行度量 面向规模的度量面向规模的度量 面向功能的度量面向功能的度量 软件质量的度量软件质量的度量 在软件工程过程中使用度量在软件工程过程中使用度量为什么要对软件进行度量 表明表明软件产品的质量软件产品的质量; 弄清弄清软件开发人员的生产率软件开发人员的生产率; 给出使给出使用了新的软件工程方法和用了新的软件工程方法和工具工具所得到的(在生产率和质量两所得到的(在生产率和质量两方面)的方面)的效益效益; 建立建立项目估算项目估算的的“基线基线”; 帮助帮助调整对新的工具调整对新的工具和和附加培训附加培训的要求的要求。度量的方式 在物理世界中的度量有两种方式。在物理

13、世界中的度量有两种方式。 直接度量(例如,度量一个螺直接度量(例如,度量一个螺栓的长度);栓的长度); 间接度量(例如,用次品率来间接度量(例如,用次品率来度量生产出的螺栓质量)。度量生产出的螺栓质量)。软件度量也同样分为两类:软件度量也同样分为两类:直接直接度量度量与与间接度量间接度量。软件工程过程的直接度量包括软件工程过程的直接度量包括所投所投入的成本入的成本和和工作量工作量。软件产品的直接度量包括软件产品的直接度量包括产生的代产生的代码行数码行数(LOC)、)、执行速度执行速度、存储存储量大小量大小、在某种时间周期中所报告在某种时间周期中所报告的差错数的差错数。软件产品的间接度量包括软件

14、产品的间接度量包括功能性功能性、复杂性复杂性、效率效率、可靠性可靠性、可维护性可维护性和和许多其它的质量特性许多其它的质量特性。软件度量域的分类面向规模的度量面向规模的度量面向规模的度量是对是对软件软件和和软件开软件开发过程发过程的直接度量。的直接度量。可以建立一个可以建立一个面向规模面向规模的的数据表格数据表格来记录项目的某些信息。来记录项目的某些信息。该表格列出了该表格列出了在过去几年完成的每在过去几年完成的每一个软件开发项目一个软件开发项目和和关于这些项目关于这些项目的相应面向规模的数据的相应面向规模的数据。面向规模的数据表格根据数据表格可以对所有的项目计根据数据表格可以对所有的项目计算

15、出平均值:算出平均值:生产率生产率 KLOCPM(人月)(人月)质量质量 错误数错误数KLOC成本成本 元元LOC文档文档 文档页数文档页数KLOC面向功能的度量面向功能的软件度量是对面向功能的软件度量是对软件软件和和软软件开发过程件开发过程的的间接度量间接度量。面向功能度量主要考虑面向功能度量主要考虑程序的程序的“功功能性能性”和和“实用性实用性”,而不是对而不是对 LOC计数计数。该度量是一种叫做该度量是一种叫做功能点方法功能点方法的生的生产率度量法,利用产率度量法,利用软件信息域软件信息域中的中的一些计数一些计数和和软件复杂性估计软件复杂性估计的的经验经验关系式关系式而导出而导出功能点功

16、能点 FP。面向功能的数据表格功能点计算确定确定五个信息域五个信息域的特征,并在表格的特征,并在表格中相应位置给出计数。中相应位置给出计数。 (1) 用户输入数:用户输入数:各个用户输入是各个用户输入是面向不同应用的输入数据面向不同应用的输入数据。(2) 用户输出数:用户输出数:各个用户输出是各个用户输出是面向应用的输出信息面向应用的输出信息,包括,包括报告报告,屏幕信息屏幕信息,错误信息错误信息等。等。在在报告报告中中的各个数据项不应再分别计数的各个数据项不应再分别计数。(3) 用户查询数:用户查询数:查询是一种联机查询是一种联机的交互操作,每次询问的交互操作,每次询问/响应具备应响应具备应

17、计数。计数。 (4) 文件数:文件数:每一个逻辑主文件都每一个逻辑主文件都应计数。逻辑主文件是指逻辑上的应计数。逻辑主文件是指逻辑上的一组数据,可以是一个大数据库的一组数据,可以是一个大数据库的一部分,可以是一个单独的文件。一部分,可以是一个单独的文件。(5) 外部接口数:外部接口数:与系统中其他设与系统中其他设备通过外部接口读写信息次数均应备通过外部接口读写信息次数均应计数。计数。一旦收集到上述数据,就可以计算一旦收集到上述数据,就可以计算出出与每一个计数相关的复杂性值与每一个计数相关的复杂性值。一个信息域是一个信息域是简单的简单的、平均的平均的还是还是复杂的复杂的,由使用功能点方法的机构,

18、由使用功能点方法的机构自行确定,从而计算出加权计数。自行确定,从而计算出加权计数。计算功能点,使用如下的关系式计算功能点,使用如下的关系式:FP 总计数总计数( 0.65 + 0.01SUM ( Fi ) )总计数是所有加权计数项的和总计数是所有加权计数项的和Fi(i1.14)是)是复杂性校正值复杂性校正值,它,它们应通过逐一回答如下提问来确定。们应通过逐一回答如下提问来确定。Fi的取值的取值0.5:0 没有影响没有影响 1 偶然的偶然的2 适中的适中的 3 普通的普通的4 重要的重要的 5 极重要的极重要的SUM(Fi)是求和函数。)是求和函数。复杂性校正值 Fi1. 系统是否需要系统是否需

19、要可靠的备份可靠的备份和和恢复恢复?2. 是否需要是否需要数据通信数据通信?3. 是否有是否有分布处理的功能分布处理的功能?4. 是否是否性能成为关键性能成为关键?5. 系统是否系统是否运行在既存的高度实用化运行在既存的高度实用化的操作环境中的操作环境中?6. 系统是否需要系统是否需要联机数据项联机数据项?7. 联机数据项是否需要联机数据项是否需要建立多重窗口建立多重窗口 显示和操作显示和操作,以处理输入处理以处理输入处理。8. 主文件是否主文件是否联机更新联机更新?9. 输入输入、输出输出、文件文件、查询查询是否是否复杂复杂?10. 内部处理过程内部处理过程是否是否复杂复杂?11. 程序代码

20、程序代码是否是否可复用可复用?12. 设计中是否包括了设计中是否包括了转移转移和和安装安装?13. 系统是否设计成可以系统是否设计成可以重复安装在不重复安装在不同机构中同机构中14. 系统是否设计成系统是否设计成易修改易修改和和易使用易使用?一旦计算出一旦计算出功能点功能点,就可仿照,就可仿照LOC的方式的方式度量软件的生产率、质量和度量软件的生产率、质量和其它属性:其它属性:生产率生产率 FPPM(人月)(人月)质量质量 错误数错误数FP成本成本 元元FP文档文档 文档页数文档页数FP功能点度量功能点度量是为了是为了商用信息系统应商用信息系统应用用而设计的。而设计的。特征点度量特征点度量(F

21、eature Points)可以)可以用于用于系统系统和和工程软件应用工程软件应用特征点度量适合于特征点度量适合于算法复杂性高算法复杂性高的的应用。而实时处理、过程控制、嵌应用。而实时处理、过程控制、嵌入式软件应用的算法复杂性都偏高,入式软件应用的算法复杂性都偏高,因此适合于特征点度量。因此适合于特征点度量。为了计算特征点,可以象为了计算特征点,可以象功能点计功能点计算算那样,那样,对对信息域值信息域值进行计数和加进行计数和加权权。此外,。此外,特征点度量要对一个新特征点度量要对一个新的软件特征的软件特征“算法算法”进行计数进行计数。计算特征点可使用一个计算表格。计算特征点可使用一个计算表格。

22、 对于每一个度量参数只使用一个权对于每一个度量参数只使用一个权值,并且使用值,并且使用 FP总计数总计数( 0.650.01SUM ( Fi ) ) 来计算总的特征点值。来计算总的特征点值。特征点度量计算表格软件质量的度量质量度量贯穿于软件工程的全过程质量度量贯穿于软件工程的全过程中中以及以及软件交付用户使用之后软件交付用户使用之后。在在软件交付之前软件交付之前得到的度量可作为得到的度量可作为判断设计和测试质量好坏的依据。判断设计和测试质量好坏的依据。这一类度量包括程序复杂性、有效这一类度量包括程序复杂性、有效的模块性和总的程序规模。的模块性和总的程序规模。在在软件交付之后软件交付之后的度量则

23、把注意力的度量则把注意力集中于还未发现的差错数和系统的集中于还未发现的差错数和系统的可维护性方面。可维护性方面。使用得最广泛软件质量的事后度量使用得最广泛软件质量的事后度量包括包括正确性正确性、可维护性可维护性、完整性完整性和和可使用性可使用性。 (1) 正确性:正确性:一个程序必须一个程序必须正确地运正确地运行行,并,并为它的用户提供某些输出为它的用户提供某些输出。正确性要求软件执行所要求的功能。正确性要求软件执行所要求的功能。正确性的度量正确性的度量是是每千代码行每千代码行(KLOC)的差错数的差错数,其中,其中将差错定义为已被将差错定义为已被证实是不符合需求的缺陷证实是不符合需求的缺陷。

24、(2) 可维护性:可维护性:软件维护比其它的软软件维护比其它的软件工程活动需要更多的工作量。还件工程活动需要更多的工作量。还没有一种方法可以直接度量可维护没有一种方法可以直接度量可维护性,因此性,因此必须采取间接度量必须采取间接度量。有一种简单的面向时间的度量,叫有一种简单的面向时间的度量,叫做做平均变更等待时间平均变更等待时间MTTC。这个时间包括这个时间包括分析变更要求分析变更要求、设计设计适当的修改适当的修改、实现变更并测试实现变更并测试、及、及把变更发送给所有的用户把变更发送给所有的用户。一个可维护的程序与不可维护的程一个可维护的程序与不可维护的程序相比,应有较低的序相比,应有较低的M

25、TTC。 (3) 完整性:完整性:完整性完整性度量一个系统度量一个系统抗拒对它的安全性攻击抗拒对它的安全性攻击(事故的和(事故的和人为的)人为的)的能力的能力。软件的所有三个。软件的所有三个成分成分程序程序、数据数据和和文档文档都会遭到攻都会遭到攻击。击。度量度量完整性完整性,需要定义两个附加的,需要定义两个附加的属性:属性:危险性危险性和和安全性安全性。危险性危险性是是特定类型的攻击将在一给特定类型的攻击将在一给定时间内发生的概率定时间内发生的概率,安全性安全性是是排排除特定类型攻击的概率除特定类型攻击的概率。一个系统的完整性可定义为一个系统的完整性可定义为完整性完整性( 1危险性危险性(

26、1安全性安全性) )其中,对每一个攻击的其中,对每一个攻击的危险性危险性和和安全性安全性都进行累加。都进行累加。(4) 可使用性:可使用性:如果一个程序不具有如果一个程序不具有“用户友好性用户友好性”,即使它所执行,即使它所执行的功能很有价值,也常常会失败。的功能很有价值,也常常会失败。可使用性量化可使用性量化“用户友好性用户友好性”,并依据以下四个特征进行度量:并依据以下四个特征进行度量:为学习系统所需要的为学习系统所需要的体力上的体力上的和和智智力上的力上的技能;技能;为达到适度有效使用系统所需要的为达到适度有效使用系统所需要的时间;时间;当软件被某些人适度有效地使用时当软件被某些人适度有

27、效地使用时所度量的所度量的在生产率方面的净增值在生产率方面的净增值;用户角度对用户角度对系统的主观评价系统的主观评价(可以(可以通过问题调查表得到)。通过问题调查表得到)。在软件工程过程中使用度量建立基线建立基线 为了将为了将LOC和和FP用于软件估算技用于软件估算技术中,必须建立术中,必须建立历史数据基线历史数据基线。 根据历史经验,根据历史经验,在软件工程过程在软件工程过程的衔接处划出一条基线的衔接处划出一条基线,在此基,在此基线上线上附有一些用于度量的经验目附有一些用于度量的经验目标信息标信息,作为工程过程评估的依,作为工程过程评估的依据,判断工程过程的完成是否达据,判断工程过程的完成是

28、否达到预想的要求。到预想的要求。质量度量数据一旦收集到,软件开质量度量数据一旦收集到,软件开发组织就可以发组织就可以根据它们来调整其软根据它们来调整其软件工程项目件工程项目,以消除那些对软件开以消除那些对软件开发有重大影响的差错产生的根源发有重大影响的差错产生的根源。大多数软件开发人员都希望了解:大多数软件开发人员都希望了解:哪些用户需求哪些用户需求可能会可能会变更变更?系统中?系统中哪些模块哪些模块容易容易出错出错?对?对每一个模块每一个模块要要做多少测试做多少测试?在测试时能够?在测试时能够预计预计多少错误多少错误?如果能收集到相关的度?如果能收集到相关的度量数据,就能确定这些问题的答案。

29、量数据,就能确定这些问题的答案。11.3软件项目的估算软件项目管理过程开始于项目计划。软件项目管理过程开始于项目计划。在做项目计划时,第一项活动就是在做项目计划时,第一项活动就是估算估算。在做估算时往往存在某些不确定性,在做估算时往往存在某些不确定性,使得软件项目管理人员无法正常进使得软件项目管理人员无法正常进行管理而导致产品迟迟不能完成。行管理而导致产品迟迟不能完成。现在已使用的实用技术是现在已使用的实用技术是时间时间和和工工作量估算作量估算。估算对风险的影响项目的复杂性项目的复杂性对于对于增加软件计划的增加软件计划的不确定性影响很大不确定性影响很大。复杂性越高,。复杂性越高,估算的风险就越

30、高。估算的风险就越高。项目的规模项目的规模对于软件估算的精确性对于软件估算的精确性和功效影响也比较大和功效影响也比较大。随着软件规。随着软件规模的扩大,问题分解会变得更加困模的扩大,问题分解会变得更加困难。难。项目的规模越大项目的规模越大,开发工作量开发工作量越大越大,估算的风险越高估算的风险越高。项目的结构化程度项目的结构化程度也影响项目估算也影响项目估算的风险。随着结构化程度的提高,的风险。随着结构化程度的提高, 进行精确估算的能力就能提高,而进行精确估算的能力就能提高,而风险将减少。风险将减少。历史信息的有效性历史信息的有效性也也影响估算的风影响估算的风险险。对过去的项目进行综合的软件。

31、对过去的项目进行综合的软件度量,可借用来比较准确地进行估度量,可借用来比较准确地进行估算,安排进度以避免重走过去的弯算,安排进度以避免重走过去的弯路,而总的风险也减少了。路,而总的风险也减少了。如果如果对软件项目的作用范围还不十对软件项目的作用范围还不十分清楚分清楚,或者,或者用户的要求经常变更用户的要求经常变更,都会导致对都会导致对软件项目所需资源软件项目所需资源、成成本本、进度进度的估算频频变动,增加估的估算频频变动,增加估算的风险。算的风险。计划人员应当要求计划人员应当要求在软件系统的规在软件系统的规格说明中给出完备的功能格说明中给出完备的功能、性能性能、接口的定义接口的定义。11.4软

32、件项目计划的目标软件项目管理人员在软件项目管理人员在开发工作一开开发工作一开始始需要进行需要进行定量估算定量估算。软件项目计划的目标软件项目计划的目标是是提供一个能提供一个能使项目管理人员对资源使项目管理人员对资源、成本和进成本和进度做出合理估算的框架度做出合理估算的框架。这些估算应当在软件项目开始时的这些估算应当在软件项目开始时的一个有限的时间段内做出,并且随一个有限的时间段内做出,并且随着项目的进展定期进行更新。着项目的进展定期进行更新。软件的范围软件范围包括软件范围包括功能功能、性能性能、限制限制、接口接口和和可靠性可靠性。估算开始时,应对软件的功能进行估算开始时,应对软件的功能进行评价

33、,对其进行适当的细化以便提评价,对其进行适当的细化以便提供更详细的细节。由于供更详细的细节。由于成本和进度成本和进度的估算都与功能有关的估算都与功能有关,因此,因此常常采常常采用某种程度的功能分解用某种程度的功能分解。性能的考虑包括性能的考虑包括处理处理和和响应时间响应时间的的需求。需求。约束条件则约束条件则标识产品成本标识产品成本、外部硬外部硬件件、可用存储可用存储或或其它现有系统其它现有系统对软对软件的件的限制限制。功能、性能和约束必须在一起进行功能、性能和约束必须在一起进行评价评价。当性能限制不同时,为实现。当性能限制不同时,为实现同样的功能,开发工作量可能相差同样的功能,开发工作量可能

34、相差一个数量级。一个数量级。还要叙述某些还要叙述某些质量因素质量因素(例如,给(例如,给出的算法是否容易理解等)。出的算法是否容易理解等)。软件与其它系统元素是相互作用的。软件与其它系统元素是相互作用的。要考虑要考虑每个接口的性质和复杂性每个接口的性质和复杂性,以确定对开发资源、成本和进度的以确定对开发资源、成本和进度的影响。接口的概念可解释为:影响。接口的概念可解释为: 运行软件的硬件运行软件的硬件(如处理机与外(如处理机与外设)设)及间接受软件控制的设备及间接受软件控制的设备(如机器、显示器)(如机器、显示器); 必须与新软件链接的现有的软件必须与新软件链接的现有的软件(如数据库存取例程、

35、子程序包、(如数据库存取例程、子程序包、操作系统)操作系统); 通过终端或其它输入输出设备通过终端或其它输入输出设备使用该软件的人使用该软件的人; 该软件运行前后的该软件运行前后的一系列操作过一系列操作过程程。对于每一种情况,都必须清楚地了对于每一种情况,都必须清楚地了解通过接口的信息转换。解通过接口的信息转换。软件开发中的资源软件项目计划的第二个任务是对完软件项目计划的第二个任务是对完成该软件项目所需的资源进行估算。成该软件项目所需的资源进行估算。软件开发所需的软件开发所需的资源资源有有现成的用以支持软件开发的工具现成的用以支持软件开发的工具 硬件工具硬件工具及及软件工具软件工具最基本的资源

36、最基本的资源 人人软件开发中的资源通常,对每一种资源,应说明以下通常,对每一种资源,应说明以下四个特性:四个特性:(1)资源的描述)资源的描述;(2)资源的有效性说明)资源的有效性说明;(3)资源在何时开始需要)资源在何时开始需要;(4)使用资源的持续时间。)使用资源的持续时间。最后两个特性统称为最后两个特性统称为时间窗口时间窗口。1. 人力资源在考虑各种软件开发资源时,在考虑各种软件开发资源时,人是人是最重要的资源最重要的资源。在安排开发活动时。在安排开发活动时必须考虑必须考虑人员的技术水平人员的技术水平、专业专业、人数人数、以及、以及在开发过程各阶段中对在开发过程各阶段中对各种人员的需要各

37、种人员的需要。计划人员首先计划人员首先估算范围估算范围并并选择为完选择为完成开发工作所需要的技能成开发工作所需要的技能。还要在。还要在组织组织和和专业专业两方面做出安排。两方面做出安排。对于一些对于一些规模较小的项目规模较小的项目(1个人个人年或者更少),只要向专家做些咨年或者更少),只要向专家做些咨询,也许询,也许一个人就可以完成所有的一个人就可以完成所有的软件工程步骤软件工程步骤。对一些对一些规模较大的项目规模较大的项目,在整个软,在整个软件生存期中,件生存期中,各种人员的参与情况各种人员的参与情况是不一样的是不一样的。下面是各类不同的人。下面是各类不同的人员随开发工作的进展在软件工程各员

38、随开发工作的进展在软件工程各个阶段的参与情况的典型曲线。个阶段的参与情况的典型曲线。2. 硬件资源硬件是作为软件开发项目的一种工硬件是作为软件开发项目的一种工具而投入的。具而投入的。(1)宿主机)宿主机(Host) 软件开发时软件开发时使用的计算机及外围设备使用的计算机及外围设备;(2)目标机)目标机(Target) 运行已开运行已开发成功软件的计算机及外围设备发成功软件的计算机及外围设备;(3)其它硬件设备)其它硬件设备 专用软件开发专用软件开发时需要的特殊硬件资源时需要的特殊硬件资源;3. 软件资源软件工程人员在软件开发期间使用软件工程人员在软件开发期间使用了许多软件工具来帮助开发。这种了

39、许多软件工具来帮助开发。这种软件工具集叫做软件工具集叫做计算机辅助软件工计算机辅助软件工程程(CASE)。)。(1)业务系统计划工具集业务系统计划工具集(2)项目管理工具集项目管理工具集 (3)支援工具支援工具文档生成工具、文档生成工具、网络系统软件、数据库、电子邮件、网络系统软件、数据库、电子邮件、通报板,以及配置管理工具。通报板,以及配置管理工具。 (4)分析和设计工具分析和设计工具(5)编程工具编程工具 (6)组装和测试工具组装和测试工具(7)原型化和模拟工具原型化和模拟工具(8)维护工具维护工具(9)框架工具框架工具这些工具能够提这些工具能够提供建立集成项目支撑环境供建立集成项目支撑环

40、境(IPSE)的框架。)的框架。4. 软件复用性及软件部件库为了促成软件的复用,以提高软件为了促成软件的复用,以提高软件的生产率和软件产品的质量,可建的生产率和软件产品的质量,可建立可复用的软件部件库。立可复用的软件部件库。11.5软件成本和工作量的估算软件软件成本和工作量的估算成本和工作量的估算中变化的中变化的东西太多,人、技术、环境、政治,东西太多,人、技术、环境、政治,都会影响软件最终成本和工作量。都会影响软件最终成本和工作量。软件项目的估算能够软件项目的估算能够通过一系列系通过一系列系统化的步骤统化的步骤,在可接受的风险范围在可接受的风险范围内提供估算结果内提供估算结果。成本估算必须成

41、本估算必须“事前事前”给出。时间给出。时间越久,了解得越多,估算中出现的越久,了解得越多,估算中出现的严重误差就越少。严重误差就越少。分解技术当一个当一个待解决的问题过于复杂待解决的问题过于复杂时,时,我们可以把它我们可以把它进一步分解进一步分解,直到,直到分分解后的子问题变得容易解决解后的子问题变得容易解决为止。为止。然后,然后,分别解决每一个子问题分别解决每一个子问题,并,并将这些子问题的解答综合起来将这些子问题的解答综合起来,从,从而而得到原问题的解答得到原问题的解答。LOC和FP估算在软件项目估算中,在两个方面使在软件项目估算中,在两个方面使用了用了LOC和和FP数据:数据: 把把LO

42、C和和FP数据当做一个估算数据当做一个估算变量,用于变量,用于量度软件每一个元素量度软件每一个元素的规模的规模。 LOC和和FP数据作为从过去项目数据作为从过去项目中收集到的中收集到的基线数据基线数据,与其它估,与其它估算变量联合使用算变量联合使用, 进行成本和工作进行成本和工作量的估算量的估算。LOC和和FP的共性在于的共性在于: 给出一个有界的软件范围的叙述给出一个有界的软件范围的叙述 由此叙述由此叙述把软件分解成一些小的把软件分解成一些小的可分别独立进行估算的子功能可分别独立进行估算的子功能 对每一个子功能对每一个子功能估算估算LOC或或FP 把基线生产率度量把基线生产率度量(如如LOC

43、PM或或FPPM) 用做特定的估算变量,用做特定的估算变量,导出子功能的成本或工作量导出子功能的成本或工作量综合子功能的估算综合子功能的估算得到得到整个项目整个项目的总估算的总估算。项目计划人员可项目计划人员可对每一个分解的功对每一个分解的功能提出一个有代表性的估算值范围能提出一个有代表性的估算值范围。利用历史数据利用历史数据或或凭实际经验凭实际经验(当其(当其它的方法失效时),它的方法失效时),对每个功能分对每个功能分别按别按最佳的最佳的、可能的可能的、悲观的悲观的三种三种情况给出情况给出LOC或或FP估计值估计值。记作。记作a、m、b。接着计算接着计算LOC或或FP的的期望值期望值 E。

44、E (a4mb)6 所有子功能的总估算变量值所有子功能的总估算变量值除以除以相相应于该估算变量的平均生产率度量应于该估算变量的平均生产率度量得到得到项目的总工作量项目的总工作量。例如,若假定总的例如,若假定总的FP估算值估算值是是310,基于过去项目的平均基于过去项目的平均FP生产率生产率是是5.5FPPM,则,则项目的总工作量项目的总工作量是:是: 工作量工作量 3105.5 56 PM作为作为LOC和和FP估算的实例,考察估算的实例,考察一个为一个为CAD应用而开发的软件包。应用而开发的软件包。系统定义评审指明,系统定义评审指明,软件是在一个软件是在一个工作站上运行,其接口必须使用各工作站

45、上运行,其接口必须使用各种计算机图形设备,包括鼠标器、种计算机图形设备,包括鼠标器、数字化仪、高分辩率彩色显示器和数字化仪、高分辩率彩色显示器和激光打印机。激光打印机。在这个实例中,使用在这个实例中,使用LOC做为估算做为估算变量。变量。根据系统规格说明根据系统规格说明, 软件范围软件范围的初步的初步叙述如下叙述如下 “软件将从操作员那里接收软件将从操作员那里接收2维或维或3维维几何数据几何数据。 操作员通过操作员通过用户界面用户界面与与 CAD系统系统交互并控制它交互并控制它,这种用户,这种用户界面将表现出很好的人机接口设计界面将表现出很好的人机接口设计特性。所有的几何数据和其它支持特性。所

46、有的几何数据和其它支持信息保存在一个信息保存在一个CAD数据库数据库内。要内。要开发一些开发一些设计分析模块设计分析模块以产生在各以产生在各种图形设备上显示的输出。软件要种图形设备上显示的输出。软件要设计得设计得能控制并与能各种外部设备能控制并与能各种外部设备,包括鼠标器、数字化仪、激光打印包括鼠标器、数字化仪、激光打印机和绘图仪机和绘图仪交互交互。”经过分解经过分解, 识别出下列主要软件功能:识别出下列主要软件功能: 用户界面和控制功能用户界面和控制功能 二维几何分析二维几何分析 三维几何分析三维几何分析 数据库管理数据库管理 计算机图形显示功能计算机图形显示功能 外设控制外设控制PC 设计

47、分析模块设计分析模块通过分解,可得到如下估算表通过分解,可得到如下估算表估算表估算表软件开发成本估算软件开发成本主要是指软件开发成本主要是指软件开发过软件开发过程中所花费的工作量及相应的代价程中所花费的工作量及相应的代价。它不包括原材料和能源的消耗,主它不包括原材料和能源的消耗,主要是人的劳动的消耗。要是人的劳动的消耗。人的劳动消耗所需代价就是软件产人的劳动消耗所需代价就是软件产品的开发成本。品的开发成本。软件产品开发成本的计算方法不同软件产品开发成本的计算方法不同于其它物理产品成本的计算。于其它物理产品成本的计算。软件的开发成本是软件的开发成本是以一次性开发过以一次性开发过程所花费的代价程所

48、花费的代价来计算的。来计算的。软件开发成本的估算,应是从软件开发成本的估算,应是从软件软件计划计划、需求分析需求分析、设计设计、编码编码、单单元测试元测试、组装测试组装测试到到确认测试确认测试,整,整个软件开发全过程所花费的代价作个软件开发全过程所花费的代价作为依据的。为依据的。软件开发成本估算方法对于一个大型的软件项目,由于对于一个大型的软件项目,由于项项目的复杂性目的复杂性,开发成本的估算不是,开发成本的估算不是一件简单的事,要进行一系列的估一件简单的事,要进行一系列的估算处理。主要靠算处理。主要靠分解分解和和类推类推。基本估算方法分为三类。基本估算方法分为三类。 自顶向下的估算方法自顶向

49、下的估算方法 自底向上的估计法自底向上的估计法 差别估计法差别估计法自顶向下的估算方法这种方法的主要思想是这种方法的主要思想是从项目的整从项目的整体出发体出发,进行类推进行类推。估算人员根据估算人员根据以前已完成项目所消以前已完成项目所消耗的总成本耗的总成本(或总工作量或总工作量),),推算推算将要开发的软件的总成本将要开发的软件的总成本(或总工或总工作量作量),然后),然后按比例将它分配到各按比例将它分配到各开发任务单元中去开发任务单元中去,再来检验它是,再来检验它是否能满足要求。否能满足要求。这种方法的优点是估算工作量小,这种方法的优点是估算工作量小,速度快。速度快。缺点是对项目中的特殊困

50、难估计不缺点是对项目中的特殊困难估计不足,估算出来的成本盲目性大,有足,估算出来的成本盲目性大,有时会遗漏被开发软件的某些部分。时会遗漏被开发软件的某些部分。自底向上的估计法这种方法的主要思想是把这种方法的主要思想是把待开发的待开发的软件细分软件细分,直到每一个子任务都已直到每一个子任务都已经明确所需要的开发工作量经明确所需要的开发工作量,然后,然后把它们加起来把它们加起来,得到软件开发的总得到软件开发的总工作量工作量。它的优点是估算各个部分的准确性它的优点是估算各个部分的准确性高。缺点是缺少各项子任务之间相高。缺点是缺少各项子任务之间相互联系所需要的工作量,还缺少许互联系所需要的工作量,还缺

51、少许多与软件开发有关的系统级工作量多与软件开发有关的系统级工作量.差别估计法这种方法综合了上述两种方法的优这种方法综合了上述两种方法的优点,其主要思想是点,其主要思想是把待开发的软件把待开发的软件项目与过去已完成的软件项目进行项目与过去已完成的软件项目进行类比类比,从其开发的各个子任务中区从其开发的各个子任务中区分出类似的部分和不同的部分分出类似的部分和不同的部分。类似的部分按实际量进行计算类似的部分按实际量进行计算,不不同的部分则采用相应方法进行估算同的部分则采用相应方法进行估算。专家判定技术由多位专家进行成本估算由多位专家进行成本估算单独一位专家可能会有种种偏见,单独一位专家可能会有种种偏

52、见,最好由多位专家进行估算最好由多位专家进行估算,取得多取得多个估算值个估算值。有多种方法把这些估算值合成一个有多种方法把这些估算值合成一个估算值。估算值。一种方法是一种方法是简单地求各估算值的中简单地求各估算值的中值或平均值值或平均值。其优点是简便。缺点。其优点是简便。缺点是可能会由于受一、二个极端估算是可能会由于受一、二个极端估算值的影响而产生严重的偏差。值的影响而产生严重的偏差。一种方法是一种方法是召开小组会召开小组会,使各位专使各位专家们统一于或至少同意某一个估算家们统一于或至少同意某一个估算值值。优点是可以摈弃蒙昧无知的估。优点是可以摈弃蒙昧无知的估算值,缺点是一些组员可能会受权算值

53、,缺点是一些组员可能会受权威或政治因素的影响。威或政治因素的影响。Deiphi技术标准标准Deiphi技术技术组织者发给每位专家一份组织者发给每位专家一份软件系统软件系统规格说明书规格说明书和一张和一张记录估算值的记录估算值的表格表格,请他们进行估算。,请他们进行估算。 专家详细研究软件规格说明书的专家详细研究软件规格说明书的内容,对该软件提出内容,对该软件提出三个规模三个规模的的估算值,即:估算值,即:ai (最小最小), mi (可能可能), bi (最大最大), 无记名地填写表格无记名地填写表格 组织者对专家们填在表格中的答复组织者对专家们填在表格中的答复进行整理进行整理: a. 计算各

54、专家估算的期望值计算各专家估算的期望值 Ei; b. 对专家的估算结果分类摘要对专家的估算结果分类摘要。 专家对此估算值另做一次估算专家对此估算值另做一次估算。在综合专家估算结果的基础上,在综合专家估算结果的基础上,组组织专家再次无记名地填写表格织专家再次无记名地填写表格。 比较两次估算的结果。若差异很比较两次估算的结果。若差异很大,要通过查询找出差异的原因。大,要通过查询找出差异的原因。上述过程可重复多次。上述过程可重复多次。最终可获得最终可获得一个得到多数专家共识的软件规模一个得到多数专家共识的软件规模(源代码行数)。(源代码行数)。最后,通过与历史资料进行类比,最后,通过与历史资料进行类

55、比,根据过去完成软件项目的规模和成根据过去完成软件项目的规模和成本等信息,推算出该软件每行源代本等信息,推算出该软件每行源代码所需要的成本。然后再乘以该软码所需要的成本。然后再乘以该软件源代码行数的估算值,就可得到件源代码行数的估算值,就可得到该软件的成本估算值。该软件的成本估算值。软件开发成本估算的经验模型软件开发成本估算是软件开发成本估算是依据开发成依据开发成本估算模型进行估算本估算模型进行估算的。的。开发成本估算模型通常开发成本估算模型通常采用经验采用经验公式公式来来预测软件项目计划所需要预测软件项目计划所需要的成本的成本、工作量和进度数据工作量和进度数据。用以支持大多数模型的经验数据用

56、以支持大多数模型的经验数据都是都是从有限的一些项目样本从有限的一些项目样本中得中得到的。到的。IBM模型 E 5.2L0.91 D 4.1L0.36 14.47E0.35 S 0.54E0.6 DOC 49L1.01L 是是源代码行数源代码行数 (KLOC),E 是是工工作量作量 (PM),D 是是项目持续时间项目持续时间(月月),S 是是人员需要量人员需要量 (人人),DOC是是文档数量文档数量 (页页)。IBM模型是模型是静态单变量模型静态单变量模型。在此模型中,一般指在此模型中,一般指一条机器指令一条机器指令为一行源代码为一行源代码。一个软件的源代码行数一个软件的源代码行数不包括程序不包

57、括程序注释注释、作业命令作业命令、调试程序在内调试程序在内。对于非机器指令编写的源程序,例对于非机器指令编写的源程序,例如汇编语言或高级语言程序,应如汇编语言或高级语言程序,应转转换成机器指令源代码行数换成机器指令源代码行数来考虑。来考虑。转换系数表定义定义: 转换系数机器指令条数非机转换系数机器指令条数非机器语言执行步数。器语言执行步数。Putnam模型Putnam模型是一种模型是一种动态多变量模动态多变量模型型。适用于大型项目,但也可以应。适用于大型项目,但也可以应用在一些较小的软件项目中。用在一些较小的软件项目中。它是它是假定在软件开发的整个生存期假定在软件开发的整个生存期中工作量有特定

58、的分布中工作量有特定的分布。大型软件项目的开发工作量分布可大型软件项目的开发工作量分布可以用以用Rayleigh-Norden曲线曲线表示。表示。用用Rayleigh-Norden曲线可以导出一曲线可以导出一个个“软件方程软件方程”td 是是开发持续时间开发持续时间 (年年), K是是软件软件开发与维护在内的整个生存期所花开发与维护在内的整个生存期所花费的工作量费的工作量 (人年人年),L是是源代码行源代码行数数 (LOC),Ck是是技术状态常数技术状态常数,因开发环境而异因开发环境而异。技术状态常数Ck的取值COCOMO模型 (COnstructive COst MOdel)结构型成本估算模

59、型是一种结构型成本估算模型是一种精确精确、易于使用易于使用的成本估算方法。的成本估算方法。DSI(源指令条数源指令条数)定义为)定义为代码代码的的源程序行数源程序行数。若一行有两个语句,。若一行有两个语句,则算做一条指令。它则算做一条指令。它包括作业控制包括作业控制语句语句和和格式语句格式语句,但不包括注释语但不包括注释语句。句。KDSI1000DSI。MM(度量单位为(度量单位为人月人月)表示)表示开发开发工作量工作量。TDEV(度量单位为(度量单位为月月)表示)表示开发开发进度进度。它由工作量决定。它由工作量决定。软件开发项目的分类软件开发项目的分类软件开发项目的软件开发项目的总体类型总体

60、类型: 组织型组织型 嵌入型嵌入型 半独立型半独立型COCOMO模型的分类模型的分类COCOMO模型模型按其详细程度按其详细程度分成分成三级:三级: 基本基本COCOMO模型模型 中间中间COCOMO模型模型 详细详细COCOMO模型模型基本基本COCOMO模型模型是是静态单变量静态单变量模型模型,用,用源代码行数源代码行数(LOC) 为为自变自变量量的经验函数计算软件开发工作量。的经验函数计算软件开发工作量。中间中间COCOMO模型模型在用在用LOC为为自自变量变量的函数计算软件开发工作量的函数计算软件开发工作量(称为名义工作量)的基础上,(称为名义工作量)的基础上,用用涉及产品涉及产品、硬

61、件硬件、人员人员、项目等方项目等方面的影响因素调整工作量估算面的影响因素调整工作量估算。详细详细COCOMO模型模型包括中间包括中间CO COMO模型的所有特性,但用上述模型的所有特性,但用上述各种影响因素调整工作量估算时,各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步还要考虑对软件工程过程中每一步骤(分析、设计等)的影响。骤(分析、设计等)的影响。基本COCOMO模型基本基本COCOMO模型的工作量和进模型的工作量和进度公式度公式中间COCOMO模型进一步考虑进一步考虑15种影响软件工作量的种影响软件工作量的因素因素,通过,通过定下乘法因子定下乘法因子,修正修正COCOMO工作

62、量公式和进度公式工作量公式和进度公式,可以更合理地估算软件(各阶段)可以更合理地估算软件(各阶段)的工作量和进度。的工作量和进度。中间中间COCOMO模型的名义工作量模型的名义工作量与进度公式如下所示。与进度公式如下所示。中间中间COCOMO模型的名义工作量模型的名义工作量与进度公式与进度公式15种影响软件工作量的因素 fi产品因素:产品因素:软件可靠性、数据库规软件可靠性、数据库规模、产品复杂性模、产品复杂性硬件因素:硬件因素:执行时间限制、存储限执行时间限制、存储限制、虚拟机易变性、环境周转时间制、虚拟机易变性、环境周转时间人的因素:人的因素:分析员能力、应用领域分析员能力、应用领域实际经

63、验、程序员能力、虚拟机使实际经验、程序员能力、虚拟机使用经验、程序语言使用经验用经验、程序语言使用经验项目因素:项目因素:现代程序设计技术、软现代程序设计技术、软件工具的使用、开发进度限制件工具的使用、开发进度限制此时,工作量计算公式改成此时,工作量计算公式改成例例1. 一个一个32KDSI的声音输入系统是的声音输入系统是一个输入原型,或是一个可行性表一个输入原型,或是一个可行性表演模型。所需可靠性非常低。把此演模型。所需可靠性非常低。把此模型看做半独立型软件。则有模型看做半独立型软件。则有 MM 3.0(32)1.12 146又查表知又查表知 f10.75,其它,其它 fi1.00,则最终有

64、则最终有MM 1460.75 110.例例2. 一个规模为一个规模为10KDSI的商用微的商用微机远程通信的机远程通信的嵌入型软件嵌入型软件,使用中使用中间间COCOMO模型模型进行成本估算。进行成本估算。程序名义工作量程序名义工作量 MM 2.8 (10)1.20 44.38(MM)程序实际工作量程序实际工作量 MM 44.38 44.381.17 51.5(MM)开发所用时间开发所用时间 TDEV 2.5 (51.5)0.32 8.9 (月月)如果分析员与程序员的工资都按每如果分析员与程序员的工资都按每月月6,000美元计算,则该项目的开美元计算,则该项目的开发人员的工资总额为发人员的工资

65、总额为 51.56,000 309,000 (美元美元)做为对比,现在用做为对比,现在用IBM模型模型计算计算: PM 5.2 (10)0.91 42.27 (人月)(人月) D 4.1 (10)0.38 9.84 (月)(月) S 0.54 (42.27)0.60 5.1 (人人)详细COCOMO模型详细详细COCOMO模型的名义工作量模型的名义工作量公式和进度公式与中间公式和进度公式与中间COCOMO模型相同模型相同。工作量因素分级表分层、分阶段给工作量因素分级表分层、分阶段给出。针对每一个影响因素,按出。针对每一个影响因素,按模块模块层层、子系统层子系统层、系统层系统层,有三张工,有三张

66、工作量因素分级表,供不同层次的估作量因素分级表,供不同层次的估算使用。算使用。每一张表中工作量因素又每一张表中工作量因素又按开发各个不同阶段给出按开发各个不同阶段给出。例如,关于软件可靠性(例如,关于软件可靠性(RELY)要求的工作量因素分级表(子系统要求的工作量因素分级表(子系统层),如表所示。层),如表所示。使用这些表格,可以比使用这些表格,可以比中间中间COCO MO模型模型更方便、更准确地估算软更方便、更准确地估算软件开发工作量。件开发工作量。软件可靠性工作量因素分级表(子系统层)11.6进度计划安排软件开发项目的进度安排有两种软件开发项目的进度安排有两种方式:方式:(1)系统)系统最

67、终交付日期已经确定最终交付日期已经确定,软件开发部门必须在规定期限内软件开发部门必须在规定期限内完成;完成;(2)系统)系统最终交付日期只确定了最终交付日期只确定了大致的年限大致的年限,最後交付日期由软,最後交付日期由软件开发部门确定。件开发部门确定。进度安排落空,会导致市场机会的进度安排落空,会导致市场机会的丧失,使用户不满意,而且也会导丧失,使用户不满意,而且也会导致成本的增加。致成本的增加。因此,在考虑进度安排时,要把工因此,在考虑进度安排时,要把工作量与花费时间联系起来,合理分作量与花费时间联系起来,合理分配工作量配工作量, 利用进度安排的有效分利用进度安排的有效分析方法严密监控软件开

68、发的进展情析方法严密监控软件开发的进展情况,使软件开发进度不致拖延。况,使软件开发进度不致拖延。软件开发小组人数与软件生产率的关系当几个人共同承担软件开发项目中当几个人共同承担软件开发项目中的某一任务时,的某一任务时,人与人之间必须通人与人之间必须通过交流来解决各自承担任务之间的过交流来解决各自承担任务之间的接口问题接口问题,即所谓,即所谓通信问题通信问题。通信。通信需花费时间和代价,会引起软件错需花费时间和代价,会引起软件错误增加,降低软件生产率。误增加,降低软件生产率。若两个人之间需要通信,则称在这若两个人之间需要通信,则称在这两个人之间存在一条通信路径。如两个人之间存在一条通信路径。如果

69、一个软件开发小组有果一个软件开发小组有 n 个人,每个人,每两人之间都需要通信,则总的通信两人之间都需要通信,则总的通信路径有路径有 n(n- -1)/2 (条条)。设一个人单独开发软件,生产率是设一个人单独开发软件,生产率是5000行人年行人年。若。若 4 个人个人组成一个组成一个小组共同开发这个软件,则需要小组共同开发这个软件,则需要 6条通信路径条通信路径。若在每条通信路径上。若在每条通信路径上耗费的工作量是耗费的工作量是 250 行人年行人年。则。则小组中每个人的软件生产率降低为小组中每个人的软件生产率降低为 500062504 = 5000375 = 4625 行人年。行人年。从上述

70、分析可知,从上述分析可知,一个软件任务由一个软件任务由一个人单独开发,生产率最高一个人单独开发,生产率最高;而;而对于一个稍大型的软件项目,一个对于一个稍大型的软件项目,一个人单独开发,时间太长。因此人单独开发,时间太长。因此软件软件开发小组是必要的开发小组是必要的。但是,开发小组不宜太大,成员之但是,开发小组不宜太大,成员之间避免太多的通信路径。间避免太多的通信路径。在开发进程中,切忌中途加人,避在开发进程中,切忌中途加人,避免太多的生产率损失。免太多的生产率损失。任务的确定与并行性当参加同一软件工程项目的人数不当参加同一软件工程项目的人数不止一人的时候,开发工作就会出现止一人的时候,开发工

71、作就会出现并行情形。并行情形。软件开发进程中设置许多里程碑。软件开发进程中设置许多里程碑。里程碑为管理人员提供了指示项目里程碑为管理人员提供了指示项目进度的可靠依据。进度的可靠依据。软件工程项目的并行性提出了一系软件工程项目的并行性提出了一系列的进度要求。列的进度要求。因为并行任务是同时发生的,所以因为并行任务是同时发生的,所以进度计划表必须决定任务之间的从进度计划表必须决定任务之间的从属关系,确定各个任务的先后次序属关系,确定各个任务的先后次序和衔接,确定各个任务完成的持续和衔接,确定各个任务完成的持续时间。时间。项目负责人应注意构成关键路径的项目负责人应注意构成关键路径的任务,即若要保证整

72、个项目能按进任务,即若要保证整个项目能按进度要求完成,就必须保证这些任务度要求完成,就必须保证这些任务要按进度要求完成。要按进度要求完成。制定开发进度计划402040规则规则在整个软件开发过程中,编码工在整个软件开发过程中,编码工作量仅占作量仅占 20,编码前工作量占,编码前工作量占40,编码后工作量占,编码后工作量占 40。 402040 规则只应用来做为规则只应用来做为 一个指南。实际的工作量分配比一个指南。实际的工作量分配比例必须按照各项目的特点来决定。例必须按照各项目的特点来决定。COCOMO模型模型开发进度开发进度TDEV与工作量与工作量MM的的关系:关系: TDEV a(MM)b

73、如果想要缩短开发时间,或想要如果想要缩短开发时间,或想要保证开发进度,必须考虑影响工保证开发进度,必须考虑影响工作量的那些因素。按可减小工作作量的那些因素。按可减小工作量的因素取值。量的因素取值。 按此比例确定各个阶段工作量的分按此比例确定各个阶段工作量的分配,从而进一步确定每一阶段所需配,从而进一步确定每一阶段所需的开发时间,然后在每个阶段,进的开发时间,然后在每个阶段,进行任务分解,对各个任务再进行工行任务分解,对各个任务再进行工作量和开发时间的分配。作量和开发时间的分配。进度安排的方法可以把用于一般开发项目的进度安可以把用于一般开发项目的进度安排的技术和工具应用于软件项目。排的技术和工具

74、应用于软件项目。为监控为监控软件项目的进度计划和工作软件项目的进度计划和工作的实际进展情况的实际进展情况,为表现,为表现各项任务各项任务之间进度的相互依赖关系之间进度的相互依赖关系,需要采,需要采用图示的方法。用图示的方法。在图示方法中,必须明确标明:在图示方法中,必须明确标明: 各个任务的各个任务的计划开始时间计划开始时间,完成完成时间时间; 各个任务各个任务完成标志完成标志(即(即文档编文档编写和写和评审);评审); 各个任务与参与工作的人数,各各个任务与参与工作的人数,各个个任务与工作量之间的衔接情况任务与工作量之间的衔接情况; 完成各个任务所需的物理资源和完成各个任务所需的物理资源和数

75、据资源。数据资源。(1) 甘特图(Gantt Chart)在甘特图中,每一任务完成的标准,在甘特图中,每一任务完成的标准,不是以能否继续下一阶段任务为标不是以能否继续下一阶段任务为标准,而是准,而是以必须交付应交付的文档以必须交付应交付的文档与通过评审为标准与通过评审为标准。因此在甘特图。因此在甘特图中,文档编制与评审是软件开发进中,文档编制与评审是软件开发进度的里程碑。度的里程碑。(2) PERT技术和CPM方法PERT技术叫做技术叫做计划评审技术计划评审技术,CPM方法叫做方法叫做关键路径法关键路径法,它们,它们都是安排开发进度,制定软件开发都是安排开发进度,制定软件开发计划的最常用的方法

76、。计划的最常用的方法。它们都采用网络图来描述一个项目它们都采用网络图来描述一个项目的任务网络,也就是从一个项目的的任务网络,也就是从一个项目的开始到结束,把应当完成的任务用开始到结束,把应当完成的任务用图或表的形式表示出来。图或表的形式表示出来。三个模块开发的网络图三个模块开发的网络图通常用两张表来定义网络图。通常用两张表来定义网络图。一张表给出一张表给出与一特定软件项目有关与一特定软件项目有关的所有任务的所有任务(也称为任务分解结构(也称为任务分解结构WorkBreakdown Structure);另一张表给出另一张表给出应当按照什么样的次应当按照什么样的次序来完成这些任务序来完成这些任务

77、(有时称为限制(有时称为限制表表RestrictionList)。)。PERT技术和技术和CPM方法都为项目计方法都为项目计划人员提供了一些定量的工具。划人员提供了一些定量的工具。 确定关键路径确定关键路径,即决定项目开发时,即决定项目开发时间的任务链。在关键路径上的各个间的任务链。在关键路径上的各个任务都是时间余量为零的关键任务,任务都是时间余量为零的关键任务,不能有任何时间延误。不能有任何时间延误。应用统计模型应用统计模型,对每一个单独的任,对每一个单独的任务确定最可能的开发持续时间的估务确定最可能的开发持续时间的估算值。算值。计算边界时间计算边界时间,以便为具体的任务,以便为具体的任务定

78、义时间窗口。定义时间窗口。项目的追踪和控制软件项目管理一项重要工作就是软件项目管理一项重要工作就是在在项目实施过程中项目实施过程中进行进行追踪追踪和和控制控制:定期举行项目状态会议。由每位项定期举行项目状态会议。由每位项目成员报告其进展和遇到的问题。目成员报告其进展和遇到的问题。评价在软件工程过程中所产生的所评价在软件工程过程中所产生的所有评审的结果。有评审的结果。确定由项目的计划进度所安排的可确定由项目的计划进度所安排的可能选择的正式的里程碑。能选择的正式的里程碑。比较在项目资源表中所列出的每一比较在项目资源表中所列出的每一个项目任务的实际开始时间和计划个项目任务的实际开始时间和计划开始时间

79、。开始时间。非正式地与开发人员交谈,以得到非正式地与开发人员交谈,以得到他们对开发进展和刚冒头的问题的他们对开发进展和刚冒头的问题的客观评价。客观评价。当问题出现的时候,当问题出现的时候, 项目管理人项目管理人员必须员必须实行控制以尽快地排解实行控制以尽快地排解问题。问题。11.7软件项目的组织与计划制定计划制定计划软件项目组织的建立软件项目组织的建立人员配备人员配备制定计划软件开发项目的计划涉及到实施项软件开发项目的计划涉及到实施项目的各个环节,带有全局性质。目的各个环节,带有全局性质。计划的计划的合理性合理性和和准确性准确性往往关系着往往关系着项目的成败。项目的成败。计划应力求完备。要计划

80、应力求完备。要考虑到一些未考虑到一些未知因素和不确定因素知因素和不确定因素,考虑到可能考虑到可能的修改的修改。计划应力求准确。计划应力求准确。尽可能尽可能提高所依据数据的可靠程度提高所依据数据的可靠程度。1. 制定计划目标和进行风险分析制定计划的目的就是要回答:这制定计划的目的就是要回答:这个软件项目的范围是什么?需要个软件项目的范围是什么?需要哪些资源?花费多少工作量?要哪些资源?花费多少工作量?要用的成本有多少?以及进度如何用的成本有多少?以及进度如何安排等等一系列问题。安排等等一系列问题。这步工作应当以系统计划为基础,这步工作应当以系统计划为基础,以系统规格说明为依据。以系统规格说明为依

81、据。在开发工作尚未开始之前,准确回在开发工作尚未开始之前,准确回答这些问题是十分困难的。需要通答这些问题是十分困难的。需要通过以往的开发经验做出估算,过以往的开发经验做出估算,很难很难达到准确达到准确。从估算出发,项目必然带有一定的从估算出发,项目必然带有一定的风险风险。估算的准确性越差,风险也。估算的准确性越差,风险也就越大。研制的软件项目越复杂,就越大。研制的软件项目越复杂,规模越大,结构化程度越低,资源、规模越大,结构化程度越低,资源、成本、进度等因素的不确定性越大,成本、进度等因素的不确定性越大,承担这一项目所冒的风险也越大。承担这一项目所冒的风险也越大。组织软件项目必须事先认清可能构

82、组织软件项目必须事先认清可能构成风险的因素,并研究战胜风险的成风险的因素,并研究战胜风险的对策,只有这样才能避免出现灾难对策,只有这样才能避免出现灾难性的后果,取得项目预期的成果。性的后果,取得项目预期的成果。2. 软件计划的类型针对不同工作目标,软件计划有:针对不同工作目标,软件计划有:项目实施计划项目实施计划(软件开发计划软件开发计划) 这这是软件开发的综合性计划,通常应是软件开发的综合性计划,通常应包括任务、进度、人力、环境、资包括任务、进度、人力、环境、资源、组织等多个方面。源、组织等多个方面。 质量保证计划质量保证计划 把软件开发的质把软件开发的质量要求具体规定为每个开发阶段可量要求

83、具体规定为每个开发阶段可以检查的质量保证活动。以检查的质量保证活动。 软件测试计划软件测试计划 规定测试活动的任规定测试活动的任务、测试方法、进度、资源、人员务、测试方法、进度、资源、人员职责等。职责等。 文档编制计划文档编制计划 规定所开发项目应规定所开发项目应编制的文档种类、内容、进度、人编制的文档种类、内容、进度、人员职责等。员职责等。 用户培训计划用户培训计划 规定对用户进行培规定对用户进行培训的目标、要求、进度、人员职责训的目标、要求、进度、人员职责等。等。 综合支持计划综合支持计划 规定软件开发过程规定软件开发过程中所需要的支持,以及如何获取和中所需要的支持,以及如何获取和利用这些

84、支持。利用这些支持。软件分发计划软件分发计划 软件开发项目完成后,软件开发项目完成后,如何提供给用户。如何提供给用户。3. 项目实施计划中任务的划分如何进行工作划分是实施计划首先如何进行工作划分是实施计划首先应解决的问题。常用的计划结构有:应解决的问题。常用的计划结构有: 阶段项目计划阶段项目计划 按软件生存期,把开发工作划分为按软件生存期,把开发工作划分为若干阶段,对每一阶段工作做出计若干阶段,对每一阶段工作做出计划。再把每一阶段工作分解为若干划。再把每一阶段工作分解为若干任务,做出任务计划。还要把任务任务,做出任务计划。还要把任务细分为若干步骤,做出步骤计划。细分为若干步骤,做出步骤计划。

85、 任务分解结构任务分解结构 按项目的实际情况进行自顶向下的按项目的实际情况进行自顶向下的结构化分解,形成树形任务结构。结构化分解,形成树形任务结构。进一步把工作内容、所需工作量、进一步把工作内容、所需工作量、预计完成的期限也规定下来。预计完成的期限也规定下来。任务责任矩阵任务责任矩阵 在任务分解的基础上,把工作分配在任务分解的基础上,把工作分配给相关的人员,用一个矩阵形表格给相关的人员,用一个矩阵形表格表示任务的分工和责任。表示任务的分工和责任。任务分解结构任务责任矩阵软件项目组织的建立开发组织采用什么形式,要针对开发组织采用什么形式,要针对软软件项目的特点件项目的特点来决定,同时也来决定,同

86、时也与参与参与人员的素质有关与人员的素质有关。1、组织原则、组织原则 (1) 尽早落实责任:尽早落实责任: 在软件项目工在软件项目工作开始时,要尽早作开始时,要尽早指定专人负责指定专人负责。使他使他有权进行管理有权进行管理,并,并对任务的完对任务的完成负全责成负全责。 (2)减少接口:)减少接口: 一个组织的一个组织的生产生产率随完成任务中存在的通信路径数率随完成任务中存在的通信路径数目增加而降低目增加而降低。要有合理的人员分。要有合理的人员分工、好的组织结构、有效的通信,工、好的组织结构、有效的通信,减少不必要的生产率的损失。减少不必要的生产率的损失。 (3)责权均衡:)责权均衡: 软件经理

87、人员所软件经理人员所负的责任不应比委任给他的权力还负的责任不应比委任给他的权力还大。大。2. 组织结构的模式 (1)按课题划分的模式)按课题划分的模式 把软件开发人员按课题组成小组,把软件开发人员按课题组成小组,小组成员自始至终参加所承担课题小组成员自始至终参加所承担课题的各项任务。他们应负责完成软件的各项任务。他们应负责完成软件产品的定义、设计、实现、测试、产品的定义、设计、实现、测试、复查、文档编制、甚至包括维护在复查、文档编制、甚至包括维护在内的全过程。内的全过程。 (2)按职能划分的模式)按职能划分的模式 把参加开发项目的软件人员按任务把参加开发项目的软件人员按任务的工作阶段划分成若干

88、个专业小组。的工作阶段划分成若干个专业小组。要开发的软件产品在每个专业小组要开发的软件产品在每个专业小组完成阶段加工(即工序)以后,沿完成阶段加工(即工序)以后,沿工序流水线向下传递。例如,分别工序流水线向下传递。例如,分别建立计划组、需求分析组、设计组、建立计划组、需求分析组、设计组、实现组、系统测试组、质量保证组、实现组、系统测试组、质量保证组、维护组等。各种文档资料按工序在维护组等。各种文档资料按工序在各组之间传递。各组之间传递。 (3)矩阵形模式)矩阵形模式 这种模式实际上是以上两种模式的这种模式实际上是以上两种模式的复合。一方面,按工作性质,成立复合。一方面,按工作性质,成立一些专门

89、组,如开发组、业务组、一些专门组,如开发组、业务组、测试组等;另一方面,每一个项目测试组等;另一方面,每一个项目又有它的经理人员负责管理。每个又有它的经理人员负责管理。每个软件人员属于某一个软件人员属于某一个 专门组,又专门组,又参加某一项目的工作。参加某一项目的工作。3.程序设计小组的组织形式小组内部人员的组织形式对生产率小组内部人员的组织形式对生产率也有影响。现有的组织形式有三种。也有影响。现有的组织形式有三种。 (1)主程序员制小组)主程序员制小组 小组的核心由一位小组的核心由一位主程序员主程序员(高级工高级工程师程师)、二至五位、二至五位技术员技术员、一位、一位后援后援工程师工程师组成

90、。主程序员负责小组全组成。主程序员负责小组全部技术活动的计划、协调与审查,部技术活动的计划、协调与审查,设计和实现项目中的关键部分。设计和实现项目中的关键部分。 技术员负责项目的具体分析与开技术员负责项目的具体分析与开发,文档资料的编写工作。后援发,文档资料的编写工作。后援工程师支持主程序员的工作,为工程师支持主程序员的工作,为主程序员提供咨询,也做部分分主程序员提供咨询,也做部分分析、设计和实现的工作。并在必析、设计和实现的工作。并在必要时能代替主程序员工作。要时能代替主程序员工作。 主程序员制小组还可以由一些主程序员制小组还可以由一些专专家家(如通信专家或数据库设计专家如通信专家或数据库设

91、计专家)、辅助人员辅助人员(如打字员和秘书如打字员和秘书)、软件软件资料员资料员协助工作。协助工作。 (2)民主制小组)民主制小组 在民主制小组中,遇到问题,组内在民主制小组中,遇到问题,组内成员之间可以平等地交换意见。成员之间可以平等地交换意见。工工作目标的制定及做出决定都由全体作目标的制定及做出决定都由全体成员参加。成员参加。虽然也有一位成员当组虽然也有一位成员当组长,但工作的讨论、成果的检验都长,但工作的讨论、成果的检验都公开进行。公开进行。这种组织形式强调发挥这种组织形式强调发挥小组每个成员的积极性。小组每个成员的积极性。有人认为有人认为这种组织形式适合于研制时间长、这种组织形式适合于

92、研制时间长、开发难度大的项目。开发难度大的项目。 (3)层次式小组)层次式小组 在层次式小组中,组内人员分为在层次式小组中,组内人员分为 三级:三级:组长(项目负责人)组长(项目负责人)一人负一人负责全组工作,包括任务分配、技术责全组工作,包括任务分配、技术评审和走查、掌握工作量和参加技评审和走查、掌握工作量和参加技术活动。术活动。 他直接领导二至三名他直接领导二至三名高高级程序员级程序员,每位高级程序员通过基,每位高级程序员通过基层小组,管理若干位层小组,管理若干位程序员程序员。这种组织结构这种组织结构只允许必要的人际通只允许必要的人际通信信。比较。比较适用于项目本身就是层次适用于项目本身就

93、是层次结构的课题结构的课题。因为这样可以把项目。因为这样可以把项目按功能划分成若干个子项目,把子按功能划分成若干个子项目,把子项目分配给基层小组,由基层小组项目分配给基层小组,由基层小组完成。完成。这种组织方式比较适合于大型软件这种组织方式比较适合于大型软件项目的开发。项目的开发。人员配备如何合理地配备人员,也是成功地如何合理地配备人员,也是成功地完成软件项目的切实保证。所谓合完成软件项目的切实保证。所谓合理地配备人员应包括:理地配备人员应包括: 按不同阶段适时任用人员按不同阶段适时任用人员 恰当掌握用人标准恰当掌握用人标准。1. 项目开发各阶段所需人员一个软件项目完成的快慢,取决于一个软件项

94、目完成的快慢,取决于参与开发人员的多少。参与开发人员的多少。在开发的整个过程中,多数软件项在开发的整个过程中,多数软件项目是以恒定人力配备的。目是以恒定人力配备的。实际人力需求与开发进度的关系如实际人力需求与开发进度的关系如下图中的曲线所示下图中的曲线所示。按此曲线,需要的人力随开发进展按此曲线,需要的人力随开发进展逐渐增加,在编码与单元测试阶段逐渐增加,在编码与单元测试阶段达到高峰,以后又逐渐减少。达到高峰,以后又逐渐减少。如果恒定地配备人力,在开发初期如果恒定地配备人力,在开发初期将会有部分人力资源用不上而浪费将会有部分人力资源用不上而浪费掉。在开发中期,需要人力不够,掉。在开发中期,需要

95、人力不够,造成进度的延误。在开发后期就需造成进度的延误。在开发后期就需要增加人力以赶进度。要增加人力以赶进度。恒定地配备人力将浪费人力资源。恒定地配备人力将浪费人力资源。2. 配备人员的原则重质量重质量 软件项目是技术性很强的软件项目是技术性很强的工作,要任用少量有实践经验、有工作,要任用少量有实践经验、有能力的人员去完成关键性的任务。能力的人员去完成关键性的任务。重培训重培训 培养所需技术人员和管理培养所需技术人员和管理人员是有效解决人员问题的好方法。人员是有效解决人员问题的好方法。双阶梯提升双阶梯提升 人员提升应分别按技人员提升应分别按技术职务和管理职务进行,不能混在术职务和管理职务进行,

96、不能混在一起。一起。3. 对项目经理人员的要求软件经理人员是工作的组织者,软件经理人员是工作的组织者,他他的管理能力的强弱是项目成败的关的管理能力的强弱是项目成败的关键键。他应具有以下能力:。他应具有以下能力: 把用户提出的非技术性要求加以整把用户提出的非技术性要求加以整理提炼理提炼, 以技术说明书的形式转告以技术说明书的形式转告给分析员和测试员。给分析员和测试员。 能说服用户放弃一些不切实际的能说服用户放弃一些不切实际的要求要求, 以保证合理的要求得以满足。以保证合理的要求得以满足。 能够把表面上似乎无关的要求集中能够把表面上似乎无关的要求集中在一起在一起, 归结为归结为 “需要什么需要什么

97、”, “要解要解决什么问题决什么问题”。这是一种综合问题。这是一种综合问题的能力。的能力。 要懂得心理学要懂得心理学, 能说服上级领导和能说服上级领导和用户,让他们理解什么是不合理的用户,让他们理解什么是不合理的要求。但又要使他们毫不勉强要求。但又要使他们毫不勉强, 乐乐 于接受,并受到启发。于接受,并受到启发。4. 评价人员的条件软件项目中人的因素越来越受重视。软件项目中人的因素越来越受重视。在评价和任用软件人员时,必须掌在评价和任用软件人员时,必须掌握一定的标准。握一定的标准。人员素质的优劣常人员素质的优劣常常影响到项目的成败常影响到项目的成败。 牢固掌握计算机软件的基本知识和牢固掌握计算

98、机软件的基本知识和技能。技能。 善于分析和综合问题,具有严密善于分析和综合问题,具有严密的逻辑思维能力。的逻辑思维能力。工作踏实、细致工作踏实、细致, 不靠碰运气,遵循不靠碰运气,遵循标准和规范,具有严格的科学作风。标准和规范,具有严格的科学作风。工作中表现出有耐心、有毅力、有责工作中表现出有耐心、有毅力、有责任心。任心。善于听取别人的意见,善于与周围人善于听取别人的意见,善于与周围人员团结协作,建立良好的人际关系。员团结协作,建立良好的人际关系。 具有良好的书面和口头表达能力。具有良好的书面和口头表达能力。11.8软件过程与过程成熟度模型软件过程是软件生存期中的一系列相软件过程是软件生存期中

99、的一系列相关过程。关过程。过程是活动的集合;过程是活动的集合;活动是任务的集合;活动是任务的集合;任务是将输入变换为输出的操作;任务是将输入变换为输出的操作;活动的执行可以是顺序的,重复的,活动的执行可以是顺序的,重复的,并行的、嵌套的;并行的、嵌套的;为了得到满足要求的软件产品,不但为了得到满足要求的软件产品,不但需要有好的开发方法,还需要有好的需要有好的开发方法,还需要有好的工程支持和工程管理。工程支持和工程管理。 基本过程 获取过程获取过程 供应过程供应过程 开发过程开发过程 运行过程运行过程 维护过程维护过程 获取过程是是需方需方为了为了获得获得一个一个软件产品软件产品所进所进行的一系

100、列活动:该过程从为获取行的一系列活动:该过程从为获取该软件产品的需求定义开始,经过该软件产品的需求定义开始,经过招标准备,合同的准备和修改,对招标准备,合同的准备和修改,对供方的监督,直到验收完成。供方的监督,直到验收完成。 供应过程是是供方供方为向需方为向需方提供软件产品提供软件产品所进所进行的一系列活动:该过程从理解软行的一系列活动:该过程从理解软件的需求开始,经过投标准备,签件的需求开始,经过投标准备,签订合同,制定计划,实施计划及控订合同,制定计划,实施计划及控制,进行评审和评价,直至完成交制,进行评审和评价,直至完成交付。付。 开发过程是是软件开发者软件开发者根据合同根据合同开发开发

101、和和交付交付软件软件的一系列活动。包括的活动有:的一系列活动。包括的活动有:uu 过程的实施准备过程的实施准备uu 系统需求分析系统需求分析uu 系统结构设计系统结构设计uu 软件需求分析软件需求分析uu 软件体系结构设计软件体系结构设计uu 软件详细设计软件详细设计uu 程序编码和单元测试程序编码和单元测试uu 软件集成软件集成uu 软件确认测试软件确认测试uu 系统集成系统集成uu 系统确认测试系统确认测试uu 软件安装软件安装uu 软件验收支持软件验收支持 运行过程软件开发完成后,软件从开发环境软件开发完成后,软件从开发环境转移到用户的实际运行环境。在运转移到用户的实际运行环境。在运行时

102、对用户的要求提供帮助和咨询,行时对用户的要求提供帮助和咨询,对运行效果进行评价。对运行效果进行评价。uu 实施过程的准备实施过程的准备uu 运行测试运行测试uu 系统向实际运行环境转移系统向实际运行环境转移uu 系统运行系统运行uu 对用户运行的支持对用户运行的支持 uu 系统运行评价系统运行评价uu 用户运行评价用户运行评价 维护过程 过程的实施准备过程的实施准备 问题分析和修改分析问题分析和修改分析 修改的实施修改的实施 对维护进行评审验收对维护进行评审验收 移植移植 软件退役软件退役 支持过程 文档过程文档过程 配置管理过程配置管理过程 质量保证过程质量保证过程 验证过程验证过程 确认过

103、程确认过程 联合评审过程联合评审过程 审计过程审计过程 问题解决过程问题解决过程 文档过程文档过程是一个记录由某一过程或文档过程是一个记录由某一过程或活动所产生的信息的过程。它由以活动所产生的信息的过程。它由以下活动组成下活动组成: 过程的实施准备过程的实施准备 设计与开发设计与开发 制作与发行制作与发行 维护维护 配置管理过程 过程的实施准备过程的实施准备 配置的确定配置的确定 配置的控制配置的控制 配置情况报告配置情况报告配置的评价配置的评价发行管理和提交发行管理和提交 质量保证过程这是一个为使软件过程和软件产品这是一个为使软件过程和软件产品符合规定需求,并按预定计划按时符合规定需求,并按

104、预定计划按时完成提供适当保证的过程。完成提供适当保证的过程。 过程的实施准备过程的实施准备 软件产品的质量保证软件产品的质量保证 软件过程的质量保证软件过程的质量保证 验证过程确定系统或软件的需求是否完备和确定系统或软件的需求是否完备和正确正确, 以及每一阶段的软件产品是否以及每一阶段的软件产品是否达到前一阶段对它的要求和条件。达到前一阶段对它的要求和条件。 过程的实施准备过程的实施准备 验证验证 合同验证合同验证 过程验证过程验证 需求验证需求验证 设计验证设计验证 代码验证代码验证 集成验证集成验证 文档验证文档验证 确认过程确认需求和最终建立的系统或软件确认需求和最终建立的系统或软件是否

105、满足原计划的特定应用。是否满足原计划的特定应用。 过程的实施准备过程的实施准备 确认确认 联合评审过程这是评价项目的某个活动或阶段的这是评价项目的某个活动或阶段的执行情况执行情况, 以及产品是否合乎要求以及产品是否合乎要求的过程。的过程。 过程的实施准备过程的实施准备 项目管理评审项目管理评审 技术评审技术评审 审计过程这一过程是要审计确定合作的另一这一过程是要审计确定合作的另一方遵照需求、计划合同到什么程度方遵照需求、计划合同到什么程度的过程。的过程。 过程的实施准备过程的实施准备 审计审计 问题解决过程这是一个用于分析和排除在开发、这是一个用于分析和排除在开发、运行、维护或其它过程中发现的

106、问运行、维护或其它过程中发现的问题和不一致的过程。题和不一致的过程。 过程实施准备过程实施准备 问题解决问题解决 组织过程 管理过程管理过程 基础设施过程基础设施过程 改进过程改进过程 培训过程培训过程 管理过程管理包括进度管理、成本管理、质管理包括进度管理、成本管理、质量管理、人员管理、资源管理、标量管理、人员管理、资源管理、标准化管理。准化管理。管理的对象是进度、系统规模及工管理的对象是进度、系统规模及工作量估算、经费、组织机构很人员、作量估算、经费、组织机构很人员、风险、质量、作业和环境配置等。风险、质量、作业和环境配置等。 过程的实施准备过程的实施准备 管理计划的制定管理计划的制定 计

107、划的实施与控制计划的实施与控制 评审和评价计划的完成程度评审和评价计划的完成程度 编写管理文档。编写管理文档。 基础设施过程该过程建立、维护各个过程所需的该过程建立、维护各个过程所需的基础设施。基础设施。基础设施包括硬件、软件、工具、基础设施包括硬件、软件、工具、技术、标准技术、标准, 以及开发、运行、维以及开发、运行、维护所需的设施。护所需的设施。 改进过程该过程建立、评估、度量、控制和该过程建立、评估、度量、控制和改进软件生存期的过程。主要活动改进软件生存期的过程。主要活动是制定一组组织计划是制定一组组织计划, 评估相关过评估相关过程程, 实施分析、改进过程。实施分析、改进过程。 培训过程

108、该过程为系统或软件产品提供人员该过程为系统或软件产品提供人员培训。主要活动有制定所需人员用培训。主要活动有制定所需人员用人计划和培训计划人计划和培训计划, 开发培训资料开发培训资料, 实施培训活动等。实施培训活动等。 软件过程的度量能力能力成熟度成熟度模型模型CMM是指对过程计划或定义水平、过是指对过程计划或定义水平、过程实施水平、过程管理和控制水程实施水平、过程管理和控制水平、过程改善潜力等指标的综合平、过程改善潜力等指标的综合评价。评价。分为分为 5 级级: 初始级初始级、可重复级可重复级、可可定义级定义级、可管理级可管理级、可优化级可优化级。评估软件过程时遵循的原则评估软件过程时遵循的原

109、则在很大程度上,软件产品的质量取决在很大程度上,软件产品的质量取决于生产该产品的过程质量。于生产该产品的过程质量。软件过程是一个可管理、可测量和可软件过程是一个可管理、可测量和可改进的过程。改进的过程。软件过程的质量受其支持技术的影响。软件过程的质量受其支持技术的影响。用于软件工程的技术水平应与过程的用于软件工程的技术水平应与过程的成熟度相适应。成熟度相适应。 1 初始级特点特点 过程执行杂乱无序过程执行杂乱无序关键问题关键问题 项目计划管理、配置管项目计划管理、配置管理、软件质量保证理、软件质量保证达标标准达标标准 过程活动无一定秩序,过程活动无一定秩序,开发过程的可重复性差开发过程的可重复

110、性差2 可重复级特点特点 过程管理工作依赖管理人员过程管理工作依赖管理人员的技能的技能关键问题关键问题 培训、技术评审、标准培训、技术评审、标准 达标标准达标标准 使项目管理处于严格控使项目管理处于严格控制之下,包括严格的项目计划和追制之下,包括严格的项目计划和追踪、子合同管理、需求变更和产品踪、子合同管理、需求变更和产品基线控制基线控制 3 可定义级特点特点 过程可定义、可执行过程可定义、可执行关键问题关键问题 过程度量、过程分析、过程度量、过程分析、 质量计划质量计划达标标准达标标准 定义一个适合该组织的定义一个适合该组织的软件过程,有正规的文档化的规范,软件过程,有正规的文档化的规范,并

111、能根据不同项目的要求裁剪和优并能根据不同项目的要求裁剪和优化这个软件过程化这个软件过程 4 可管理级特点特点 过程成为可度量的过程成为可度量的关关键键问问题题 改改善善技技术术、问问题题分分析析、 防止出错防止出错达达标标标标准准 为为定定义义好好的的过过程程建建立立一一套套详详细细的的度度量量机机制制,为为产产品品和和过过程程设设立质量目标,度量软件过程和产品立质量目标,度量软件过程和产品 5 可优化级特点特点 通过反馈来改善过程通过反馈来改善过程关键问题关键问题 自动化、反馈技术自动化、反馈技术达标标准达标标准 用第用第 4 级建立的度量机级建立的度量机制,不断地指导过程改善,技术革制,不断地指导过程改善,技术革新和防止出错新和防止出错可重复可重复实践实践通用工程通用工程过程过程定量理解定量理解和控制和控制关键过程领域KPA (Key Process Area)除去初始级以外,其它除去初始级以外,其它 4 级都有若级都有若干个引导软件机构改进软件过程的干个引导软件机构改进软件过程的要点,称为关键过程领域。要点,称为关键过程领域。每一个关键过程领域是一组相关的每一个关键过程领域是一组相关的活动,成功地完成这些活动,将会活动,成功地完成这些活动,将会对提高过程能力起重要作用。对提高过程能力起重要作用。关键过程域关键过程域

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号