zoukankan      html  css  js  c++  java
  • [论文笔记] 一种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。
    本文主要针对面向服务的遗留系统切分应用场景,类型是动态、离线、对象级别。

  • 相关阅读:
    k8s二进制安装
    jenkins
    Deploy Apollo on Kubernetes
    Apollo配置中心搭建常见报错
    Apollo配置中心搭建过程
    使用CephRBD为Kubernetes提供StorageClass
    Ceph基础命令总结
    Ceph分布式存储系统搭建
    zabbix入门之配置邮件告警
    zabbix入门之定义触发器
  • 原文地址:https://www.cnblogs.com/yuquanlaobo/p/3436977.html
Copyright © 2011-2022 走看看