基于Ruby产品线并行探讨.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Ruby产品线并行探讨

基于Ruby产品线并行探讨   【摘要】本文在Ruby环境下,利用其动态语言特性通过对数据模型的映射,进程并发控制环节中的信号同步通信问题,并发数据保障机制的研究。对产品线核心资产生产环节并行性进行了分析与探讨。   【关键词】软件产品线;Ruby;并行机制;信号同步;数据保障   1.引言   软件产品线(Software Product Line)是一种基于预先规划的软件复用技术,其重要的目的之一是为了将一系列有着特定应用领域并且功能相类似的软件产品进行分析合集,提炼出软件产品集合的共同点并将该类共同点资产化、规范化,提高该类软件产品设计和开发的软件复用度,缩短开发周期,提高软件质量[1]。   而KobrA方法通过构件化的软件基本理论以及UML方法给予了工程实践上的理论指导。如图1所示通过基于KobrA的用例模型描述核心资产产品线构件与最终产品的交互,从初始构件K开始,依靠:①实例化过程,来去除系统的通用性;②分解过程,分解系统构件成更低粒度模块;③具体化过程,生成系统不同功能部分的运行表示,从而降低其抽象性。而对KobrA方法产生的生成树模型表明在产品线核心资产生产中并行是可行的[2]。   2.基于Ruby的并行方法   2.1 敏捷并行程序设计方法   在传统并行算法的设计上有以下几个过程:经历业务建模到串行算法的实现,然后由串行算法实现到任务及数据的分解,最终实现并行算法。而敏捷方法的出现,是对传统软件工程领域中的工程方法的一种颠覆,其作为一种革命同样适用于并行程序的设计领域,通过敏捷方法,我们可对传统并行算法环境进行精简,对其中的“实现串行算法”及“任务和数据”两个环节的缩减成了一种可行的策略。Ruby作为一种动态语言,对于敏捷开发有着较好的支持,在现今的软件工程领域备受瞩目。从Unix演化发展而来的Ruby,在应对多处理器、多线程下的程序设计等方面有着较好的优势,通过Ruby环境对产品线进行并行设计是有着一定潜力的。而采用敏捷设计理念是建立在构思、探索和不断调整适应的基础之上,因此它侧重于开发者如何协同工作、采用的协作机制以及具体的实施。敏捷开发过程的目标不是“重复”的过程,而是“可靠”的过程[3]。   2.2 Ruby的并行性   程序开发者在Ruby中可以按自身的算法需求设计相关的并行线程模型,通过脚本方式来进行描述,而数据的发送和收集以及线程的控制都会以此种直观的方式表现出来。依靠Ruby的语言环境程序开发者不用过多考虑并行环境的配置,而把问题着重于并行算法单元和相关单元的分发及回收的逻辑性上。建立一种机制让建模模型直接映射算法,而采用此种敏捷方法的开发者可灵活运用基本数据结构来控制整体并行算法的逻辑。   多进程交互是并行程序框架在多处理机的本质结构。Ruby继承了UNIX多进程创建的特征,通过相关的OS库和UNIX/Linux系统交互,能够使用系统调用功能(如fork)来创建子进程,Ruby在表现层这一级上并非直接支持并行程序的接口,而是通过对UNIX的系统调用从而来实现相应功能的基本库。它于不同的并行设计的编程标准是全公开透明的,图2说明了Ruby与并行机制之间的关系。   和传统标准的MPI不同的是,Ruby通过并行解析库来实现其并行化,这就要求有一种相对统一的语法和陈述标准,而不用考虑在底层由于标准的不同带来的差异操作。   2.3 并行数据的模型映射   并行程序在传统实现时需要通过并行编译的这样一个过程,使得在模型和算法的最终实现上是分离开的[4]。采用敏捷方法让程序语言着重于对模型的直接表达,而Ruby所拥有的强大业务表达能力为此种设计理念提供了契机。通常数据和任务图模型的并行性在算法建模中是容易发掘的,但那些传统权重级语言在模型表达时容易陷入各种类型检测及语法规则的繁琐事务中,而那些BNF范式和算法模型在语义和形式上均有不同构的特征,导致了开发者的转换难度。   而如图3所示的二维矩阵进行划分,KobrA下的产品线经过不断的细分,其最终的数据为一颗二叉树,图中Ruby按矩阵方式从而把各个分块数据发到六个进程并进行相应操作,这样的方式可以看出Ruby进程间的并发控制是可显式继承,让开发者不用把精力投入到模型转换上,而着重考虑于算法设计。   由静态模型映射所得到并行程序将数据任务分模块组织,最终算法的执行结果是由各个模块的独立性来决定的。不同的软件产品线对应着不同的程序应用,自然相关程序结构对应于模型结构,在线性的模型中能直接和程序结构进行映射,如遇到高维度映射,则需要采用降维处理机制处理为二位模型,从而在程序中以矩阵方式表示。   依靠递归调用,我们将一个算法整体设为δ,分解元为Φ,将整个算法分为ω=δ/Φ,假设有Ψ使得ΦΨ=ω,分解维度为Ψ,Ψ为实数,而在后续分解下,将Ψ代替ω,

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档