好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

软件维护与再生工程.docx

4页
  • 卖家[上传人]:ni****g
  • 文档编号:430799644
  • 上传时间:2023-05-25
  • 文档格式:DOCX
  • 文档大小:14.26KB
  • / 4 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 维护与重策划编程大师曾说:“哪怕程序只有三行长,总有一天你也不得不对它维护 很多软件产品不是一次性的买卖比如在电信、金融等领域,有些软件系统要用十几 年,对软件进行维护是必不可少的8.1 节将介绍“软件维护的常识”,对维护活动进行分类, 并解释为什么维护比较困难软件公司的经理们没有哪一个喜欢被维护的费用吓一跳,但软件维护的代价通常是高昂 的7.2 节将说明影响维护代价的一些主要技术因素与非技术因素如果希望提高已有软件的质量并且提高商业竞争力,却又无法靠维护来实现,只好对已 有软件进行全部或者部分的改造,这种活动叫重策划(Reengineering)7.3节将解释什么是 重策划,并论述重策划的三种类型:重构(Restructure)、逆向工程(Reverse Engineering) 和前向工程(Forward Engineering))8.1 软件维护的常识对软件而言,“维护”是个不太直观的术语,因为软件产品在重复使用时不会被磨损, 并不需要进行像对车辆或电器那样的维护软件维护是人们对既丰富多彩又会令人心酸的活 动的统称其中丰富多彩的活动是指那些反映客观世界变化、能使软件系统更加完善的修改 和扩充工作。

      令人心酸的活动是指那些永无修止、并且改了旧错却引起新错让人欲哭无泪的 工作一些学者将软件维护划分为主要的三类:纠错性维护(Corrective maintenance)>适应性 维护(Adaptive maintenance)和完善性维护(Perfective maintenance):(1) 纠错性维护由于前期的测试不可能揭露软件系统中所有替在的错误,用户在使用软 件时仍将会遇到错误,诊断和改正这些错误的过程称为纠错性维护2) 适应性维护由于新的硬件设备不断推出,操作系统和编译系统也不断地升级,为了 使软件能适应新的环境而引起的程序修改和扩充活动称为适应性维护3) 完善性维护在软件的正常使用过程中,用户还会不断提出新的需求为了满足用户 新的需求而增加软件功能的活动称为完善性维护Lientz 和 Swanson 调查发现(1980 年),完善性维护约占 65%,适应性维护约占 18%,纠错性维护约占 17%[Sommerville 1992] 上述调查已是 20 年前的事了,我们不必太关心具体 的比例,心里有数即可以下一些因素将导致维护工作变得困难:(1) 软件人员经常流动,当需要对某些程序进行维护时,可能已找不到原来的开发人员。

      只好让新手去“攻读”那些程序2) 人们一般难以读懂他人的程序在勉强接受这类任务时,心里不免嘀咕“:我又不是他 肚子里的虫子,怎么知道他如何编程3)当没有文档或者文档很差时,你简直不知道如何下手4)很多程序在设计时没有考虑到将来要改动,程序之间相互交织,触一而牵百即使有 很好的文档,你也不敢轻举妄动,否则你有可能陷进错误堆里5)如果软件发行了多个版本,要追踪软件的演化非常困难6)维护将会产生不良的副作用,不论是修改代码、数据或文档,都有可能产生新的错误7)维护工作毫无吸引力高水平的程序员自然不愿主动去做,而公司也舍不得让高水平 的程序员去做带着低沉情绪的低水平的程序员只会把维护工作搞得一塌糊涂8.2 维护的代价及其主要因素软件维护是既破财又费神的工作看得见的代价是那些为了维护而投入的人力与财力 而看不见的维护代价则更加高昂,我们称之为“机会成本”,即为了得到某种东西所必须放 弃的东西[Mankiw 1999]把很多程序员和其它资源用于维护工作,必然会耽误新产品的开发 甚至会丧失机遇,这种代价是无法估量的影响维护代价的非技术因素主要有:(1) 应用域的复杂性如果应用域问题已被很好地理解,需求分析工作比较完善,那么维 护代价就较低。

      反之维护代价就较高2) 开发人员的稳定性如果某些程序的开发者还在,让他们对自己的程序进行维护,那 么代价就较低如果原来的开发者已经不在,只好让新手来维护陌生的程序,那么代价就较 高3) 软件的生命期越是早期的程序越难维护,你很难想象十年前的程序是多么的落后(设 计思想与开发工具都落后)一般地,软件的生命期越长,维护代价就越高生命期越短, 维护代价就越低4) 商业操作模式变化对软件的影响比如财务软件,对财务制度的变化很敏感财务制 度一变动,财务软件就必须修改一般地,商业操作模式变化越频繁,相应软件的维护代价 就越高影响维护代价的技术因素主要有:(1) 软件对运行环境的依赖性由于硬件以及操作系统更新很快,使得对运行环境依赖性 很强的应用软件也要不停地更新,维护代价就高2) 编程语言虽然低级语言比高级语言具有更好的运行速度,但是低级语言比高级语言 难以理解用高级语言编写的程序比用低级语言编写的程序的维护代价要低得多(并且生产 率高得多)一般地,商业应用软件大多采用高级语言比如,开发一套Windows环境下的 信息管理系统,用户大多采用Visual Basic、Delphi或Power Builder来编程,用Visual C++ 的就少些,没有人会采用汇编语言。

      3) 编程风格良好的编程风格意味着良好的可理解性,可以降低维护的代价4) 测试与改错工作如果测试与改错工作做得好,后期的维护代价就能降低反之维护 代价就升高5) 文档的质量清晰、正确和完备的文档能降低维护的代价低质量的文档将增加维护 的代价(错误百出的文档还不如没有文档)8.3 重策划重策划主要出于如下愿望:(1)在商业上要提高产品的竞争力;(2)在技术上要提高产 品的质量但这种愿望无法靠软件的维护来实现,因为:(1)软件的可维护性可能极差,实 在不值得去做;(2)即使软件的可维护性比较好,但也只是治表不治本重策划干脆对已有 软件进行全部或部分的改造,赋予软件新的活力在对待一个不良之徒时,可以进行思想教育并给予他关心和帮助,这种方式类似于“软 件维护”;也可以把他关进监狱,送去劳改,这种方式相当于软件的“重策划”;如果此人坏 透顶了,就毙掉算了重策划与维护的共同之处是没有抛弃原有的软件如果把维护比作“修修补补”,那么 重策划就算是“痛改前非”重策划并不见得一定比维护的代价要高,但重策划在将来获取 的利益却要比通过维护得到的多重策划主要有三种类型:重构、逆向工程和前向工程8.3.1 重构 重构一般是指通过修改代码或数据以使软件符合新的要求。

      重构通常并不推翻原有软件 的体系结构,主要是改造一些模块和数据结构重构的一些好处如下:(1)使软件的质量更高,或使软件顺应新的潮流(标准)2)使软件的后续(升级)版本的生产率更高3)降低后期的维护代价 要注意的是,在代码重构和数据重构之后,一定要重构相应的文档8.3.2 逆向工程 逆向工程来源于硬件世界硬件厂商总想弄到竞争对手产品的设计和制造“奥秘”但 是又得不到现成的档案,只好拆卸对手的产品并进行分析,企图从中获取有价值的东西我 的很多同学从事集成电路设计工作,他们经常解剖国外的集成电路,甚至不作分析就原封不 动地复制该电路的版图,然后投入生产,并美其名曰“反向设计”(Reverse Design)软件的逆向工程在道理上与硬件的相似但在很多时候,软件的逆向工程并不是针对竞 争对手的,而是针对自己公司多年前的产品期望从老产品中提取系统设计、需求说明等有 价值的信息8.3.3 前向工程前向工程也称预防性维护,由Miller倡导他把这个术语解释成“为了明天的需要,把今天的方法应用到昨天的系统上” [Pressman 1999] 乍看起来,主动去改造一个目前运行得正常的软件系统简直就是“惹事生非”。

      但是软件技术发展如此迅速,与其等待一个有价值的产品逐渐老死,还不如主动去更新,以获取更 大的收益其道理就同打预防性针一样所以,预防性维护是“吃小亏占大便宜”的事8.4 小 结大学科研机构里的软件维护工作恐怕是做得最差的了几乎每一批新的研究生都会把毕 业生留下的软件臭骂一通,然后全部推到重做到他毕业该走时,就轮到别人骂他的工作了 如此轮回,最终没有什么成果留下如果希望软件系统能活下,必须要对它进行维护如果希望软件系统有效益,则必须设 法降低维护的代价。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.