《现代软件工程(第五讲)软件项目管理.ppt》由会员分享,可在线阅读,更多相关《现代软件工程(第五讲)软件项目管理.ppt(92页珍藏版)》请在第壹文秘上搜索。
1、第五章 软件项目管理22023年3月29日星期三提纲n5.1 项目管理过程n5.2 风险管理n5.3 软件质量和效率度量n5.4 软件项目估算n5.5 软件项目进度安排n5.6 项目组织结构设计n5.7 项目过程监控32023年3月29日星期三5.1 项目管理过程n软件项目开于技术工作开始之前,持续进行与软件实现过程中,终止于软件工作过程结束。42023年3月29日星期三5.1 项目管理过程n项目管理过程包括下列活动:5.1.1 启动一个软件项目5.1.2 度量5.1.3 估算5.1.4 风险分析5.1.5 进度安排5.1.6 追踪和控制52023年3月29日星期三5.1.1 启动一个软件项目
2、62023年3月29日星期三5.1.2 度量n管理人员和技术人员可利用这些度量来了解软件工程过程的实际情况和它所生产的产品质量 。72023年3月29日星期三5.1.3 估算82023年3月29日星期三5.1.3 估算92023年3月29日星期三5.1.4 风险分析102023年3月29日星期三5.1.4 风险分析112023年3月29日星期三5.1.5 进度安排122023年3月29日星期三5.1.5 进度安排132023年3月29日星期三5.1.6 追踪和控制142023年3月29日星期三5.2 风险管理n进度过分紧迫;n预算过分紧张;n性能过分的超群,软件可靠性要求过高;n人员缺乏经验,
3、组织结构不适宜;n期望过高而不现实;n没有明确或理解合同的条款;n软件规模估计不恰当;n管理部门缺乏经验;n风险分析和管理不恰当;n缺乏政策性支持;n不熟悉技术或过程;n不熟悉必要的硬件;n需求不一致(或定义不充分);n需求不断变动;n软件开发计划不恰当;n软件开发过程模型不适用;n缺乏软件工程技术和方法;n缺乏自动化工具的支持;常见的软件风险类别:进度、经费、性能、组织、管理、人事、过程、方法、工具等。如下例证:152023年3月29日星期三5.2.1 风险估计?是否所有项目都要进行风险分析。 No,风险分析成本较高,只有当软件的成本、性能、作用、与其他系统间的关系对于重要的系统有比较大的影
4、响时,即软件的风险对整个系统的成败有关键影响时,才有必要进行风险分析和管理。,风险估计的步骤1.明确项目的目标、策略、可以使用的方法和资源;2.保证项目的目标和结果是可度量的,并标明使用的资源;3.制定项目成功的标准集合;(见下页)4.根据估计的结果确定是否进行风险分析。162023年3月29日星期三5.2.1 风险估计n度量项目成功的标准:172023年3月29日星期三5.2.2 风险分析n第一步:标识潜在风险项:收集信息,标明相关的风险。观察风险的征兆,理解其原因。a.收集信息:主要依靠过去的经验和一些著名的案例,考收集信息:主要依靠过去的经验和一些著名的案例,考虑类似的因素并进行常识性的
5、判断。(如需求变动的风虑类似的因素并进行常识性的判断。(如需求变动的风险)判断收集到的信息是否有用。险)判断收集到的信息是否有用。b.信息分类:如:有风险(信息分类:如:有风险(经常发生的情况经常发生的情况)、可预见的)、可预见的风险(风险(较高概率发生较高概率发生)、不可预见的风险()、不可预见的风险(事前很难预事前很难预料料),原因可分为:),原因可分为:缺乏信息缺乏信息、管理管理和和时间时间等。等。182023年3月29日星期三5.2.2 风险分析n第二步:估计每个风险的大小及其出现的可能性:度量风险的后果和严重程度。a.选择一种度量尺度:命名尺度、序次尺度、坐标尺度、比例尺度等;选择一
6、种度量尺度:命名尺度、序次尺度、坐标尺度、比例尺度等;b.将待估计的风险信息(叙述性、定性、定量三种类型)与度量尺度将待估计的风险信息(叙述性、定性、定量三种类型)与度量尺度相对应,确定风险等级;相对应,确定风险等级;c.消除风险估计中的主观判断的偏差。消除风险估计中的主观判断的偏差。(缺乏可以用来进行判断风险缺乏可以用来进行判断风险的信息,只能凭自己的观念和偏好进行主观理解,与客观情况必然的信息,只能凭自己的观念和偏好进行主观理解,与客观情况必然存在着偏差。存在着偏差。)192023年3月29日星期三5.2.2 风险分析n第三步:风险评估:要考虑风险间的相互作用。(第二步考虑的是单个风险的影
7、响)a.考虑各种风险的综合影响后,对已识别风险发生的可能考虑各种风险的综合影响后,对已识别风险发生的可能性及其后果给出最终的量值;性及其后果给出最终的量值;b.标明风险优先程度,以便予以适当安排;标明风险优先程度,以便予以适当安排;c.考虑其它可替代的方案,寻求可以避免风险的基本方法。考虑其它可替代的方案,寻求可以避免风险的基本方法。202023年3月29日星期三5.2.3 风险评估n第一步:确定风险评估标准,确定风险的后果,判定该风险是否可以忍受;n第二步:确定风险最终的级别(风险特征的三个方面:发生频率、损害的严重性、发生的时刻可知性);n第三步:把系统风险和“对照风险”相比较,确定系统风
8、险是否可以接受。(不可能接受;不适合接受)212023年3月29日星期三5.2.3 风险评估n什么是“对照风险”呢? 对照风险是一组单个风险的集合,也可是对项目造成最大损害的一个或多个风险。 对照风险考虑了风险间可能发生的耦合或复合情况。 对照风险说明了在把系统作为整体条件下,风险会造成系统失败或成功的概率。222023年3月29日星期三5.2.4 风险管理任务n风险管理的任务:1)制定风险计划:风险管理计划制定风险计划:风险管理计划RMP和风险排除计划和风险排除计划RA(version)P。(。(确定风险可接受目标;调整新的确定风险可接受目标;调整新的“对照风险对照风险”;寻求可替代的解决方
9、案寻求可替代的解决方案。)2)进行风险控制:执行风险计划中体现风险排除策略的控制机制。进行风险控制:执行风险计划中体现风险排除策略的控制机制。(确定风险排除策略确定风险排除策略:后果、时间和频率后果、时间和频率;确定风险排除战术确定风险排除战术:建建立在软件工程过程基础上立在软件工程过程基础上;建立风险管理计划建立风险管理计划:有关工作编入文档有关工作编入文档风险状态估计风险状态估计RES说明项目的总体状况,风险管理计划说明项目的总体状况,风险管理计划RMP说明说明如何在一个项目中施行风险分析和管理程序,风险排除计划如何在一个项目中施行风险分析和管理程序,风险排除计划RAP是是排除风险的详细计
10、划排除风险的详细计划。)3)对风险进行监管:监管软件工程过程和产品,确定风险排除策略是对风险进行监管:监管软件工程过程和产品,确定风险排除策略是否达到预期目标,是否有可能进一步改进风险排除计划,为控制新否达到预期目标,是否有可能进一步改进风险排除计划,为控制新的风险提供一些必要的决策信息等。的风险提供一些必要的决策信息等。232023年3月29日星期三5.3 软件质量和效率度量n度量是任何工程项目最基础的工作,软件工程也不例外。nLord Kelvin:如果谁能够度量他所说的事物并能用数字来表示它时,则说明他了解了它;但当他不能度量它,也不能用数字表示出来时,则说明他对那种事物的知识还比较贫乏
11、、不足;这也可能是了解的开始,但在他的思想中很难达到科学的境地。n软件度量的范围涉及很广,在软件项目管理范围内,应主要关心生产率与质量的度量,即根据投入的工作量,对软件开发活动和开发成果的质量作出度量。242023年3月29日星期三5.3.1 为什么要进行度量252023年3月29日星期三5.3.2 软件度量方式262023年3月29日星期三5.3.2 软件度量方式集中在软件工程过程的输出。软件满足用户要求的程度。集中在软件的性能指标而不是软件开发全过程上。收集与直接度量有关的软件工程输出信息和质量信息。提供直接度量的尺度。收集有关人们开发计算机软件所用方式的信息和人们理解有关工具和方法的效率
12、的信息。272023年3月29日星期三5.3.3 面向规模的度量282023年3月29日星期三5.3.3 面向规模的度量工作量和成本是针对软件开发全过程的,而不是仅针对编码。292023年3月29日星期三5.3.3 面向规模的度量302023年3月29日星期三5.3.3 面向规模的度量312023年3月29日星期三5.3.4 面向功能的度量322023年3月29日星期三5.3.4 面向功能的度量面向不同应用的输入数面向不同应用的输出(报告、屏幕信息、错误信息)数不同即时查询的计数逻辑主文件(逻辑上的一组数据,可以是一个数据库的一部分,也可以是一个单独的文件)数。与系统中其他设备通过外部接口读写
13、信息的次数使用者自行拟定一些准则来确定一个系数,带有主观性。332023年3月29日星期三5.3.4 面向功能的度量342023年3月29日星期三5.3.4 面向功能的度量352023年3月29日星期三5.3.4 面向功能的度量362023年3月29日星期三5.3.4 面向功能的度量372023年3月29日星期三5.3.5 软件质量度量382023年3月29日星期三5.3.5.1 程序复杂性度量n程序复杂性主要指。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。(1)代码行度量法(2)McCabe度量法392023年3月29日星期三(1)代码行度量法n源代码行数度量法基
14、于两个前提: 402023年3月29日星期三(1)代码行度量法n方法的基本考虑是n设为100。Thayer曾指出,他还指出,每行代码的出错率与源程序行数之间不存在简单的线性关系。412023年3月29日星期三(1)代码行度量法nLipow指出,对于,每行代码出错率为1.31.8;对于,每行代码的出错率增加到2.73.2之间,这只是考虑了程序的可执行部分,没有包括程序中的说明部分。nLipow及其他研究者得出一个结论:对于少于100个语句的小程序,源代码行数与出错率是线性相关的。随着程序的增大,出错率以非线性方式增长。422023年3月29日星期三(2)McCabe度量法nMcCabe度量法,又
15、称环路复杂性度量,是一种的复杂性度量方法。n它,因此计算它先要画出程序图。n程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。432023年3月29日星期三442023年3月29日星期三(2)McCabe度量法n程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作,以及分支和循环的具体条件。根据图论,在一个强连通的有向图G中,环的个数由以下公式给出: V(G)mnp其中,V(G)是有向图G中环路个数,m是图G中弧数,n是图G中结点数,p是图G中的强连通分量个数。n在例示中,结点数n11,弧数m13,p1,则有 V(G)mnp131113.45202
16、3年3月29日星期三(2)McCabe度量法n环路复杂度取决于程序控制结构的复杂度。当程序的分支数目或循环数目增加时其复杂度也增加。n环路复杂度是可加的。例如,的复杂度为3,的复杂度为 4,则与的复杂度是7。462023年3月29日星期三(2)McCabe度量法nMcCabe建议,n这种度量的缺点是: 对于不同种类的控制流的复杂性不能区分 与的复杂性同等看待 与的复杂性是一样的 当成一样处理 一个与的复杂性相同472023年3月29日星期三5.3.5.2 软件质量的事后度量482023年3月29日星期三5.3.5.2 软件质量的事后度量492023年3月29日星期三5.3.5.2 软件质量的事后度量502023年3月29日星期三5.3.5.2 软件质量的事后度量512023年3月29日星期三5.4 软件项目估算522023年3月29日星期三5.4.1 估算的影响因素项目的复杂性较大程度地影响到估算的不确定性。项目规模越大,划分越困难,模块间的连接越复杂,估算的风险越高。估算与风险532023年3月29日星期三5.4.1 估算的影响因素n项目的规模越大,项目划分越困难,项目元素间的连接复