结构软件

2024-08-14

结构软件(通用12篇)

结构软件 篇1

摘要:信息化时代使计算机得到了大范围推广和运用,而在计算机科学技术的发展影响下,软件体系结构也呈现出日益复杂的趋势,在软件设计中,软件体系结构对软件有着指导与控制的作用,组件在软件技术中有着非常重要的影响。本文主要对软件设计中软件体系结构与组装进行研究,讨论软件体系结构与组件的原理与意义,通过其所具备的特点进行分析,探讨软件体系结构与组装软件工程在软件设计与开发中的作用与发展前景。

关键词:软件体系结构,组件,软件工程

近年来,信息化的急速发展使计算机与网络得到了普及与使用。而在计算机与软件行业,技术的发展更为迅速,各类应用技术不断的出现,带动了行业的发展,但是在发展的同时,还有大量的遗留系统的存在,这在一定程度上影响了现有的软件系统的发展。在此行业内,计算机技术与软件技术一直是业内人员所研究的问题,而软件体系结构与组装软件工程在软件技术中占据着非常重要的地位,其为软件的设计、开发、应用起到了指导的作用,也为软件的开发带来了一定的转变。

1 软件体系结构与组件技术

大规模工程软件系统与小规模程序设计存在着根本区别,一条程序语句不足以作为开发单位,而组件必须成为构造软件的模块。基于组件的软件开发已成为一个热门研究领域,获得商业界的关注,并产生了几个组件互操作性模型。这些模型能帮助实践者处理越来越复杂的软件系统。

软件作为一种程序语言的体现者,其具有一定的复杂性,在软件的开发中,软件体系结构作为一种控制软件的手段,其可以在一定程度上解决软件复杂性所带来的问题。在软件体系结构的使用中,可以将软件之间的相似性、通用性、潜在性都进行整合,利用软件体系结构可以使软件的开发与设计有一定的基础,而不是从零开始摸索与创建,这在一定程度上节约了在软件程序的开发上所需要应用的时间与成本。为此,体系结构显式给出软件系统的结构,将系统中的组件计算与它们之间的交互分离开来,在任何改变影响实现之前,提供了可供管理和分析系统的高级模型。

在理论上,软件体系结构所具备的是对软件的一种理论性的、完善的组件工程,其核心内容是使组件在设计、配置等方面有更高层次的开发与应用,是为了实现组件理论上开发的定义。它们是用已有的组件来开发复杂系统的两个不同方面。软件体系结构是可重用软件组件的一种自然补充,已有的组件中间件技术是以组件为中心的,着重对外部组件属性进行标准化;软件体系结构是以系统为中心的,更强调连接和作为一个整体的系统的属性。

2 复合软件体系结构要求

2.1 允许各个风险承担者之间对系统进行通信。

风险承担者包括顾客、设计师、管理者、组件开发者、系统集成人员、用户等等。允许在高于源程序的抽象级上理解系统,对系统进行推理,更接近风险承担者心目中的系统模型。

2.2 减少“问题”空间中的系统需求与“方法”空间中的软件设计之间的鸿沟。

支持重用与应用程序家族,将遗产项目中的成功设计和进化属性转换为代码。

3 组件技术协调软件体系结构

已有的组件中间件技术,如CORBA,Active X和Java Beans,是以组件为中心的,主要关注标准化外部组件属性—接口、封装、绑定机制、组件内通信协议及关于运行时环境的期望。相反,软件体系结构及其风格以系统为中心,集中定义黑盒组件通信的系统,分析最后得到的系统的属性,产生“胶水”代码绑定系统组件。组件中间件技术和软件体系结构都是基于组件的软件开发的关键因素,然而在这两个领域之间存在着惊人的有限的交互。不同的焦点暗示了跨越这两个领域之间鸿沟的可能:使用已有的组件中间件技术来实现用体系结构技术建模的系统。

4 组件对体系结构的要求

组件的应用受到多方面因素的影响,而软件体系结构只是其中的一种,而为了保证组件在市场中的价值与应用的成功,其主要的体系结构因素有以下几种。

4.1 多种组件粒度。

体系结构底层结构必须既支持小组件,也支持大组件,从简单的数据结构到大规模的数据库。然而大多数较大的组件无疑是用较小的组件构造的,较大的组件能够为设计者提供更有意义的功能封装。

4.2 组件可替换性。

在体系结构中,其中的底层结构要保证组件之间的可替代性,在结构中,可以应用与原有的组件等价的组件进行组件之间的替换与删除。

4.3 用多种程序设计语言开发组件。

由于不同的程序设计语言具有不同应用领域,再加上新的语言层出不穷,体系结构底层结构必须支持用不同的程序设计语言开发组件。

4.4 用户接口合成。

有许多组件并没有用户接口,而一些领域和组件具有一成不变的用户接口。体系结构底层结构必须支持将多个组件用户接口复合成单个统一的完整的用户接口。

4.5 组件的简单分布。

在软件体系结构中,体系结构对底层结构的要求是达到其在理想情况的设计下进行简单的分布,这样有利于在实际的底层结构封装与分布的多样性与简易性。同时,在市场的要求下,组件的简单分布可以满足在使用时所应用的进行相关的组件任务。

5 应用软件体系结构与组件技术的优点

为了促使软件开发有更良好的基础,软件体系结构与组件技术应具有的相应完善的特点来作为软件开发与维护的指导依据,现举例分析内核的应用,其主要内容有以下几点。

5.1 精巧的内核。

如上文所述,应用软件是非常复杂且庞大的系统,因此在软件的开发与维护中要严格依据开发标准,而为了节省工作量,应利用精巧的内核作为软件功能的集成体,从而减少工作的复杂性。在用户的使用过程中,对计算机功能与软件的应用并不是都需要软件程序中的复杂扩展,因此,利用精巧的内核可以在很大程度上简化用户的使用操作,方便应用软件,同时在应用内核时需要依据用户的需要对内核的拓展内容进行添加,避免出现不必要的程序。

5.2 扩展能力。

扩展能力是建于内核的基础上,对内核添加集成式的特性,将扩展集应用于内核中,帮助其增加新的扩展特性,从而在用户的需求上添加相应的应用软件的需求。

5.3 减少对资源的占用。

在应用软件中,每一种特性都对资源有一定的占用,而利用内核的方式可以减少此类资源的占用率,从而方便使用。

组件技术以其众多的优点正逐渐走入业界人士的眼中,而随之为软件体系结构带来的变革必将会为软件的整体效能提高、软件的划时代发展带来新的支持。

结束语

在现今的信息化时代,软件工程的应用与发展有着广阔的前景,同时,软件工程的发展需要在软件开发中不断的探索,追求进步,促使计算机的功能与网络技术在人们的生产生活中的作用可以达到最大化。软件的开发与拓展是非常复杂的工程,其发展与创新离不开软件体系结构的指导与组件技术的应用。在软件体系结构与组装软件工程中还存有一些不足之处需要改进,这就需要技术人员在此行业中不断的创新与发展,为软件的开发与使用奠定良好基础。

参考文献

[1]应俊.软件体系结构和组件软件工程的分析[J].数字技术与应用,2015(8).

[2]刘宇辰.浅谈软件体系结构的研究[J].职业技术,2015,14(11).

结构软件 篇2

一、实验目的1)了解智能模型的概念

2)查阅有关SVM算法,并作理解

二、实验要求

1)简介 智能模型基于知识的软件开发模型,它与专家系统结合在一起。该模型应用基于规则的系统,采用归纳和推理机制,帮助软件人员完成开发工作,并使维护在系统规格说明一级进行。该模型在实施过程中要建立知识库,将模型本身、软件工程知识与特定领域的知识分别存入数据库。以软件工程知识为基础的生成规则构成的专家系统与含应用领域知识规则的其他专家系统相结合,构成这一应用领域软件的开发系统。

2)详细说明 智能模型也称为“基于知识的软件开发模型”,它把瀑布模型和专家系统结合在一起,利用专家系统来帮助软件开发人员的工作。该模型应用基于规则的系统,采用归纳和推理机制,使维护在系统规格说明一级进行。这种模型在实施过程中以软件工程知识为基础的生成规则构成的知识系统与包含应用领域知识规则的专家系统相结合,构成这一应用领域软件的开发系统。

智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的开发。

3)必要性

智能模型所要解决的问题是特定领域的复杂问题,涉及大量的专业知识,而开发人员一般不是该领域的专家,他们对特定领域的熟悉需要一个过程,所以软件需求在初始阶段很难定义得很完整。因此,采用原型实现模型需要通过多次迭代来精化软件需求。

智能模型以知识作为处理对象,这些知识既有理论知识,也有特定领域的经验。在开发过程中需要将这些知识从书本中和特定领域的知识库中抽取出来(即知识获取),选择适当的方法进行编码(即知识表示)建立知识库。将模型、软件工程知识与特定领域的知识分别存入数据库,在这个过程中需要系统开发人员与领域专家的密切合作。

智能模型开发的软件系统强调数据的含义,并试图使用现实世界的语言表达数据的含义。该模型可以勘探现有的数据,从中发现新的事实方法指导用户以专家的水平解决复杂的问题。它以瀑布模型为基本框架,在不同开发阶段引入了原型实现方法和面向对象技术以克服瀑布模型的缺点,适应于特定领域软件和专家决策系统的开发。

三、实验结果

结构软件 篇3

关键词:pkpm结构软件;结构设计;应用

随着我国建筑行业发展的越来越快,对于设计软件的设计效率以及质量都有了新的要求,所以,为了能够更好的满足行业发展的需要,我国的建筑科学研究院建筑工程软件研究所在CAD的系统之上,进一步的研制出了更加高效的PKPM设计软件,而该软件,一经问世就受到了业内广泛的关注和欢迎,目前,已经成为我国设计业市场占有率最高的一款软件,几乎占据了90%以上的市场,意义深远。

一、PKPM软件的发展情况与在结构设计中所具有的特点

1、PKPM软件的发展情况

