`
touchinsert
  • 浏览: 1316395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

组件粒度划分与组件的集成

阅读更多

一种用于现有源代码组件集成方法

1.介绍

由于组件的概念没有模式化,以及现有技术种类的多样化,组件的形式也是多样的。大多数项目在开发过程中所考虑的组件划分方式和方法都不相同,这样导致现有项目中的组件很难重用到其它项目中。因此重组现有组件,把现有组件源代码重新分割或组合为新的组件的需求也越来越多。本文在源代码级别上根据源代码之间的调用关系,自定义了组件的划分粒度和组件的集成方法。但在此声明本文的组件集成方法不具有唯一性和最优性。

2.概念

组件:提供可重用的功能的类库或函数库;

组件粒度:组件的源代码文件越少,粒度越大。用户可以根据不同的需求定义组件粒度的大小;

调用关系:文件之间有函数/方法/属性/变量调用或继承关系则称文件之间有关系;

Layer:一个layer表示一个组件,Layer后面的数字表示组件的粒度,数字越大粒度越小,既组件的源代码文件越多,复杂度越大;

组件集成:根据现有源代码之间的调用关系,和本文定义法则和可定制约束条件来自动组合组件。

法则:没有调用关系的源代码不能组合为一个组件;

可选择以下2个约束条件中的一个:

1 组件内源文件不能调用组件外的源文件;

2 组件不能和多个文件组合为二个以上不同组件;

3.方法

下面是根据源文件的调用关系重组不同粒度的组件

* 表示一个源文件, .java, .cpp, .c, .s

* 表示左边的源文件内的某函数/方法调用右边源文件

* 表示叶子节点,既不调用其它文件(不包括OS类库/函数库)

Layer1:所有的叶子节点都可以成为一个独立的组件。该类型的组件称为Layer1型组件。是源代码中粒度最大的组件。

Layer2:只调用叶子节点的源代码文件将和叶子节点组成一个组件;

Layer3:源代码文件可以和Layer1Layer2组件组合为一个组件;

Layer4:源代码文件可以和Layer1Layer2Layer3组件组合为一个组件;

以此类推。

4.实现

1 采用深度优先搜索算法遍历源代码文件,生成调用关系图:Call Graph

2 采用默认约束条件1生成Layer图;

3 用户可采用约束条件2修改某个Layer图;

4 选中所有的Layer图,对源代码文件封装,既将源代码文件按照layer图的划分拷贝以layer为单位的目录里,生成makefilebuild.xml文件,编译各个layer,并生成外部接口文档,描述组件提供的类或函数。

本文著作权所有(C):赵磊

分享到:
评论

相关推荐

    (璩介业)掌上链家组件化探索历程.pdf.zip

    例如,组件粒度过细可能导致过度拆分,增加管理难度;粒度过粗则可能导致组件间耦合度过高。因此,合理划分组件边界是组件化过程中的一项重要任务。同时,为了提高用户体验,组件化还需要考虑如何在不影响整体运行的...

    android 粒度、瀑布案例开发

    在Android开发过程中,掌握合适的粒度划分和有效的开发流程至关重要,它们可以帮助我们构建出高质量、易于维护的应用程序。通过深入研究提供的样本代码,开发者可以进一步提升自己的技能,并在实际项目中灵活运用。

    面向服务体系架构和业务组件的思考.docx

    - **Web服务**:Web服务提供了一种标准的方式来定义和实现服务接口,支持多种传输协议(如HTTP、SOAP等),易于与其他系统集成。 - **OSGi**:OSGi(Open Service Gateway Initiative)是一种模块化容器,允许应用...

    如何使用JSF和Ajax制作强大的网络组件

    1. **组件模型**:JSF采用了组件驱动的架构,允许开发者将页面划分为多个可重用的组件。这些组件可以拥有自己的状态管理和事件处理机制。 2. **表单处理**:JSF内置了对表单数据处理的支持,包括验证、转换和提交...

    软件工程与软件系统可复用性评估.pptx

    - **按粒度**:细粒度(如函数)、中粒度(如类)、粗粒度(如组件)。 - **按领域**:通用组件和专用组件。 **可复用性评估指标** - **性能指标**:评估组件的执行效率。 - **兼容性指标**:检查组件与其他系统或...

    采用SOA 构建和集成行业应用系统

    3. **服务集成与测试**:集成已开发的服务,并进行全面的测试以确保服务的稳定性和可靠性。 4. **部署与监控**:将服务部署到生产环境中,并持续监控服务的表现和性能。 5. **持续改进与优化**:根据实际使用...

    WEB容器托管OSGi容器(轻量级集成方式)

    3. **服务组件(Bundle)**:在OSGi中,应用被划分为一个个可独立管理的单元,称为Bundle。每个Bundle包含代码、资源和元数据,描述其依赖和其他Bundle的关系。 4. **服务注册与发现**:OSGi框架提供了服务注册表,...

    业务系统的微服务化改造方案.docx

    设计时应考虑服务的粒度划分,避免过细或过粗,确保每个服务都能独立完成特定功能。 - 业务领域抽象建模:通过领域驱动设计(DDD)方法,将业务逻辑转化为领域模型,每个服务围绕一个或多个业务实体进行构建。 - ...

    ExGeo框架代码构成

    ExGeo框架是一个专注于网络空间...通过深入理解ExGeo框架的这些关键组件,开发者可以有效地利用它来进行大规模的网络空间测绘,获取IP地址的细粒度位置信息,从而支持网络安全研究、网络规划、流量分析等多种应用场景。

    集成虚拟化管理器IVM实战配置操作手册

    IVM(集成虚拟化管理器)是IBM PowerVM虚拟化技术家族的一部分,专门设计用于管理没有硬件管理控制台(HMC)的特定IBM Power Systems服务器和BladeCenter刀片服务器。IVM提供了一个基于Web的用户界面和命令行工具,...

    软件架构要设计到什么程度

    3. **名不副实的分层架构**:仅仅将分层作为一种简单的职责划分方式,而忽略了层与层之间的交互机制。 #### 三、应对策略 针对上述问题,可以采取以下策略来优化架构设计: 1. **确保全面性**:在架构设计阶段,...

    Java-Dependence-Manager(JDM)

    所以,JDM的不同之处就在于它更人性化地把管理粒度的重点从包转移到了组件—— 一个可以自由定义大小的概念上,使得您可以将概念划分和设计影响“解耦合”。 3)、它很人性化,您可以自定义各种规则不符合到什么...

    登陆界面与权限管理.zip_权限_登陆界面与权限管理

    2. 权限粒度:权限可以细粒度划分,如读、写、执行等,根据业务需求设定不同的操作权限。 3. 动态授权:根据用户角色或特定条件动态调整权限,例如临时提升权限处理紧急任务,完成后恢复原状。 4. 权限隔离:确保...

    可配置片上系统设计流程

    这些方法涵盖了系统规范、硬件与软件的划分与映射、结构级设计等多个阶段。此外,还包括系统级仿真和验证等关键步骤。 - **系统规范**:定义系统的功能需求和技术指标。 - **硬件/软件划分和映射**:根据性能需求和...

    se1602-1-portal.zip

    本篇文章将详细解析一个名为“se1602-1-portal.zip”的项目,它是一个基于SpringBoot框架构建的门户系统,集成了应用管理、模块划分、角色分配、用户认证与授权等多个核心功能。 一、SpringBoot框架基础 ...

    ERWIN-API使用指南

    ### ERWIN-API使用指南:深入理解SCAPI与API组件 #### 一、SCAPI概览 **ERWIN SCAPI**,全称为Script Client API,是ERWIN Data Modeler (ERWIN DM)的一个核心组成部分,专门用于扩展软件功能,支持定制化插件开发...

Global site tag (gtag.js) - Google Analytics