原论文题目:Identifying Software Components from Object-Oriented APIs
Based on Dynamic Analysis

  • 1 前言
  • 2 建议的方法和框架
    • 2.1 方法总览
  • 3 执行使用场景来识别调用树
  • 4 利用图来表示API
  • 5 通过提供的接口来标识组件
  • 6 评估结果
  • 7 相关工作
  • 8 小结以及将来工作

1 前言

近十几年的研究都表明通过API(Application Programming Interfaces )来进行软件程序的编写,能够大大提高编程效率。在面向对象的API中,最基本的单元就是类,类封装了相关功能,对外提供了一个公用的使用接口。JDK、.NETframework等等都是非常复杂而又庞大的API,这些API里面包含了大量的类和方法,去理解并使用这些大量的类会消耗很大的精力和时间。

API为软件提供了相应的功能接口,API的重用(reuse)是通过在一些重用场景下对API重新组合使用实现的。然而,不同的软件会有不同的重用场景,这取决于软件对API功能的需求。大量不同的重用场景,导致会有大量的api重新组合以满足这些场景。为了更好的理解这些重用场景,有学者提出了方法论,把API之间频繁共同使用的场景抽象出来,抽象这些场景为一个高级视图。在分析软件是如何使用(重用)API时,频繁的共同使用模式会被识别出来。这些抽象出来的共用模式,能够在软件工程师执行某些任务的时候给予支持,这些支持包括,API的重组,API的文档,API的理解以及API的策略执行等。

重用场景指的是,在构建软件的过程中,某些情境下,只需要调用jdk中某些类或方法就可实现这些功能,不过需要将这些类或方法重组。

在面向对象的API中标识组件主要是通过将API中提供的功能抽象成一个高级视图来实现的,标示组件能够提升API文档化。除了能够将API文档化,标识组件还能够帮助实现将面向对象的API迁移到面向组件的API。这样的一个重构的过程支持满足基于组件的存储仓库,而且还允许通过使用选定的组件开发大型软件应用程序并基于灵活的体系结构将它们集成在一起,从而获得基于组件的软件工程的好处。
和面向对象的类相比,软件组件更容易被理解,重用性也更高。这种认知是基于二者的粒度不同,面向对象是细粒度,而软件组件是粗粒度。此外,组件通过其提供的和必需的接口清楚地定义它们的依赖关系,以一种显式的方式,以便于和面向对象的方法进行对比。以上是提出组件识别方法的动机,这些方法是基于对面向对象软件源代码的分析来确定组件的。

现有的组件识别方法旨在从面向对象的软件应用程序源代码中识别组件。它们只依赖于OO依赖项(例如,方法调用、共享类型等)来识别类之间的依赖项。但是,在软件OO API的上下文中,还应该考虑API类之间的共同使用依赖关系,以确定可以重用的类/方法,以实现特定的场景。这需要好好分析API以及客户端程序的源代码。
为OO设计程序的方法论不能直接应用于OO的api.以往的方法是基于对OO api的源代码及其客户端应用程序的静态分析。由于我们使用OO API处理实际的客户端,动态分析允许更好地捕获API使用的实例。使用静态分析的方法通常受到处理动态特性(如多态性和类装入)的困难的限制。

文中在这里开始提出了自己的方法论,以往的方法都是静态的组件识别,现在是动态分析的组件识别技术。能够处理某些静态处理不了的特性。

在本文中,我们提出了一种在OO api中识别可重用组件的方法。我们的方法是基于客户端应用程序和目标OO API之间交互的动态分析。因此,我们为在客户端应用程序中实现的不同使用场景生成执行跟踪。这些执行跟踪通过其方法调用实现API类之间的依赖关系。我们假设组件是通过API类来标识的,这些API类经常被客户端应用程序重用。因此,我们认为在执行跟踪形式中经常出现的方法组提供了组件的接口,这些方法的所有者API类构成了该候选组件的结构。为了评估我们的方法,我们将它应用于三个Java api,它们的客户机来自DaCapo基准。结果表明,该方法的精度为98%。

本文的其余部分如下所示。第2节介绍了我们的方法背后的框架。第3部分描述了识别与api的客户端应用程序的使用场景相关的执行跟踪的过程。在第4节中,我们使用一个提议的质量函数,根据执行场景中出现的关系识别api方法的图表示。第5节展示了如何根据基于图形的聚类算法识别组成组件的类。评价结果见第6节。有关的工作在第7节中讨论。结论和今后的工作将在第8部分提出。

2 建议的方法和框架

在这一节中,我们将概述、总结原则并提出建议方法的过程。

2.1 方法总览

我们提出了一种确定可重用组件的方法,这种方法是通过动态分析客户端程序和API之间的交互来实现的。

3 执行使用场景来识别调用树

4 利用图来表示API

5 通过提供的接口来标识组件

6 评估结果

7 相关工作

8 小结以及将来工作