在最开始的时候,PKPM软件只有两个功能模块,一个是PK排架框架设计,一个是PMCAD平面辅助设计,结合在一起统称为PKPM软件,而随着科 学技术的持续发展以及建筑行业对于设计软件需求的提高,PKPM软件也进行了进一步的改进,跟CAD设计软件集成在一起,在功能上有了新的突破,如 今,PKPM软件不仅拥有除了CAD设计软件本身所具有的建筑、结构、设备、设计的功能,还扩增了建筑概预算功能、施工管理功能以及施工企业信息化的功 能,成为了一种全方位一统化的高技术设计软件,因而受到了设计行业的广泛欢迎。

2、PKPM软件在结构设计中所具有的特点

PKPM软件在结构设计中所具有的最大的特点就是操作过程比较简单,程序设计比较人性化以及具有一定的智能化的特点。设计师设计的过程中,不需要担 心计算的问题,计算机会自动的对数据进行读取,并按要求计算出结果,省去了设计师自己计算的过程,而且,如果设计的过程中出现了数据遗漏或者是参数不准确 的问题,计算机会智能提示并作相应的信息记录,方便设计师以后的检查和修改。

二、对结构整体计算程序的浅显认识

1、次梁梁端约束条件的假定和实现

随着PKPM的不断改进,在PMCAD建模中可在其第一项即建筑模型与荷载输入里建主框架的同时输入次梁布置,这无疑给设计人员带来了很大的方便,尤其对次梁布置复杂的结构更为有效,但也随之带来一些问题。在手工计算中我们通常假定次梁端部为铰接。而程序计算时没有把次梁端部按铰接处理,梁跨中的正 弯矩减少,这样难免有失安全。另外还要注意主框架梁和次梁间的协调扭转,协调扭转是由变形协调产生的,它使主框架梁和次梁间有一定的扭转变形,这样框架梁 对次梁端部的约束作用就更弱。因此在计算时应将次梁的支座端部定义为铰接,更符合我们对次梁的设计假定,偏于安全。然而这样处理存在一个矛盾:虽然次梁对 主框架梁没有了扭转作用,但在设计主梁时还是应考虑这个不利因素,适当的增加主梁抗扭能力。在结构布置时也要注意这个不利因素,为了减少对框架梁的扭距应 尽量使次梁连续布置,尽量避免框架梁两侧的次梁有距离比较短的错位,如果不可避免应特别注意该框架梁的抗扭,必要时应补充计算以确保框架梁的安全。

2、虚梁的合理运用

PKPM为用户提供了截面为100mm×100mm的虚梁,虚梁主要作用是用来划分板块,它只传递荷载,没有刚度和质量,不参与抗震。多数用于无梁 体系SLABCAD计算在框架柱间的连接、封闭建筑房间等等。然而设计人员在建摸时为了真实反映建筑物的荷载,在隔墙下没有设次梁的部位布置虚梁来实现对 墙体线荷载的输入,这样避免了遗漏荷载但对有些框架梁有失真实。原因在于程序中虚梁改变板跨,从而改变板传力方向,例如一个3.6m×3.6m的板格,板 四边的梁均匀受力,每根梁上承受1/4板上荷载,如果在这个板格中间平行均匀的布置两道虚梁后,虚梁使该板变为三个1.2m×3.6m的板,这样板四边的 梁受力不均匀,平行于虚梁的每根梁上承受1/6板上荷载,垂直于虚梁的每根梁上承受1/3板上荷载。这样就使梁的受力模型与实际的受力情况不符,会造成有 的梁配筋不足而有的梁配筋偏大。在此笔者建议不要在无梁隔墙下布置虚,可将隔墙何在折算成面荷载布置,从而比较地反映板的传力,保证梁的设计安全。

三、在使用PKPM软件进行结构设计的时候应该注意到的问题

由于利用PKPM软件进行设计的过程中,几乎所有的计算都是通过计算机来完成的,这样就会对计算机的分析结果造成一种依赖性,而综上所言,计算机在 结构设计的过程中会存在一些超出规范规定的设计,这样,过于依赖计算机的分析结果就会导致在抗震概念设计和构造设计的过程中对抗震的效果造成一定程度的忽 視,影响建筑物的抗震效果。

在建立交互式结构模型的时候一定要注意,模型构件中的所有的数据和信息都要在建立交互式模型的操作中输入,同时所有的数据和信息既要符合规范的规定 和标准,也要正确的结合结构力学的模型,以确保交互式结构模型的有效建立。在输入的过程中应该注意,在节点过密的时候,着重考虑墙体以及梁柱布置的连续 性,不能出现偏差。

除此之外,设计师还需要对超筋的情况情形仔细的分析和详细的判定,因为PKPM软件是以最大配筋率来进行计算的,有时候,就算是未显示超筋信息,但并不能说明柱截面的选择就是正确的。

四、PKPM软件在结构设计中注意的问题

1、PKPM结构设计时楼梯间建模输入时解决方法

由于地震时楼梯板在水平力作用下具有“斜撑”的受力状态,在水平地震作用下,将产生较大轴向拉压力;楼梯板由原先我们只考虑竖向力时的受弯构件,转 变为“压弯、拉弯”构件,受力状态复杂化。楼梯间处的水平抗侧刚度较大,结构整体的水平抗侧刚度分布将不均匀,主要集中在楼梯间处。故在水平地震作用下,楼梯间的柱分配到的水平剪力较其它处明显偏大。特别是休息平台下的楼梯梁和楼梯柱,其受力非常不利。此外,从结构上说,由于楼梯间的上下楼梯板(上下直行 双跑楼梯为例)沿中心线并不对称,从而造成原先对称的结构考虑了楼梯的作用后,在水平地震作用下的内力分布不对称。

2、结构振型数的确定

采用振型分解反应谱法进行结构地震反应分析时应确定合理的振型数。要确保不丧失高振型的影响,程序要输入较多的计算振型数;但是输入的振型数过多超 过了结构的自由度数,就会引起计算结果的不可靠。《抗规》5.2.2不进行扭转联合计算的结构,水平地震作用标准值的效应,可取前2~3个振型,当基本自 振周期大于1.5S或房屋高宽比大于5时,振兴个数应适当增加。《高规》5.1.13-2抗震计算应考虑扭转联合,振兴数不应小于15,对于多塔结构,不 应小于塔数的9倍,且计算振型数应使振型参与质量不小于总质量的90%。上述规范给出的是计算振型数的下限。

选取足够的振型数,对于一个大型结构计算所有的振型数,所花费的计算机资源相当大,故没有必要就算所有的振型数,因为最后的那些高振型对结构的地震 作用贡献很小,所以足够就可以了。规范规定足够的振型数要保证有效质量系数超过90%,否则振型数不够,振型数不够也是造成剪重比不满足要求的一个原因。

结束语

虽然PKPM软件自问世以来就收到了广泛的关注,而且随着科技的发展一直在不停的更新和进步,智能化也越来越高,但软件毕竟取代不了人工,也一定会存在一些问题和弊端,所以,身为设计师,一定要不停的提升自身的能力,然后才能够结合软件更好的进行设计。

参考文献:

[1]张玲.浅谈PKPM软件在结构设计中的几点问题[J].科技风,2010(14).

[2]赵丽清.PKPM系列软件的应用与建筑结构设计[J].山西建筑,2011(9).

晶体结构软件-Mercury 篇4

Mercury是英国剑桥晶体数据中心Cambridge Crystallographic Data Centre制作的剑桥结构数据库系统Cambridge Structural Database System下的一个软件, 用来观察研究晶体的三维结构, 时有免费的版本和商业版更新。Mercury运行在Windows (或Unix平台) 上。下面简单介绍一下利用Mercury软件来研究晶体结构。

1 Mercury软件的主窗口

Mercury软件的主窗口比较简单, 屏幕中间的黑色区域为显示区, 所读入的晶体结构数据输出在这里;标题栏显示程序的名称以及当前打开的晶体编号;菜单栏包含一系列菜单命令;工具栏位于菜单栏的下方, 列出常用的工具, 例如:显示风格、颜色、选择模式和操作方式等等;位于屏幕右侧的空白区域为结构列表区, 列出载入文件或数据库所含的结构列表;处于显示区下方的有接触列表区和选项区, 前者与分子间或分子内接触作用相关, 而后者包含一些常用选项。此外, 在显示区下方还有一个是否进行晶胞堆积的复选框;屏幕最下方为任务栏, 包含与当前状态有关的帮助信息。

2 Mercury软件的简单操作

2.1 文件调入

mercury软件使用.cif结构文件, 要求该结构文件所在的路径不能含中文。

2.2 晶体结构位置调整

显示窗口中按住鼠标左键或右键拖动可以随意旋转结构和调整结构大小的缩放率, 也可以通过快捷菜单中的快捷命令来调整, 以得到较好的结构视图。

2.3 显示样式选择

style可以选择原子显示模式, wireframe线框式 (默认) 、capped stick粗棍式、Ball and Stick球棍式和Spacefill空间堆积模型。分子结构一般选择球棍式, 晶胞堆积图比较复杂, 一般选择粗棍式或线框式。

2.4 颜色选择

颜色分两种模式, by element按照元素分配不同颜色, by Symmetry Equivalence按照分子指派不同颜色, 等效对称的分子具有相同的颜色。

2.5 模式选择

picking mode选择模式, 默认select。

2.6 显示非键连作用

Packing显示晶胞内容, reset重新回到最初载入的结构, 显示非对称单元。H-bond显示广义的氢键, Short contact显示小于范德华半径之和的非键连作用 (肯定包含氢键) 。

3 Mercury软件的功能

Mercury软件能够读取多种格式的晶体结构数据, 在界面中输出晶体的三维结构;晶体的三维结构可以采取多种显示风格, 如球棍、热椭球模型等, 同时可以改变晶体结构的显示属性, 如原子和键的颜色等;在界面中通过各种旋转和平移操作可以更好地观察晶体结构, 并且能够得到沿着各种特征轴的视图以及最小二乘平面、米勒平面;在处理分子间或分子内相互作用力时, 该软件有其独到之处, 能够自定义分子间或分子内相互作用力, 同时构建出这种相互作用力的三维空间网络;在测量方面, Mercury软件可以得出原子、质心和各种平面之间的距离、角度和扭角;另外, 软件还可以计算、显示、储存所输入晶体结构的粉末衍射图谱, 为物质的物相分析提供一个理论的依据。

