首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>Java基础>正文

JAVA企业应用:软件工程之Java实现策略

http://www.oklinux.cn  2008-01-20  来源: ccidnet baocl  会员收藏  游客收藏  【 】 

由于Java语言具有的诸多特性以及Internet和嵌入式系统的普及,对已经投入应用的使用C 语言编写的软件进行Java移植,在软件活动中的比例越来越大以及这一活动过程的非凡性,针对其过程进行的治理控制与开发方法和传统软件活动有所不同,因此讨论了针对移植的策略,并以一个移植项目---LED航显系统移植为例,证实这些策略的有效性?

要害词: 软件工程;移植;Java;软件方法

第1章 绪论

由于Java具有的解释性?可移植性?平台无关性和安全性等特性,使得Java在网络应用?嵌入式系统等对跨平台和安全性有很高要求的领域有了越来越广泛的应用?对于企事业单位来讲,对原有系统进行JAVA化移植,一方面可以避免系统重新开发造成的高成本?长周期?系统融合等不利因素,另一方面可以实现系统的平滑过渡,以较小的成本实现系统的升级?因此,采用软件工程策略来指导整个系统移植的过程是非常有意义的?

第2章 移植方案

移植方案大体可分为3类:功能移植,系统结构移植和实现的完全移植?
(1)功能移植:抛弃所有逻辑和语言结构,重新使用目标语言实现源工程的功能?功能移植产生的目标工程的特性独立于源工程,有利于产生高质量的代码和易于维护的工程?但功能移植更像是一个全新的开发过程而不是一个移植过程?它的治理和传统软件过程是类似的,各种生存周期模型和面向对象的软件方法都可以使用?
(2)系统结构移植:在类?包级别上保留源工程的大致接口和逻辑结构,对它们的具体实现进行重写?对于一个经历了整个生命周期的源工程,系统逻辑结构是基本满足要求的,针对系统结构的移植能够在保留源工程的基本结构的基础上,使目标工程达到较高的质量?但必须对结构的功能及其之间的联系有深刻的理解,值得注重的是,假如程序员的理解产生了偏差,结果可能是灾难性且难以修复的?
(3)实现的完全移植:在保留源工程逻辑结构的基础上尽量保留其实现的语言结构?源工程的代码复用度高,移植工作机械简单?程序员只需要对整体结构作一般了解,其注重力就可以完全集中于自己的工作?开发进度可以精确度量,周期短?效率高?但是,使用实现的完全移植生成的目标工程的质量不会优于源工程?假如缺乏有效的治理,就难以保证工程的质量?基于以上理由,本文主要讨论实现的完全移植策略?没有非凡说明,下文中的移植活动均指实现的完全移植?

第3章 预处理

假如仅仅移植源工程一部分功能,使用代码界定保留需要移植的结构,可以有效地减少需要移植的代码数量?这个过程是简单的,只需针对源工程的所有保留功能进行结构走通并记录调用结构,凡是没有记录下的均可界定在移植范围之外?
定义1:step-代码中去除注释?空行后的有效代码行数,它是系统规模的简单度量?
LED航显系统移植项目采用这种界定方式,工程代码量从原来的13362steps,缩减到界定后的11069steps?有效地减少了工作量?
应当注重的是,假如有源工程的开发人员被指派为移植的程序员,这一过程的时间可以大大缩短,甚至略过这一过程?LED航显系统移植项目中,我们使用了1人/月来进行这一阶段得到了足以保证正确移植的有关知识?

第4章 任务分配和治理

