[论文解读] What Should You Know Before Developing a Service Identification Approach
本文通过解决核心概念与方法论挑战,为在遗留面向对象软件中开发服务识别方法提供了基础性框架。它提出了五类服务类型的分类法——流程服务、业务服务、辅助服务、IT服务和能力服务,并引入三种算法策略(预识别、识别中、后识别)以指导从源代码逆向工程服务,重点在于将服务类型与实现工件及架构知识相匹配。
In this paper, we answer a set of research questions that are required to develop service identification approach based on the analysis of object- oriented software. Such research questions are: (1) what is a service, (2) how are services different from software components, (3) what are types of services, (4) what are existing service identification approaches that consider service types into account, and (5) how to identify services based on the object-oriented source code with respect to their types. Our methodology is based on performing a literature review to identify the answers of these research questions. Also, we propose a taxonomy of service types.
研究动机与目标
- 澄清基本概念,例如服务的构成及其与软件组件的区别。
- 解决现有服务识别方法中缺乏标准化服务类型分类法的问题。
- 识别并分类可从面向对象源代码中逆向工程出的服务类型。
- 提出一种将服务类型意识整合到服务识别过程中的结构化方法论。
- 通过原则化、类型感知的识别技术,支持遗留系统向面向服务架构(SOA)的迁移。
提出的方法
- 开展全面的文献综述,分析现有服务定义及服务分类法。
- 基于功能与非功能角色,综合提出一种五层服务类型分类法:流程服务、业务服务、辅助服务、IT服务和能力服务。
- 提出三种服务识别的算法策略:预识别(基于类型的划分)、识别中(特定类型的分析)和后识别(先识别后分类)。
- 将面向服务的概念(如接口、粗粒度操作)映射到面向对象的构造(如公共方法、类),以支持源代码分析。
- 整合架构知识(如部署范围、业务上下文),以区分仅从代码本身无法完全推断出的服务类型。
- 定义基于服务类型的识别标准,尤其针对需要外部上下文(如业务或能力服务)的服务类型。
实验结果
研究问题
- RQ1服务是什么?在文献中,其定义如何与接口、粒度和状态相关联?
- RQ2在粒度、部署模型和架构角色方面,服务与软件组件有何不同?
- RQ3服务有哪些不同的类型?如何系统性地对其进行分类?
- RQ4哪些现有的服务识别方法在识别过程中考虑了服务类型?
- RQ5如何从面向对象源代码中识别服务,同时尊重其语义类型(如业务、辅助、IT服务)?
主要发现
- 服务与组件之间存在明确区别,主要体现在粒度(服务为粗粒度)和部署模型(松耦合、平台独立性)。
- 所提出的五类服务类型分类法——流程服务、业务服务、辅助服务、IT服务和能力服务——为遗留系统中的服务识别提供了结构化分类。
- 预识别、识别中和后识别算法为在识别流程中整合服务类型意识提供了不同的策略。
- 虽然类中的公共方法可映射到服务接口,但识别某些服务类型(如业务或能力服务)仍需超出源代码本身的额外架构或业务上下文。
- 现有服务识别方法大多忽视服务类型的区分,本研究通过原则化、基于分类法的方法论填补了这一空白。
- 在识别过程中整合服务类型的语义信息,可显著提升提取服务的准确性与相关性,从而支持SOA迁移。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。