商业版的Mercury软件还有以下的功能:可以同时显示多个结构, 对多个结构进行最小二乘重叠;可以手动编辑结构, 如加氢、键, 改变键型等;可以自动指认键型, 同时按照剑桥晶体数据库的惯例校对键型;可以显示晶体的Bravais, Friedel, Donnay and Harker (BFDH) 形态。

4 Mercury软件在晶体结构研究中的应用

4.1 可以选择多种模式显示晶体结构 (球棍、线型等) , 并对晶体结构进行位置及尺寸调整, 得到最佳的观察点。

4.2 可以删除晶体结构中的局部结构 (如溶剂分子) , 以突出核心的结构单元。

4.3 可以展示晶体结构存在的非键连作用, 可以更好地理解配合物的结构特点。

4.4 可以显示晶胞, 并对晶胞所含结构单元数进行调节。

4.5 可以得到晶体结构图和晶胞堆积图 (如图1所示) 。

上述简单的介绍可使读者对Mercury软件在晶体结构教学中的应用有初步的了解。虽然该软件仍有不足, 但仍然是化学工作者的好帮手, 可给晶体结构教学和科研带来极大的便利。若想进一步了解该应用软件, 可以在http://www.ccdc.com查询。

摘要:利用Mercury软件可以更好的观察研究晶体结构, 有利于晶体结构研究。文章重点介绍利用Mercury软件研究晶体结构。

关键词:Mercury,晶体,结构

参考文献

[1]金淑泓.用Diamond软件构建化学晶体[J].现代教学, 2004, 11:32-34.

软件测试人员结构组成分析 篇5

软件测试工程师是软件行业中一种即年轻又古老的职业,进入二十一世纪以来,随着中国加入WTO以后,从事这项职业的人也越来越多。一个公司在组建一个测试队伍的时候如何分配人员结构,从而使公司软件测试工作水平得到提高,是大家比较关注的问题。本人依照自己的经验提出自己的观点:

我们首先来看一下测试人员的纵向结构

1,测试经理

测试经理主要负责测试队伍的内部管理以及与其他外部人员,客户的交流,详细说来主要包括进度管理,风险管理,资金管理,人力资源管理,交流管理等等,测试经理需要具有项目经理的知识和技能。同时测试工作开始前项目经理需要书写《测试计划书》,测试结束需要书写《测试总结报告》

2,测试文档审核师

测试文档审核师主要负责前置测试,包括在需求期与设计期间产生的文档进行审核,比如《业务建模书》,《需求规格说明书》,《概要设计书》,《详细设计书》等等。审核需要进行书写审核报告。当文档确定后,需要整理文档报告,并且反映介绍给测试设计师。3,测试设计师

测试设计师主要根据需求期与设计期间产生的文档设计各个测试阶段的测试用例。(往往测试文档审核师,测试设计师可以有相同的一组人来完成)

4,测试工程师

测试工程师按照测试用例,来完成测试工作。

但是测试人员应该有哪些人来组成呢?也就是测试人员的横向组成,让我们再来讨论讨论:

1,需要具有一定开发经验的计算机专业人员

由于具有一定开发经验的计算机专业人员即懂得计算机的基本理论,又有一定的开发经验。所以对于软件中哪里容易出错,哪里不容易出错他们了如指掌;他们可以分析程序的性能,软件性能差是否是占有内存空间太多,或者是占有CPU时间太多引起的,还是其他原因,他们往往是专家。尤其是进行非功能测试的时候,他们可以更好的搭建系统测试平台。这种人员应该占测试队伍中一半以上。

2,需要具有本软件业务经验的人员

测试队伍中需要有这样的人员的目的在于,这些人员由于对业务非常熟悉,软件质量的前提又是满足用户的需求。专业业务知识是计算机专业人员达不到的,所以这方面人才可以利用它们的业务知识和专业水平,参与系统需求期间的文当审核,可以发现软件中存在的业务性错误。比如专业用语不准确,业务流程不规范等等,这种人才对于专业性比较强的软件测试工作尤为重要,比如税务,法律,艺术,CAD,CAM…

3,只需要会操作计算机的人员

由于软件一旦卖出去之后,使用软件的人各种各样,各种各样的人带来各种各样的操作情况,请一大部分人员在软件测试工作后期进行测试工作是十分重要的,他们往往会发现专业测试人员测试不出的东西和一些希奇古怪的错误。这就是软件测试学中所谓的猴子测试法。对于一个软件公司来说,并不是说所有的测试队伍都需要这三种人员,实际中可以一组人代替多个角色,但是要遵循以下原则:

1,对于业务不是很专业的软件,具有一定开发经验的计算机专业人员与具有本软件业务经验的人员可以合并;

基于决策的软件体系结构设计方法 篇6

关键词:决策;软件;结构设计;方法

中图分类号:TP311.5 文献标识码:A文章编号:1007-9599 (2011) 15-0000-01

Policy-Based Software Architecture Design Method

Fan Xiaofei

(Nantong Higher Normal School Mathematics and Physics,Nantong226000,China)

Abstract:Software architecture is a high-level abstraction of software systems,to improve the quality of software systems to support software development,reuse and control of software complexity have a very important role.But decisions like software is to the center of decision-making theme,the theme of the use of relevant rules and knowledge base to provide some knowledge for decision-making software,services and decision support.We should be making class from the complexity of the software to generate programs of many types,the probability is high,a large number of software computing the characteristics of the model to analyze and study the software system should pay attention to the issues and strategies,and policy-based software system structural design and make better method.

Keywords:Decision;Software;Design;Method

一、基于決策类的软件的特点和方法

一个决策的智能体是决策类软件的核心。在决策软件中,从输入数据信息的运算和判断的运用,到最后的一个决策方案,用同样的规则和同样输入,但最后产生的结果方案都会有差异。在决策类软件中最终产品和最终认可哪个方案,都是根据最终方案成果途径和方式来进行加以分类和分析的:

(一)第一种就是对人工微调后使用的方案。因为软件在模拟业务场景中不能完完全全的被模拟出来,并且需要很多的实践经验才能够做,因为有复杂的业务场景。此外就是在对方案执行考虑的时候没有针对性,软件不能进行标准统一的规范。由此得知这就是此种方案需微调的原因。

(二)第二种就是对下一步的工作提供出指导的方案。因为这一方案的归纳和总结主要是我们对某些事的发展进行依赖,并表现在现今所处状态和所受外部激励,还有我们长时间依赖于历史信息,并对下一步的走势进行估算。从对统计模型合理性和数据采集的准确性,来进行计算误差等多方面的因素。因为计算机误差等多方面的影响,方案与将来的这个事件的实际情况不相互协调,并且此方案是对即将发生的事情能做一个预判,但是此方案主要是作用在于为更高层次中的决策提供参考。

(三)第三种就是对其直接使用的方案。由于此种方案业务执行的规范性高、清晰准确和外界干扰的因素少。所以一般适用于具有一般强约束的场合。

二、基于决策类软件中的测试难点

从众多的方案中来挑选出一个最符合要求的方案,并通过系统对生成若干的方案中,选择一个优等的,根据规则来选出认为最好的方案。检验选择结果真确性就应该从方案中的有效性、真确性和接受性,并对这三个方案进行制定出不同的衡量标准。

想要知道精确定位软件的真正的问题的所在,那么只有对软件模型进行分析。这就对软件的健壮性有了保证,但是却对软件的测试工作就造成了很大的困难和影响。因为决策规则库的内敛性,所以才能使决策类软件输入的切入点少。只要采取正确的分析,就能知道软件的问题所在。

三、基于决策软件中的模型的划分策略

在模型的划分策略中,利用模型的复杂程度和模型的数量大的特点来进行分析。可以按照《软件需求规格说明》中的内容获取更多的方法,来加以分析。可以先从软件、文档、研制方沟通和业务需求的4个方向为出发点,并依照可验证性作为原则,从功能上对模型来进行划分、验证。其中功能的单一,模块的精简,根据程序的数据流图和运行图。在对小模型的输出输入时候就应该缩小软件的范围来提高定位的精确。但是对大型模型的拆解划分中定位要是出现了问题,那么我们就应该通过在大模型的内部来进行插桩和分解。

在软件的衡量中,为了能更好的衡量出软件与实际的差距,一般都会采用以下两种方法:

(一)类似软件对比法。类似软件对比法对标尺软件提出了很高的要求,在商业软件的市场中价格很高,同时也增加了对标尺软件的获取难度,从而也提高了测试成本。但是作为对比标尺的软件,就必须经过严格的市场检验和软件检验,才能有更好的口碑。但是对开创性的软件来说,因为不适用就不存在有标尺软件。因此在实际测试中,使用优秀的开源软件作为标尺软件,进行对比验证。才能更好的提高效率。

(二)真实数据法。真实数据法因涉及到开拓性较强的领域或者军事和商业等保密性很强时,真实的一些案例就很难获得。因为真实数据法是从软件为出发点,对软件的性能和功能都作为最准确的验证方法。软件规则是对现实业务处理上的一个逻辑上的抽象,用一些真实的业务数据输入到软件中,然后再用输出来的结果和真实的结果相互对比,按照不同的方案和类型来去设定不同的估算误差范围。如果最后的结果在误差的范围外,那么软件的置信度很低,但是如果在误差范围内,那么软件的置信度就会很高。

四、归纳总结

作为具有一定人工智能的软件类别,辅助决策类软件在执行软件测试时,应该针对软件的特点,主要对软件实现的合理性和准确性进行验证。针对不同的方案类型,把握选优的原则,从而采取适应方案特征的测试策略;从业务和实现结合的角度出发在测试前对测试模块进行划分,测试过程中如果发现问题,就要分解功能模块,对发现的问题精确定位。通过应用文中的软件策略,就可以增强软件问题的发现概率,同时也能较好的提高辅助决策类软件的测试覆盖度。

