李翔,怀进鹏,曾晋,高鹏. 一种Java遗留系统服务化切分和封装方法. 计算机学报, 32(9), 2009, p1084-1815 (gs:5)

1. 本文研究从Java遗留系统中切分并封装出Web服务的(半)自动化方法。

主要涉及到的模型和技术如下。

  • 静态类结构模型,类关系图(CRG):有向图,定义类之间的关系和结构。类级别的切分过于粗糙,难以应用于大多数遗留系统。
  • 动态对象调用模型,对象调用图(Object Invocation Graph, OIG):有向有权图,表示对象之间调用关系和频繁程度
  • 对象依赖频度图(Object Dependent Frequency Graph, ODFG):由CRG和OIG合并形成,表示遗留系统运行示例对象的依赖关系和程度。(S5.3)
  • 模块依赖频度图(Module Depnedent Frequency Graph, MDFG):与ODFG类似,其中每个模块是多个对象的集合。(S5.3)
  • 执行码重写技术:可以根据原系统调用过程自动生成服务及其调用代理(客户端),本文选用了ObjectWeb ASM。(S5.1)

2. (S5.3) 基于ODFG和MDFG,本文将遗留系统的切分问题建模成“有向图的切分问题”(所求切面必须是单向的,即图切分后的两个切片之间的所有边都指向同一切片)。
   使用图分级聚类方法获得图的割树(算法1);使用贪婪策略的启发式算法加速割树的计算过程(算法2)。

3. (S5.2) 中定义了遗留系统模型的服务化切分指标(目标函数),分解为模块度MQ、接口评价IQ和性能代价PC:

PQ = a * MQ + b * IQ + (1 - a - b) * PC

其中

  • PQ:表示整体的服务化切分质量(Partition Quality);
  • MQ:对模块高内聚、低耦合的量化评价;
  • IQ:接口中操作数目和参数数目越小约好,定义为接口中参数数目的倒数;
  • PC:评价改为服务调用带来的性能损失。

4. 本文提到的相关工作:
(1)对遗留系统的服务化切分:传统软件中的构建提取技术方向可以借鉴
特别是基于软件元素间的全局相对性对系统进行划分的方法

(2)面向对象软件的自动分解和转换技术方向
面向对象软件切分可以分为动态和静态、在线和离线、类级别和对象级别。
针对Java语言的切分工具:Doorastha, Pangaea, Addistant, J-Orchestra。
本文主要针对面向服务的遗留系统切分应用场景,类型是动态、离线、对象级别。

[论文笔记] 一种Java遗留系统服务化切分和封装方法 (计算机学报, 2009)的更多相关文章

  1. Java学习笔记十八:Java面向对象的三大特性之封装

    Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态   二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...

  2. java应用系统运行速度慢的解决方法

    场景:我们在部署了TOMCAT应用,刚刚开始启动的一个段时间内.访问系统的速度比较快.但是过了一段时间,应用系统就慢慢的变慢起来了.服务的访问加载时间慢慢变长. 问题解决思路: 1,查看部署应用系统的 ...

  3. [ 原创 ]学习笔记-三种向ListView中填充简单文本的方法

    Android 中ListView是很重要的一块内容 掌握ListView的基本用法 对学习安卓起着举足轻重的作用 今天就介绍一下三种向ListView 填充简单文本的方法 填充其他数据类型的用法之后 ...

  4. 几种查看CentOS系统版本号和位数的方法

    查看系统版本号: cat /etc/redhat-release cat /proc/version uname -a cat /etc/issue 查看64位还是32位: getconf LONG_ ...

  5. 论文笔记:Image Smoothing via L0 Gradient Minimization

    今天要分享的这篇论文是我个人最喜欢的论文之一,它的思想简单.巧妙,而且效果还相当不错.这篇论文借助数学上的 \(L_0\) 范数工具对图像进行平滑,同时保留重要的边缘特征,可以实现类似水彩画的效果(见 ...

  6. Docker学习笔记三:Docker部署Java web系统

    Docker部署Java Web系统 1.在root目录下创建一个路径test/app mkdir test && cd test&& mkdir app && ...

  7. [论文笔记] Legacy Application Migration to the Cloud: Practicability and Methodology (SERVICES, 2012)

    Quang Hieu Vu, Rasool Asal: Legacy Application Migration to the Cloud: Practicability and Methodolog ...

  8. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  9. Java日志系统框架的设计与实现

    推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...

随机推荐

  1. Chrome RenderText分析(2)

      接Chrome RenderText分析(1) 继续分析以下步骤   一.TextRun结构 struct TextRun { TextRun(); ~TextRun(); ui::Range r ...

  2. jenkins插件 查看job修改历史

    文章来自:http://www.ciandcd.com文中的代码来自可以从github下载: https://github.com/ciandcd 插件jobConfigHistory(https:/ ...

  3. 使用window2003安装邮件服务器最新实际操作记录

    关于使用windows 2003自带的服务组件来安装简单的pop3 协议邮件服务器网上教程很多,可以搜索出来,就是安装IIS选中smtp和添加window是组件的应用程序服务器,这点这里不多说. 安装 ...

  4. js使用转义符技巧输出HTML

    有时候我们需要使用js输出html代码,会涉及一些标签.变量. 对于很长的html代码,为了让js具有较好的可读性,需要在js里对html代码进行一定的拆分.拼接. 简单明了版 通常我们这样做 var ...

  5. 02_Hello World!

    hello word ? 学习任何语言,我们都喜欢在屏幕上直接输出一点什么,作为最简单基本的案例.很多人习惯输出 hello world ,世界你好.感觉很有情况的样子——然而很多人都只停留在这个阶段 ...

  6. Atitit.词法分析的原理 理论

    Atitit.词法分析的原理 理论 1. 分词 .词法分析lexical analysis 1 1.1. 分词主要流程 1 1.2. 分词的属性如下表token 1 1.3. 词法分析器主要包括:构造 ...

  7. paip.java 开发中web server的选择jboss resin tomcat比较..

    paip.java 开发中web server的选择jboss resin tomcat比较.. 作者Attilax  艾龙, EMAIL:1466519819@qq.com 来源:attilax的专 ...

  8. paip.函数式编程方法概述以及总结

    paip.函数式编程方法概述以及总结 1     函数式编程:函数式风格..很多命令式语言里支持函数式编程风格 1.1      起源 (图灵机,Lisp机器, 神经网络计算机) 1.2      函 ...

  9. webpack学习之入门实例

    webpack:前端打包神器,目前活跃度甚至超过了gulp.grunt等,使用webpack打包,简单快速,下面记录下webpack环境搭建以及基本使用: 1.首先新建一个空白目录,用于项目根目录,比 ...

  10. 使用Alcatraz来管理Xcode插件

    Alcatraz 是一个帮你管理 Xcode 插件.模版以及颜色配置的工具.它可以直接集成到 Xcode 的图形界面中,让你感觉就像在使用 Xcode 自带的功能一样. 安装和删除 使用如下的命令行来 ...