位置:51电子网 » 技术资料 » 嵌入式系统

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

发布时间:2008/5/27 0:00:00 访问次数:407

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

  第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。

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

  第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。

相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!