参考文献:

[1]李冰.软件测试用例生成综合策略研究[J].计算机测量与控制,2005

[2]梁艳平.基于GIS的统计信息分析与辅助决策研究[D].中南大学,2004

软件体系结构风格研究 篇7

一、软件体系结构风格分析

最初的软件体系结构是Mainframe结构——客户、数据和程序都被集中在主机上,通常只有少量的GUI界面,对远程数据库的访问比较困难。随着PC的广泛应用,该结构逐渐被淘汰。在20世纪80年代中期出现了Client/Server分布式计算结构,应用程序的处理在客户机和服务器之间分担。随着大型软件系统的开发,这种结构在系统的部署和扩展性方面暴漏出不足。随着Internet的发展,一个更灵活的体系结构“三层/多层计算”体系结构应运而生。

Garlan和Shaw将通用软件体系结构风格总结为以下几类:

1. 数据流风格:

批处理序列;管道/过滤器。2.调用/返回风格:主程序/子程序;面向对象风格;层次结构。3.独立构件风格:进程通讯;事件系统。4.虚拟机风格:解释器;基于规则的系统。5.仓库风格:数据库系统;超文本系统;黑板系统。

下面将介绍几种主要和经典的体系结构风格和它们的优缺点。

1.C2风格。C2体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。图1中构件与连接件之间的连接体现了C2风格中构建系统的规则。

C2风格是最常用的一种软件体系结构风格。从C2风格的组织规则和结构图中,我们可以得出,C2风格具有以下特点:

(1)系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;(2)所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;(3)构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。

2. 数据抽象和面向对象风格。

目前软件界已普遍转向使用面向对象系统,抽象数据类型概念对软件系统有着重要作用。这种风格的构件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。图2是数据抽象和面向对象风格的示意图。

面向对象的系统有许多的优点:

(1)因为对象对其他对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其他的对象。(2)设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合。面向对象的系统也存在着某些问题:(1)为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。只要一个对象的标识改变了,就必须修改所有其他明确调用它的对象。(2)必须修改所有显式调用它的其他对象,并消除由此带来的一些副作用。

3. 基于事件的隐式调用风格。

基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。基于事件的隐式调用风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用。隐式调用系统的主要优点有:(1)为软件重用提供了强大的支持。当需要将一个构件加入现存系统中时,只需将它注册到系统的事件中。(2)为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响到其他构件的接口。隐式调用系统的主要缺点有:(1)构件放弃了对系统计算的控制。一个构件触发一个事件时,不能确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的构成,它也不能保证这些过程被调用的顺序。(2)数据交换的问题。有时数据可被一个事件传递,但另一些情况下,基于事件的系统必须依靠一个共享的仓库进行交互。在这些情况下,全局性能和资源管理便成了问题。(3)既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题。

4. 管道/过滤器风格。

在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。因此,这里的构件被称为过滤器,这种风格的连接件就象是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。

图3是管道/过滤器风格的示意图。

管道/过滤器风格的软件体系结构的优点:

(1)使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;(2)支持软件重用。重要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;(3)系统维护和性能增强简单;(4)支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其他任务并行执行。管道/过滤器风格的主要缺点:(1)通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。(2)不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重。(3)因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。

5. 批处理风格。

批处理风格的每一步处理都是独立的,并且每一步是顺序执行的,只有当前一步处理完后,后一步处理才能开始,数据传送在步与步之间作为一个整体。批处理的典型应用是经典数据处理和程序开发。

批处理风格与管道过滤器风格的共同点是把任务分解成一系列固定顺序的计算单元(组件),组件间只通过数据传递交互。区别表现在以下几个方面:批处理是全部的、高潜伏性的、输入时可随机存取、无合作性、无交互性,管道过、滤器是递增的、数据结果延迟小、输入时处理局部化、有反馈、可交互。

6. 仓库风格。

在仓库风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存贮上执行,仓库与外构件间的相互作用在系统中会有大的变化。

若输入流中某类时间触发进程执行的选择,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。

二、三层C/S软件体系结构分析

C/S软件体系结构是20世纪90年代成熟起来的技术,它将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。

传统的二层C/S结构存在以下几个局限:1.二层C/S结构是单一服务器且以局域网为中心的,所以难以扩展至大型企业广域网或Internet;2.软、硬件的组合及集成能力有限;3.客户机的负荷太重,难以管理大量的客户机,系统的性能容易变坏;4.数据安全性不好。因为二层C/S有这么多缺点,三层C/S结构应运而生。三层C/S结构是将应用功能分成表示层、功能层和数据层三个部分,如下图所示。

表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。表示层一般使用图形用户接口,操作简单、易学易用。功能层相当于应用的本体,它是将具体的业务处理逻辑编入程序中。功能层的程序多半是用可视化编程工具开发的。数据层就是数据库管理系统,负责管理对数据库数据的读写。数据库管理系统必须能迅速执行大量数据的更新和检索。因此,一般从功能层传送到数据层的要求大都使用SQL语言。

对二层C/S结构的局限,三层C/S的解决方案是:对这三层进行明确分割,并在逻辑上使其独立。与传统的二层结构相比,三层C/S结构具有以下优点:

1. 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性。2.允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。3.三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言。使之能并行地而且是高效地进行开发,达到较高的性能价格比;对每一层的处理逻辑的开发和维护也会更容易些。4.允许充分利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,这就为严格的安全管理奠定了坚实的基础;整个系统的管理层次也更加合理和可控制。

软件体系结构风格为大粒度的软件重用提供了可能。然而,对于应用体系结构风格来说,由于视点的不同,系统设计师有很大的选择空间。要为系统选择或设计某一个体系结构风格,必须根据特定项目的具体特点,进行分析比较后再确定。不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。

摘要:本文对几种经典的软件体系结构风格进行了具体的阐述,分析了各种风格的特点、优缺点,最后重点介绍了三层C/S软件体系结构。

关键词:软件体系结构,软件体系结构风格,三层C/S软件体系结构

参考文献

[1]Shaw M,Garlan D,Software Architecture Perspectives on an emerging discipline,Prentice Hall,1996

[2]冯冲江贺冯静芳编著:软件体系结构理论与实践.人民邮电出版社

[3]Mary Shaw.Making Choices:A comparison of styles forsoftware architecture[J].IEEE Software,special issue onsoftware architecture,1995

结构软件 篇8

1 中间件的概述

计算机技术发展速度越来越快, 从硬件发展的状况来看, CPU发展速度越来越快, 处理能力也在不断地提高。而从软件技术方面来看, 应用程序的规模在不断扩大, 尤其是Internet与WWW的出现, 促使计算机应用范围更加广阔, 越来越多的程序开始在网络环境的异构平台上运行。但是在这样一种情况下, 对新一代软件提出新的要求。在这样一种异构环境下, 同时不同的硬件平台上存在不同的软件系统和风格不同的用户界面, 将这些平台集合起来可以开发新的应用是一个相对比较困难的问题。人们在研究中间件的时候普遍认为中间件就属于一种相对独立的系统软件或服务程序, 分布式应用不同软件, 借助在不同的技术之间达到资源共享, 中间件在客户机服务操作系统之间, 对计算机资源与网络通信进行管理。概括来说, 中间件的特点主要有这么几点, 即可以满足大量应用的需要、运行多种硬件与OS平台、支持分布计算, 提供跨网络、硬件与OS平台的透明性应用或者是uwu的交互性、支持标准的协议以及支持标准的接口。就标准接口而言, 对可移植性与标准协议的互操作性具有重要的意义。就当前的标准化工作而言, 中间件已经成为不可缺少的重要的组成部分。其实对于软件开发来说, 中间件可能比操作系统和网络服务更加重要。通过中间件提供的程序接口是一个相对比较稳定的高层应用环境。无论底层计算机硬件与系统软件如何更新, 只要将中间件升级更新, 就能够保持中间件对外接口定义不变, 所应用的软件也不会进行任何的修改, 这样就可以保护企业在应用软件开发与维护过程中的投资。

2 不同的软件体系结构

现如今的应用软件相对比较开放, 在应用软件发展的过程中, 曾经先后出现了比较多类型的系统模型, 不同类型的应用软件技术其实也就代表了不同阶段的信息技术发展。不同阶段中代表性的系统模型主要有以数据为中心、以执行为中心、面向对象与基于总线的系统模型。首先, 数据为中心的系统模型将数据放在系统的核心层次共享, 不同功能部件采用统一数据进行描述, 而其中的子系统开发过程又是相对比较独立的, 子系统之间有统一的数据交换接口, 整体上的扩充性比较好, 可以任意的增加符合数据交换的应用程序。但是在实际应用的时候就会发现, 这种系统模型整体结构比较松散, 集成性不是非常的好, 只能数据复用, 不能在功能上达到复用的效果。其次, 执行为中心的系统模型。执行为中心的系统模型就是将不同的应用系统通过统一的执行中心达到数据与用户界面的一致性。这类系统模型就是在共有计算与执行功能从应用程序中分离出来, 随后放到执行中心, 避免出现代码冗余。用户与系统应用程序是相互分离的。分离有助于数据的管理, 并且还可以保证管理数据的一致性。最后, 面向对象系统模型。在信息技术快速发展的过程中, 面性对象技术也变得越来成熟, 随后也出现了简练的面向对象的系统模型。相对比其他两种系统模型差别比较大。该系统模型能够为用户界面对象与所有的应用对象共享的数据与应用进行操作, 斌且这些对象都需要采用用户界面协调功能来实行。从系统模型的特点来看, 这种模型结构是无中心的, 系统是通过实体构成, 并且都处于平等的地位, 这与数据为中心和执行为中心的系统模型不同, 可以有效降低由于数据和功能集中管理产生的复杂性。相对比其他的两种模型, 对象模型已经有了很大的进步, 但是不能否认其中的不足之处。

3 基于中间件软件总线结构的系统模型

