李翔,怀进鹏,曾晋,高鹏. 一种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. We have detected that MySQL products under the Commercial license are installed. In order to proceed with this GPL installation these Commercial

    下载了MySQL 5.6.15,在安装时,出现了下面的提示信息: 按提示信息的要求单击“是”,结果安装就无法进行下去. 从提示信息上看,意思是指电脑中原来安装有商业版的许可,现在要转换成为GPL许可. ...

  2. SharePoint 2013 REST 以及 OData 基础

    这篇文章会介绍: 简单的介绍REST,OData OData实现细节 OData在SharePoint 2013中的实现 为什么REST很重要 过去几年基于REST的webservice在IT企业越来 ...

  3. python获取当前日期前后N天或N月的日期

    # -*- coding: utf-8 -*- '''获取当前日期前后N天或N月的日期''' from time import strftime, localtime from datetime im ...

  4. 使用grunt合并压缩js、css文件

    需要了解的知识: 1.nodejs的安装与命令行使用 2.nodejs安装应用 3.grunt的初步了解 本文已假定读者已经熟悉以上知识. 好,我们继续: 任务1:将src目录下的所有zepto及插件 ...

  5. paip.指针 引用 c++ java的使用总结.

    paip.指针 引用  c++ java的使用总结. ///////////////一般一个变量包括下面的信息 a.地址(指针)  b.命名(引用,别名)   c.变量内容.. 指针是一个变量的地址, ...

  6. paip.java OutOfMemoryError 解决方法o33

    paip.java OutOfMemoryError 解决方法o33 java.lang.OutOfMemoryError: Requested # java.lang.OutOfMemoryErro ...

  7. js程序设计02——变量、作用域问题

    首先,ECMAScript中的数据类型分为基本类型.引用类型,基本类型的访问操作是按值的.引用类型的值是保存在内存中的对象,操作对象时,实际上操作的是对象的引用,而非对象自身.“javascript高 ...

  8. Leetcode 283 Move Zeroes 字符串

    class Solution { public: void moveZeroes(vector<int>& nums) { ; ; i< nums.size(); ++i){ ...

  9. Leetcode 166. Fraction to Recurring Decimal 弗洛伊德判环

    分数转小数,要求输出循环小数 如2 3 输出0.(6) 弗洛伊德判环的原理是在一个圈里,如果一个人的速度是另一个人的两倍,那个人就能追上另一个人.代码中one就是速度1的人,而two就是速度为2的人. ...

  10. iOS 9 failed for URL: "XXX://@" - error: "This app is not allowed to query for scheme XXX" iOS 从APP里启动另一APP

    iOS 从C APP里启动 D APP 首先在D APP里设置 URL Schemes 在info.plist 文件里添加URL Schemes URL Types -->item0 --> ...