版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14章软件项目管理“项目”如今普遍存在于我们的工作和生活之中,并对我们的工作和生活产生着重要的影响。美国著名学者罗伯特.J.格雷厄姆曾说过:“因为项目是适应环境变化的普遍方式,故而一个组织的成功与否将取决于其管理项目的水平。”由于社会环境变化是绝对的,而当今社会唯一不变的就是变化,因此,一个组织要想存在和发展,就必须适应环境的变化,就必须开展项目。美国的项目管理权威机构——项目管理协会(ProjectManagementInstitute,PMI)PMI认为,项目是一种被承办的旨在创造某种独特产品或服务的暂时性势力。在经历了软件危机和大量的软件项目失败以后,人们发现正是一系列管理问题和技术问题导致了上述问题,终其原因,其一致原因可能就是:项目管理太弱。软件项目管理是指软件生存周期中软件管理者所进行的一系列活动,其目的是在一定的时间和预设范围内,有效地利用人力、资源、技术和工具,使软件系统或软件产品按原定计划和质量要求如期完成。14.1软件项目管理概述项目管理是通过项目经理和项目组织的努力,运用系统理论的方法对项目及其资源进行计划、组织、协调、控制,旨在实现项目的特定目标的管理方法体系。其基本内容为1)项目定义,2)项目计划,3)项目执行,4)项目控制,5)项目结束。将软件进行项目管理也需采用上述5个方面的内容进行管理,由于软件项目的特殊性,将项目管理技术用于软件项目管理上,其有效的项目管理集中于四个P上:人员(people)、产品(product)、过程(process)和项目(project)。14.1.1人员BillCurtis曾说过:“不同的人员在完成程序设计任务的能力上存在巨大的可变性。”培养有创造力的、技术水平高的软件人员是从20世纪60年代起就开始讨论的话题。而在人员管理上达到较高成熟度的组织更有可能实现有效的软件工程实践,为此,CMU软件工程研究所专门开发了一个人员管理能力成熟度模型(PM—CMM),旨在“通过帮助吸引、培养、鼓励、部署和留住改善其软件开发能力所需的人才增强软件组织承担日益复杂的应用的能力。”人员管理成熟度模型为软件人员定义了以下的关键实践区域:招募、选择、业绩管理、培训、报酬、职业发展、组织和工作设计以及团队精神/企业文化培养。在人员管理上达到较高成熟度的组织更有可能实现有效的软件工程实践。14.1.1.1项目参与者参与软件过程(及每一个软件项目)的人员可以分为以下五类:高级管理者。负责定义业务问题,这些问题往往对项目产生很大影响。项目(技术)管理者。必须计划、激励、组织和控制软件开发人员。开发人员。负责开发一个产品或应用所需的专门技术。客户。负责说明待开发软件的需求的人以及其他风险承担者。堵最终用户。轨一旦软件发熊布成为产品蜻,最终用户狡是直接与软稍件进行交互败的人。晴每一个软件经项目都有上肝述的人员参已与。为了达帮到高效,项智目组的组织赛必须最大限诱度地发挥每猎个人的技术米和能力。这汇是项目组负饲责人(项目威经理)的任而务。妥14.1.悠1.2荷项目组负责鞠人(项目经挤理)海项目管理是些集中于人的键活动,软件割项目组负责欢人(项目经汉理)除对其锅技术要求以揭外,更多地育应具备管理朽人员应有的场技能。然项目经理的遭任务就是要拆对项目进行蛛全面的管理利,具体表现预在对项目目创标要有一个雹全局的观点鼓,并制定计坦划,报告项烦目进展,控半制反馈,组垂建团队,在衣不确定环境殊下对不确定病问题进行决两策,在必要南的时候进行陵谈判及解决顷冲突。娱项目经理的纤责任表现的馒三个方面:痕对组织(企除业)应承担亡的责任腰·燃保证项目目蠢标与组织(样企业)的经菌营目标一致铸·摄对组织分配伟给项目的资阴源进行适当筋的管理,保卖证在资源约禾束条件所得迁资源能够被栗充分有效地诸利用光·衔与组织(企送业)高层进艘行及时有效亭的沟通,及炒时汇报项目登的进展状况再,成本、时晒间等资源的剃花费,项目条实施可能的锁结果,以及俱对将来可能笑发生的问题拒的预测。政对项目应承籍担的责任梨·近对项目成功浴负有主要责隆任,对项目扣实施计划、物监督与控制殊,保证项目粱按时、在预誉算内达到预掀期结果。幻·袭保证项目的版整体性,保耽证项目在实岁施过程中自标始至终以实他现项目预期红目标为最终床目的,由于寿项目在实施订过程中存在速各种各样的袋冲突,项目王经理在解决巧项目的冲突行过程中起着蚊重要的作用城,做到化解茎矛盾,平衡田利害。奔对项目小组缩应承担的责织任突·扮为项目组成成员提供良好鹅的工作环境盛及氛围,项浅目经理作为更项目负责人翠及协调人,娇首先应该保大证项目组成须员形成一个满好的工作团肯队,成员之喝间密切配合泊,相互合作遇,拥有良好奖的团队精神傲及好的工作川氛围与环境肉,特别地,蒸对项目组中科的关键成员谦及高级研究坛人员要进行蕉特别的照顾别,这是激励饺项目成员的侄重要手段。肝·斗项目经理有寻责任对项目丛小组成员进暖行绩效考评鹅。项目经理对要建立一定蔽的考评制度四,对项目组扒成员的绩效赢进行监督与成考评,公正辛的考评制度羽也是激励员题工的一种手贫段。畏·樱由于项目小途组是一个临右时的集体,迈项目经理在眉激励项目成讯员的同时还夹应为项目小券组成员的将胁来考虑,使姓他们在项目怠完成之后,喝有一个好的天归属,这样葛可以使他们兽无后顾之忧悔,保证他们换安心为项目朋工作。派14.1.锁1.3阳软件项目组纽软件项目组夸织结构有多衣种,但软件惜项目组织威结构是不能再轻易改变。梢在一个新的森软件项目中帮直接涉及到甜的人员的组事织则是项目锈管理者的权征限。帖在规划软件替工程小组的畏结构时应考思虑如下七个李项目因素:填待解决问题畜的困难程度先。帖产生的程序膨的规模,以貌代码行或者哥功能点来衡情量。做小组成员需尘要共同工作邮的时间(小竟组生存期)镜。摸问题能够被砌模块化的程摊度。示待建造系统闹所要求的质魂量和可靠性收。飞交付日期的核严格程度。消项目所需要鼻的社交性(词通信)的程想度。唉从历史角度影看,最早的匆软件小组是劣控制集中式节(CC)结扩构,原来称大为主程序员劈小组。这种端结构由Ha循rlan怒Mills棒首先提出,夸并由Bak联er描述出雪来。小组的灭核心是由以爱下人员组成水的:树高级工程师剧(拥“牙主程序员担”锯),负责计蝶划、协调和锁评审小组的布所有技术活鹿动;治技术人员投(一般2到胸5个人),掩执行分析和份开发活动;斤后备工程师召,支持高级江工程师的活回动,并能在殊项目进行过殿程中以最小还的代价取代餐高级工程师蝴的工作。径项目组必须叠建立有效的松办法以协调贱参与工作的轧人员,要建熟立小组成员雹之间及多个董小组之间的张正式和非正衰式的通信机倦制。正式的缺通信是通过怜“谨文字、会议坏及其他相对贸而言非交互择的非个人的繁通信渠道脑”匪来实现,非肌正式的通信改则更加个人策化。短14.1.耳2产品态在进行项目雀计划之前,枝应该首先建奉立产品目的坏和范围,考此虑可选的解路决方案,标蜘识技术和管身理的约束。供没有这些信叹息,就不可壤能进行合理背的(准确的沉)成本估算和、有效的风脉险评估、适降当的项目任帖务划分或是惠可管理的项答目进度安排章,项目进度蕉安排给出了馅意义明确的赵项目进展的灿标志。桌软件开发者擦和客户必须俊一起定义产戴品的目的和右范围。在很皮多情况下,辫这项活动是额作为系统工券程或业务过缸程工程的一敲部分开始的场,持续到作尽为软件需求吨分析的第一翁步。目的是代标识出该产昨品的总体目绞标(从客户虑的角度),神而不考虑这垄些目标如何婚实现。范围父标识出与产颗品相关的数群据、功能和坐行为,更重览要的是,它开以量化的方庄式约束了这好些特性。摇一旦了解了插产品的目的远和范围,就丝要开始考虑膛备选的解决怨方案了。虽厨然这一步并挪不讨论细节辅,但它使得揉管理者和实觉践者可以选烛择一条蛇“里最好的挪”唤途径,该选优择是根据产解品交付的期斑限、预算的症限制、可用济的人员、技唉术接口及各历种其他因素让所形成的约薯束。切14.1.麦2.1软跑件范围持软件项目管侨理的第一个华活动是以软件范围衫的确定。范裳围是通过回那答下列问题国来定义的:咳语境。待建施造的软件如内何适应于大贤型的系统、榆产品或商业茶的语境,在漏该语境下要嘱加什么约束捕?是信息目标。笛软件要生产洋什么样的客供户可见的数丧据对象作为挪输出?需要抽什么样的数菊据对象作为围输入?浑功能和性能馆。软件要执艰行什么样的章功能使得输渗入数据变换估成输出?需煤要满足任何填特殊的性能脑特征吗?欢软件项目范扶围在管理层纵和技术层都宣必须是无二帝义性的和可洁理解的。对速软件范围的雀描述必须是贫界定的。也释就是说,明子确给出定量桥的数据(如鼠同时使用的写用户的数目牺、邮件列表汽的大小、允控许的最大响号应时间),秤说明约束和烧/或局限(枝如产品成本胞限制内存大清小),以及纪描述其他的市缓解因素(岛如希望使用神的算法能够羊被很好的理匹解并写成C排++程序)德。傅14.1.压2.2开问题分解吊问题分解有穿时称为胳划分或问题死详细描述薯,它是一个坛软件需求分插析的核心活叉动。在确定禽软件范围的金活动中并不太试图完全分胸解问题,而存是将分解应妻用于两个主从要方面:(曲1)必须交双付的功能;故(2)用于寒交付功能的可过程。狱面对复杂的款问题人类常拖常采用分而明治之的策略讽。简单讲,键就是将一个辰复杂的问题窗划分成若干稻较易处理的诵小问题。这湖是项目计划疏开始时所采凡用的策略。喷在估算开始亭之前,范围纽中所描述的妖软件功能必浇须被评估和韵细化以提供绕更多的细节寄。因为成本己和进度都是顿面向功能的披,所以某种诊程度的分解师通常是很有疤用的。啦例如,考虑阿我们要建造叮一个新的字俗处理产品的浊项目。该产温品的独特功毫能包括:连柿续的语音输怒入和键盘输克入,高级的亏“盾自动复制编普辑口”漏功能,页面聪布局功能,症自动建立索璃引和目录以辆及其他功能谈。项目管理栗者必须首先轨建立软件范凯围陈述,该颈陈述限定了扭这些特征(妖以及其他的去通用功能,假如编辑、文册件管理、文歼档生产等等逼)。例如,穷连续语音输再入功能是否殃需要用户进耳行专门的产突品膊“社训练擦”蚁?复制编辑捉特征提供了右哪些能力?枕页面布局能苦力要高级到惊什么程度?柿随着范围陈网述的进展,寒自然产生了盆第一级划分织。项目组研允究市场部与验潜在客户的斜交谈并找出搂自动复制编杨辑应该具有赢下列功能:病(1)拼写推检查,(2贺)语句文法宏检查,(3拿)大型文档准的参考书目刑关联检查(恩例如,对一辩本参考书的悟引用是否能平在参考书目葬列表中找到滩?),(4咳)大型文档好中章节的参膛考书目关联翼的确认。这沟些特征的每柿一项都是软岗件要实现的高子功能。同印时,如果分旁解可以使计带划更简单,垦则每一项又羡可以进一步电细化。搏14.1.攀3过程牢软件过程提辛供了一个框波架,在该框役架下可以建贩立一个软件灵开发的全面共计划。少量请的公共过程笔框架活动可舰应用于所有幻软件项目,镜不考虑其规超模和复杂性福。若干不同驴的任务集合耗(每一个集培合都由任务飞、里程碑、粉工作产品以查及质量保证靠点组成)使廉得框架活动私能被修改,观以适应于不指同软件项目根的特征和项雪目组的需求市。最后是庇窗护性活动(查软件质量保认证、软件配普置管理和测赠度)它们覆味盖了过程模佛型。庇护性久活动独立于坝任何一个框委架活动,且谋贯穿于整个陈过程。悟软件过程的庙一般性阶段日——泰定义、开发意和支持症——书适用于所有屡软件项目。咐问题在于选恐择一个适合锤项目组要开责发的软件的庆过程模型。伐我们曾讨论容了多种软件拨工程范型:瀑布模型。授原型实现模盗型。增量模型。螺旋模型。喷泉模型。救基于构件的涝开发模型。索形式化方法忠模型。桐项目管理者婶必须决定哪恶一个过程模脆型最适合于资:(1)需猛要该产品的胸客户和将做丹此工作的人猪员,(2)孟产品本身的聚特征,(3蜻)软件项目扁组工作的工鹿作环境。当捷一个过程模委型被选定时富,项目组然钞后基于公共最过程框架活狸动集合,定哨义一个初步默的计划。一辈旦建立了初齐步的计划,抖便可以开始卷进行过程分蹄解,即必须庆建立一个完裕整的计划反细映框架活动越中所需要的蠢工作任务。备14.1.案3.1粒合并产品和豪过程箱项目计划开懂始于产品和奉过程的合并粮。软件项目创组要开发的晃每一个功能单都必须通过篇为软件组织磁定义的框架粥活动集合。锯假设组织采息用了如下的蝶框架活动集哨合,该框架睁即为公共过眨程框架活动液:诵客户交流紫——雀建立开发者枣和客户之间叼有效需求诱诸导所需要的筛任务。谈计划狗——屯定义资源、虑进度及其他逐相关项目信绪息所需要的里任务。衡风险分析煤——令评估技术的令及管理的风压险所需要的腥任务。芹构造及发布生——毯构造、测试恭、安装和提牙供用户支持即(如文档及索培训)所需有要的任务。斤客户评估丹——耻基于对在工北程阶段生产丝的或在安装健阶段实现的暂软件表示的谷评估,获取麻客户反馈所览需要的任务过。斑开发某产品混功能的项目邻组成员都要鱼将每一个框斯架活动应用舒于该功能的赤实现上。实丹质上,产生爪了一个类似娃图14-1筛所示的矩阵眉。每一个主揭要的产品功旱能(图中列其出了前述的蓬字处理软件宋的功能)被边列在左边的拍一列中,框睁架活动则列触在顶端的一绵行中。软件火工程工作任贩务(对于每花一个框架活阔动)列在紧翼接着的行中宗。项目管理喂者(和其他北组员)的工点作是估算每狱一个矩阵单灾元的资源需逆求、与每一筒个单元相关汪的任务的开车始和结束日阵期以及每一昂个单元所产伟生的工作产描品。笨图14-1暑合并产弃品和过程敲14.1.饱3.2宵过程分解源软件项目组逮在选择最适尤合项目的软半件工程范型宽以及选定的篮过程模型中赴所包含的软贵件工程任务鼻时,应该有煤很大的灵活荣度。一个相圆对较小的项璃目如果与以牺前已开发过籍的项目相似纱,可以采用乐线性顺序模滋型。如果时火间要求很紧众且问题能够防被很好地划惕分,原型实切现模型可能蔑是正确的选救择。如果时断间太紧,不蛋可能完成所捐有功能时,踢增量模型可伞能是最合适殿的。类似地县,具有其他湾特性(如不镜确定的需求刚、突破性的沟技术、困难养的客户、明崭显的复用潜腹力等)的项敞目将导致选跑择其他过程摄模型。疤一旦选定了嚼过程模型,些公共过程框闻架(Com闯monP蝴roces魂sFra言mewor毁k,CP轿F)应该适叮应于它。在辜每一种情形压,本章前面思所讨论的C时PF乞——雄客户交流、芦计划、风险正分析、工程觉、构造及发怀布、客户评抄估笔——忆均可以被适率合于该范型胸。它可以适浩用于线性模决型,还适用鸣于迭代和增混量模型、演女化模型甚至六是并发或构差件组件模型军。CPF是确不变的,它处充当一个软炭件组织所执洪行的所有软瞧件工作的基坚础。搞但实际的工趴作任务却是粒可变的。当弹项目管理者各问到下面的典问题时过程殃分解就开始筛了:钢“罢我们如何完励成这个CP筐F活动?脾”深例如,一个浑小型的、相略对简单的项哥目在客户交塘流活动中可叹能需要下列锅工作任务:添列出需澄清队问题的清单纳。蓝与客户见面届讨论需澄清薪的问题。取共同给出范央围陈述。常和所有相关贡人员一起评挤审范围陈述梢。响根据需要修梢改范围陈述倚。趴这些事件可突能在不到4押8小时的时润间内发生。竿它们代表了削适于小型的叮、相对简单站的项目的一运种过程分解故。码现在,我们梁考虑一个复坛杂些的项目此,它具有更照广的范围和棋更重要的商陕业影响。这棍样一个项目秒在客户交流鹅活动中可能厉需要下列工让作任务:自评审客户要愁求。图计划和安排机与客户进行房正式的、促茫进性的会议缓。式研究如何刻雹画推荐的解溜决方案和已开有的方法。悦为正式的会孕议准备一份僻“谨工作文档和缴议程。召开会议。复共同制订能好够反映软件粘的数据、功涂能和行为特鸣征的小规约与。撇评审每一份溉小规约,确卵认其正确性惑、一致性和表无二义性。胃把这些小规就约组装起来绍形成一份范丰围文档。垃和所有相关司人员一起评廊审范围文档咳。刃根据需求修材改文档范围贵。纵两个项目都惩执行了我们速称之为客户然通信的框架震活动,但第医一个项目组逝只执行了第姿二个项目组震一半的软件迷工程工作任帅务。督14.1.老4项目荷我们进行有齐计划和可控玉制的软件项嫂目的一个主昏要理由是:劣这是惟一知千道的管理复勇杂性的方式朝。理为了避免项惑目失败,软亚件项目的管冶理者和建造瞧产品的工程妹师必须避免病一些常见的疼警告信号,晴了解关键的员项目管理的浆成功因素,饱并采用开发布计划、监控哥和控制项目奋的常用性方扮法。脂为了管理成端功的软件项毅目,我们必脚须了解我们箩会做错什么梳(使得能够踩避免错误)纹和如何正确患地完成任务仙。有如下1吵0个信号指挪示一个信息渣系统项目正旦处于危险状愿态之中:纯软件人员不修了解他们的慨客户的需要兆。遮产品范围定铃义糟糕。谢没有很好地皇管理变化。挽选择的技术拣发生变化。梢业务需求发屑生变化(或决未被很好地晴定义)。修时限是不现辞实的。用户抵制。临失去赞助(厚或从来没有坑真正地得到艰过)。猫项目组缺乏劳具有合适技提能的人员。桶管理者(和矛开发者)躲饮避已学到的浆最好的实践亚经验和教训苗。估管理者如何亿避免上述的晨问题呢?可装采用以下的闻软件项目方略法:滴在正确的基蓄础上开始工耍作。这是通盾过努力工作须(非常努力俩)以理解将阶被解决的问石题,而后为借每个涉及到牛项目中的人碧员设置现实胡的目标和期睛望而达到的饺。然后又通豆过建立合适话的开发小组液并给予小组庆完成工作所傍需的自主权棍、权力和技吊术而增强。路保持动力。蓝很多项目的笨启动有一个洞很好的开始丹,但是,慢敏慢地开始瓦斤解。为了维乘持动力,项甜目管理者必章须提供激励珍措施以保持案人员变动为贵绝对最小的毅量,小组应火该强调它完特成的每个任团务的质量,念而高层的管涌理应该尽其醒所有可能以决不干涉小组行的工作方式讯。侧跟踪进展。织针对软件项钞目,当工作焦产品(例如塞,规约、源付代码、测试日案例集合)丘被产出和作级为质量保证症活动的一部倾分而被批准毛(通过正式坦的技术评审吸)时,跟踪否其进展。此拥外,软件过也程和项目测技度可以被收促集并根据软斤件开发组织悔的平均数据桌用于评估进扮展。片做出聪明的程决策。本质拴上,项目管已理者和软件脆小组的决策慨应该是餐“印保持其简单票”纠。只要可能饼,决定去使还用商用成品畜构件(CO见TS)软件净或现存的软烤件构件,决事定在标准的蠢方法可用时货避免定制界僵面,然后避沉免明显的风吩险,以及决扭定去分配比披你认为需要怪的时间更多惑的时间来完歪成复杂的或筹有风险的任炭务(你将需板要每一分钟衣)。代进行事后的童分析。建立陪一个一致的抬机制以从每硬个完成的项印目获取可学循习的经验。脾评估计划的洲和实际的进娇度,收集和幸分析软件项之目度量,从晚项目组成员虾和客户处获壳取反馈,并棕记录下所有昏发现。叙14.1.挠5软件项目菠管理过程训软件项目管骂理的对象是左软件工程项皱目,它所涉恋及的范围覆疤盖了软件工年程过程,而庄现代项目管漠理的要求就违是要对项目治的整个过程矮进行计划及盲实施的控制休,就是对软射件项目开发摧过程的保持胁、管理与质病量和进度的幻控制。图1墓4-2给出寻了一个软件裤项目管理和葵通用方法。开图14-2营软件项目管怪理过程示例倘由此可见,秤为使软件项秤目开发获得臭成功,在软象件项目开始仆之前需进行向可行性研究敬,在项目可康行后进行项层目策划(计驻划)阶段。锈关键的问题队要对软件项振目范围,各娘阶段/活动贷中可能存在艰的风险,需耽要和资源(堆包括人、软熔/硬件及其孟它资源),往要实现的任豪务、经历的怪里程碑,花般费的工作量去及成本,进宝度安排等进岭行计划及控础制。这种管误理在技术工但作开始就需妙进行,并在土软件的概念拆到实现的过恢程中延续进凡行,并在软即件工程过程塔最后结束时璃才终止。错1)启动软卡件项目蕉2)软件度让量校3)软件项些目估算汉4)风险分殖析千5)进度安珠排退6)项目组烫织糟7)软件配猜置管理板14.1.苹5.1启述动一个软件敢项目帅在软件项目脆启动前,必换须对该项目户进行可行性软分析,其中婶需明确项目拐的目标和范幅围,并在此才基础上考虑画候选的解决侧方案,估计阴新系统可能筐的开发和运筐行成本及其镇效益,同时睛给出该项目迅在技术和管位理上的要求懂,在此基础柜上,相关人喉员可确定。耐·签合理、精确嘉的成本分析欺·蛙实际可行的秋任务分解殖·上可管理的进惕度安排恼从而,可在燥多个方案中束选择培一个相对完等善的方法,烟给出诸如交言付期限、预鹅算、个人能汪力、技术界底面及其它许堂多因素构成泡的限制。猫14.1.夏5.2软搂件度量洋永软件度量是爪指计算机软镰件范围内的第测度,可用熊于对产品开剧发的软件过裂程和产品本元身进行测度锁,对软件开远发过程度量印的目的是为店了对过程进堤行改进,对律产品进行度荐量的目的是腹为了提高产估品的质量,堂度量的作用维是为了有效袭地采用定量唐的方式来进懂行管理,而芳为了有效地摆进行度量,与对过程及产报品要考虑:恢疾1)合适卧的度量是什季么?含廊2)所收评集的数据如成何使用?蛇吸3)用于见比较个人、帝过程或产品裳的度量是否暑合理?划完而管理人员斤就可利用这吓些度量来了馋解软件工程酿过程的实际太情况及它所械生产的产品慢质量。悼14.1.毫5.3项葵目估算胳度在软件项目往管理过程中爪的关键活动庄就是制定项松目计划,而孔在做项目计食划时就需要瞧对项目所需难的人力(以香人月为单位股)、项目持链续时间(以摊年份或月份她为单位)、旦成本(以元适为单位)进艘行估算。这抓种估算是利布用以前的项勒目花费作参员考的,若新凑项目与以前申的某个项目歇在规模和功揭能上十分类探似,则新项名目需要的工鸭作量、开发俘持续时间和揭成本大致与迁那个老项目窑相同,而由偷于每个项目示均是新项目录,对新项目取背景生疏,汉只凭过去的墓经验就显得米十分不够,禁就有必要采沟用用于软件弃开发的估算丑技术,其共喂同特点是佩恳1)事先向建立软件范鸡围照僵2)以以丛往项目的软膝件度量为基萌础,以作出穿估算。聚寿3)项目坑在估算时可吩分解为可估秤算的小块。新在项目估算毅时,通常采硬用多种估算监技术,以利切不同估算技幸术之间的交售叉检查。瓜14.1.窄5.4风购险分析反委现代项目管淹理的优势在缓于引进了风桌险分析技术友,由于当前冶许多项目不亿进行风险分蛙析就进行开变发,就存在刷了较大的项诉目风险,每机当在进行一细个软件项目闲开发时,其和人员、经费肠、进度及用缠户需求均存霉在着不确定非的因素,如援建立的软件贸系统,其用裕户需求是否绸确切地被理豆解,是否还胁存在有技术聪难题。所谓栗风险分析实神际上就是一缝系列风险管命理的步骤,倘主要包括风扯险识别、风虚险估算、风尊险评价、风原险管理和控非制。这些步圣骤贯彻于软瓜件工程过程饶中。性14.1.奶5.5进习度安排淋遥对不同的项填目,应有不丙同的项目进括度安排,在鞠项目估算的蒙基础上,对宰一个项目进妙行进度的安详排。进度安置排的原则为贡:谦米1)任务结划分及定义导榨将项目划分捉为子项目、盲任务、活动纱等可以管理辩的部分。努浓2)确定议任务的相互穗依赖性觉励确定活动与窑任务之间的皆相互依赖关尝系,特别是叉活动与任务肢的前置任务紫及后置任务磁。聪忽3)时间菊分配式趟为每个任务顶确定其一定辨数量的工作纹时间,并需谷指定开始时提间和结束时邀间。治临4)责任恰分配尽挣将每个任务瓶/活动分配双给某个特定绿小组或成员与来负责。插苍5)定义扮的结果圆附每个任务都脏应有一个目苹标,软件项牙目的目标通荡常是一个工选作产品(如叉一个模块的叙设计)或某达个工作产品肤的一部分,晓通常将多个屈工作产品组党合成甘“添可交付产品魔”矮。巷趋6)定义衫的里程碑(华miles袖tones坝)木磨每个任务或打任务组都应俯该与一个项面目里程碑相拆关联,当一仍个或多个工劲作产品经过番质量评审并泻得到认可时乱,标志着一舍个里程碑的爬完成。怒14.1.铲5.6追奸踪与控制著穷一旦适应了杆项目开发计耐划,就可以铃开始进行项络目追踪和项工目控制,一配旦项目出现此进度/资源弓等变化,就猫需要对项目毫计划进行调孩整以利于更需好地完成项巷目,最坏情止况可以对项激目的交付日给期进行修改得。绞14.2安兆软件度量和扮估算晌测度对于任凳何工程学科害而言都是基触本的手段,穴同样软件工罢程领域也需虏利用测度。膛测度通过提港供目标评价不的机制从而梯使我们对目厘标做到更深善的了解。苏软件度量是灾指计算机软便件的范围广尤泛的测度,山可用于对产倚品开发的软卖件过程和产梯品本身进行贝测度。测度泥应用于软件质过程,其目越的是在一个偶连续的基础痰上对它进行窑改进,即改赶进软件过程朱;测度也可魔以用于整个洒软件项目/胀产品中,辅复助估算、质勉量控制、生减产率评估及渗项目控制。鸭最后,测度丸能够被软件粱工程师使用抽以帮助评估荡产品的质量行且在项目进锅行中辅助进理行战术决策闻,即软件度善量的作用是柱为了更有效露地定量地对廊过程/产品春进行管理。肾软件工程的掌产品、过程傲资源都具有慨外部属性和放内部属性,财外部属性是浇面向管理者固和用户的属远性,体现了腰产品过程、疗资源与环境扇的关系,如凶成本、效益范、程序员的液生产率及软沫件产品的可驰靠性、可用节性、可维护即性可移植性垮等。软件的恒内部属性是搁指软件产品卷过程资源本漠身的属性,博如软件产品的的结构、模绘块化程度、看复杂性、程吴序长度等。王软件外部属断性在软件开讨发过程中很疗难测量和控项制,但它是吼由软件的内捎部属性决定大的,因此有灶必要研究软邀件的内部属敢性与外部属再性之间的关底系,并通过改软件内部属谜性度量解决记软件某些外泰部属性的度吨量问题,从伪而建立软件忘工程度量系哭统。测度在泽现实世界中犹可分为两类郊:直接测量毙(如螺钉的睡长度)和间唉接测量(如贩生产的螺钉御的扩“依质量个”宰,由计算其谜次品率来测独量)。软件拳度量也可以服这样分类。稀软件工程过瑞程的直接测装量包括功能秩、质量、复饱杂性、有效酸性、可靠性猾、可维护性眠等。建造软且件所需的成嫁本和工作量相、生产的代萝码行数以及鹊其他直接测炼量事相对容尚易收集到的扶,只要事先喷建立好测度雾的特定约定恩;然而,软紫件的质量和咐功能或其功忽效或可维护洪性是较难于宏评估的,只规能间接测量织。猜可以将软件霉度分成两类介,第一类包筒括了面向规恰模的度量和山面向功能的巩度量和面向穴人的度量;该第二类包括铃生产率度量由、质量度量膀的技术度量衡。它们之间劲的关系如图蝶14-3所矮示甘图14-3雹软件度量冰分类该软件生产率巧度量主要集瞧中在软件工效程过程的输碑出,软件质众量度量可指贴明软件满足狱明确的和隐矛含的用户需受求的程度,西技术度量主环要集中在某随些特征(如淹逻辑复杂性贡、模块化程字度)上,而龄不是软件开姨发的全过程皂。面向规模乖的度量用于革收集与直接匪度量有关的寄软件工程输必出的信息和混质量信息,亚面向功能的感度量的注意腾力集中在程初序的温“趴功能性莲”堵和面“堂实用性长”驻,面向人的潜度量则收集攻有关人们开绩发计算机软牲件所用方式喷的信息和人窝员理解有关俘工具的方法堵和效率的信浑息。栽14.2.更1.1鹊面向规模的突度量巷面向规模软培件度量是通堵过规范化质鸡量和/或生置产率的测量烧而得到的,单这些测量是昨基于所产生逼的软件的秒“游规模威”时。用软件淋项目和代码宫行(LOC纤)数表示软陶件项目的规罗模是十分自似然和直观的裤,代码行数高是可直接测结量的,几乎施所有的软件傲开发组织都盖保存软件项疑目的代码行屠数记录。利惊用代码行数霜不仅能度量友软件和规模狭,还可度量嫌软件开发的吊生成率、开控发每行代码考的平均成本穴、文档按代伶码的比例关梳系、每千行法代码的软件棵错误数等,敏采用代码行瓜数以LOC挥,常用千行图代码数K晚LOG(1嘱KLOG腊=10县3犯LOC)窄来度量。软段件生产率P执=LOC/欧E,其中E条为软件开发婆工作量,常捏用人月(P悲M)度量,蜜亦可用人日大来度量,这灿样P就为每驻人月完成的扛代码行数。腥每行代码的均平均成本C解=S/LO骨C,即软件垄每行代码的难平均成本,殃S积用人民币(持或其它货币共)进行表示允。符需要注意的哲是,工作量记和成本是指滋整个软件工夺程活动(包细括分析、设乌计、编码和礼测试)的工斩作量和成本狭,而不仅仅时指编码活动女,因此,设可Pe为读软掠件项目相关拾文档页数,欣可得到文档统代码比D=认Pe/K天LOC;设币N为代码中倒的错误总数盟,可得代码相错误率EQ傻R=N/K谢LOC。时在一个组织到中,常用一秀个表格来记导录项目中面逆向规模的度弄量,如表惧14-1领所示。飞表漠14-1烧软件慧项目记录溉可得到表巨14-2逆的度量左表执14-2徒项目度量示灿例耳面向规括模的度量并令不被普遍接考受为测量软牧件开发过程总的最好方式筝,虽然其测究试简单易行腿,但由于代休码行依赖于键程序设计语葡言的功能和巾表达能力;谎采用代码行厨估算方法会窝对设计精巧往的软件项目籍及非过程程后序设计语言块产生不利的较影响;同时牧在项目初期城难于估算代笋码行。御14.2.适1.2码面向功能的乖度量精面向功能度辫量是由Al样brech里t于197伞9年首先提行出来的,他湖建议一种称列为功能点的洗测量。面向锣功能的软件赚度量使用软断件所提供的证功能的测量吴作为规范化资值。因为拿“张功能庆”陷不能直接测罩量,所以必芽须通过利用呈其他直接的躁测量来间接音地导出。功横能点是基于谎软件信息域甩的可计算的临(直接的)语测量及软件夹复杂性的评季估而导出的夸。由于该方扛法主要考虑站程序的安“南功能性胜”跟和阳“岩实用性壁”竹,而不是对典LOC计数系,因而,在蝴软件设计初牛期就能够估银算出软件项狠目的规模。团功能点FP址计算步骤如占下:扭计算信息域脖特征CT兰信息域特征魄是通过完成台图14-4疗所示的表而珍计算出来的四。其中确定蝴了五个信息宜域特征,并桑在表中合适谈的位置提供滴计算。信息荐域值按下列畅方式定义:泪(1)用户唉输入数。对卸每个用户输坛入进行计数征,它们向软顷件提供不同播的面向应用筛的数据。输锡入应该与查捡询区分开来马,分别计数职。馋(2)用户躺输出数。对踩每个用户输罗出进行计数脸,它们向用抹户提供面向涨应用的信息俭。这里,输妨出是指报表千、屏幕、出端错消息,等啦等。一个报桥表中的单个貌数据项不单座独计数。眼用户查询数调。一个查询回被定义为一虹次联机输入猫,它导致软戒件以联机输诚出的方式产哨生实时的响钟应。每一个浴不同的查询杯都要计算。侦文件数。计钥数每个逻辑仁的主文件(你即数据的一林个逻辑组合稿,它可能是虫某个大型数属据库的一部爬分或是一个繁独立的文件多)。扣外部接口数骗。计数所有赚机器可读的扰接口(如存牢储介质上的佳数据文件)垫,利用这些始接口可以将剩信息从一个龟系统传送到皇另一个系统所。晋测量参数振计数出加权扶结果炊简单杆平均墙复杂况用户输入数捆□汗×宏3利×裤4需×宜6华=守□织用户输出数馋□籍×放4垮×条5盼×斤7榴=膏□赞用户查询数壁□哄×秘3禽×修4炎×辽6刑=掠□寺文件数贷□剂×尾7葡×容10尖×污15帐=燕□肌外部接口数晴□男×匙5凯×山7弊×仁10权=鸡□求总计数值C么T光马掘傍嘱补瘦武竖族扔□船图14-4盒计算功能么点度量稼2)一旦已构经收集到上蝇述数据,就梦将每个计算历与一个复杂塔度值(加权肌因子)关联税上。采用功寺能点方法的拢组织建立一渣个标准以确克定某个特定手的条目是简驼单的、平均带的还是复杂辟的。不过,阴复杂度的确池定多少有些毁主观。钱我们采用下茂面的关系式霜计算功能点卵(FP):制FP=总计碰数值CT*抱(0.65辜+0.01枯*蓝∑写F灶i落)寨其中午“存总计数值示”吃是从图14平-3得到的录所有FP条吉目的总和。商F巷i匀(椅I箩=1到14劳)是基于对并表14-叛3妇的回答而得饿到的纯“香复杂度调整型值龟”卖。健表视14-莫3娇问题表古问题化Fi工系统需要可叛靠的备份和端恢复吗?复需要数据通杯信吗?滔需要数据通财信吗?捧性能很关键泉吗?牵系统是否在知一个现存的应、重负的操问作环境中运混行?军系统需要联椅机数据登录百?霜联机数据登厅录是是否需爸要在多屏幕乌或多操作之贺间切换以完句成输入?垂需要联机更厚新文件吗?胡输入、输出牧文件或查询惩很复杂吗?讯内部处理复樱杂吗?饿代码需要被结设计成可复优用的吗?愧设计中需要左包括转换及驰安装吗?跳系统的设计筐支持不同组格织的多次安手装吗?载应用的设计暂方便用户修两改和使用吗全?惜每个问题的菌回答是使用窑从0到5衡荐量的,具体胖见表14-革4真,复杂度调逝整值数值表厕。迟表裂14-胶4错复杂度调萄整值表惊值己定义础0肾没有影响姨1丽偶然的飘2蔑适中的验3刃普通的悦4缠重要的恨5恢极重要的浙3)在上述削中的常量值皮和被应用到酱信息源计数移的加权因子裹是根据经验井确定的。授一旦计算出谊功能点,则现以类似LO央C的方法来郊使用它们以陡规范化软件狂生产率、质直量及其他属障性的测量:羞每个功能点盏(FP)的疮错误数。贩每个功能点萍(FP)缺狱陷数。膜每个功能点艇(FP)成绩本。嫩每个功能点娇(FP)文仍档页数。际每人月完成湿的功能点(带FP)数。达扩展的功能党点度量僻功酱能点度量最创初主要是用浪于商业信息钻系统应用中况。为了适应藏这类应用,纽数据维(前旬面讨论的信未息域值)被王强调而排除毒功能维及行购为(控制)民维。因此,煌功能点度量纲不适合用于呈很多工程及毒嵌入式系统燕(它们强调播功能及控制牵)。为了解窄决这种情况夫,有学者提疮出了许多对匹功能点度量咱的扩展。蝇一个称为特带征点的功能执点扩展是功利能点测量的宣超集,能够副被用于嵌入立系统及工程塘软件应用。容特征点度量刚适用于算法沙复杂性较高蚊的应用。实伶时系统、过飘程控制软件懂及嵌入式软俭件应用都有标较高的算法蛇复杂性,因模此适合特征可点度量。曲为了计算特慰征点,还要偷进行洞§些14.2.竟1.2节所沟述的信息域技值的再次计现算和加权。卷除此之外,雾特征点度量刚增加了一个绿新的软件特骗性,即算法趣。算法定义卧为清“燃特定计算机你程序中所包屯含的一个界享定的计算问票题朴”斩。转置矩阵侄、解码一个歇位串或处理蓝中断都是算秧法的例子。糟CT的值按家表肢14-5裳重新计算,幼FP的值可桑接原公式计焦算。慨表古14-5厨扩展功能践点为CT计变算遵测量参数娘值签权值挤结果昼用户输入数起□射×核4伤=拳□变用户输出数补□圆×渔5捧=闷□辞用户查询数团□宗×两4些=圈□芳文件数弓□犁×滥7助=乒□锡外部界面数透□伙×祝7侮=灵□值算法死□停×燥3抛=培□页总计数CT籍狸妻牲但墨线秆朽=避□脸14.2.卷1.4调枕和不同的度凝量方法闻代码行和功托能点度量之拦间的关系依董赖于实现软奔件所采用的缴程序设计语勾言及设计的摩质量。很多摔研究试图将糊FP和LO邀C测量联系司起来。表所14-6卵给出了在不库同的程序设袖计语言中建晚造一个功能伏点所需的平洗均代码行数帽的一个粗略誓估算。挥查看表可知钱,C++的咏一个LOC慎所提供的截“映功能性杏”于大约是C的孩一个LOC伏的2.4倍翁(平均讲)窜。肉进而,sm旧allta柏lk的一个倦LOC至少律是诸如Ad乓a,CO雷BOL,正C传统程序还设计语言的水4倍。侦LOC和F似P测量常常习用于导出生基产率度量。指这总是引起请关于这类数睁据使用的争条论。是否应池该将某个组孕的LOC/藏人月(或F脱P/人月)跟与另一个组疫的类似数据季进行比较?惜管理者是否贵应该根据这岩些度量来评赔价个人的表驻现?这些问野题的答案毫贿无疑问是一侨个名“可不级”冷字。这个回亡答的理由是她很多因素都重会影响生产另率,进行庸“曾苹果与桔子品”亦的比较很容镰易产生曲解缺。费基于功能点种和LOC度腾量已被发现全是软件开发曾工作量和成杀本的相对精殊确的判定,延然而,为了沿将LOC和然FP用于估盖算,必须建券立历史的信疤息基线。涂14.2.兴2软件质跌量度量悄14.2.射2.1软蓄件质量定义娱及三层次度笨量模型沿软件质量是桶软件的生命催,它直接影泊响软件的使屋用与维护。询软件开发人忠员、维护人禁员、管理人拣员和用户都枪十分重视软易件的质量。欺质量低下的醒软件不但影蛙响基于计算选机系统的工昌作效率,而糊且还可能给描用户带来灾布难性的后果痒,如196妥2年美国飞亭向金星的空袖间探测器耀“乖水手一号匹”贼,因导航程敞序中的一个荒语句错误而恳导致探测器轮偏离航线。润大量软件事穿故的惨痛教怠训时刻提醒努人们千万不强能忽视软件龟产品的质量贼。提高软件交产品质量已翅成为软件工传程的一项首积要任务。由拔于软件开发判人员、管理盗人员、维护棉人员和用户厉在软件开发孩、维护和使灶用过程中所村处地位不同市,他们对软搬件质量的理燥解和要求不译同。如:管榨理人员十分笨关心软件开穿发采用的标伏准,在经费义和时间允许猪的情况下,勺如何实现软奖件需求规格映说明中定义准的功能;维倦护人员特别丛重视软件的骄正确性、可从理解性和可些修改性;用散户更关心软栗件的性能和甘可靠性等。洋因此,应该示对软件质量屯给出一个客州观的、科学村的定义,并违尽量予以量迁化。这对统爸一人们对软婚件产品的质笋量的认识,纱在软件产品僚开发与维护劲过程中评价劈和控制软件惭产品质量都汇是十分必要恩的。奔1983年喝,ADSI倚/IEEE着std72宗9给出的软币件质量定义撒是:软件产选品满足规定落的和隐含的艰与需求能力逃有关的全部枝特征和特性谎,包括如下咐几方面:疾软件产品质促量满足用户奖要求的程度届。食软件各种属旺性的组合程慕度。词用户对软件趁产品的综合桥反映程度。驼软件在使用唇过程中满足肾用户要求的夕程度。谱上述定义表胀明,软件质要量依赖于软继件的内部特辆征及组合。臂为了软件质有量进行度量寿,首先必须航对影响软件灰质量的要素讲进行度量,姐并建立实用冶的软件质量顺度量体系或右模型。19渡68年,R牢ubey和理Hartw泪ick提出海了软件某些消属性的度量旺方法。19杰76年,B主oehm提垃出了定量评惹价软件质量挑的概念,并春给出了60菊个软件质量烦度量公式和脏软件质量度药量的层次模绞型;197婶8年,Wa丑lters宅和McCa占ll提出了复包括质量要午素、准则和螺度量的三层期次软件质量滚度量模型。矿随后,G.融Murin博e又提出了乌软件质量度誉量技术,用精于定量地评亮价软件质量亭。越来越多偶的人认识到倾,软件质量咐度量技术在疑定量地评价鼓软件质量、三管理软件开挽发和提高软浓件质量方面各是十分重要率的。例如,雕国际标准化缠组织(IS必O)在19潮85年提出讯了软件质量稻度量(SQ蚂M)工作报汗告。螺表14塞-6牧每功能点用LOC值怨程序语言圾每FP之L屑OC值装平均笋中等拼低督高渡Acces神s怕35卖38剪15牙47秘Ada克154耀-呀104繁205团APS著86仰83树20卫184织ASP69桐62激-景32计127志Assem唐bler鹅337敌315锯91虽694少C怎162多109屑33亏704萝C++扛66多53缘29链178肿Clipp资er述38筝39够27位70旷COBOL典77峡77纯14薄400菌Cool:润Gen/I文EF助38饿31烦10筒180唤Culpr秤i群t猛51蓝-费-获-瞧D损b艇aseI着V标52振-螺-缺-阵Easyt辈rieve坛+旅33澡34坡25质41茧Excel膨47共46都-胜31糕63渡Focus咬43驾42垂32仇56岔FORTR妙AN否-羽-璃-逆-更FoxPr厦o糟32政35展25侍35友Ideal着66戴52挺34挑203糠IEF/C今ool:G滤en袍38钟31逆10恋180唉Infor则mix判42币31眠24誉57构Java吐63倘53性77身-佳JavaS袋cript川58锡63冤42摇75深JCL构91精123努26叶150匆JSP湾59差-津-兔-迫Lotus采Note档s佩21焦22断15唉25妖Manti风s县71混27高22另250迷Mappe汁r寇118笋81星16返245春Natur左al习60迫52而22磁141原Oracl屿e坡30丙35盆4甚217劝Peopl庭eSoft怨33谋32骑30呈40牛Perl垫60赞-越-嘱-尼PL孟/逝Ⅰ出78别67港22落263咐Power咽build披er兵32牵31暴11艳105万REXX助67枯-冤-屿-芽RP晴G跌Ⅱ雕/冻Ⅲ损61捉49软24替155狮SAS耻40友41怀33妙49括Small贵talk飘26专19锐10慈55婶SQL误40淹37支7仗110毙VBScr伶ipt36柔34字27敢50蠢-就Visua散lBas恶ic拜47辨42联16胶158共图14-5牲McCa叮ll的软鲁件质量度量本模型桨14.2.调2.2软脚件质量要素值软件质量要金素直接影响肝软件开发过均程各个阶段昨的产品质量奔和最终软件泥产品质量。夕由于对软件踪质量理解的座不断深化,鬼软件质量要施素也不是一辆成不变的。迁McCal上l等人给出翼的软件质量及要素共11坑个,分为三菜类。它们之俊间的关系如汪图柔14-泽6所示。第樱一类要素表唐现软件的运拳行特征,包东括正确性、荣可靠性、有忌效性、完整贴性和可用性无;第二类要秋素表现软件佛承受修改的页能力,包括界可维护性、骄灵活性和可矛测试性;第盯三类要素表买现软件对新明环境的适应荷程度,包括考可移植性、员可用性和可赢互操作性。袜我们已介绍占了软件的可游靠性、有效菌性、可维护恐性、可移植堆性和可区重申用性的概念匀。下面介绍牛软件的正确敬性、完整性述、可用性、公灵活性、可秋测试性和可效互操作性的杏概念。顶正确性。程姻序满足规格扬说明及完成克用户目标的澡程度。总完整性。控肢制未被授权覆人员访问程兽序和数据的终程度。文可用性。学寨习使用软件巨的难易程度域,包括操作肃软件、为软爷件准备输入馆数据以及解仅释软件输出宋结果。屑图14-6负McCal阶l的软件质槐量要素俯灵活性。改头变一个操作潜程序所需的扰工作量。色可测试性。役测试程序使办之具有预定储功能所需的科工作量。补可互操作性装。两个或多早个系统交换辫信息并相互秋使用已交换验信息的能力茄。动各种软件质备量要素之间弯的关系如表急14-牌7催所示。它们唱之间有正相棍关(餐△鸽),也有负楚相关狠(梳▼膛)帐,因此在系瓶统设计过程纤中应根据具洲体情况对各终种要素的要难求进行折衷六,以便得到唱在总体上用圣户和系统开住发人员都满幸意的质量标旨准。例如,困实时控制系筐统的可靠性扮、有效性是核决定系统成摘败的关键要柔素,必须全锐力保证,而鸦软件的可移扯植性、可重椅用性就不是惕主要的了;神又如,设计士通用的软件贿工具对于可嘉维护性、可押移植性、可蹲重用性应该钢给予更多的鹅注意,而有宴效性就不是鬼影响系统成慈败的关键要蛙素了。步表杠14-练7掏质量要素坛之间的关系抬14.2.烛2.3软螺件质量要素占评价准则盘由于直接测深量软件质量等要素十分困国难,在某些鸣场合甚至是半不可能的,驻于是McC租all等人宇定义了一组梅比较容易度识量的软件质搜量要素评价吵准则,通过剃这组评价准宁则间接测量枣软件质量要耐素。定义评负价准则的基求础是确定影余响软件质量灶要素的属性供。这些属性诱必须满足两枝个条件:工能够比较完臂整、准确地遍描述软件质辱量要素;现比较容易量近化和测量。捞它们反映了僻软件质量的妙优劣。度McCal著l定义的软虏件质量要素武评价准则共冰21种,它垂们是:胁可审查性。项检查软件需龄求、规格说禁明、标准、泳过程、指令朵、代码及合些同是否一致甜的难易程度映。械准确性。计烦算和控制的蛛精度,是对施无误差程度颠的一种定量沉估计。最好稠表示成相对旅误差的函数爱。值越大表仍示精度越高庸。质通信通用性延。使用标准朵接口、协议里和频带的程承度。舍完全性。软刑件不丢失各炎重要成分,豪完全实现系近统所需功能浑。蔑简明性。程蝇序源代码的游紧凑性。偿一致性。采蒸用统一的概松念、术语及资符号,接口大、规格说明料等保持一致翁。板数据通用性你。在程序中余使用标准的蚊数据结构和单类型。浮容错性。系享统在各种异不常条件下提舍供继续操作锹的能力。颤执行效率。晨程序运行效蚀率。愚可扩充性。晴能够对结构论设计、数据宫设计和过程杆设计进行扩瓜充的程度。岔通用性。程冈序部件潜在滴应用范围的桌广泛性。剖硬件独立性秃。软件同支象持它运行的睁硬件系统不寿相关的程度旺。夫检测性。监赠视程序的运厦行,一旦发厚生错误,标锡识错误的程遵度。辞模块化。划秤分成逻辑上仆相对独立的慈成分,具有谨良好的接口站定义。碑可操作性。面操作一个软个件的难易程福度。垂安全性。控落制或保护程身序和数据不厚受破坏的机隔制,以防止筐程序和数据宁受到意外的郊或蓄意的存释取、使用、貌修改、毁坏厌或泄密。狼自文档化。计源代码提供境有意义文档英的程度。贫简单性。理地解程序的难孙易程度。启软件系统独座立性。程序栗与非标准的术程序设计语叉言特征、操模作系统特征匀以及其他环搂境约束无关降的程度。铺可追踪性。五可在软件文少档之间实现铲正向/逆向伶的追踪能力宿。蓝易培训性。殿软件支持新欺用户使用该平系统的能力钢。浮软件质量要尽素与评价准差则之间的关三系如表日14-乔8浓所示。宗表泡14-窗8覆质量要素纳与评价准则稠质量要素浓关系球正确性咬可靠性弓有效性堡完整性滨可维护性苦可测试性遵可移植性件可重用性界可互操作性扣可用性方灵活性均评价准则烤可审查性搜√周√猪准确性求√援通信通用性眯√膝完全性衡√尸复杂性伐√乞√狱简明性躁√帐√歪√筋一致性贷√被√拍√划√肠数据通用性抢√言容错性浇√算执行效率扩√婚可扩充性穷√奏通用性叶√去√堂√葱√瘦硬件独立性万√挂√绩检测性渔√大√算√酿模块化绒√朗√势√口√妖√群√业√逃可操作性奋√辩√故安全性凑√旦自文档化的√院√奴√收√纯√烘简单性撕√屑√突√们软件系统独辣立性妙√凑√幻可追踪性邮√专易培训性斗√肚McCal絮l等人提出返的软件质量完度量模型、摇软件质量要糕素和评价准承则为软件质前量管理奠定刺了基础。近液年来,国内费外许多软件观工程组织和丛专家在软件度质量要素和皆评价准则的锐选取度量方惨面做了大量静的工作,部贡分结果已用筝软件开发过萝程的质量控桂制和软件产疤品的质量度婚量。香1987年扬,Hewl险ett-P蓄ackar盏d提出一组植称之为FU纽RPS的软某件质量要素融。这组要素喊由功能性、寨可用性、可症靠性、性能世和可支撑性风组成。Gr丢ad和Ca碎swell鹊给出了以调屑查报告/规皮格说明、设挡计、实现、饶测试、支撑霉为行,以上属述要素为列厕的5行5列茫矩阵,通过阅对矩阵元素疗的度量导出宗软件开发过腔程和软件产备品能质量要匀素的FUR着PS度量。字1985年捉,国际标准呀化组织(I音SO)建议傍,软件质量棋度量模型由中3层组成。嫌高层称软件华质量需求评臣价准则(S窝QRC),咸中层称软件偷质量设计评雅价准则(S原QDC),业低层称软件贷质量度量评半价准则(S佩QMC)。话分别对应M财cCall跑等人的要素逢、评价准则董和度量。I贡SO认为,灰应对高层和赢中层建立国执际标准,以寄便在国际范怖围内推广应漠用软件质量村管理,而低柴层可由各使明用单位自行惧制定。IS击O高层由8禽个要素组成炼,中层由2杯3个评价准兄则组成,它脾们之间的关替系如表橡14-纺9屑所示。攻14.2.货3软件复挎杂性度量族14.2.筒3.1软刮件复杂性度怜量原则提软件复杂性忽度量是软件夺度量的重要症组成部分.墨任何一个有眨经验的程序淘员都知道,屯开发规模相村同、复杂性累不同的软件炉,花费的时狱间和成本会网有很大差异理。K.Ma廉gel从如冻下6个方面赢描述软件复耕杂性:屡理解程序的呜难度;拢纠错、维护麦程序的难度失;办向他人解释浊程序的难度械;仅按指定方法等修改程序的铅难度;朽根据设计文职件编写程序优的工作量;芹执行程序时摆需要资源的位程度。鲁它反映了软步件的可理解幅性、模块性杆、简洁性等务属性。当前俘,还没有比看较理想、全核面、系统的右度量软件复胳杂性的模型夜。人们一般个认为,软件带复杂性度量撑模型应遵循关下列基本原猛则:烛软件复杂性潮与程序大小幼的关系不是拳线性的;框控制结构复展杂的程序较国复杂;客数据结构复倡杂的程序较呢复杂;屋转向语句使呢用不当的程戚序较复杂;凑循环结构比倾选择结构复响杂,选择结滩构又比顺序冠结构复杂;荐语句、数据旱、子程序和拔模块在程序拾中的次序对橡复杂性有影障响;纤全程变量、馆非局部变量页较多时,程查序较复杂;欣参数按地址靠调用比按值比调用复杂;币函数副作用林比显式参数帽传递难于理勺解;孔具有不同作龄用的变量共约用一个名字证时较难理解勺。牵模块间、过尊程间联系密校切的程序比晕较复杂;闻嵌套深度越含深,程序越梯复杂。促下面介绍几哗种满足上述女部分原则的根复杂性度量化模型。路表拨14-所9没ISO质粮量要素惯要素宰关系店正确性坟可容性崭有效性姥安全性醋可用性姜可维护性俯灵活性抢可互操作性捷准则惑可追踪性代√务完全性秘√燕一致性袭√盈√茶√拉准确性绞√珍容错性昆√糖简单性足√卫√猪模块化极√辅√捐通用性裤√普可扩充性哈检测性快√芳自描述性辈√松√墓执行效率扇√霸存储效率件√屑存取控制据√艰存取审查伴√简可操作性荒√滑易培训性畏√林通信性比√量软件系统独叙立性票√选硬件独立性青√劲通信通用性怜√餐数据通用性梦√腔简明性偶√漏14.2.坊3.2控许制结构的复疮杂性度量劲唯cCabe千于1976层年提出了基肌于程序拓扑利结构的软件志复杂性度量刑模型。T.烧J.McC亡abe把程斯序看成是一有个入口节点犁和一个出口霉节点的有向饺图,图中每皮个节点对应嗓一个语句或虾一个顺序流之程的程序代值码块,弧对勒应于程序中敌的转移。这守种图也称为宿程序控制结期构图。为不钞失一般性,蓝假设图中每非个节点都可絮以由入口节蒸点到达,并怖且从每个节兴点都可以到酱达出口节点泉。McCa坝be用程序垒控制结构图基的巡回秩数后V(G)作害为程序结构取复杂性的度欣量:症去善V(菠G)=e-举n+2帝其中:e为漂结构图的边仓数:土堪n为结构市图的节点数窝。汽可以证明,决V(G)等青于结构图中绩有界或无界吩的封闭区域特个数。象[例坏1刻]计算如怖图14-绩7厨所示程序控佣制结构图的斤V(G)值哲。渔图14-昨7责程序控制结哭构的V(G芒)值帆e=1,n阻=2,v=虾1;泳e=3,n灯=3,v=赚2;挽e=4,n巧=4,v=盯2;屯e=3,n鄙=3,v=驶2;升e=6,n凡=5,v=个3。鸦当程序中分胖支结构数和父循环结构数插增加时,控臣制结构图中滋的区域数就饥会增加,程妙序的结构会差变得更复杂丰,V(G)般的值也会相叛应地增大。酸其次,在结程构化程序设抽计中求控制孤流从高层指调向低层,如宗果出现从低遮层指向高层宿的流向,则从会增加封闭袍区域的个数终,于是,反亡方向的控制燥流向越多,赛程序结构越砖复杂,V(雾G)越大。堤McCab臂e还指出,底可以把V(何G)作为模税块规模的定纺量指标。他砖建议一个模拉块V(G)窄的值不要大朗于10。当蓝V(G)>旬10时,模胁块内部结构炕就会变得复够杂,给编码聚和测试带来羡困难。替14.2.淘3.3文筝本复杂性度剪量堂20世纪绵70年代初芦,M.Ha尤lstea咏d从统计学强和心理学的匙角度研究软凶件复杂性问圈题。他认为跃程序是由操仿作符和操作妇数组成的符私号序列。操吊作符是由程咸序设计语言岗定义并在程应序中出现的么语法符号,级如FORT愉RAN语言贡中的+、-奸、*、/、赚IF、TH糊EN、DO抛、END等剩。操作数是途操作对象,堤它是由程序痒定义并引用骨的,可以是赢变量、常量法、数组、记顷录、指针等怨。粱设n怜1拥为程序中不素同操作符的规个数;它n魂2手为程序中不代同操作数的项个数;怠N仍1积为程序中操肥作符的个数重;灿N统2研为程序中操屠作数的个数惠。朝于是,程序击语言符号长控度N=握N序1吴+N吊2利,可用下式值估算:抽N=n谁1令log法2记n佳1筑+n的2监log锤2犹n漠2俩价望安(公式14革-1)当该公式的前台提是,假设花程序员十分敢熟悉他所使暮用的程序设卷计语言和程每序涉及的算扎法。编写程寄序的过程也朽就是从长度有为n的符号叶表中(其中话,n=n予1叼+n界2袖)选择操作顽符和操作数唉的过程。M队.Hals曲tead用寸下式定义程鸟序量:娱V=Nl稿og都2文(n编1胜+n聚2惧)叼伏(塞公式14-灿2)浪它反映了程匪序在勒“游词汇械”兰上的复杂性细。如果把具妨有m眯1穿个输入和m掀2究个输出的贺程序理解为浑将m穴1世个变元映射荡倒m杂2叙个变元的函钓数Y=F(坛x),其中恐x=(x耕1,模x咱2垫…竹x蒙m1幕),Y=(壁y瓜1,截y齐2下…肆y垄m2以),那么程串序的操作符面只有函数和喂赋值两个,搏即n惰1波*推=2、厉n躬2屡*售代入程序定酸义,可得最堆小程序量社钞拿V渴*动=(2+n传2至*刻)log珠2丑(2+n脾2菌*碗)容(公式暖14-3粥)鲜令L=V重*烘/V,其值怨取决于具体脂的程序设计肚语言和程序怖。对某种程拔序设计语言经,选用多个瞧程序。对某盲种程序设计卧语言,选用招多个程序,票计算并统计片L的期望值券I=E(L锄)慧≈理。M.Ha输lstea刷d将I定义首为这种语言刚的程序级,传它反映了用薯这种语言求乏解问题时程围序的效率,骑0<I<1陈。高级语言裙的程序级接秒近于1,低贩级语言的程裳序级接近于壤0。Ada劫语言的程序拳级高于FO惨RTRAN文语言的程序驾级,FOR娃TRAN语床言的程序级屋又高于汇编苍语言的程序舅级。I不仅挖与程序设计青语言的表达坚能力有关,翼而且还依赖量于程序员的穷水平。止当n比较大繁时,Sho茫oman给蹲出程序语言低符号长度N摘的类似估算圾:峰N=(n到1围+n炭2暖)[0.5泊772+共ln(n盛1庸+n快2厕)]访(公式14淘-4)旺通过统计实横验和分析,诚可以得出某踩种程序设计层语言的程序桌每千行代码浸(KLOC胞)或每个功柏能点(FP衬)所包含的赠操作符和操轮作数个数C霞N或CF,沿于是程序语叙言符号长度熟N可以折合荷成相应的代谅码行数和功首能点数。期由于n插1教n工2爪N钩1初N范2胡相同的程序单在控制结构愈和数据复杂君性等方面可坐能存在相当吐大的差异,府程序员使用与程序设计语军言描述算法痕的水平和熟吼悉程度也有议很大区别,耀因此Hal有stead醋的估算方法巾有一定的局怖限性。且14.2.棋4软件可签靠性度量闭软件可靠性拆是影响软件沸质量的重要纲因素。对于歪重要的计算托机应用系统舰,特别是实屡时、嵌入式迅计算机应用越系统,软件运可靠性关系讲到整个系统删的成败。在耽软件开发阶厕段,软件可最靠性度量用娱于估算和测钉量软件产品蒜的可靠性。株可靠性分析洋和可靠性测哲试是衡量软监件质量的重熄要手段。本腾节研究软件洗可靠性、有柄效性及度量带软件可靠性装的模型和方半法。危14.2.幸4.1软尼件可靠性的易概念受制造问题、衔设计错误、蒙元器件过载谎、机械磨损宗等原因都会搬导致硬件故臂障,这些故燃障有些是不红确定的,有寨些是随机的芬。硬件故障推可以追查到跨一个元器件管的失效或选知用不当。软星件除了不会絮出现磨损故筋障外,由其容他几种类似疼原因引发的雄故障都有可艰能出现。在斤系统测试过叮程中,一旦洁发现故障,哄就必须查明刘原因。这些饰故障可能来饮自硬件、软叛件或人为因真素。然后,左根据故障原茅因,采取相馋应的有效措燃施将其排除缝。由于大型纹软件是复杂捏的逻辑产品梢,采用枚举侵技术不可能许对程序运行事的所有路径弄逐个进行测秆试,投入使杨用的软件很挂可能残留一情定数量的错酷误。因此,就某些初始条宏件和输入数岸据可能导致佩程序运行失造效,即慢“姥软件故障败”胶。夕在某个定时井时间间隔内圾,程序按照止规格说明成书功运行的概分率定义为软拖件的可靠性抗。在研究软联件可靠性时心,令随机变拥量t表示程券序发生故障启的时刻,t者∈凉[0,谦∞涛],f(t横)表示t的为概率密度函宣数,F(t滋)表示分布盒函数,P(罪0割≤除t陡≤散t拦1网)表示从初嫁始时刻到t饭1粘时刻程序发贯生故障的概己率。初始时滋刻程序工作掌正常,恰,于是,圆和脸满足云巨洋己挂艰(公式1妹4-5)秘灭联鸭池豪(公式1柿4-6)械从0时刻开暴始,到t1惹时刻为止,抬程序发生故充障的概率疮由于同一时钩刻程序成功猎运行和发生丈故障是两个敲互斥事件,西所以[0,扮t]区间程房序成功运行止的概率偏和发生故障饺的概率肉满足盟非碰铅的铜鹊(公式14笛-7)劲程序成功运僵行的概率楼就是可靠性新,一般用厅标记。综上博所述蜜上式表明,桶当软件残留氧错误数量一劣定时,程序阅运行时间越斧长,程序发揭生故障的次满数越多,软旋件可靠性越俩小。为了比零较某一个程驾序在不同的帅时期或若干弟个程序在同袋一时期的可邪靠性,引入阵故障率渔是十分必要亲的。候假设扬,系统一直锻成功运行至甲时刻t,限是系统在威时间间隔并捉且益时出现故障拔的概率,于绢是即时刻故障的酸值定义为肺桶记节(公式蒜14-8)可以证明贡赢沃城欢夕酬(公式康14-9)将代入上式嗽阳宜途劳糊犯患(公式14疼-10)蚕对上式两边既积分并利用姑初始条件谢,得可靠性乞和故障率的斤基本方程阔罩跳淹律嚷(公蓝式14-1秀1)泊利用该方程何,可以导出掏几个常用的家故障模型:想(千1)闪表示单位时掘间内程序运么行的故障率虾函数为常数望,代入公式掏14-11渐,可得搏市支端居略君瑞(公柿式14-1岭2)森该公式称为挺故障率为常奔数的可靠性祸模型,它的灵可靠性随t州的增加呈指蝴数衰减。室拦迁(2)爆,其中k是珠常数,羊,当耗损或狱退化存在时屑,故障率将抢随时间的流劈逝而线性增冶加,这种模玻型一般不适锣用于软件产隆品。代入公丧式14-1围1,可得喉撕荡冈驰同放解(公式14晨-13)事事实上,硬访件和软件产宪品的故障率蠢函数不会如场此简单,统返计结果表明抖,硬件系统熟的故障率函衔数如图牢14-绞8(a)所铜示,呈浴盆搭状,曲线分炮下降,稳定殖和上升3个晋部分。硬件花早期故障通爆常是由设计谈、装配、运巷输等方面的蛾原因造成的旦。系统经过筑一段时间的简维修后,运抚行趋于稳定热,故障明显识减少。随着撕岁月的流逝禁,由于机械较磨损、腐蚀旅、化学变化逢等方面的原票因,损耗型穴故障增加,咸直到硬件系惨统报废。软嘉件没有损耗水型故障,软叶件故障率函罩数曲线如图冰14-箩8(b)所糕示,呈指数听下降趋势。维软件错误归挡根结底是人劳的设计错误贝,在复杂的京计算机系统鲜中,某些数垫据或某些指壳令的组合可迟能会引发程焰序逻辑错误绑。杜消着(a)甚去缘耽谁存荡(b)月图滚14-帮8系统故跳障率毯14.2.兄4.2软抚件修复和软脚件有效性歌排除软御件代码中的搬错误称软件控修复。从软咽件可靠性的加角度来看,雄存在着可修画复系统和不怨可修复系统货,在基于计宜算机的系统亏中,不允许表程序停止运承行的系统称旋为不可修复倡系统,如空厕中交通管理坏系统;反之草,称为可修匹复系统,如盘软件开发环粮境中的各种睡软件工具。虎为了保证不世可修复系统藏的可靠性,丧应该建立一裹个软/硬件箭的双机系统取。傅软件修复包驻括发现故障课、纠正错误远、测试和系泥统重新启动息4个步骤。伪假设从程序傅中消除一个浊错误后,新乡的程序故障戏率应该减少累,因此程序领的修复工作危能够降低系雕统的故障率花,提高系统晒的可靠性。吸软件修复时皮间是一个随注机变量,在杠可靠性分析扰过程中,为宅了简单,经仆常使用平均订修复时间的竿概念。界为了讨论系锄统的修复问时题,引入系纺统有效性的湾概念是十分姐必要的。有闹效函数嚼定义为系统紫在时刻t正康常运行的概保率。如那,表示10管0个相同的猫系统都运行攻了250小旁时,有95傻个处于正常谷运行状态,缺5个出现故庙障等待修理逮。由此可看侄出有效性和粥可靠性的区叼别。可靠性启函数涨表示系统在升时间间隔正丢常运行的概要率。摧表示100甲个相同的系称统有95个卧无故障运行郊250小时字,有5个在单此期间发生杀故障。显然纷的要求比择的要求严格肥得多。对于西不可修复系天统或没有修泻理能力的部嘴门,芬=衡;对于允许乌修理并有一便定修理能力爸的部门,很。下面介绍劫三种测量软此件有效性的健方法。曲(1)用省n台相同的柿计算机软/汗硬件系统处养理若干组相届同或不同的以输入数据,葡如果发现某鹿个计算机系余统发生故障水,则可以停朽机检修,待尖修复后重新推启动。享t栋时刻观测n苍台计算机的爪工作状态,环如果有允台出现故障千,则系统的畏有效性估计内为艇造宿厚动(公式态14-14圣)长显然,初始裕状态澡。独(2)系浇统在稳定运条行过程中,穗仔细地记录眠一个程序运捐行的有效时麦间晕和失效时间磁,则程序在偷稳态运行的粮有效性烧扇猛谜(钱公式14-昆15)飞其中俯做微,斯,岭(3)当率系统处于稳婶态时,程序衰正常运行时漫间的平均值汗也是程序平阶均故障间隔锻时间(MT编BF,m摸eant庄imet傲ofai祝lure)毕,程序平均禾停机时间尿也是程序平辆均修复时间捆(MTTR强,mea映ntim获eto迅repai移r),于是腿系统稳态时苦的程序有效珠性箱失(公式14减-16)辟在上面介绍削的三种有效呼性度量方法鸦中,第一种芽方法最便于备理解有效性住概念,但在谅多数场合时争不可行的;铅用第二种方类法度量某个辞已经投入运胀行的程序系嫂统的有效性道比较容易;镜第三种方法厌可以用于软梦件开发阶段爹,软件工程港师在开发阶居段统计MT敞BF和MT长TR的值。嗽采用这些方是法都可以定缓量地度量软关件系统的可笔靠性并与其迹他软件系统计进行比较。智软件系统投墨入运行后,姑在某一段时急间内可以用习大量的、复征杂的输入数秒据引发程序唱中残留的错配误,程序经舌多次修复后遣,错误逐渐视减少甚至消扫除,程序的斥有效性不断凶提高。然14.2.凝4.3软蛋件可靠性估教算龙为了研究软旋件可靠性,舅20世纪7捞0年代以来络,人们建立大了几十种软射件可靠性模紫型。这些模虏型可分为宏缎观模型和微错观模型两类好。宏观模型织从程序种残窃留错误的角耳度建立模型伞,并用统计诱方法确定模奖型汇总的参恐数。微观模新型以程序的首控制结构和父程序语句分壤析为基础。苗无论是宏观方模型还是微扫观模型都很拜不成熟,这否里介绍几种诵典型的估算情软件可靠性坟的宏观方法晨。零1)错误烤植入模型兵错误植入模指型用于估算峡程序中残留绝的错误,它罚借鉴了笔“敢估算池塘中庙鱼尾数量的侍播种模型禽”般。设池塘中祝放养大小相走当、平中一垒样的鱼N条鹿,从中捞取蜘条并在鱼身谢做上标记,腰放回池塘。苗当带标记和赖不带标记的折鱼随机、均陶匀地混杂在裙一起之后,娇捞出n条,卷其中带有标京记的鱼吸条,于是母尿体N与号的关系和字逮样n与姓的关系满足耐绩吸五(置公式14-薯17)车由公式14屿-17得出邀母体N的估输算值宋僚夸争(公午式14-1羞8)董Mills货首先将播种穿模型用于程植序中残留错葡误的估算,辽称为错误植归入模型。他证把N类比为窜程序开始排谦错时残留错侍误数,其中抱包括统计人善员设置在程作序中的异个错误,这惠些错误对于辩程序排错人奖员是未知的打,而统计人晋员留有详细酬的记录。排柱错工作进行由数天之后,兽统计人员发妨现共查出n鞠个错误,其呀中宝个属于植入净错误,于是节公式14-慨18可以估缠算出程序的洞残留错误。客这里要求程接序运行时,念在各种输入峰数据的引发县下,程序中主的残留错误幕能随机并均交匀地出现。岂事实上完全畜做到这一点袋是不现实的召。鞠1973年谱,Hyma愈n对错误植婶入模型进行疾了改进。他逝安排两名程军序测试员同步时对一个程拾序进行独立幸测试。设州=程序中原浆有的残留错侍误数;桥=第一位测晴试员在紧时间内发现汪的错误数;陕=第二位测兴试员在奥时间内发现位的错误数;芦=两位测试蹲员在浑时间内不约进而同发现的移错误数。存与公式14松-17类比汉,有恰堵啄防阁(公式14巡-19)浅于是,程序拉中残留错误猾的估计值可达用下式计算三丧舅委帮(公式14吊-20)汤用Hyma斜n的改进方疮法估算程序那的残留错误拔,无论技术虽上还是经济乞上都比原始流的错误植入运模型优越。豆2)软件敌平均故障间虎隔时间估算威软件平均故盗障时间式软谜件可靠性度居量的重要参活数,下面介态绍几种估算阵MTBF的常方法。很(1)软僚件故障率是危常数。订当软件故障惯率剧是常数时,勤实践中经常何用程序运行潮H小时出现歪的故障数r深进行估算棍于是,软件浑平均故障间零隔时间可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论