基于中间件的软件总线结构系统模型其实就是建立在中间件技术的基础上研发出来的一种软件体系结构。因此, 该系统可以充分发挥中间件所提供的预先定义比较好的底层通讯框架和模型, 将多种比较复杂的底层开发屏蔽掉, 其中屏蔽的就有数据操作与网络通讯等。当然这种技术也集成了中间件技术的比较多种特点, 如异构平台与负载均衡等。这些特点可以在工作业务逻辑比较复杂的系统中应用。该系统模型的关键是建立在相对比较高效的总线结构, 促使组件之间能够通过公共的接口互相连接, 促使组件可以达到即插即用, 无缝集成的目的。同时在这样一种模型中, 组件之间的通讯连接数也是线性的, 各组件接口规范具有相对的统一性。在降低通讯复杂性的同时, 还提高了组件的互相操作性。在利用软件总线可以控制逻辑, 为外部组件提供功能相对集中的软件模型。但是在这样一个模型中, 组件的概念与结构化软件开发和面向对象的软件开发存在着比较明显的区别。在中间件的软件总线结构模型中, 组件是一种相对良好、独立并且比较方便插入到的语言、工具、操作系统, 网络系统中的二进制代码与数据。根据软件开发而言, 可以有效完成相对特定的业务操作, 客户界面的复杂性, 能够在多种环境下为众多的客户端截面提供基本构件。

4 结语

总而言之, 基于中间件和软件总线结构的软件开发, 需要根据软件开发的实际情况来运行, 这样才可以达到软件开发系统功能良好的目的。

摘要:在科学技术与信息技术快速发展的过程中, 软件开发已经成为信息技术发展的焦点。就客户机/服务器计算模式难以继续发展的时候, 中间件作为这一中有效的解决方法开始受到广泛的关注与应用。本文基于中间件和软件总线结构的软件开发进行简单分析。

关键词:中间件,软件总线结构,软件开发

参考文献

[1]李军, 于守谦, 刘亚斌等.基于软件总线技术的测控系统框架实现[J].计算机测量与控制, 2014, 13 (8) :849-865.

[2]张秋余, 袁占亭, 翟志万等.分布式计算机软件总线体系结构研究与设计[J].计算机工程, 2014, (30) :109-110.

软件体系结构教学研究 篇9

软件体系结构在设计大型复杂软件系统中的重要作用是软件体系结构课程产生的主要原因。“软件体系结构”作为高等学校软件工程专业的一门核心课程,是对软件开发、研究过程中形成的软件体系结构理论成果和实践经验的总结。

1 课程特点及面临的挑战

1.1 软件体系结构课程特点

1)软件体系结构的概念、原理和方法较为抽象。本课程使用文献[2]中的软件体系结构定义:一个程序或计算系统的软件体系结构是该系统的结构,包括软件的元素,这些元素的外部可视属性以及这些元素间的关系。由于软件体系结构主要处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构,关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等[3],因此它的原理和方法较为抽象。

2)软件体系结构是降低开发复杂软件系统风险的工具。传统的软件开发过程可以划分为从概念直到具体实现的若干个阶段,包括问题定义、需求分析、软件设计、软件实现及软件测试等。软件体系结构的建立在需求分析之后,软件设计之前。软件体系结构设计是尽早地做出体系结构方面的重要决策,这些决策在后来的软件开发过程中很难更改。尽早做出正确的决策的目的是为了降低后来改变它们的风险。软件体系结构的目标是建立满足关键需求的系统,而不是设计一个完美的体系结构。这样,产业中的软件体系结构师必须决定哪些体系结构关注点需要仔细处理,哪些关注点可以少注意,以及如何在冲突的关注点间进行平衡。

3)软件产业环境同软件体系结构教学中的典型练习有很大差别。软件体系结构师不能简单把某种体系结构风格或模式应用于系统变化。软件体系结构师应理解已有的体系结构及其局限性,找出可行的方法去解决新的需求或存在的问题,并评价该方法对体系结构的影响。

4)一个软件项目涉及很多软件体系结构师和开发人员,与其他软件体系结构师交流并作出共同的决策是常见的工作模式。软件体系结构师和软件体系结构课程学生都应学会如何在一个软件体系结构设计过程中共同承担责任以及在其他人设置很多体系结构约束条件的环境中工作。

1.2 软件体系结构课程教学面临的挑战

一般来说,软件体系结构教学面临以下挑战:学生对现实生活中的软件体系结构挑战没有较多的经验,他们对较难的高层设计任务接触较少。另外,学生对应用领域的熟悉程度还不足以设计该领域的软件体系结构。因此,由于有限的能力和时间,大学课程的设计问题往往从零开始。这与产业环境形成鲜明对照。在产业环境中,体系结构师需要考虑很多已有的软件和系统。与大学的课程练习相比,实际应用中的体系结构决策往往预先受到严格的约束。另外,学生常常有一种心理模式,期望对明确描述的问题去寻找清晰的答案。当遇到松散描述的问题或模糊的问题时,他们往往感到困惑。因此,在大学的软件体系结构课程中开放性问题的解决难度较大。

2 软件体系结构课程的目的

1)学生应该掌握软件体系结构的有关概念,如视图,软件体系结构风格,设计模式等。通过理论和实验教学,使学生具有一定的体系结构设计经验,提高学生处理复杂软件体系结构设计问题的能力。

2)本课程要求教学中提出和要解决的问题对学生具体明确。本课程更多的是通过“做”来学习,“做”主要是构建一个背景来讨论和理解教学内容。

3)本课程在教学过程中强调软件体系结构设计是一个团队活动而不是单个软件体系结构师的个人任务。

4)学生应该知道如何开发一个软件体系结构的不同软件体系结构视图,解决不同风险承担者的关注点,我们使用文献[4]作为模型。

5)学生应懂得软件体系结构的特性。一个软件体系结构从来没有对错之分,至多是能够更好地满足某些环境,它需要在不同风险承担者的关注点间做出大量的平衡。也许存在不同的可接受的解决方案,但最终选择的解决方案依赖于如何在不同风险承担者的关注点间做出平衡[5]。

6)学生应该学会如何评价一个软件体系结构。这给予学生学习和评价一组体系结构决策和平衡的机会。评价活动有助于学生深入了解不同体系结构方案的边界。在评价过程中,学生会理解其它关注点被选中时对该体系结构造成的影响,形成对体系结构描述的质量目标的整体印象。由于评估涉及到要向各风险承担者解释软件体系结构以及导致该软件体系结构的各个决策,这进一步强调了软件体系结构中沟通交流的重要性。

3 基于案例的软件体系结构教学

3.1 课程主要内容

对于大学四年级学生,本课程主要强调概念、原理、方法和实验。课程内容框架如下[6,7]:1)软件体系结构概论;2)软件体系结构建模;3)软件体系结构风格;4)软件体系结构模式;5)软件体系结构描述;6)动态软件体系结构;7)Web服务体系结构;8)基于体系结构的软件开发;9)软件体系结构评估。

根据上述框架,我们首先分析了软件体系结构在软件开发周期中的作用。鉴于目前软件体系结构还没有一个精确的定义,我们讨论了几个有代表性的软件体系结构定义,对它们之间主要区别进行比较。然后我们介绍了如何对软件体系结构进行建模,通过实例重点强调“4+1”模型。

本课程占用较多课时讨论了一些经典的和流行的软件体系结构风格和模式,通过教学案例的讲解和实验,学生应掌握并能够应用这些风格和模式。

为对很多有用的体系结构范例(过程控制、客户机/服务器等)进行统一的描述,需要建立形式化的、规范的描述来对软件体系结构进行表示和推理。我们介绍了多种软件体系结构描述语言,重点介绍基于UML的软件体系结构描述语言并要求学生能够使用该类语言描述一些经典的软件体系结构。

动态软件体系结构是软件体系结构重要研究方向之一,主要研究那些具有特殊使命且需要长期运行的软件系统在运行时刻体系结构的变动。我们主要讨论基于构件的动态系统结构模型和动态体系结构描述语言。

Web服务体系结构是当前流行的软件体系结构之一。我们通过实例详述如何调用Google公司的Web Service接口进行基于Web服务体系结构的软件开发。

在掌握上述内容之后,我们导入基于体系结构的软件开发模型,该模型把整个基于体系结构的软件过程划分为体系结构需求、设计、文档化、复审、实现、演化等六个子过程。

通过具体的实例来评价软件体系结构是本课程教学的重要环节之一。我们主要讨论体系结构权衡分析方法(architecture tradeoff analysis method,ATAM)。通过分析软件体系结构对系统的使用或修改活动的支持程度来判断该体系结构对相关的质量需求的满足程度。例如,用一系列对用户需求的变动来反映易维护性方面的需求,用一系列攻击性操作来代表安全性方面的需求等。

3.2 教学案例

由于本课程内容较为抽象,而学生的设计经验不足,仅根据教材内容授课难以取得较好的效果。为此我们采取以案例为主的方法,将抽象的理论和具体的案例结合起来。案例的选取遵循以下原则:一是案例的选取来源于实际的应用系统。一个应用系统往往较为庞大,我们对其进行加工提炼,以适合课堂教学,学生掌握后,能应用于实际,提高软件开发能力。二是案例的选取紧紧围绕教学内容和当前软件行业发展的状况。本课程围绕软件体系结构设计模式、风格以及当前流行的软件体系结构等教学重点选取案例。三是案例能进行功能扩充。我们在每个案例中留置接口,要求学生在实验课中结合其它课程知识,对教学案例进行扩充。这样不仅有助于学生对教学内容的掌握,而且能够培养学生的动手能力。

我们在教学过程中使用的典型案例有:

1)设计模式案例:MVC、Observer、Singleton和Proxy。以MVC为例,我们在JAVA JDK及Netbeans环境下实现如下功能:当用户在图形化用户界面输入一个圆的半径时,图形用户界面画出该圆,程序显示该圆的半径、周长和面积;当用户在图形化用户界面上拖动表示圆半径的滑块时,自动显示圆的半径、周长和面积,并在图形界面上画出图形。该案例把交互系统的组成分解成模型(M)、视图(V)、控制(C)三种构件。通过该案例的学习,学生能很快领会基于MVC的程序设计思想。

2)软件体系结构风格案例:客户机/服务器(C/S)、浏览器/服务器(B/S)风格。以B/S风格为例,我们在Java JDK、Myeclipse及Tomcat环境下实现计算机学院学生学籍管理系统。通过本案例的学习,要求学生掌握C/S、B/S风格的应用。

3)Web Service案例:Googlesearch。本案例调用Google公司发布的web service,使得程序可以发送查询,并且接受和打印查询得到的结果。通过该案例的学习,要求学生掌握调用Web service的方法。

4)体系结构评估案例:文章中查找和重组关键词系统(Key Word In Context,KWIC)。

KWIC系统的基本功能是,输入一些句子,KWIC系统把这些句子中的词循环移位转变为新的句子,然后按字母顺序进行输出。本案例采用共享内存、抽象数据类型、隐式调用和管道过滤器四种方案分别实现,要求学生对上述方案进行比较,进行体系结构评估。

4 教学方法

1)激发学生的学习兴趣。本课程的对象是大学高年级学生,他们面临就业和考研的压力。教师在课堂上灌输抽象的概念和模型会使学生觉得枯燥无味,课堂气氛沉闷。我们在重点章节首先讨论有特色的案例,引导学生对案例的源代码进行逆向工程,然后得到软件体系结构。例如,在讲解Web服务体系结构时,我们通过分析Googlesearch案例来分析Web服务体系结构模型,使用Googlesearch来搜索“安徽大学”相关信息并与Google公司搜索平台的结果相比较,从一开始就引起学生的浓厚兴趣。

2)更新教学内容。由于教材内容往往不能及时反映软件体系结构理论和实践的最新进展,我们在教学过程中穿插最新的学术论文,引导学生关注一些热点问题,使得教学内容与时俱进。我们还同有关高校实验室和具有一定规模的IT公司保持联系,借鉴它们的实践经验充实教学案例。

3)分组案例研究。我们将学生分为多个小组,每组3到4人。我们将从工程项目和书籍中收集的案例集中起来,供每组学生选择。每组学生可以从案例的源代码中抽象出软件体系结构,也可以分析某些案例的体系结构风格或模式,或者对有些案例提出其它的解决方案等。在此过程中,小组中的每个学生担任一个或多个风险承担者。每个小组作为其它小组工作的评价者。最后每组就相关内容以PPT形式作一个报告,时间为20分钟,老师和其它小组成员给出评定成绩。实践表明该方法能充分调动学生的学习积极性。

4)实验平台建设。本课程的教学应使学生通过这门课的学习,能够综合运用其它专业知识,在实际工作中进行基于体系结构的软件开发。为此我们设计几个规模较大、结构较为完整的软件项目作为实验平台,比如客户机/服务器(C/S)、浏览器/服务器(B/S)和Googlesearch等,此类项目包括体系结构需求、体系结构设计、体系结构文档化、体系结构复审、体系结构实现和体系结构演化。我们要求学生以团队形式在平台上自定应用领域实践自己的设计方案或对已有的方案进行扩充。通过让学生开发他们自己的体系结构视图和视点,让他们决定要解决的关注点,对同一问题,得出一系列不同的解决方案。学生可以从不同的解决方案中吸取教训,从质量优先级的角度评价不同解决方案的差别。实验课程结束,要求每个团队提交规定的文档,向全班演示实验结果,由老师和同学集体进行评价,给出成绩。实践表明,实验课的教学培养了学生的团队精神,进一步加强了学生对基于体系结构软件开发过程的掌握。

5 结论

针对软件体系结构课程的特点和学生的状况,我们在教学内容、教学方式等方面进行改进,逐步形成以案例为导引、以学生为中心的教学模式,充分调动学生的学习积极性。通过本课程的学习,学生能够很好地掌握软件体系结构的理论、方法和技术,具备一定的基于体系结构软件开发能力。

摘要:在分析软件体系结构课程特点及面临的挑战的基础上,讨论了该课程的教学目的,提出了以学生为中心、基于案例的教学方法。教学实践证明提出的教学模式能够激发学生的学习兴趣,帮助学生更好地掌握本课程的理论和方法。

关键词:软件体系结构,软件案例,教学方法

参考文献

[1]Shaw M.Toward Higher Level Abstractions for Software Systems[J].Data&Knowledge Engineering.Netherland:Elsevier Science Pub-lishers B.V.1990,5(2):119-128.

[2]Bass L,Clements P,Kazman R.Software Architecture in Practice[M].New Jersey,second edition.USA:Addison Wesley,2003.

[3]Shaw M,Garlan D.Software Architecture:Perspectives on an Emerging Discipline[M].New York:Prentice Hall,1996.

[4]IEEE Recommended Practice for Architecture Description[J].IEEE Standard 1471,IEEE,2000.

[5]MnnistT,Savolainen J,Myllrniemi V.Teaching Software Architecture Design[C].Seventh Working IEEE/IFIP Conference on Soft-ware Architecture.Vancouver,BC,Canada.Feb 18-21,2008.117-124.

[6]张友生.软件体系结构[M].2版.北京:清华大学出版社,2006.

软件体系结构研究进展 篇10

在1968年,学者提出软件工程概念,到今日为止,软件工程已经有一套比较完整的理论、方法、表示语言和使用工具等,许多复杂的问题在这些理论、方法与技术下变得简单,但是因为软件变化速度快,复杂且不可见,使得软件开发空间大,学者们投入的精力也很多,软件质量也不能得到保证。大量实践统计表明:大系统软件开发中70%的错误是由需求和软件设计阶段引入的;错误出现的时间越早,在软件系统中存在的时间越长就越难发现,后期工作者们解决问题,纠正错误就越困难,为了保证软件的质量,一些软件研究专家提出在软件开发和设计中加入需求分析工程技术和各种软件建模技术,但是仍然无法将实际需求很好的表达在设计上,未解决这一问题,软件工程专家提出软件体系结构概念,解决需求与设计之间不衔接问题。

2 软件体系结构研究与未来发展方向

2.1 需求阶段的软件体系结构

软件体系结构被提出源自于人们的需求,需求工程重点关注如何刻画问题空间,软件体系结构是将需求变成现实,在需求阶段,工作人员的工作有两部分:一是结合软件体系结构的概念和描述手段在较高抽象层次刻画问题空间的软件需求;二是探讨如何从软件需求规约自动或半自动地变换到软件体系结构的模型。需求阶段的工作为软件提供追溯源,也提供一些技术操作方法,根据需求构建软件体系结构是工作人员还要考虑如何将需求模型转变为软件体系结构模型,和如何确保软件体系结构模型的可追溯性等,其中运用到的技术手段也不相同,常用到的方法有:Use Case图描述法、全局分析法

2.2 设计阶段的软件体系结构

设计阶段是软件体系结构研究中受关注时期最早,关注量最多的阶段,该阶段的主要工作有:软件体系结构模型的描述、软件体系结构模型的设计与分析方法、以及对软件体系结构设计经验的总结与复用等。关于软件体系结构,其主要包括构件和连接子两大主要部分,连接子的作用目前被概括为构件间信息传递与协调,转换数据格式,辅助交互等,保持构建之间信息传递正常、迅速。为保持信息正确传递,为软件体系结构制定了统一的描述语言,还有一种描述方法为多视图描述法,多视图表现出关注点分离的思想,将两种描述方式结合起来,增强人们对软件体系结构的理解,简化技术人员间的交流和系统检测。

2.3 实现阶段的软件体系结构

在软件体系结构发展早期,技术人员和专家关注的重点是较高层次的系统设计、描述和性质验证,忽略将设计转变成现实的过程,近些年,为了更好地将设计方案转变成现实,从两个方面下手,一方面是研究基于软件体系结构的开发过程支持技术和硬件设施,另一方面是寻找从软件体系结构投入应用的方法和体系检测方法。将设计出来的软件体系结构实现需要生成代码,常见的程序设计语言有C++和Java体系,将程序结构转变成代码,但是在细节处理上还存在问题。软件体系结构中可能出现结构失配情况,可能与构件、连接子相关,对其分别进行检测,对产品线体系结构、SOA的测试等。

2.4 部署阶段的软件体系结构

现在软件工程被分成多个分支,软件部署阶段与软件体系已经相互独立,但是此过程能为高层次的体系结构提供软硬件模型,提供多种资料以选择出合适的实施方式,保证软件体系结构的互联性。常见的部署方法是先将软件体系结构分成多个小系统,逐个部署到网络服务器上,最后通过检测部署方式是否合适,不合适需要重新部署,再重新部署时要对部署计划进行微调。我国有很多学者对该阶段进行研究,但是目前的部署方案还停留在定性方面,需要技术人员参与,没有实现自动生成部署计划和检测结果。

2.5 后开发阶段的软件体系结构

软件体系结构的后开发阶段主要包括维护、演化、复用等工作,软件体系结构研究初期,该结构表现为静态,但是经过调查发现,该体系为保证高效运行,其结构必须表现为动态性,变化表现为两种:一种是软件内部执行所导致的体系结构改变,另一种是软件系统外部的请求对软件进行的重配置。因为现在软件体系结构的开发是建立在以前软件的基础上,没有注意到体系结构不适用的情况,因此需要建立修复机制,但是目前在此上的研究还不成熟,因此在未来还需要投入更多的注意力。

3 结语

结构软件 篇11

【关键词】桥梁结构电算;软件应用为主;大众化教育;精英教育

随着计算机技术的飞速发展,桥梁结构专业商用分析软件大量呈现。也让土木工程专业《桥梁结构电算》课程的教学模式发生了翻天覆地的变化,在2000年以前,《桥梁结构电算》以结构分析程序编制为主要教学模式,在学习这门课程时,学生需要自己编制结构分析程序進行基本的桥梁结构分析计算;2000年以后,《桥梁结构电算》教学则以软件应用为主,不要求学生自己编制桥梁结构分析程序,而只需学会桥梁结构分析商业软件的应用即可,考核也以软件应用内容为主。这种转变到底是好是坏各有观点,下文作者从优、缺点两个方面谈谈自己对基于软件应用为主的《桥梁结构电算》教学评价。

1、教学优点

1)“教”变得容易

在以前的教学中,主要以编程为主,老师教学难度非常大,需要将数学、力学、专业课程和编程语言结合在一起讲解,转变成以软件应用为主的教学方式后,老师的“教”变得相对容易,甚至容易到不用备课都可以完成教学,结合现在的多媒体教学,只要电脑里边安装了软件,就可以直接打开软件进行教学。特别是对于以前从事过编程教学的老师,对软件内部运行机制非常熟悉,讲起来得心应手。

2)学习效果好

在以程序教学为主的《桥梁结构电算》教学时,因为涉及知识面广,很多学生感觉非常枯燥,常常开小差,后边连贯的内容就很难听懂,从而出现厌学的倾向。而学习软件应用则相反,很多学生充满了兴趣,特别是用软件进行实际桥梁结构建模的时候,直接与实际桥梁打交道,感觉软件非常神奇且非常有用,加之很多用人单位也要求学生掌握这些软件,因此学习的时候也多了几分激情,学习趣味极强,当然学习效果也非常好。

3)学时需求少

以编程为主的《桥梁结构电算》教学要求学时多,但软件教学的需求学时可以适当缩减,顺应全国缩减学时的大潮流,主要是因为软件应用为主的《桥梁结构电算》教学方式不需要去深入的讲解数学、力学以及编程相关的内容。当然,这些学时只能保证学生基本掌握软件应用,如果要熟练掌握软件的高级应用模块则仍然需要增加学时。

4)实战水平高

以编程为主的《桥梁结构电算》教学需要编制程序后才能进行结构分析,结构分析能力与编制的程序相关,编制的模块越多分析能力越强,并且不同类型的桥梁需要编制不同的计算分析模块;但以软件应用为主的《桥梁结构电算》则不同,软件已经具备完整的结构分析模块,基本上适用大部分桥梁甚至是各种桥梁的结构分析,学生只要学会应用就可以了,很多自学能力强的学生完全可以在软件使用手册的帮助下就完成桥梁结构建模和分析,因此,很多学生在学生阶段就开始协助设计院进行桥梁结构分析赚取生活补贴。

5)学习资料全

软件开发商为了推广自己的软件,撰写了非常详细的使用手册,并且还举办了大量的免费软件应用培训,同时录制了大量的软件操作视频置于网站,学生通过网络搜索就可以获得适合自己的学习资料,学习起来非常方便,极大的促进了学生操作软件的水平,并且软件版本也非常全面,甚至提供了学生版供高等院校进行教学使用。

2、教学缺点

1)教材利用率低

因为以软件应用为主的《桥梁结构电算》教学方式对软件依赖性非常强,不同学校采用的教学软件不同,并且软件本身的更新换代也非常快,基本上一年一个版本,如果软件更新频繁,相应的教材就得进行更改,降低了教材的利用率,增加了教材编著难度和频率。如果教材编著者不是教师本人,则给教学带来极大的麻烦,教材作者不更新教材,教师只能采用老版的教材讲授过时的教学内容,必将引起学生的不满,不利于学校的发展和学生的培养。

2)教学内容受限

虽然软件售价相对过去有所降低,但是学校无法给每个学生都购买正版商用版本软件,只能从开发商那儿拿到学生版的软件,但是学生版的软件很多关键功能被开发商屏蔽,很多关键模块无法正常使用,学生只能学到一些非常基本的模块,教学内容受到限值,无法适应将来工作的需要。同时,软件版本更新时,学生版的软件未必有核心的更新,导致学生无法掌握桥梁结构分析的前沿内容,亦不利于学生的培养。

3)属大众化教育

个人认为,以程序为主的《桥梁结构电算》教学方式是一种精英教育,只要掌握了这门课,学生的数学知识、专业水平和编程能力都得到了极强的锻炼,据我的统计只有大约40%的学生能够较好的掌握这门课程,他们专业能力强,能够自编或者修改别人的程序处理大型桥梁结构数据,工作效率高,并且在工作过程中编制出大量的桥梁专用小软件,提高了工作效率,也有利于自己个人的发展,他们的能力其他的学生无法复制,也很难通过相互学习进行弥补。

而以软件应用为主的《桥梁结构电算》教学方式则是一种大众化教育,学生学习起来比较轻松,大约80%的学生能够较好的掌握软件的使用,不熟悉编程,对软件编制机理则非常模糊。他们只会使用别人开发的软件进行桥梁结构计算,在计算结果处理上存在弱点,很可能得出错误的结论。这部分学生编程能力较弱,经常做重复工作,工作效率低,并且学生之间的水平差别不明显,只存在软件应用水平高与低的区别,并且可以通过相互学习弥补。

4)专业能力不足

以软件应用为主的《桥梁结构电算》教学模式培养出的学生对软件依赖性强,甚至离开软件就无法完成桥梁结构分析计算,对桥梁专业内容也不熟悉,因此,专业能力后劲不足,往往在单位很难得到重用。

综上所述,采用以软件为主的《桥梁结构电算》教学方式过于单一,不利于学生综合能力的培养,作者曾经尝试将两者结合起来进行教学,同时讲授程序和软件应用,受课时限值,很难将两者都讲清楚,很多学生觉得程序和软件都没有学好。当然,也有部分学生觉得编程能力有所提升,具备基本的软件应用能力。作者希望能够完美的将编程和软件应用结合起来,形成一种综合的教学模式,培养出更多能力出众的学生。

参考文献:

[1]周水兴、杜柏松等.桥梁结构电算[M].北京:人民交通出版社,2013.

[2]熊川武.反思性教学[M].上海:华东师范大学出版社,1999.

多核分组处理系统软件结构研究 篇12

互联网数据通道上大量的处理工作主要通过像路由器这样的分组处理系统来完成,如防火墙、NAT、Web交换机、IP追踪、用于高性能区域存储的TCP/IP卸载、媒体流化和加/解密等。这些功能在接入和边缘网络实现,随着互联网的不断发展,网络内部更加复杂的分组处理将会变得越来越必要。

多核分组处理不同于一般的多核应用系统(如多核OS)。首先,分组处理过程中,只有当分组属于同一条流时相互之间才有依赖关系而不同流的分组之间没有依赖关系其次多核处理单元之间的通信和同步开销,影响系统性能的一个重要因素。最后,分组的处理通常可以分为不同的阶段顺序进行,而这些阶段在各个处理单元上的分配(即,任务映射)将对系统的性能起着决定性的作用。

软件结构是构建高效系统的基础。传统软件结构的研究关注的重点在于系统功能的可扩展性和代码的重用等方面,如SOA。多核分组处理系统的软件结构不仅要关注功能的可扩展性,更关注性能的可扩展性,即如何保证分组处理系统的吞吐率随着处理单元的增加而线性或接近线性的增加。充分利用分组处理和多核处理器的特点设计高效的分组处理软件结构是开发多核分组处理系统所面临的主要挑战。

关于分组处理系统功能可扩展性方面的研究,已经有一些成熟的成果可以使用,Click[1]模块化路由器架构就是构建在通用处理器上的分组处理系统的典型结构。性能可扩展性方面的研究必须建立在恰当的系统结构上,不同的结构,决定了不同的解决思路和方法。本文将针对几种基本的分组处理系统结构,结合最新的多核网络处理器的特点进行详细的分析和讨论,并针对发现的问题提出了一些设计时需要注意的基本原则,以期对后续的相关研究提供一定参考。

本文接下来的安排如下:第2节介绍了多核网络处理器的模型;第3节对基本的多核分组处理系统结构进行了介绍和分析;第4节介绍了我们在Cavium CN 5860多核网络处理器上对第3节的分析的实验验证;第5节针对分析中发现的问题,介绍了一些相关的研究;第6节是对全文的总结和对未来工作的展望。

2 多核网络处理器模型

随着网络处理器技术的不断发展,目前的网络处理器大多采用共享内存对称多处理的多核架构,因此,指令存储空间不再受限制,如RMI的XLR系列处理器和Cavium的OCTEON系列处理器。这些网络处理器通常在一片芯片上集成多个处理核,所有的核共享内存和二级缓存,每个核有自己独立的一级缓存,包括指令缓存和数据缓存。此外,还有一些针对网络处理应用而优化的特殊指令集、协处理器和硬件加速单元。典型的多核网络处理器结构如图1所示。

尽管这些网络处理器不再有指令存储空间的限制,但是,其Cache的存储空间依然有限,一般为8K到将数据从内存加载到的时间开销对于高速分组处理而言依然不可忽略分组处理过程中,Cache丢失包括指令Cache的丢失和数据Cache的丢失。不防假定分组处理的指令存储空间连续,且大小为I字节,指令Cache的大小为LI字节。则对同一种应用的处理而言,在处理完第一个分组以后,因指令Cache丢失而导致的停顿周期χ仅与I有关。根据文献[2]的分析,在采用最优指令Cache替换策略的情况下:

式(1)中,η表示从内存加载一字节数据到Cache的平均周期开销。

由于对于分组处理而言,每一个分组都不相同,因此,分组数据Cache的丢失不可避免。但是对分组处理的各个阶段,所需要的配置数据相对固定,因此,配置数据存储空间的大小和范围会影响数据Cache的命中率,不妨假定分组处理过程中的配置数据储空空间为D,处理的分组长度为P字节,数据Cache的大小为LD,数据Cache丢失导致的停顿周期为

3 基本软件结构分析

一般而言,多核分组处理系统主要包括三种基本的结构:全并行结构、全串行结构和混合结构,如图2所示。由于处理阶段间没有核间通信和同步的开销,全并行结构比其他结构的系统吞吐率高,但是很少有相关文献在这方面给出完整的说明和详细的讨论,特别是结合多核处理器的特点进行分析。文献[4]对多核服务器内的分组处理结构进行了简单的分析和测试,测试的结果表明,系统采用全并行结构的吞吐率比采用混合结构高2倍以上。事实上,我们认为,造成性能差异大的根本原因,不是两种结构的差异,而是在混合结构下,没有做到阶段间负载的均衡。

