- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
以一个移植项目——FTP Plus为例探讨程序Java化过程中软件工程策略的有效性.doc
以一个移植项目——FTP Plus为例探讨程序Java化过程中软件工程策略的有效性
--【Abstract 】Java has proved its suitbility in Inter application and embedded system.Porting the existing soft C++to Java has receivedmore concerns.This paper describes the softethodologies in porting process.
【Key ethodology
摘要:由于Java 语言具有的诸多特性以及Inter 和嵌入式系统的普及,对已经投入应用的使用C++语言编写的软件进行Java移植,在软件活动中的比例越来越大以及这一活动过程的特殊性,针对其过程进行的管理控制与开发方法和传统软件活动有所不同,因此讨论了针对移植的策略,并以一个移植项目——FTP Plus为例,证明这些策略的有效性。
关键词:软件工程;移植;Java;软件方法
由于Java具有的解释性、可移植性、平台无关性和安全性等特性,使得Java在网络应用、嵌入式系统等对跨平台和安全性有很高要求的领域有了越来越广泛的应用。这些领域中的很多系统需要进行Java化。
与传统软件过程相比,移植过程的各个阶段有自己的特点。编码阶段,往往不是从零开始构造代码,而是对源工程代码进行改造而成。这一过程具有很大机械性,也比一般软件过程具有更大的约束性,以保证目标代码的一致性、正确性和目标工程的质量。在测试阶段,选择测试数据方面,如果源工程的相关文档中保留了足够的测试数据,这些数据可以直接用于测试。进行源工程和目标工程的相同执行,观察其动作一致性也是有效测试手段。因此,研究针对移植过程的有效的软件工程策略是很有必要的。
1移植方案
移植方案大体可分为3类:功能移植,系统结构移植和实现的完全移植。
(1)功能移植:抛弃所有逻辑和语言结构,重新使用目标语言实现源工程的功能。功能移植产生的目标工程的特性独立于源工程,有利于产生高质量的代码和易于维护的工程。但功能移植更像是一个全新的开发过程而不是一个移植过程。源工程的复用性很差,原有的设计、建模以及编写出的代码完全抛弃不顾,所以开发周期很长。它的管理和传统软件过程是类似的,各种生存周期模型和面向对象的软件方法都可以使用。
(2)系统结构移植:在类、包级别上保留源工程的大致接口和逻辑结构,对它们的具体实现进行重写。对于一个经历了整个生命周期的源工程,系统逻辑结构是基本满足要求的,针对系统结构的移植能够在保留源工程的基本结构的基础上,使目标工程达到较高的质量。但必须对结构的功能及其之间的联系有深刻的理解,值得注意的是,如果程序员的理解产生了偏差,结果可能是灾难性且难以修复的。
(3)实现的完全移植:在保留源工程逻辑结构的基础上尽量保留其实现的语言结构。源工程的代码复用度高,移植工作机械简单。程序员只需要对整体结构作一般了解,其注意力就可以完全集中于自己的工作。开发进度可以精确度量,周期短、效率高。但是,使用实现的完全移植生成的目标工程的质量不会优于源工程。如果缺乏有效的管理,就难以保证工程的质量。基于以上理由,本文主要讨论实现的完全移植策略。没有特殊说明,下文中的移植活动均指实现的完全移植。
2预处理
如果仅仅移植源工程一部分功能,使用代码界定保留需要移植的结构,可以有效地减少需要移植的代码数量。这个过程是简单的,只需针对源工程的所有保留功能进行结构走通并记录调用结构,凡是没有记录下的均可界定在移植范围之外。
定义1step,代码中去除--A)C(B),当且仅当A的 层次高于B。构造出的层次图也局部不同(见图1、 图2)。相应的管理效率也是不同的,将在下文讨论。
以类为单位的编码加单元测试的方法,要求在对某个类进行编码时,必须保证它所依赖的类编码和测试的完成。在确立移植单位的优先程度后,重要的语言结构优先实现的动态任务分配方式可以避免程序员的相互等待,提高并行性。从直观来说,类在本层中的重要程度依赖于使用它的类的个数定义。被依赖的次数越多,该类的完成对工程中其他类实现的贡献就越大。但是这种直观的方法的效果是不理想的。
考虑以如图3所示的同一个工程中的两个局部。
定义4一个程序结构的准备度定义为它所依赖程序结构中已经完成的比例。
按照上面的讨论,位于同一层次的类A 要先于类B完成,类1、 类2 、类3、 类4 的准备度增加了。但是类1、 类2、类3 位于较高的层次,它们的实现还必须依赖于类4 、类6、类7 所在层的某个或某些类的实现。完成类A后,直接的效果是类4可以开始进行(是否能够立刻开始依赖于是否还有较低层次的依赖类没有完成)。相比之下类B的完成虽然不能像类A那 样对4个
文档评论(0)