[论文笔记] 一种Java遗留系统服务化切分和封装方法 (计算机学报, 2009)
李翔,怀进鹏,曾晋,高鹏. 一种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)的更多相关文章
- Java学习笔记十八:Java面向对象的三大特性之封装
Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态 二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...
- java应用系统运行速度慢的解决方法
场景:我们在部署了TOMCAT应用,刚刚开始启动的一个段时间内.访问系统的速度比较快.但是过了一段时间,应用系统就慢慢的变慢起来了.服务的访问加载时间慢慢变长. 问题解决思路: 1,查看部署应用系统的 ...
- [ 原创 ]学习笔记-三种向ListView中填充简单文本的方法
Android 中ListView是很重要的一块内容 掌握ListView的基本用法 对学习安卓起着举足轻重的作用 今天就介绍一下三种向ListView 填充简单文本的方法 填充其他数据类型的用法之后 ...
- 几种查看CentOS系统版本号和位数的方法
查看系统版本号: cat /etc/redhat-release cat /proc/version uname -a cat /etc/issue 查看64位还是32位: getconf LONG_ ...
- 论文笔记:Image Smoothing via L0 Gradient Minimization
今天要分享的这篇论文是我个人最喜欢的论文之一,它的思想简单.巧妙,而且效果还相当不错.这篇论文借助数学上的 \(L_0\) 范数工具对图像进行平滑,同时保留重要的边缘特征,可以实现类似水彩画的效果(见 ...
- Docker学习笔记三:Docker部署Java web系统
Docker部署Java Web系统 1.在root目录下创建一个路径test/app mkdir test && cd test&& mkdir app && ...
- [论文笔记] 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 ...
- 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
- Java日志系统框架的设计与实现
推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...
随机推荐
- 改进ConcurrentDictionary并行使用的性能
上一篇文章“ConcurrentDictionary 对决 Dictionary+Locking”中,我们知道了 .NET 4.0 中提供了线程安全的 ConcurrentDictionary< ...
- 腾讯云CentOS 6.6安装 Nginx
一.下载Nginx 从Nginx的官网(http://nginx.org/en/download.html)下载Nginx的最新版本,这里我下载的是nginx-1.9.12. 下载完成后,得到一个如下 ...
- 阿里云服务器PPTP VPN安装记录
# sudo apt-get install pptpd http://blog.kunyu.li/digitalocean-ubuntu-vps-vpn.html iptables管理 ...
- [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性
前言 下面就开始总结C#4.0的一些变化了, 也是这本书中最后的一点内容了, 这一部分终于要更新完了. 同时感觉再来读第二遍也有不一样的收获. 今天很嗨的是武汉下雪了,明天周六,一切都是这么美好.哈哈 ...
- paip.提升效率--调试--日志系统日志参数含义---python
paip.提升效率--调试--日志系统日志参数含义---python #同时向控制台和文件输出日志 #日志参数含义 import logging log_format = '%(filename)s ...
- Maven学习总结(七)——eclipse中使用Maven创建Web项目
一.创建Web项目 1.1 选择建立Maven Project 选择File -> New ->Project,如下图所示:
- INSERT INTO .. ON DUPLICATE KEY更新多行记录
现在问题来了,如果INSERT多行记录, ON DUPLICATE KEY UPDATE后面字段的值怎么指定?要知道一条INSERT语句中只能有一个ON DUPLICATE KEY UPDATE,到底 ...
- tomcat文件服务配置
<Host name="localhost" appBase="" unpackWARs="true" auto ...
- 实用的ajaxfileupload插件
一.ajaxFileUpload是一个异步上传文件的jQuery插件. 传一个不知道什么版本的上来,以后不用到处找了. 语法:$.ajaxFileUpload([options]) options参数 ...
- 常见的特殊字符和HTML之间的对应关系~
No. 文字表記 10進表記 16進表記 文字 Comment 001 " " " """ quotation mark = APL ...