从面向对象的api中识别软件组件(论文翻译)相关推荐

  1. 深度篇——人脸识别(一)  ArcFace 论文 翻译

    返回主目录 返回 人脸识别 目录 下一章:深度篇--人脸识别(二) 人脸识别代码 insight_face_pro 项目讲解 目录内容: 深度篇--人脸识别(一) ArcFace 论文 翻译 深度篇- ...

  2. 在微服务中,Kubernetes软件组件有哪些?

    在微服务.云计算和无服务架构时代,理解Kubernetes并且知道如何使用它是十分有用的.然而,官方的Kubernetes文档对于刚开始接触云计算的用户来说有些难以理解,以下内容是关于Kubernet ...

  3. 深度学习OCR | 文字识别网络 CRNN 论文翻译

    前言 现在全行业转上云,很多东西需要变成数字化,离不开 OCR 的帮助,在 OCR 领域,文字需要经过定位再到识别,最终才能转成数字化,下面是在 OCR 很经典的 识别网络 -- CRNN 的论文. ...

  4. Java调用百度OCR文字识别API实现图片文字识别软件

    java_baidu_ocr Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高 ...

  5. java ocr api_Java调用百度OCR文字识别API实现图片文字识别软件

    Java调用百度OCR文字识别API实现图片文字识别软件 原创isinple 发布于2019-01-06 13:35:59 阅读数 1296 收藏 展开 java_baidu_ocr Java调用百度 ...

  6. ATF官方文档翻译(十八):中断管理框架( Interrupt Management Framework)-中断管理框架中的假设软件组件

    一.中断管理框架中的假设 该框架作出以下假设以简化其实现. 1.尽管该框架支持2种类型的安全中断(EL3和secure-EL1中断),但只有Arm GICv3这样的中断控制器架构支持0组中断形式的EL ...

  7. 大型CAx(CAD/CAE/CAM)工业软件开发中的关键组件

    通过对FreeCAD.SALOME等多款代码的分析研究,发现这些软件在架构设计.模块实现等方面,存在许多相似(同)的技术思想.因此,有必要对这些共性.主流的技术予以总结分析. Structuring ...

  8. 最好的验证码识别软件api接口

    最好的验证码识别软件api接口 验证码识别平台最新功能介绍:  1.识别程序以dll的方式提供使用,通过简单的函数调用即可识别复杂的验证码图片.  2.自动识别: 智能处理各种背景.边框.干扰等:  ...

  9. 从windows计算机中卸载office,如何彻底卸载电脑中的Office组件|Office办公软件卸载不干净怎么办...

    ‍ 有不少用户遇到原本在电脑中的软件卸载不干净,而无法重新安装软件的问题.比如说有位用户在安装Office办公软件时就是因为没有彻底卸载原先电脑中的软件才导致无法安装.接下来系统城小编就和大家分享一下 ...

  10. C语言 提取软件文字,使用OCR文字识别软件如何将图中文字识别提取出来

    有时候我们上网看见了一些文字图片,上面的内容自己很喜欢,想要将文字保存下来,但是大家都知道图片上面的文字是不可以直接进行复制粘贴的,那这时候就需要识别提取图中文字了,具体怎样去操作呢?下面小编将在文字 ...

最新文章

  1. springboot约定优于配置的体现
  2. 如何在WES 7的开发工具ICE里面添加OEM客户信息
  3. 汇编语言第二章知识梳理及思考
  4. PHP array_count_values() 函数用于统计数组中所有值出现的次数。
  5. java数据返回到界面,java后台获取网页ajax数据和返回数据简单源码
  6. 7-7 评分规则 (5 分)
  7. 电商峰值系统架构设计--转载
  8. php cms 新闻采集,自动新闻采集软件快速入门图文详细教程
  9. HTML命名空间的使用
  10. astah新建一个项目_Astah SysML
  11. 计算机管理员被停用,命令提示符已被系统管理员停用,详细教您命令提示符已被系统管理员停用怎么办...
  12. centos5安装nagios
  13. sublime text3 去除python代码的白色框框方法
  14. 安利一款功能强大,简单好用的录屏软件!
  15. docker cheat sheet
  16. 冰河开始对Dubbo下手了!
  17. 2016 年终工作总结
  18. [STM32CubeIDE]创建HAL库项目
  19. 大模型的三大法宝:Finetune, Prompt Engineering, Reward
  20. 摩根士丹利选出10家公司参加其多元文化创新实验室的首个全球班

热门文章

  1. pytorch---模型加载与保存(3)保存和加载 Checkpoint 用于推理/继续训练
  2. 李宏毅机器学习——无监督学习(一)
  3. 你的烂代码终于有了解决方案
  4. 《变革中的思索》连载六:IT=IP+IQ
  5. 博文视点Open Party ——漏洞分析
  6. 5.3 GRU、LSTM 情感分类
  7. 01函数极限的概念及性质
  8. 有哪些让人相见恨晚的Python库(一)
  9. Tensorflow:print输出控制
  10. Ros学习笔记(五)创建Ros服务