定义2:假如某个语言结构A(例如类)的实现依靠于其它语言结构B的实现,则称A在工程中的层次高于B。这种依靠既可能是被继续,方法被调用,也可能作为成员变量或参数的数据耦合等。
在安排工作时,以类作为划分工作的单位,按照层次由高到低的顺序完成,则称之为自顶向下的软件构造方式;反之,则称之为自底向上的软件构造方式。采用自底向上的构造方式只要能保证在某个类代码编写结束之前,它所依靠的类已经完全实现,测试的方式就是简单直观的。所以在LED航显系统移植项目中采用了自底向上的构造方式。
在对移植过程中任务划分之前必须准确度量各语言结构之间的层次关系,在层次关系的基础上进行任务的分配和治理。这一过程往往伴随着对源工程的理解一起进行,并使用层次图的方式进行描述。
定义3:函数C(X)表示语言结构X的层次。
构造层次图的方式有两种:
(1)自顶向下的划分
1)假如所有的语言结构均不依靠于某个语言结构A,则记A的层次为0;
2)假如有且仅有i个语言结构X1,X2,X3,…Xi依靠于某语言结构A,则
C(A)=MAX(C(X1),C(X2),C(X3)…C(Xi)) 1;
(2)自底向上的划分
1)假如某个语言结构A不依靠于任何语言结构,则记A的层次是0;
2)假如某个语言结构依靠于i个语言结构X1,X2,X3,…,Xi
则C(A)=MAX(C(X1),C(X2),C(X3),…,C(Xi)) 1;
从形式上来看这两种方式的定义是相似的,但它们的实质是完全不同的。从其层次的标的来看,自顶向下的方式是C(A)<C(B),当且仅当A的层次高于B;自底向上的方法则是完全相反,C(A)>C(B),当且仅当A的层次高于B。构造出的层次图也局部不同。
定义4:一个程序结构的预备度定义为它所依靠程序结构中已经完成的比例。
按照上面的讨论,位于同一层次的类A要先于类B完成,类1、类2、类3、类4的预备度增加了。但是类1、类2、类3位于较高的层次,它们的实现还必须依靠于类4、类6、类7所在层的某个或某些类的实现。完成类A后,直接的效果是类4可以开始进行(是否能够马上开始依靠于是否还有较低层次的依靠类没有完成)。相比之下类B的完成虽然不能像类A那样对4个类的预备度有所贡献,但直接的效果是类6、类7都可能立即开始进行。对于整个工程来说类B的重要程度应当优于类A。因此,一个程序结构在某层的重要程度首先应当由直接高层的依靠程度决定。
假如采用自顶向下的层次图的生成方式,即标号越小表示层次层越高,一个语言结构的优先函数定义为:
F(A)=Σn=1i=1(kci)/N(i)×kn-1
其中:n是语言结构A所在的层次,R(i)是第i层依靠于语言结构A的语言结构个数,N(i)是第i层语言结构的总数。优先函数越大则该语言结构在本层中的重要程度越高,越应当优先完成。而其中的常数K是任意指定的,它反映了相邻层次的依靠之间的重要程度,K越大,较低层次的依靠关系拥有越大的权。合理选择K是必要的,太大的K使得所求得的优先函数值过于集中,而太小的K不利于依靠关系层次的区多类的层次包含的类个数的50%为K。
如采用自底向上的层次构造方法,只是其层次的编号不同,其定义是类似的。
在LED航显系统移植项目中,同时有n个程序员要求任务时,我们根据层次和优先函数挑选出n个任务,根据他们的熟练程度,熟练的程序员被派发较大的任务。基本上没有出现程序员的相互等待。应当指出,无论怎样精巧的安排任务都不能完全杜绝等待的可能。

共2页: 上一页 1 [2] 下一页

上一篇:Java高级:J2ME平台中几个重要概念的说明   下一篇:Hibernate编写通用数据库操作代码演示


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Hibernate编写通用数据库操作代码演示
·Java高级:J2ME平台中几个重要概念的说明
·【Java语言深入】java 中线程概念描述
·Java高级:怎样读取和处理XML的配置文件
·spring 2.0自定义xml 标记 (二 如何实现)
·EJB 3.0 的新规范概览及其未来发展方向
·全面解析Java中的类和对象的初始化过程
·一个非常有趣的使用spring框架AOP例子
·spring 2.0自定义xml 标记 (一 相关类)
·JAVA高级--Socket编程中的一个秘密类
·JAVA进阶--对象的序列化和反序列化实践
·JAVA基础:一个struts hibernate入门实例
·通过JDBC连接oracle数据库的十大技巧
·【开发框架】struts标签使用举例-logic
·JAVA进阶--使用Java进行Web开发的随想
·J2SE综合介绍:泛型类型的子类及通配符使用
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java入门:状态对象--数据库的替代者
·Java语言怎样调用外部应用程序
·Java语言深入--关于Java语言的内存泄漏
·JSP/Servlet/JSF:Servlet/JSP配置详解
·进阶-怎样使用AJAX进行WEB应用程序开发
·基础:J2ME程序开发之新手入门九大要点
·Java入门--Java语言接口与继承的本质
·JAVA进阶--如何提升JSP应用程序的效率
·对Java中四种XML解析技术之不完全测试
·编写高级 JScript应用代码
·JSP/Servlet/JSF--对标签库的深入研究
·Java入门--关于字符串分割的两种方法
  阅读排行
·使用AJAX技术实现网页无闪自动局部刷新
·快速教您Apache Tomcat SSL的配置
·Java语言深入--java调用C/C 的过程
·用JSP JavaScript打造二级级联下拉菜单
·JAVA进阶--线程运行栈信息的获取讲解
·使用WEBWORK实现文件上传方法实例详解
·J2SE综合--JAVA实现把汉字转化成拼音
·一个非常有趣的使用spring框架AOP例子
·关于java中相对路径,绝对路径问题总结
·高级:lucene全文检索应用示例及代码简
·详细讲解Struts构架中action的跳转大全
·在Weblogic上配置JMS服务的方法
·Hibernate配置文件中的映射元素详解
·对Java中四种XML解析技术之不完全测试
·在JSP环境中配置使用fckeditor详细讲解
网摘收藏: