逆向工程在计算机应用中的发展.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
逆向工程在计算机应用中的发展 0. 基于逆向工程的对象分析方法 随着计算机科学技术的快速发展,计算机应用的领域不断拓展。人们希望计算机能够解决不同领域的问题,并对计算机恶意软件的功能、质量、开发成本和时间提出更高的要求。计算机软件的规模和复杂程度日益俱增,因而软件技术不断受到新的挑战。20世纪70年代,软件危机的出现促使了软件工程学的诞生和发展。20世纪80年代初,面向对象技术成为研究的热点,许多面向对象的编程语言问世。20世纪80年代末以来面向对象方法开始向系统分析、设计阶段延伸,出现了一大批面向对象的分析与设计方法。1997年统一建模语言(UML)被对象管理组织采纳作为一种标准建模语言。建模语言的标准化为软件开发人员及其用户带来诸多便利,软件工程领域取得了前所未有的进展。在传统软件开发的正向工程方法技术日趋完善的同时,软件领域的逆向工程作为软件工程的一个分支开始受到广泛的关注。软件领域的逆向工程迄今为止没有标准的定义,一般将逆向工程定义为包括两个步骤的过程:第一步分析目标系统,标识系统的对象及其关系:第二步创建不同形式或更高形式的抽象层次的系统表示。逆向工程适用于软件生命期的各个阶段和各种对象层次,包括需求、设计及实现。逆向工程可用于低级的抽象层次,例如把程序二进制代码转换为源代码,但主要用于程序源代码转换为更高抽象层次的表示,如控制流图、数据流图、类关系图、顺序图等。逆向工程是一个设计恢复过程,逆向工程工具从现存的程序中抽取数据、体系结构和过程的设计信息。本文着重讲述逆向工程在软件开发和维护阶段的重要作用。 1. 软件开发需要反向设计 1. 开发过程中的需求变化 在人们头脑中,逆向工程只是在原有软件中进行,事实上在正在开发的新软件过程中也可以采逆向工程,这一般是在大型软件系统的开发过程中,因为开发人员没有理由强求用户完全固定需求,需求经常发生变化是客观现实,从软件工程角度来看这全完是正常的,一方面用户不大可能一次性将需求描述清楚,这样就有可能补充,另一方面就是用户已提高的需求,随用户对问题的理解和认识的加深,用户也可能对原有需求提出更改。而且尽管软件系统的开发周期比过去明显缩短,但在开发过程中后期需求发生变化并不罕见,这常常使得开发人员十分被动。目前大多数的系统开发环境的支持理念仍然以正向工程(Forward Engineering)为主,即按照分析建模、设计建模、文档自动生成、用静态设计模型自动产生或修改代码框架、方法体或函数体的编码、模块测试、系统测试的顺序进行开发。在系统开发初期或者开发时间比较充裕的情况下,以正向工程模式进行建模和程序设计是合理和可行的,但由于需求变化和开发周期的限制,实际上在开发过程中出现了种种问题,开发过程中后期需求变化无法保证模型与程序的一致性。开发过程的中后期发生了需求变化,虽然可以要求开发人员对系统静态模型进行相应的修改,重新生成源程序代码框架和一部分文档,但由于时间的限制和系统动态模型不能对源程序产生实质性作用等因素,则经常是不修改动态模型而直接修改源程序,使得相关动态模型的文档很可能与源程序不一致,正向建立的动态模型与对应的源程序之间不能保证必然的一致性,故自动生成的文档可能没有正确反映目标系统的动态行为和结构特征然而,对于分布、并发为主要特征的系统,其主要设计内涵恰恰是由动态模型来描述。因此,在软件开发的过程中当需求发生变化时,逆向工程的作用显得尤为重要。通过逆向工程从源程序逆向地产生相应的动态模型,如符合UML标准的序列图、状态图或协同图等,并自动生成文档。这样有效地解决目前需求变化而引发的模型与程序的不一致、文档与程序的不一致等问题,对现有的开发方法、环境与工具的功能也是很好而且非常必要的扩充。 2. 遗产系统与设计 计算机软件在各个领域经过了几十年应用的积累,自九十年代以来,应用软件系统的规模越来越大,功能越来越复杂,使得更多的大型软件的开发必须考虑到原先己运行了多年的系统,包括系统的需求、设计决策、业务规则、历史数据等等,称之为遗产系统(LS)。LS是一种巨大的、长期的投资,因此如何充分利用这些有用的资产对新系统的开发显得尤为重要。由于历史原因,过去许多软件并没有按照工程规范去开发,许多软件都存在文档资料不全,甚至没有,这样要重用遗产系统,就不得不通过原代码来理解其抽象设计。这样一来源代码在许多情况下就是利用Ls系统的唯一依赖,利用LS系统就不得不先充分理解LS系统,这样就可以利用源代码来抽象出软件的逻辑设计,这正是逆向工程的一大优势。 3. 逆向工程有利于重在分析、改造自由软件 随着Internet在全球范围内的迅速普及,网上提供的免费资料越来越多,从网上下载的开放源码的自由软件也成为当前很多软件开发中可重用代码一大来源;但是这些自由软件的源码根本没有统一的设计,所得到

文档评论(0)

lczslgy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档