图2中灰色圆圈代表分组处理的各个阶段,方框和圆圈分别代表网络处理器的处理单元、分组输入单元和分组输出单元。

由于全串行结构容易造成资源的浪费,实际的设计中很少使用,而且全串行结构也可以看做是混合结构的一种特例,因此本文仅讨论全并行结构和混合结构的相关问题。

3.1 全并行结构

全并行结构如图2(a)所示。设每条指令的平均执行周期数为-k。分组处理过程中,处理阶段i所需的指令数为φi,则每个分组的处理的周期开销为

进一步,假定系统中处理单元的数量为N,每个处理单元的处理能力为ΥHz,则系统的最大吞吐率为

从(4)式可以看出,当I LI,D LD,时,系统的吞吐率最大;反之,则I和D越大,系统的吞吐率随之下降。

3.2 混合结构

混合结构如图2(c)所示。混合结构下,各个阶段的处理开销与并行结构类似。同时考虑通信和同步的开销,设为τi,则阶段i的处理开销为

其中,Ii为阶段i的指令存储空间大小,Di为阶段i的配置数据存储空间大小,Pi为阶段i处理的分组长度,且通常满足以下关系:n i=∑1Pi P≈n i=∑1Di D≈n i=∑1Ii I≈Ni·Υ设Ni为分配给阶段i的处理单元的数量,则各个阶段的吞吐率为θi=,分组处理的总开销为φi nφs=∑φi。i=1串行系统下,系统的吞吐率取决于各个处理阶段中吞吐率最低的阶段,即:θs=min(θ1,θ2,…,θn)(6)N1·ΥN2·Υ,Nn·Υ,…,=min(N2·Υ)φ1=…=φ2Nn·Υφn N1·Υφ1不难证明,当且仅当时,θs取最大值:=φ2θs,max=φn N·ΥN1·Υφ1==n i=∑1φi(7)N·Υn ni=∑1φi·k+∑(χI(Ii)+χD(Di,Pi)+τi)i=1如果,i,1 i n,IiLI,DiLD,则,N·Υθs,max=(8)n n ni=∑1φi·k+∑τi+∑η·Pi i=1i=1根据公式(3)和(4),不难得到以下不等式:n n i=∑1χI(Ii)χI(i=∑1Ii),等式成立当且仅当I LI n n i=∑1χD(Di)χD(i=∑1Di),等式成立当且仅当D LD考察式和式我们可以得到不等式

式(9)说明,当分组处理应用比较复杂时,只要能够平衡各个阶段的资源分配,使用混合结构不但不会导致系统吞吐率急剧下降,反而有可能获得比并行结构更好的性能。因此,我们可以得出多核分组处理系统采用混合结构时的设计原则:

(1)各个阶段在处理单元上的分布应该考虑Cache命中率的影响。

(2)阶段分配到处理单元的过程中,应当遵循尽量减少核间通信开销的原则。即,只要相邻的多个处理阶段放到同一个处理单元上不比放到多个处理单元上的Cache命中率差,就应将其放到同一个处理单元上,以减少核间通信和同步的开销。

(3)用串行结构,各个分组处理阶段的资源的分配要尽量与其处理负载相当,避免出现瓶颈。

4 实验验证

4.1 实验设置

尽管在以上分析中,对Cache替换的机制进行了最优化的假定,但是这并不妨碍分析结果的普遍适用性。我们将在Cavium的CN 5860网络处理器上进行实验验证。CN 5860网络处理器拥有16个MIPS核,每个核的工作频率为750MHz,16个核共享2MB的二级缓存,每个核拥有32KB的指令缓存和16KB的数据缓存。CN 5860的Cache替换机制采用4路关联,LRU替换机制,因此,即便在指令空间小于32KB时,其指令Cache命中率也未必是100%。

实验中,我们对分组进行全加密处理,将整个处理操作分为:输入、处理和输出三个阶段。其中输入阶段主要完成加密配置数据查找操作,处理阶段完成分组头部替换和载荷加密操作,输出阶段完成IP头部校验和计算和输出。我们分别对以下四种情况的分组处理延迟和Cache丢失造成的停顿进行了测量:

(1)三个阶段处于一个核上,即,并行结构;

(2)输入阶段处于一个核上,后两个阶段处于另一个核上;

(3)前两个阶段处于一个核上,输出阶段处于另一个核上;

(4)三个阶段分别处于不同的核上。

在实验中测量Cache丢失导致的停顿的方法是:通过读取处理器寄存器记录的丢失次数,根据内存带宽换算成停顿周期。

4.2 实验结果

图3是测得的分组处理延迟情况,图4是测得的Cache丢失导致的处理停顿周期。

从实验结果我们可以看出,一方面串行结构的分组处理延迟并没有比并行结构的分组处理延迟增加很多;另一方面,由于并行结构的Cache命中率不稳定,导致分组处理延迟出现较大的波动;最后,我们发现,采用(b)方案,Cache命中率比较稳定且维持在较低水平,分组处理延迟也接近最低水平且比较稳定。总的看来采用方案比采用方案更优越这就证明了我们前面的分析是合符实际情况的

5 相关研究

不少研究人员对多核分组处理系统的任务映射机制进行了研究,采用的方法包括动态自适应的方法[5,6,8]和随机映射[7,10]的方法乃至遗传算法[11]。文献[5]针对IntelIXP系列网络处理器代码存储空间有限的特点,提出了基于分组到达、离开速率动态为各个处理阶段分配处理单元的算法。但是一方面该算法仅针对代码存储空间有限的问题另一方面该算法也没有充分考虑各个处理阶段负载的均衡性文献基于Click分组处理模型,针对任务受限的情况下,提出了基于贪婪分配策略的动态任务复制算法和UDFS任务映射算法。文献[8]通过对每个处理阶段的队列长度的测量,动态的为每个处理阶段分配或者回收处理资源,以达到在满足分组处理延迟边界的情况下,系统的功耗最低。总之,类似的针对多核分组处理系统的任务映射机制的研究很多。他们分别提出了不同的映射机制和算法来改善混合结构所面临的处理核负载不均衡的问题。尽管他们的研究主要针对指令存储空间有限的多核网络处理器,如IntelIXP系列网络处理器,但是他们的研究成果对于其他网络处理器上的任务映射也有一定的借鉴意义。

此外,有大量的研究文献[12,13]对多核处理器上的一般任务分配问题提出了不同的启发式算法,特别是遗传算法。这些问题同分组处理系统上的任务分配和调度问题有些相似,但是也不等同。主要的区别在于,分组处理系统上,需要考虑的任务的负载是时变的,并且还需要考虑Cache命中率,通信和同步开销,以及任务间负载的均衡问题。因此,这些方法可以借鉴,但是不能直接使用。

6 结论和展望

虽然并行结构具有简单和通信开销小的优点。一方面在一些指令存储空间有限的多核处理器上,如IntelIXP系列处理器,当代码空间超出限制时,必须将分组处理的任务分布到不同的核上。另一方面,为了对分组处理进行有效的QoS控制和调度,采用混合结构也是一种比较直观和简单的方法。而事实上,我们前面的分析和实验也证明了,采用混合结构未必就比并行结构性能差。因此,客观条件和实际需求决定了现实中的大多数分组处理系统都采用了混合结构。

混合结构必需要解决两个问题:一是在已经划分好分组处理阶段的前提下,如何给各个处理阶段分配合理的处理资源,以保证各个阶段的处理能力与处理负载的适配;二是如何将这些处理阶段分布到不同的处理单元上,即任务映射问题。当处理变得复杂,而流量又不断变化的时候,这些问题的解决将变得更加困难。结合分组处理和多核处理器的特点,包括核间通信和同步开销、Cache命中率等,借助合适的启发式算法设计出有效的任务映射算法能将是我们未来工作的主要方向

参考文献

[1]E.Kohler,R.Morris,B.Chen,J.Jannotti and M.F.Kaashoek.The Click modular router.ACM Transactions on Computer Sys-tems18,3(Aug.2000),263-297

[2]A.Raghunath,V.Balakrishnan,A.Kunze,and E.Johnson.Framework for Supporting Multi-Service Edge Packet Processing on Network Processors.In ANCS’05.

[3]Q.Wu,and T.Wolf.On runtime management in multi-core packet processing systems.In Proc.of ACM/IEEE Symposium on Ar-chitectures for Networking and Communication Systems(ANCS)(San Jose,CA,Nov.2008).

[4]T.Wolf,N.Weng,and C.-H.Tai.Run-time support for multi-core packet processing systems.IEEE Network,21.(4),July2007,29-37

[5]R.Kokku,U.Shevade,N.Shah,H.Vin,and M.Dahlin.Adaptive Processor Allocation in Packet Processing Systems.Technical report,University of Texas at Austin TR-04-04,2004.

[6]J.E.Smith,J.R.Goodman.Astudy of instruction cache organizations and replacement policies.Tenth Annual Symposium on Com-puter Architecture,June1983.

[7]N.Weng,T.Wolf.Analytic Modeling of Network Processors for Parallel Workload Mapping.ACM Trans.Embedded Comp.Sys.(TECS),418(3),Apr.2009,Vol Article18.

[8]L.Noonan,C.Flanagan.An effective network processor design framework:using multi-objective evolutionary algorithms and ob-ject oriented techniques to optimise the intel IXP1200network processor.In Proc.of the2006ACM/IEEE symposium on Architec-ture for networking and communications systems(ANCS),San Jose,California,USA,2006,P.103-112

[9]R.Hwang,M.Gen,H.Katayama.A comparison of multiprocessor task scheduling algorithms with communication costs.Comput.Oper.Res.35,976-993(2008).doi:10.1016/j.cor.2006.05.013

上一篇:血流频谱下一篇:英文录入