




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
福州大学·软件学院·计算机教研室软件维护(Softwaremaintenance)王灿辉第1页软件维护是指软件系统交付使用以后对它所做改变,也是软件生命周期中最终一个阶段(不属于开发阶段)。Themaintenancephasefocusesonchangethatisassociatedwitherrorcorrection,adaptationsrequiredasthesoftware’senvironmentevolves,andchangesduetoenhancementsbroughtbychangingcustomerrequirements.软件维护(Softwaremaintenance)第2页Themaintenancephasereappliesthestepsofthedefinitionanddevelopmentphases,butdoessointhecontextofexistingsoftware.统计资料表明:大部分维护工作是由用户需求改变而引发,而不是由可靠性问题引发。软件维护(Softwaremaintenance)第3页软件维护(Softwaremaintenance)软件维护是软件生命周期中历时最长,人力和资源花费最多一个阶段,也是研究最少一个阶段。第4页软件维护(Softwaremaintenance)第5页Correctivemaintenancechangesthesoftwaretocorrectdefects.Adaptivemaintenanceresultsinmodificationtothesoftwaretoaccommodatechangetoitsenvironment.Perfectivemaintenanceextendsthesoftwarebeyonditsoriginalfunctionalrequirements.Preventivemaintenance,oftencalledsoftwarereengineering,makeschangestocomputerprogramssothattheycanbemoreeasilycorrected,adapted,andenhanced.软件维护分类第6页软件维护分类第7页读懂他人编写程序通常相当困难,尤其是一些非结构化程序。假如只有程序代码而没有文档说明问题将会十分严重。软件人员经常流动,所以当要求对软件进行维护时,不可能依靠原开发人员提供对软件解释(即使可能有时也因时间太久而造成原开发人员无法提供帮助)。没有文档、文档严重不足,文档难于了解,或文档与程序不一致。经过各种版本或发行,要追踪软件演化变得很困难,甚至不可能。软件维护中问题(1)第8页绝大多数软件在设计时不考虑以后可能改变。除非采取功效独立模块化设计方法,不然软件修改将是困难,而且还轻易引入新错误。追踪软件建立过程非常困难。维护被看作是毫无吸引力工作,高水平程序员自然不愿主动去做,而企业也舍不得让高水平程序员去做。带着低沉情绪低水平程序员只会把维护工作搞得一塌糊涂。维护将会产生不良副作用,不论是修改代码、数据或文档,都有可能产生新错误。软件维护中问题(2)第9页影响软件维护原因包含:人员原因,技术原因和管理原因,程序本身原因,详细以下:系统规模。系统规模越大,维护越困难。系统年纪。系统运行时间越长,在维护中结构屡次修改会造成维护困难。系统结构。不合理程序结构会带来维护困难。使用软件工程方法开发软件,即使不能确保维护没有问题,但能够降低维护工作量,并提升质量。影响软件维护原因第10页软件维护是既破财又费神工作。看得见代价是那些为了维护而投入人力与财力。而看不见维护代价则愈加高昂,我们称之为“机会成本”,即为了得到某种东西所必须放弃东西。把很多程序员和其它资源用于维护工作,必定会耽搁新产品开发甚至会丧失机遇,这种代价是无法估量。软件维护费用第11页软件维护费用不停上升,从上世纪六十年代40%左右到当前超出60%。维护一行源代码代价大约是开发40倍!维护工作量模型:
M=P+K.e(c-d),其中,
M:用于维护工作总工作量;P:生产性工作量(维护时对软件分析、评价、设计、修改和编码所需要工作量);K:经验常数;c:软件复杂程度度量(如未采取结构化设计和缺乏文档所引发复杂性);d:对该软件熟悉程度度量。软件维护费用第12页软件可维护性软件可维护性能够定义为:软件能够被了解、更正、适应和完善以适应新环境难易程度。假如软件是可测试,可了解,可修改,可移植,可靠,有效和可用,则说该软件是可维护。第13页软件维护任务软件维护任务包含:建立维护机构编制维护汇报(软件问题汇报和软件修改汇报)为维护请求要求工作流程维护技术工作(修改设计,复审设计,编码,单元测试、集成测试(含回归测试),有效性测试,最终复审)统计和保留维护活动相关信息对维护进行评价第14页软件维护副作用所谓软件维护副作用(maintenancesideeffects),就是指因为修改而造成错误或其它多出动作发生。修改代码副作用(回归测试可降低编码副作用)修改数据副作用修改文档副作用在软件再次交付使用之前,对整个软件配置进行评审将能大大降低文档副作用。第15页福州大学·软件学院·计算机教研室再生工程王灿辉第16页再生工程假如希望提升已经有软件质量而且提升商业竞争力,却又无法靠维护来实现,只好对已经有软件进行全部或者部分改造,这种活动叫再生工程(Reengineering)。再生过程也叫改造工程,它不是从现有软件中恢复设计信息,而是利用这些信息去改变或重建现存系统,尽最大努力来提升它整体质量。第17页再生工程再生工程与维护共同之处是没有抛弃原有软件。假如把维护比作“修修补补”,那么再生工程就算是“痛改前非”。再生工程并不见得一定比维护代价要高,但再生工程在未来获取利益却要比经过维护得到多。再生工程(Reengineering)三种类型:
重构(Restructure)、
逆向工程(ReverseEngineering)和
前向工程(ForwardEngineering)。第18页再生工程--重构重构普通是指经过修改代码或数据以使软件符合新要求。重构通常并不推翻原有软件体系结构,主要是改造一些模块和数据结构。重构一些好处以下:
(1)使软件质量更高,或使软件顺应新时尚(标准)。
(2)使软件后续(升级)版本生产率更高。
(3)降低后期维护代价。要注意是,在代码重构和数据重构之后,一定要重构对应文档。第19页逆向工程软件逆向工程就是分析一个程序过程,以最大努力去建立比源代码抽象层次更高程序表示式。逆向工程也是一个设计恢复过程。逆向工程起源于硬件世界。硬件厂商总想弄到竞争对手产品设计和制造“奥秘”。不过又得不到现成档案,只好拆卸对手产品并进行分析,企图从中获取有价值东西。软件逆向工程在道理上与硬件相同。但在很多时候,软件逆向工程并不是针对竞争对手,而是针对自己企业多年前产品。期望从老产品中提取系统设计、需求说明等有价值信息。第20页前向工程前向工程也称预防性维护,由Miller提倡。他把这个术语解释成“为了明天需要,把今天方法应用到昨天系统上”。乍看起来,主动去改造一个当前运行得正常软件系统简直就是“惹事生非”。不过软件技术发展如此快速,与其等候一个有价值产品逐步老死,还不如主动去更新,以获取更大收益。其道理就同打预防性针一样。所以,预防性维护是“吃小亏占大廉价”事。第21页福州大学·软件学院·计算机教研室变更管理王灿辉第22页变更管理变更是不可防止。大多数变更是合理。不受控制一系列变更轻而易举就能使一个运行良好软件项目变得混乱。因为在开发软件时会产生很多工作产品,所以必须唯一标识每一个工作产品。变更管理,通常也叫软件配置管理(SCM)是贯通于整个软件过程普适性活动。区分于软件维护仅发生在软件交付给用户以后。第23页变更管理软件配置管理(SCM)活动目标:标识变更;控制变更;确保正确地实现变更;向利害相关人员汇报变更。软件配置管理(SCM)是一组在计算机软件整个生存周期内管理变更活动,能够把SCM看作是应用于整个软件过程软件质量确保活动。软件配置管理(SCM)计划:定义了变更管理项目策略。第24页变更管理软件配置项:是在软件工程过程中创建信息(程序、数据、文档、软件工具)。基线:已经经过正式评审和同意规格说明或产品,它能够作为深入开发基础,而且只有经过正式变更控制规程才能修改它。基线是软件开发中里程碑。SCM过程:配置对象标识;变更控制;版本控制;配置审核;状态汇报;第25页福州大学·软件学院·计算机教研室软件度量王灿辉第26页软件度量假如不进行测量,就没法确定我们是否在改进,只能依据主观评价来做判断。度量时,先搜集基本质量数据和生产率数据,往后分析这些数据,与过去平均值进行比较,经过评定来确定是否已经有质量和生产率提升。度量也能够用来查明问题区域,方便确定适当补救办法,并改进软件过程。第27页软件度量只有度量是直观且易于计算时才会被使用。若需要大量“计数”,且需要复杂计算,则该度量不可能得到广泛采纳。度量能够应用于软件过程中,目标是连续地改进软件过程。度量应用于项目管理能够改进项目工作流程和技术活动。第28页软件度量—基于功效度量利用基于软件信息域可数(直接)测度和软件复杂性评定经验关系来计算功效点。信息域及加权因子:外部输入数、外部输出数、外部查询数、内部逻辑文件数、外部接口文件数。功效点FP=总计*(0.65+0.01+∑Fi)第29页福州大学·软件学院·计算机教研室软件质量(SoftwareQuality)王灿辉第30页SoftwareQuality软件工程目标是提升软件质量与生产率,最终实现软件工业化生产。质量是软件需求方最关心问题,生产率是软件供给方最关心问题。质量与生产率之间有着内在联络,高生产率必须以质量合格为前提。第31页SoftwareQuality假如一个软件产品向其终端用户提供了实质性益处,他们可能愿意忍受偶然可靠性和性能问题。第32页SoftwareQuality从短期效益看,追求高质量会延长软件开发时间而且增大费用,似乎降低了生产率。从长久效益看,高质量将确保软件开发全过程愈加规范流畅,大大降低了软件维护代价,实质上是提升了生产率,同时可取得很好信誉。质量与生产率之间不存在根本对立,好软件工程方法能够同时提升质量与生产率。第33页SoftwareQuality对开发人员而言,假如非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二。这是因为:(1)质量直接表达在软件每段程序中,高质量自然是开发人员技术追求,也是职业道德要求。(2)高质量对全部用户都有价值,而高生产率只对开发方有意义。(3)假如一开始就追求高生产率,轻易使人急功近利,留下隐患。宁可进度慢些,也要确保每个步骤质量,以图久远利益。第34页SoftwareQuality“零缺点”质量管理观念起源于一些国际上著名硬件生产厂商。尽管软件开发与硬件生产有极大差异,但我们仍能够从“零缺点”质量管理中得到启迪。“零缺点”质量管理最少有两个关键内容:一是高目标,二是可执行规范。软件高质量主要是设计出来,不是“管”出来,更不能依赖质量检验。为此程序员要充分了解软件质量原因,只有提升设计水平,才能开发出高质量软件。
第35页SoftwareQuality软件质量原因很多,如正确性,性能与效率、可靠性、容错性、易用性、灵活性、可了解性与简练性、可复用性和可扩充性、可维护性等等。有些原因相互重合,有些则相抵触,真要提升质量可不是一件轻易事!第36页SoftwareQuality如:健壮性是软件一个质量原因,指是在硬件发生故障、输入数据无效或操作错误等意外情况下,软件系统能做出适当响应程度。程序员在编写实现方法代码时,既应该考虑效率,也应该考虑健壮性。通常需要在健壮性与效率之间做出适当折衷。必须认识到,对于任何一个实用软件来说,健壮性都是不可忽略质量指标。第37页SoftwareQuality与明确定义功效和性能需求一致性与明确成文开发标准一致性与全部专业开发软件所期望隐含特征(如:健壮性、可维护性、良好界面格调、可移植性等)一致性第38页软件质量(SoftwareQuality)软件质量是难于定量度量软件属性,不过依然能够提出许多主要软件质量指标,这些指标主要从管理角度对软件质量进行度量。Thefactorsthataffectsoftwarequalitycanbecategorizedintwobroadgroups:Factorsthatcanbedirectlymeasured(e.g.,defectsperfunctionpoint)andFactorsthatcanbemeasuredonlyindirectly(e.g.,usabilityormaintainability)第39页软件质量(SoftwareQuality)软件质量指标往往相互矛盾。比如:采取容错技术==》提供可靠性==》但占用较多存放空间和执行时间==》降低时空效率,增加软件系统维护困难
===》所以应综合平衡第40页软件质量(SoftwareQuality)—(McCall’sSoftwareQualityFactors)PortabilityReusabilityInteroperabilityProductTransitionProductRevisionProductOperationMaintainabilityFlexibilityTestabilityCorrectnessReliabilityUsabilityIntegrityEfficiency第41页软件质量(SoftwareQuality)—(McCall’sSoftwareQualityFactors)第42页软件质量—(Hewlett-Packard’sSoftwareQualityFactors)Hewlett-PackardhasdevelopedasetofsoftwarequalityfactorsthathasbeengiventheacronymFURPS—functionality,usability,reliability,performance,andsupportability.第43页软件质量—(Hewlett-Packard’sSoftwareQualityFactors)Supportabilitycombinestheabilitytoextendtheprogram(extensibility),adaptability,andserviceability(thesethreeattributesrepresentamorecommonterm--maintainability),aswellastestability,compatibility,configurability(theabilitytoorganizeandcontrolelementsofthesoftwareconfiguration),theeasewithwhichasystemcanbeinstalled,andtheeasewithwhichproblemscanbelocalized.第44页软件质量(SoftwareQuality)为了在软件开发过程中确保软件质量,主要采取下述办法:复审(最少在每个开发阶段结束前一次)复查(在每个开发阶段开始前)管理复审测试软件质量在产品或系统中是事先设计好,而不是事后强加。第45页软件质量(SoftwareQuality)质量检验并不是要等到项目结束时才执行唯一一次,应该在每个实践步骤都要执行。对应于进度表,在每个里程碑抵达时执行质量检验比较合理。做好检验工作并不是件轻易事。自古以来“上有政策,下有对策”。虚假质量检验还不如不检验。第46页软件优化软件优化是指优化软件各个质量原因,如提升运行速度,提升对内存资源利用率,使用户界面愈加友好,使三维图形真实感更强等等。想做好优化工作,首先要让开发人员都有正确认识:优化工作不是可有可无事情,而是必须要做事情。当优化工作成为一个责任时,程序员才会不停改进软件中算法,数据结构和程序组织,从而提升软件质量。
第47页软件优化优化工作复杂之处是很多目标存在千丝万缕关系。当不能够使全部目标都得到优化时,就需要“折衷”策略。软件中折衷策略是指经过协调各个质量原因,实现整体质量最优。就象党支部副书记饰演和事佬角色:“…为了使整个组织含有最好战斗力,我们要重用几个人,照料一些人,在万不得已情况下委屈一批人”。第48页软件优化软件折衷主要标准是不能使某一方损失关键职能,更不能够象“舍鱼而取熊掌”那样抛弃一方。人都有惰性,假如允许滥用折衷话,那么一当碰到困难,人们就会用拆东墙补西墙方式去折衷,不再下苦功去做有意义优化。所以我们有必要为折衷制订严正立场:在确保其它原因不变差前提下,使一些原因变得更加好。第49页福州大学·软件学院·计算机教研室软件质量确保(SoftwareQualityAssurance)王灿辉第50页Thesoftwareengineeringapproachworkstowardasinglegoal:toproducehigh-qualitysoftware.Somesoftwaredevelopercontinuetobelievethatsoftwarequalityissomethingyoubegintoworryaboutaftercodehasbeengenerated.Nothingcouldbefurtherfromthetruth!Softwarequalityassurance(SQA)isanumbrellaactivitythatisappliedthroughoutthesoftwareprocess.软件质量确保(SoftwareQualityAssurance)第51页SQAencompasses(1)aqualitymanagementapproach,(2)effectivesoftwareengineeringtechnology(methodsandtools),(3)formaltechnicalreviewsthatareappliedthroughoutthesoftwareprocess,(4)amulti-tieredtestingstrategy,(5)controlofsoftwaredocumentationandthechangesmadetoit,(6)aproceduretoassurecompliancewithsoftwaredevelopmentstandard(whenapplicable),and(7)measurementandreportingmechanisms.软件质量确保(SoftwareQualityAssurance)第52页质量确保策略发展大致能够分为三个阶段:以检测为重点以过程管理为重点(如:ISO9001体系认证)以新产品开发为重点可见,软件质量确保应该从产品计划和设计开始,直到投入使用和售后服务软件生存周期每一个阶段中每一个步骤,每一个相关人,包含软件开发人员、项目经理、销售人员和用户都来严把质量关,只有这么才能确保软件高质量,这就是当代软件质量确保基本策略。质量确保策略第53页SQA是一项有计划、系统、规范性活动,主要包含:技术方法应用;正式技术评审(FTR)实施;软件测试;标准执行;修改控制;度量;统计和统计保留。软件质量确保活动第54页软件能力成熟度模型CMM(CapabilityMaturityModel)是由美国卡内基-梅隆大学软件工程研究所(CMU/SEI)推出评定软件能力与成熟度一套标准。并提供了软件过程评定和软件能力评价两种评定方法和软件成熟度提问单。4年之后,SEI将软件过程成熟度框架进化为软件能力成熟度模型(CapabilityMaturityModelForSoftware,简称SW-CMM)。软件能力成熟度模型(CMM)第55页该标准基于众多软件教授实践经验,侧重于软件开发过程管理及工程能力提升与评定,是国际上流行软件生产过程标准和软件企业成熟度等级认证标准,它更代表了一个管理哲学在软件工业中应用。当前,CMM认证已经成为世界公认软件产品进入国际市场通行证。软件能力成熟度模型(CMM)第56页一个软件过程是指人们开发和维护软件及其相关产品所采取一系列活动。其中软件相关产品包含项目计划、设计文档、源代码、测试用例和用户手册等。软件产品质量主要取决于产品开发和维护软件过程质量。一个有效、可视软件过程能够将人力资源、物理设备和实施方法结合成一个有机整体,并为软件工程师和高级管理者提供实际项目标状态和性能,从而能够监督和控制软件过程进行。CMM基本概念:软件过程第57页软件过程能力是软件过程本身含有按预定计划生产产品固有能力。一个组织软件过程能力为组织提供了预测软件项目开发数据基础。软件过程性能是软件过程执行实际结果。一个项目标软件过程性能决定于内部子过程执行状态,只有每个子过程性能得到改进,对应成本、进度、功效和质量等性能目标才能得到控制。因为特定项目标属性和环境限制,项目标实际性能并不能充分反应组织软件过程能力,但成熟软件过程可弱化和预见不可控制过程原因(如客户需求改变或技术变革等)。CMM基本概念软件过程能力与性能第58页软件过程成熟度是指一个软件过程被明确定义、管理、度量和控制有效程度。成熟意味着软件过程能力连续改进过程,成熟度代表软件过程能力改进潜力。成熟度等级用来描述某一成熟度等级上组织特征,每一等级都为下一等级奠定基础,过程潜力只有在一定基础之上才能够被充分发挥。成熟级别改进包含管理者和软件从业者基本工作方式改变,组织组员依据建立软件过程标准执行并监控软件过程,一旦来自组织和管理上障碍被去除后,相关技术和过程改进进程能快速推进。CMM基本概念:软件过程成熟度第59页CMM将软件过程成熟度分为5个级别(MaturityLevels),如图所表示,5个等级分别是:1、初始级(Initial)2、可重复级(Repeatable)3、已定义级(Defined)4、已管理级(Managed)5、优化级(Optimizing)CMM基本概念软件过程成熟度等级第60页初始级(Initial):企业普通不具备稳定软件开发与维护环境。项目成功是否在很大程度上取决于是否有出色项目经理和经验丰富开发团体。此时,项目经常超出预算和不能按期完成,组织软件过程能力不可预测。CMM基本概念软件过程成熟度等级第61页可重复级(Repeatable):在可重复级,开发组织建立了管理软件项目标方针以及为落实执行这些方针办法。组织基于在已开发类似项目标经验,对新项目进行策划和管理。组织软件过程能力可描述为有纪律、而且项目过程处于项目管理系统有效控制之下。CMM基本概念软件过程成熟度等级第62页已定义级(Defined):在已定义级,开发组织形成了管理软件开发和维护活动本组织标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025原单位倒闭如何解除劳动合同
- 羽毛球教学与实战知到课后答案智慧树章节测试答案2025年春阜阳师范大学
- 毕业设计与研究成果展示
- 2025建筑工程与城市基础设施项目施工总承栽合同
- 2025年碳纤维传动离合器采购合同
- 高一英语学案:知识巧学Womenofachievement
- 2024年西安长安聂河中医医院招聘真题
- 2024年四川师范大学附属高新菁蓉小学招聘储备教师笔试真题
- 2025劳动合同终止协议书样本
- 衬衫购买合同范本模板
- 2024年襄阳市樊城区城市更新投资发展有限公司招聘笔试真题
- 2025年03月“蓉漂人才荟”都江堰市事业单位赴外引进高层次人才(4人)笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年 宁夏电投永利能源发展有限公司招聘笔试参考题库含答案解析
- 开宠物店创新创业计划
- 2022-2027年中国公共厕所行业市场调研及未来发展趋势预测报告
- 2025年浙江省建筑安全员-A证考试题库及答案
- 2024年电子商务物流挑战试题及答案
- 2025年高考英语二轮复习专题05 阅读七选五(练习)(解析版)
- 育婴师综合素质试题及答案展示
- ESG领域的伦理与合规性问题试题及答案
- 2025年湖北省部分高中高三语文3月一模联考试卷附答案解析
评论
0/150
提交评论