复用计算

2024-10-19

复用计算(精选10篇)

复用计算 篇1

1 肝脏的三维重建及纹理绘制

虚拟手术是当今的研究热点领域,随着计算机图形处理能力的不断提高,具有高精度和真实感的人体器官虚拟手术也取得了很大的进步。为构建好的肝脏体添加纹理能很大程度上提高真实感体验,对于虚拟手术平台的搭建有着重要意义。目前虚拟手术存在的主要关键点在于肝脏体的三维重建、体纹理的生成,以及手术过程中的切割显示和碰撞仿真。肝脏的三维重建以及体纹理的绘制将提供给使用者一个直观的手术环境,是研究的重点内容。翟朝亮在切割显示以及软组织碰撞变形仿真方面做了大量工作[1,2],本文在其研究基础上,利用其已经取得的成果,把重点放在肝脏体的三维重建以及软组织体纹理的合成,力求提高肝脏软组织体纹理合成的效率和质量。

体纹理的绘制一直是虚拟手术中的关键环节,目前构建三维体纹理模型的主要方法有三种:过程纹理、实时的二维纹理映射以及基于样本的三维体纹理合成。邹昆[3]等提出一种基于样图的层式体纹理合成算法,采用基于全局优化的合成框架,在预处理中生成反映样图深度方向上特征差异的特征分布图,合成时考虑3个正交方向上的邻域相似性,并利用K相关性搜索进行迭代优化,具有较高的合成质量和较快的收敛速度。严志程[4]等提出一种考虑方向场的体纹理合成新方法,在二维纹理样本中搜索邻域,采用邻域匹配逐个合成体素;在匹配二维纹理样本像素邻域和体素邻域时,考虑各体素上的方向,生成各向异性体纹理,并允许采用各向异性的二维纹理样本获得满意的合成结果,其主要缺点在于缺乏合适的加速算法,且不能满足合成更大尺寸体纹理的要求。翟朝亮[1]提出一种基于重叠体纹理贴图的方法,能够生成一些常见的三维物体纹理。其缺点在于处理结构较为复杂,四面体数目较多的模型时,计算量非常大,贴图时间很长。本文针对以上问题,提出一种基于复用计算的肝脏软组织体纹理合成方法,在合成肝脏体纹理时复用之前已合成好的部分,可以提高合成的效率与质量。技术路线图如图1所示。

2 预处理工作

2.1 肝脏的结构与纹理分析

肝小叶是肝脏的基本单元,肝小叶的立体形态一般呈六角形棱柱体,长约2 mm,宽0.1 mm,其中以中央静脉横穿长轴。本文在构建肝脏基本模型时,由于肝脏软组织纹理是研究的重点,所以只考虑肝脏体的基本构造,而忽略肝小叶和血管的组成。而肝脏的纹理具有随机特征,区域分布均匀,没有明显的周期性和结构性。Markov随机场模型认为图像中每一像素值只与其邻域像素的取值有关,通过像素的概率密度函数来定义纹理分布。因此采用Markov模型可以比较好地反映肝脏纹理的随机特性。

2.2 肝脏体的构建

对于肝脏体的构建,首先在3ds max里建立肝脏体的原型,目标是获得逼真的肝脏体模型,导出后缀为obj的模型文件,模型具有网格结构,如图2所示。由于只有表面网格构造,无法满足内部结构的显示以及后续复用工作的需要,所以先利用3D Object Conveter这款3D模型转换工具,将obj文件转换为ply文件,再导入TetGen库,该库是德国Weierstrass实验室开发的一个开源项目,可以将表面网格模型转换为四面体网格模型。四面体网格模型以ele文件和node文件形式保存。ele文件包含各个四面体四个连接顶点的索引信息,node文件则包含了各顶点的位置信息。本文构建的肝脏四面体模型总共有61 014个四面体,14 633个顶点。

2.3 体纹理的生成

在传统计算机图形学中,纹理是一种数据采样资源,一般为二维形式,通过纹理映射可以把二维纹理与三维表面的点相对应。而体纹理则是定义在三维空间,以体素为基本单元。体纹理可以很好地反映物体内部结构信息,非常适合用于虚拟肝脏手术这种需要观察物体内部结构并且对精度要求较高的场合。本文采用基于样本的体纹理合成方法,所以需要合成一个样本体纹理块。首先需要一个具有比较高精度的数据源,本文选用美国数字化可视人体数据集,其来源于美国国立医学图书馆的“可视人体计划(VHP)”,选用里面的180张彩色肝脏切片图作为数据源,其尺寸为600×630,如图3a所示。接着要对切片图进行分割提取,分离出肝脏体部分,排除其他的组织器官。在轮廓分割方法上,采用opencv编程实现,首先人工在图片上指定几个关键点,接着对几个关键点做Bezier曲线拟合,使得曲线更加光滑,如图3b所示。Bezier曲线是一种应用于二维坐标的数学曲线,它通过控制曲线上的四个点(起始点、终止点以及两个相互分离的中间点)来创造、编辑图形,随着点有规律地移动,曲线将产生皮筋伸引一样的变换,带来视觉上的冲击。分割的目标在于尽可能多地包含肝脏区域部分,尽可能少地包含其他区域部分。分割好肝脏图像后,参考文献[1]的做法,以分割图像为模版,分别在体纹理坐标的x轴和z轴方向上扩展,即先左右排列,再前后排列。其中相交的点的像素值则取平均值。这样构建的好处在于使得肝脏表面的纹理同内部纹理有所不同,增加肝脏纹理的多样性,更贴近现实中的肝脏纹理。体纹理以.vol文件形式保存,其头文件信息包含了版本号(version)、纹理数组(texName[])、纹理块尺寸(volSize)、通道数(numChannels)、每个通道位数(bytesPerChannel)等信息,如图3c所示。

3 基于复用计算的肝脏软组织体纹理合成

合成肝脏软组织体纹理是本文的主要研究内容。基于样图的纹理合成技术由于可以克服传统纹理映射方法的缺点,又避免了过程纹理合成调整参数的繁琐,目前发展很快。2001年的SIGGRAPH会议上,Efros提出一种基于块拼贴的纹理合成算法[5],通过查找误差最小路径实现各匹配块的拼贴,对一些常见纹理取得了比较好的效果,该方法影响了后期许多的研究[6,7]。总结来说,合成的基本单元可以是像素点或者像素块,基于像素点的合成利于保持纹理的局部特性,但对全局特征的把握不好,并且合成的速度比较慢。基于像素块的合成能够保持纹理的全局特征,并且合成速度提高很多,但是在块与块之间的衔接拼合上会有过渡不自然的现象。邻域的形状可以是正方形[5]或者L形[6]。目前,大多数的纹理合成方法都采用Markov模型,即纹理中任一位置的色彩只由其局部有限邻域的情况决定。而邻域搜索的效率往往是决定纹理合成效率的一个关键因素,邻域搜索由于要在样本里逐点或者逐块搜索,计算量比较大。对于肝脏体纹理合成,本文构建的肝脏体模型总共有61 014个四面体,数据量非常大,因此本文考虑采用复用计算的方法,进行基于像素块的纹理合成,复用计算适用于大尺寸的纹理合成,比较适合合成肝脏纹理这样数据量较大的场合。此外,复用计算适合合成结构性不强的纹理类型,肝脏软组织纹理属于结构性不强的纹理。本文参考了陈昕提出的二维平面的复用合成方法[8],并将其扩展至三维空间,只在合成初始区域时采用邻域搜索匹配像素块,而合成剩余区域时则复用之前的结果,以减少计算量,提高合成的效率。

3.1 初始区域的合成

算法首先合成一个初始区域,因为邻域搜索是合成计算中系统开销最大的部分,很大程度上决定了合成的速度和效率。所以本文只在合成初始区域时采用邻域搜索,而在后期合成剩余区域时则复用已合成的部分,以达到节省系统开销的目的。具体实现上,参考文献[9]的做法,先在样本体纹理块中按照块体积大小做均匀的划分,即所谓同“相位”纹理间隔排布,然后针对每个纹理块,在样本纹理块中进行邻域搜索,求出可与其拼接的纹理块的集合,匹配原则采用颜色差值的距离公式,分别计算RGB颜色的差值再取平方和的距离公式

式中:S(x,y)为颜色距离;Rx和Ry分别为两点的红色分量;Gx和Gy分别为两点的绿色分量;Bx和By分别为两点的蓝色分量。搜索出满足S(x,y)最小的前n个纹理块放入集合中,n的取值可自由调整,一般取8。接着把纹理块填入初始区域,按照xyz三个方向都间隔一个纹理块尺寸的原则进行排布,在对间隔的空白区域进行填充时,根据文献[9]的讨论,则根据当前空白区域周围分布的纹理块情况,从各自的拼接纹理块集合中进行集合的求交计算,在交集中随机选择一个纹理块。如果交集为空,则选择在各集合中出现次数最多的纹理块。

此外,为了增加纹理的随机性,本文采用一种类似文献[7]提出的经典方法,对于当前待合成空白区域,则其左边的已合成块的拼接块集合中的所有块往右位移一个单位,其他方向上的相邻纹理块也根据位置关系做类似的操作,最后再做集合的求交计算。由于均匀布块与空白区域填充可以并行进行,所以该方法可以提高合成的速度,如图4所示。对于纹理块尺寸大小和重叠区域体积的确定,文献[10]作了深入研究。主要思想是考察不同尺寸下纹理块对于样本纹理块的全局特征以及周期性的反映程度。由于肝脏纹理没有明显的周期性,本文只考察对于全局特征的反映程度。文献[10]针对黑白图像主要考察其灰度直方图,由于本文的数据源是彩色图像,所以将计算转换至RGB颜色空间,通过颜色差值来考察该尺寸下纹理块对样本全局特征的反映程度。所选纹理块尺寸不能太大,否则可匹配的纹理块数目太少,尺寸也不能太小,否则无法反映纹理的全局特征。实现上选取样本纹理体积1/4的纹理块作为划分依据。而重叠区域体积的确定,文献[10]主要考察特定宽度下对于相邻两个纹理块的区分程度,对于肝脏这种随机性比较强的纹理,不同尺寸下这种差异并不大,因此本文选取固定的重叠体积进行计算,对实验结果影响并不大。

3.2 剩余区域合成

在合成剩余部分区域时,则采用复用计算,从已合成的区域中选取合适的纹理块,填充到剩余的待合成区域。参考文献[8]的方法,将其扩展至三维空间。逐步扩大合成纹理块体积,迭代完成整个纹理合成过程。合成剩余区域时,重新计算合成纹理块的尺寸,在已合成区域选择纹理块进行填充。具体实现上,采用成倍增长的方式,每次合成时,将新的纹理块尺寸设置为已合成区域长宽高的各一半,即体积为已合成区域的1/8,当已合成区域长宽高都扩大一倍后,当前区域将被设置为新的已合成区域,并且重新计算合成纹理块的尺寸,开始新一轮的复用操作,进行下一步的合成。这种方式可以有效减小合成纹理块的数目,同时又可以利用已有的合成结果,对于提高合成速度与效率很有帮助。由于本文已经预先对纹理块尺寸做了计算,能够反映样本的全局特性,并且在初始阶段按照相位原则进行了排布,所以在复用选块操作时,只要按照相位标准随机选择块位置即可。

3.3 重叠区域缝合

在重叠区域像素的缝合上,采用类似“羽化”的缝合方法[10],即对重叠区域像素根据其到边界的距离做色彩的插值计算。公式为

C=CA*LA+CB*LB(2)

式中:C为融合计算后的色彩值;CA和CB分别表示区域A和区域B中相应位置的像素值;LA和LB为距离参数,和当前待合成像素到A区域边界及B区域边界距离有关。“羽化”的方法方便快捷,可以保持衔接的部分虚化,起到渐变的作用,从而达到自然衔接的效果。

3.4 边缘像素的处理

最后一步是处理边缘像素,在处理边缘像素时,先判断当前待合成的纹理块是否大部分处于边界外部,若在边界外部的比例小于给定的阈值,则保留该块在内部的部分,舍弃在外部的部分,若在边界外部的比例大于给定的阈值,则舍弃该块,用“羽化”方法合成剩余部分,在这里CB和LB失去意义将其舍去,设K为边界邻近的已合成块,则CA为K的边界像素值,C则与当前待合成像素到K边界的距离LA有关。公式更改为C=CA*LA。实现中,取阈值为30%,可以比较好地判断边界分布情况。

由于切割不是本文研究的主要内容,采用了翟朝亮的切割算法[1]实现对肝脏体的切割。

4 实验及结果分析

利用Visual C++和OpenGL在PC机上实现了上述算法,PC机的配置为Core 2 Duo E4700 2.6 GHz的CPU,2 Gbyte的RAM,NVIDIA GeForce GT 430显卡。所得到的肝脏效果图如图5所示。

本文方法在合成纹理上时间消耗较小,内存占用不大,可以满足虚拟手术显示的要求,统计信息见表1。

5 小结

本文提出一种合成肝脏软组织体纹理的方法,把二维的复用计算方法扩展到三维,只在初始区域进行邻域搜索,而在合成剩余区域则迭代利用之前的结果。实验结果表明该方法能够很大程度上提高合成效率,在虚拟手术实时可视化方面有一定的应用价值。

摘要:虚拟肝脏手术是虚拟手术中的重要内容之一。提出了一种虚拟肝脏建模和体纹理合成方法,通过对肝脏切片数据集的预处理,样条拟合构建虚拟肝脏模型,将基于复用计算的纹理合成扩展到三维空间,应用到构建好的肝脏体上。结果表明,该方法构建的肝脏体能够较好地模拟真实的肝脏结构,绘制的肝脏软组织体纹理具有较好的合成效率和质量,对后续虚拟肝脏手术个性化研究具有一定指导意义。

关键词:虚拟手术,体纹理合成,肝脏,复用计算

参考文献

[1]翟朝亮,陈国栋,王娜,等.基于体纹理的肝脏可视化仿真方法研究[J].电视技术,2012,36(17):169-172.

[2]阎丽霞,洪津津,石教英.虚拟手术中的模型实时绘制[J].计算机工程与应用,2001,37(7):8-10.

[3]邹昆,沃焱,张见威.基于样图的层式体纹理合成算法[J].计算机工程,2012,38(15):208-210.

[4]严志程,陈为.基于二维纹理样本的方向场引导的体纹理合成[J].计算机辅助设计与图形学学报,2008,20(9):1104-1109.

[5]EFROS A,FREEMAN W.Image quilting for texture synthesis and transfer[C]//Proc.the 28th Annual Conference on Computer Graphics and Interactive Techniques.[S.l.]:ACM Press,2001:341-346.

[6]WEI L,LEVOY M.Fast texture synthesis using tree-structured vector quantization[C]//Proc.the 27th Annual Conference on Computer Graphics and Interactive Techniques.[S.l.]:ACM Press,2000:479-488.

[7]ASHIKHMIN M.Synthesizing natural textures[C]//Proc.the2001 Symposium on Interactive 3D Graphics.[S.l.]:ACM Press,2001:217-226.

[8]陈昕,王文成.基于复用计算的大纹理实时合成[J].计算机学报,2010,33(4):768-775.

[9]陈昕,王文成.大尺寸纹理的实时合成[J].软件学报,2009(20):193-201.

[10]LIANG L,LIU C,XU Y,et al.Real-time texture synthesis by patchbased sampling[J].ACM Transactions on Graphics(ToG),2001,20(3):127-150.

正交频分复用技术 篇2

1 引言

近些年来,以正交频分复用(OFDM)为代表的多载波传输技术受到了人们的广泛关注。多载波传输把数据流分解为若干个独立的子比特流,每个子数据流将具有低得多的比特速率。用这样低比特率形成的低速率多状态符号去调制相应的子载波,就构成了多个低速率符号并行发送的传输系统。OFDM是多载波传输方案的实现方式之一,在许多文献中,OFDM也被称为离散多音(DMT)调制。OFDM利用逆快速傅立叶变换(IFFT)和快速傅立叶变换(FFT)来分别实现调制和解调,是实现复杂度最低、应用最广的一种多载波传输方案。除了OFDM方式之外,人们还提出了许多其他的实现多载波调制的方式,如矢量变换方式、基于小波变换的离散小波多音频调制(DWMT)方式等,但这些方式与OFDM相比,实现复杂度相对较高,因而在实际系统中很少采用。

OFDM的思想最早可以追溯到20世纪50年代末期。60年代,人们对多载波调制作了许多理论上的工作,论证了在存在符号间干扰的带限信道上采用多载波调制可以优化系统的传输性能;1970年1月有关OFDM的专利被首次公开发表;1971年,Weinstein和Ebert在IEEE杂志上发表了用离散傅立叶变换实现多载波调制的方法;80年代,人们对多载波调制在高速调制解调器、数字移动通信等领域中的应用进行了较为深入的研究,但是由于当时技术条件的限制,多载波调制没有得到广泛的应用;90年代,由于数字信号处理技术和大规模集成电路技术的进步,OFDM技术在高速数据传输领域受到了人们的广泛关注。今天, OFDM已经在欧洲的数字音视频广播(如DAB和DVB)、欧洲和北美的高速无线局域网系统(如HIPERLAN2、IEEE 802.11a)、以及高比特率数字用户线(如ADSL、VDSL)中得到了广泛的应用。目前,人们正在考虑在基于IEEE 802.16标准的无线城域网、基于IEEE 802.15标准的个人信息网以及未来的下一代无线蜂窝移动通信系统中使用OFDM技术。

OFDM技术得到广泛应用的主要原因在于:

(1)OFDM可以有效地对抗多径传播所造成的符号间干扰,其实现复杂度比采用均衡器的单载波系统小很多。

(2)在变化相对较慢的信道上,OFDM系统可以根据每个子载波的信噪比来优化分配每个子载波上传送的信息比特,从而大大提高系统传输信息的容量。

(3)OFDM系统可以有效对抗窄带干扰,因为这种干扰仅仅影响OFDM系统的一小部分子载波。

(4)在广播应用中,利用OFDM系统可实现有吸引力的单频网络。

与传统的单载波传输系统相比,OFDM的主要缺点在于:

(1)OFDM对于载波频率偏移和定时误差的敏感程度比单载波系统要高。

(2)OFDM系统中的信号存在较高的峰值平均功率比(PAR)使得它对放大器的线性要求很高。

2 正交频分复用的基本原理

2.1 系统的调制和解调

每个OFDM符号是多个经过调制的子载波信号之和,其中每个子载波的调制方式可以选择相移键控(PSK)或者正交幅度调制(QAM)。如果用N表示子信道的个数,T表示OFDM符号的宽度,dI(i=0,1,…,N-1)是分配给每个子信道的数据符号,fc是载波频率,则从t=ts开始的OFDM符号可以表示为:

其中式(2)的实部和虚部分别对应于OFDM符号的同相和正交分量,在实际中可以分别与相应子载波的cos分量和sin分量相乘,构成最终的子信道信号和合成的OFDM符号。图1给出了OFDM系统调制和解调的框图,图中假定ts=0。

在图2中给出了一个OFDM符号内包括4个子载波的实例。其中所有的子载波都具有相同的幅值和相位,但在实际应用中,根据数据符号的调制方式,每个子载波的幅值和相位都可能是不同的。从图2可以看到,每个子载波在一个OFDM符号周期内都包含整数倍的周期,而且各个相邻子载波之间相差1个周期。由图2可以看出,各子载波信号之间满足正交性。这种正交性还可以从频域角度理解。

图3给出了OFDM符号中各个子载波信号的频谱图。从图中可以看出,在每一子载波频率的最大值处,所有其他子信道的频谱值恰好为零。也就是说,OFDM各子载波信号之间的正交性避免了子信道间干扰(ICI)的出现。

接收端第k路子载波信号的解调过程为:将接收信号与第k路的解调载波

相乘,然后将得到的结果在OFDM符号的持续时间T内进行积分,即可获得相应的发送信号。

实际上,式(2)中定义的OFDM复等效基带信号可以采用离散逆傅立叶变换(IDFT)来实现。令式(2)中的ts=0,t=kT/N(k=0,1,…,N-1),则可以得到:

d^k

式(3)中,s(k)即为di的IDFT运算。在接收端,为了恢复出原始的数据符号dI,可以对s(k)进行DFT变换,得到:

根据上述分析可以看到,OFDM系统的调制和解调可以分别由IDFT/DFT来代替。通过N点IDFT运算,把频域数据符号dI变换为时域数据符号s(k),经过载波调制之后,发送到信道中。在接收端,将接收信号进行相干解调,然后将基带信号进行N点DFT运算,即可获得发送的数据符号dI

在OFDM系统的实际应用中,可以采用更加方便快捷的快速傅立叶变换(FFT/IFFT)来实现调制和解调。N点IDFT运算需要实施N2次的复数乘法,而IFFT可以显著地降低运算的复杂度。对于常用的基2 IFFT算法来说,其复数乘法的次数仅为(N/2)log2(N),而采用基4 IFFT算法来实施傅立叶变换,其复数乘法的数量仅为(3/8)N(log2N-2)。

2.2 保护间隔和循环前缀

在OFDM系统中,为了最大限度地消除符号间干扰,在每个OFDM符号之间要插入保护间隔,该保护间隔长度Tg一般要大于无线信道的最大时延扩展,这样一个符号的多径分量就不会对下一个符号造成干扰。在这段保护间隔内,可以不插入任何信号,即保护间隔是一段空闲的传输时段。然而在这种情况中,由于多径传播的影响,会产生信道间干扰(ICI),即子载波之间的正交性遭到破坏,使不同的子载波之间产生干扰。为了消除由于多径传播造成的ICI,我们将原来宽度为T的OFDM符号进行周期扩展,用扩展信号来填充保护间隔,如图4所示。我们将保护间隔内的信号称为循环前缀(Cyclic prefix)。由图4可以看出,循环前缀中的信号与OFDM符号尾部宽度为Tg的部分相同。在实际系统中,OFDM符号在送入信道之前,首先要加入循环前缀,然后送入信道进行传送。在接收端,首先将接收符号开始的宽度为Tg的部分丢弃,将剩余的宽度为T的部分进行傅立叶变换,然后进行解调。 通过在OFDM符号内加入循环前缀可以保证在FFT周期内,OFDM符号的延时副本内所包含的波形的周期个数是整数。这样,时延小于保护间隔Tg的时延信号就不会在解调的过程中产生ICI。

2.3 加窗技术

由式(1)或式(2)所定义的OFDM信号存在的缺点是功率谱的带外衰减速度不够快。虽然随着子载波数量的增加,OFDM信号功率谱的带外衰减速度会加快,但是即使在256个子载波的情况中,其-40 dB带宽仍然是-3 dB带宽的4倍。

为了加快OFDM信号功率谱带外部分的下降速度,可以对每个OFDM符号进行加窗处理,使符号周期边缘的幅度值逐渐过渡到零。经常被采用的窗函数是式(5)定义的升余弦窗:

其中,Ts表示加窗前的符号长度,而加窗后符号的长度应该为(1+β)Ts,从而允许在相邻符号之间存在有相互覆盖的区域。经过加窗处理的OFDM符号如图5所示。

在实际系统中,经过加窗的OFDM符号的产生过程为:首先,在Nc个经过数字调制的符号后面补零,构成N个输入样值序列,然后进行IFFT运算;将IFFT输出的最后Tprefix个样值插入到OFDM符号的最前面,将IFFT输出的最前面Tpostfix个样值插入到OFDM符号的最后面;接下来,将OFDM符号与式(5)定义的升余弦窗函数w(t)时域相乘;最后将经过加窗的OFDM符号延时Ts,与前一个经过加窗的OFDM符号相加。由图5可见,由于加窗的影响,相邻的两个OFDM符号之间会存在宽带为βTs的重叠区,其中β为升余弦窗的滚降因子。

采用了升余弦窗函数之后,可以显著提高OFDM符号功率谱带外部分的下降速度。例如,对于64个子载波的OFDM符号,加入β=0.025的升余弦窗,此时滚降区域虽然仅占符号间隔的2.5%,但却可以使-40 dB带宽减小为未加窗时的一半。需要注意的是,β值的选择要适当,选择大的β值虽然可以大大改善OFDM符号的频带效率,但同时也会降低OFDM符号对时延扩展的容忍程度。

2.4 参数选择

在OFDM系统中,我们需要确定以下参数:符号周期、保护间隔、子载波的数量。这些参数的选择取决于给定信道的带宽、时延扩展以及所要求的信息传输速率。OFDM系统的各参数一般按照以下步骤来确定:

(1)确定保护间隔

根据经验,我们一般选择保护间隔的时间长度为时延扩展均方根值的2到4倍。

(2)选择符号周期

考虑到保护间隔所带来的信息传输效率的损失和系统的实现复杂度以及系统的峰值平均功率比等因素,在实际系统中,一般选择符号周期长度是保护间隔长度的5倍。

(3)确定子载波的数量

子载波数可直接利用-3 dB带宽除以子载波间隔(即去掉保护间隔之后的符号周期的倒数)得到。或者可以利用所要求的比特速率除以每个子信道中的比特速率来确定子载波的数量。

2.5 收发信机结构

OFDM系统收发信机的典型结构如图6所示。图6的上半部分是发送机的框图,下半部分是接收机的框图。因为IFFT和FFT的运算步骤非常相似,可以用相同的硬件来实现,因此将实现IFFT和FFT运算的部分放在了同一个方框图中。一般来说,在实际的OFDM系统中,发送机在IFFT调制前包括前向纠错编码、交织、QAM调制、导频插入、串/并变换等,在IFFT模块的后面包括并/串变换、插入循环前缀、加窗、数/模变换、射频调制和放大等;接收机包括射频放大和解调、模/数变换、定时同步、串/并变换、FFT解调、信道纠正、QAM解调、去交织、纠错码译码等。

2.6 与单载波传输系统的比较

采用OFDM传输系统的一个主要原因是当信道存在较大的时延扩展时,与单载波系统相比,OFDM系统的实现复杂度要低很多。单载波系统的实现复杂度主要集中于均衡器部分。一般来说,当时延扩展大于数据符号周期的10%时,在单载波系统中就必须要采用均衡器来克服符号间干扰。而在OFDM系统中,实现复杂度主要取决于IFFT/FFT的计算的复杂度。

在IEEE 802.11a标准中,系统的传输方式为具有64个子载波的OFDM,可以处理的信道最大时延扩展长度为250 ns。当系统的信息传输速率为24 Mbit/s时,如果采用单载波的GMSK调制解调器来实现以上的信息传输速率,需要具有20个前馈抽头和20个反馈抽头的判决反馈均衡器来克服信道上的符号间干扰。考虑到GMSK信号的解调仅需要复数运算的实数部分,则单载波系统每秒需要进行的实数运算次数为2×20×24×106=960×106在OFDM系统中,每个符号周期T=4μs内需要进行64点的FFT运算,如果采用基4的算法,64点的FFT将需要96次复数乘法,因此OFDM系统每秒需要进行96×106次实数运算。由此可知,单载波系统的实现复杂度是OFDM系统实现复杂度的10倍,而且这种复杂度的差异将随着带宽和时延扩展乘积的增加而显著增加。(待续)

收稿日期:2002-11-15

参考文献:

[1] Nee R V, Prasad R. OFDM wireless multimedia communications [R]. Artech House Publishers, 2000.

[2] 佟学俭. 正交频分复用(OFDM)通信系统内若干关键技术的研究[D]. 北京邮电大学博士学位论文, 2001.

[3] 罗涛. 空时编码理论及其在OFDM移动通信系统中应用的研究[D]. 北京邮电大学博士学位论文, 2002.

[4] 尹长川. 离散多载波调制理论及其应用研究[D]. 北京邮电大学博士学位论文, 1997.

作者简介:

尹长川,北京邮电大学电信工程学院副教授,工学博士,主要研究领域为OFDM技术及其在下一代蜂窝移动通信系统中的应用。现主持国家自然科学基金重大研究计划项目“基于正交频分复用的高速蜂窝因特网理论及关键技术研究”。

罗涛,北京邮电大学电信工程学院讲师,工学博士,主要研究领域为空时编码、OFDM技术以及下一代蜂窝网络技术。

TS流复用器的时分复用设计 篇3

1 通用的TS流复用方案

TS流复用中最关键的三大模块是PSI处理、复用调度和PCR修正[1,2,3]。如图1所示,通用的设计思路是:各路码流源输入的TS流首先各自完成同步搜索、缓存、PSI检测和处理,经过过滤模块后剩下待复用的有效基本流数据,并送入FIFO模块中;新PSI信息生成模块根据各路PSI处理模块检测到的原始PSI信息生成新的PSI包,与FIFO中的普通数据包一起送入复用调度模块;复用调度模块根据PSI定时信息和各路FIFO是否达到半满状态,选择TS包输出,当这些新PSI包及FIFO都未满足输出要求时,插入空包,以保持复用流的连续性;另外,通过计算TS流PCR_base最后一个字节进入和输出复用系统的时间差值,调整复用流的PCR值。

2 时分复用策略

N路TS流复用时,如果按上述方案,就要消耗N个同步检测、缓冲、PSI处理、过滤及FIFO模块,当复用路数增多时,这些资源就会成倍增加。鉴于上述方案中,各路TS流在复用调度前的功能模块都相同,而FPGA的最高工作频率远大于27 MHz的最大并行码流输出速率,因此可将相同的模块合并为公用模块。

如图2所示,改进方案只需要1个PSI处理、过滤及FIFO模块,采用分时检测的方式,轮流检测各路的PSI信息。由于在输入缓冲器之后到FIFO之前的模块,都可以采用固定的时钟作为系统时钟(CLKsys),这些模块的运作依赖于同步时钟,因此可锁定在一个较高的频率上工作。为了有效地实现公共模块的时分复用,采用n倍于27 MHz的工作时钟CLKsys(可根据所选FPGA的性能取27 MHz的整数倍)进行处理,每路缓冲器可缓存大于2个的TS包,通道选择调度模块以CLKsys的速率轮询各路缓冲器的状态,按照先来先调度原则,选择先存满1个TS包的通道输出到下个模块,在输入有效码流字节速率之和小于CLKsys情况下,可保证轮询时各路缓冲器TS流不会溢出。

本设计的PSI处理模块需要记录所有原始流的PSI信息,而通用方案的多个PSI处理模块分别记录各原始流的PSI信息,因此存储PSI信息的资源消耗的差不多,差别主要在检测PSI信息的所需的逻辑资源。当复用路数较少时资源消耗不会有太大差别,当复用路数越多时,改进算法比通用算法的优势越明显。

通用方案中的复用调度模块同时检测PSI定时标志位和各路TS流缓冲区的半满状态,以选择PSI包、PID修改后的基本TS包以及空包发送。改进方案将该模块一分为二,分为通道选择调度和复用调度2个模块。其中,基本数据包的通道选择调度移至PSI处理前,由于基本数据包是根据各路TS流到来的先后顺序排序的,所以提前排好其顺序不会影响输出码流的次序。复用调度模块位置保持不变,只需对复合成一路的基本包和新PSI包进行选择,减轻通用方案中调度模块需要一次性检测PSI定时标志和各路缓冲区的控制压力。

3 实现与测试

为检验改进方案的可行性,笔者根据上述策略开发了一套基于FPGA的TS流复用器。测试仪器采用数码视讯的数字卫星接收机10KD01、QAM调制器10K502和新大陆公司的有线机顶盒以及一台小型数字电视机。

这里以3路复用为例说明测试效果,输入信号来自2台设置在不同频点的卫星接收机(每台卫星接收机可输出2路相同的TS流),这样就有2路相同和1路不同的码流进行复用。TS流进入QAM调制器后输出射频信号,接到机顶盒解调和解码,在电视机上就可以通过选台收看不同的节目。图3~5是采用QAM调制器测试出的原始流和复用流的PSI信息,原始流分别含有1套、1套和3套节目,复用器将3路TS流复合成包含5套节目的TS流,图5显示了复用后PMT和音视频的PID的更新结果。图6展示了复用器的调试环境,复用流通过调制器和机顶盒后可选择不同的节目频道,并能够在小电视上正常显示视频和播放声音,无马赛克,不出现图像或声音停滞现象。

4 改进设想

笔者针对通用复用方案各路TS流分别检测和处理的方式,采用时分复用的设计思路,在各路TS流完成同步检测和缓冲后,用一个PSI处理模块分时进行各路PSI的检测和处理。该方法在多路复用场合大大节约了FPGA片上逻辑资源,并为增强型复用器的软硬件联合设计提供便利。

为了增强复用系统功能,如TS流的选择复用,可在改进方案框图中添加PID映射及选择模块,只允许各路PSI信息及需要复用的音视频等基本流数据通过,这样既可实现灵活选择复用,保证码流正常输出,又可缓解系统工作时序压力。

另外,还可考虑DVB/SI信息的检测,或在复用流中插入NIT,CAT,SDT等服务信息,由于服务信息变化频率一般不是太快,且信息量较大,可采用软件来完成部分分析及人机交互功能。改进方案只用1个PSI处理模块,记录检测到的所有节目的系统信息,并且只需在该模块增加一条信息通道,就可跟外界直接交互,方便了软硬件接口通信及服务信息的插入。

摘要:将时分复用的思路引入复用器中,提出TS流复用器的改进方案。该方案在消耗资源与控制处理方面都优于通用方法,对设计功能增强型的复用器具有一定参考价值。

关键词:TS流复用器,时分复用,数字电视

参考文献

[1]付国映,赵利,陈文全,等.MPEG-2传输流复用器中编码模型的研究[J].电视技术,2003(10):53-54.

[2]尹川,窦衡.数字电视多路复用器设计[J].中国有线电视,2005(9/10):911-914.

血透室复用材料探讨 篇4

(一)必须使用经依法批准可重复使用的透析器,由主管血液透析的医师决定复用的透析器;医疗单位应对此负责。

复用前应向患者或其委托人说明复用的意义及可能遇到的不可预知的危害,可选择是否复用并签署知情同意书;

(二)复用透析器限定条件:乙型肝炎病毒标志物阳性患者使用过的透析器不能复用;丙型肝炎病毒标志物阳性患者使用过的透析器不得复用于他人;艾滋病病毒携带者及其患者使用过的透析器不能复用;其他可能通过血液传播传染病的患者使用过的透析器不能复用;对所用消毒剂过敏的患者不能复用透析器。(三)运送和处置

透析结束后血液透析器应在清洁卫生的环境中运送,并立即处置。如有特殊情况,2小时内不准备处置的血液透析器可在冲洗后冷藏,但在24小时内必须完成血液透析器的消毒和灭菌程序。

(四)透析器复用技术问题:初次使用后必须在透析器上作标签,标明各种使用时间和次数以及消毒措施等资料;每次使用结束之前必须用生理盐水将透析器内血液赶回病人体内,越干净越好;每次用后去除管路,立即将血路两端保护塞住;尽快在清洗室用反渗水冲洗,正冲和反冲;用消毒剂冲洗消毒;灌满消毒液保存至下次使用;使用前将消毒液冲洗干净;作使用前处理。

(3)血液透析器标识 血液透析器复用只能用于同一患者,标签必须能够确认使用该血液透析器的患者,复用及透析后字迹应不受影响,血液透析器标签不应遮盖产品型号、批号、血液及透析液流向等相关信息。标签应标有患者的姓名、病历号、使用次数、每次复用日期及时间。(4)水冲洗和反超滤

选用符合标准的冲洗和清洁血液透析器的血室和透析液室,包括反超率冲洗。稀释后的过氧化氢,次氯酸钠,过氧乙酸和其他化学试剂均可作为血液透析器的清洁剂。透析结束,血液回输给透析患者后,在透析机上开始用生理盐水冲洗透析器,如用肝素生理盐水冲洗效果更好,同时用透析器反超滤,尽量清除残余血,这样可保持纤维通畅性和减少凝血。

透析器从机器上卸下后应立即送复用室,用水冲洗血室和透析液室,避免拖延。透析器冲洗包括正冲和反冲:正冲是水源接透析器血路,冲洗血室,水压为1.45kg/cm2,冲洗至清洁为止;反冲是水源接透析器的透析液入口,塞紧透析液出口,水压1.45kg/cm2,使水从血室两端口流出,冲洗3~10分钟。冲洗的目的是洗去残余血,保持纤维的有效性及减少易于生长细菌的有机物质。

用于冲洗透析器和制备消毒剂的水须符合透析用水标准(推荐美国AAMI RD62标准),细菌数应少于200CFU/ml,内毒素少于1mg/ml,以减少复用时炎症因子的产生。

透析结束后若无法做到立即冲洗,应在透析结束2小时内将透析器冷藏保存,保存的最长的时间不能超过透析结束后36~48小时,否则应废弃透析器。(5)血液透析器整体纤维检测

检测血液透析器的血室容量(Total Cell Volume,TCV)间接测试膜对小分子物质如尿素的清除率变化。用空气将充满血室的液体驱出,测定所得容量。该容量包括纤维容量和两端腔容量。没种透析器第一次使用前均应测定TCV,作为此类透析器的TCV基础值,以后每次复用后测定TCV的变化,如TCV下降20%,相当于尿素清除率下降10%,则透析器不应继续使用。TCV测试不能用于平板型透析器,因其血室容量会随跨膜压得增加而改变。如果某一透析患者的透析器反复发生因TCV测试失败而无法复用,提示透析中有大量凝血,应检查肝素用量。当透析器的TCV大于等于原有TCV的80%时方能进行下一步的复用程序。

(6)透析膜完整性试验

血液透析器复用时应进行破膜试验,如空气压力试验。

复用人员资格与培训 资格:从事血液透析器复用的人员必须是护士、技术员或经过培训的专门人员。复用人员经过充分的培训及继续教育,能理解复用的每个环节及意义,能够按照每个程序进行操作,并符合复用技术资格要求。培训内容:透析基本原理,血液透析器性能及评价,消毒剂的理化特性及贮存、使用方法、残存消毒剂导致的副作用,透析用水标准及监测,透析充分性,复用对血液透析器的影响,以及评价血液透析器能否复用的标准。培训资料档案:记录有关培训内容,包括题目,参加者姓名,培训的日期和时间以及考核结果。血液透析治疗单位负责人对复用人员的技术资格负责。

复用用水管理制度

1.水处理系统

复用使用反渗水。供复用的反渗水符合水质的生物学标准,有一定的压力和流速,必须满足高峰运行状态下的设备用水要求。

2.消毒:水处理系统的设计应易于整个系统的清洁和消毒,消毒程序应包括冲洗系统的所有部分,以确保消毒剂残余量控制在安全标准允许的范围内。3.水质要求:应定期检测复用用水细菌和内毒素的污染程度。应在血液透析器与复用系统连接处或尽可能接近此处进行水质检测。细菌水平不得超过200 CFU/ml,干预限度为50 CFU/ml;内毒素含量不得超过2 EU/ml,干预限度为1 EU/ml。当达到干预限度时,继续使用水处理系统是可以接受的,但应采取措施(如消毒水处理系统),防止系统污染进一步加重。

4.水质细菌学、内毒素检测时间:最初应每周检测1次,连续2次检测结果 符合要求后,细菌学检测应每月1次,内毒素检测应每3个月至少1次。

复用系统管理制度

1复用设备:复用设备确保以下功能:使血液透析器处于反超状态能反复冲洗血室和透析液室;能完成血液透析器性能及膜的完整性试验;用至少3倍血室容积的消毒液冲洗血液透析器血室及透析液室后,可用标准消毒液将其充满,以确保血液透析器内的消毒液达到有效浓度。维护:血液透析器复用设备的维护应遵循复用设备厂家和销售商的建议,并与之制定书面维修程序及保养计划。厂家和销售商有责任承诺设备在安装正确的条件下运行正常。我院选用伦拿创自动复用设备。

复用间环境管理制度 复用间环境:复用间保持清洁卫生,通风良好,排水能力充足。贮存区:已处理的血液透析器存放在肯格王透析器储存柜内,与待处理的血液透析器分开放置,以防混淆导致污染甚至误用。3 个人防护:每一位可能接触患者血液的工作人员均采取预防感染措施。在复用过程中操作者穿戴防护手套和防护衣,遵守感染控制预防标准,从事已知或可疑毒性或污染物溅洒的操作步骤时,戴面罩及口罩。

4复用间设紧急眼部冲洗水龙头,复用工作人员一旦被化学物质飞溅损伤时即刻有效地冲洗。

血液透析器复用程序

血液透析器复用前必须先给血液透析器贴标签,然后按复用程序操作 运送和处置:透析结束后血液透析器应在清洁卫生的环境中运送,并立即处置。如有特殊情况,2小时内不准备处置的血液透析器可在冲洗后冷藏,但24小时之内必须完成血液透析器的消毒和灭菌程序。冲洗和清洁:使用符合标准的反渗水冲洗和清洁血液透析器的血室和透析液室,包括反超滤冲洗。稀释后的过氧化氢、次氯酸钠、过氧乙酸和其他化学试剂均可作为血液透析器的清洁剂。

注意: 加入一种化学品前必须清除前一种化学物质。在加入福尔马林之前,必须清除次氯酸钠。次氯酸钠不能与过氧乙酸混合。血液透析器整体纤维容积(Total Cell Volume,TCV)检测:检测血液透析器的TCV,复用后TCV应大于或等于原有TCV的80%。透析膜完整性试验:血液透析器复用时应进行破膜试验,如空气压力试验。5 消毒和灭菌:清洗后的血液透析器必须消毒,以防止微生物污染。血液透析器的血室和透析液室必须无菌或达到高水平的消毒状态,血液透析器应注满消毒液,消毒液的浓度至少应达到规定浓度的90%。血液透析器的血液出入口和透析液出入口均应消毒,然后盖上新的或已消毒的透析器端口保护帽。按照卫生部《血液透析器复用操作规范》中的要求允许使用的消毒剂有福尔马林、过氧乙酸、Renalin,根据透析膜性质允许使用的清洁剂有次氯酸钠、过氧化氢或Renalin。注意:消毒程序不能影响血液透析器的完整性。为防止膜损伤,不要在血液透析器内混合次氯酸钠和福尔马林等互相发生反应的物质。血液透析器外壳处理:使用1%伦拿灵浸泡或清洗血液透析器外部的血迹及污物。废弃血液透析器处理:废弃的血液透析器毁形,并按医用废弃物处理规定处理。8 复用血液透析器贮存:复用血液透析器经性能检验、符合多次使用的检验标准后,在指定区域内存放,以防止与待复用血液透析器或废弃血液透析器混淆。9 复用后外观检查: 9.1.外部无血迹和其他污物。9.2.外壳、血液和透析液端口无裂隙。9.3.中空纤维表面未见发黑、凝血的纤维。9.4.血液透析器纤维两端无血凝块。9.5.血液和透析液的出入口加盖,无渗漏。9.6.标签正确,字迹清晰。复用次数:根据血液透析器TCV、膜的完整性试验和外观检查来决定血液透析器可否复用,三项中有任一项不符合要求,则废弃该血液透析器。采用自动复用程序,低通量血液透析器推荐复用次数不超过10次,高通量血液透析器推荐复用次数不超过20次。

血液透析器自动复用机复用程序

包括反超滤冲洗、清洁、血液透析器容量及压力检测、消毒等。每种机器使用特定的清洁剂及消毒剂,具体操作程序遵循厂家及销售商建议。1.结束血液透析,首次复用前贴上血液透析器复用标签。

2.用生理盐水500 ml冲洗血液透析器血室,夹闭血液透析器动脉及静脉端,关闭透析液出口,开始自动复用程序(如复用程序不能立即进行,应将血液透析器进行冷藏)。3.自动清洗

3.1将血液透析器血室及透析液室出口分别连接于机器上。3.2使用清洗液冲洗血室一侧(从动脉到静脉)。3.3反超滤冲洗透析膜。3.4冲洗透析液室部分。

3.5再次冲洗血室部分(分别从动脉到静脉及从静脉到动脉,共2次)。4.自动检测:包括TCV检测及压力检测。5.自动消毒

5.1用消毒液冲洗透析液室部分; 5.2用消毒液冲洗血室部分(从静脉到动脉); 5.3将消毒液充满透析液室; 5.4将消毒液充满血室。6.准备下一次透析

复用透析器使用程序

1外观检查: 1.1标签字迹清楚。

1.2血液透析器无结构损坏和堵塞。

1.3血液透析器端口封闭良好、充满消毒液(由血液透析器颜色、用试纸或化学试剂确认 该血液透析器已经过有效浓度消毒液的消毒和处理)、无泄漏。1.4存储时间在规定期限内。1.5血液透析器外观正常。核对患者资料:确保血液透析器上的姓名和患者记录中身份信息一致,血液透析器上的标签和患者的治疗记录确保无误。冲洗消毒液:冲洗程序经验证能确保将血室和透析液室填充的消毒液浓度降至安全水平。消毒剂残余量检测:根据消毒剂厂商的说明,采用敏感的方法(如试纸法等),检测消毒剂残余量,确保消毒剂残余量低于允许的最高限度。消毒剂残余量检测:血液透析器中残余消毒剂水平要求:福尔马林<5 ppm(5 µg/L)、过氧乙酸<1 ppm(1 µg/L)、Renalin <3 ppm(3 µg/L)。

注意:消毒剂残余量检测后15分钟内开始透析,防止可能的消毒液浓度反跳。如果等待透析时间过长,重新清洁、冲洗、测定消毒剂残余量,使之低于允许的最高限度。血液透析器使用中监测

5.1透析中监测:观察并记录患者每次透析时的临床情况,以确定由复用血液透析器引起的可能的并发症。5.2 与复用有关的综合征:

5.2.1 发热和寒颤:体温高于37.5℃或出现寒颤,应报告医师。不明原因的发热和/或寒颤常发生在透析开始时,应检测透析用水或复用水的内毒素含量及消毒液残余量。

5.2.2其他综合征:若透析开始时出现血管通路侧上肢疼痛,医师应分析是否由于已复用血液透析器中残余的消毒液引起。若怀疑是残余消毒剂引起的反应,应重新评估冲洗程序并检测消毒剂残余量。

5.3 血液透析器失效处理原则:如血液透析器破膜或透析中超滤量与设定值偏离过多,应评估并调整复用程序;如患者出现临床状况恶化,包括进行性或难以解释的血清肌酐水平升高,尿素下降率(URR)或Kt/V(K:血液透析器尿素清除率,t: 透析时间,V:体内尿素分布容积)降低,应检查透析操作程序,包括复用程序。

5.4临床监测:定期检测URR或Kt/V,如果结果不能满足透析处方的要求,应加以分析并评估。6 透析结束后处理

回冲程序:回冲生理盐水,使血液透析器中的残留血液返回患者体内,不应使用空气回冲血液。患者脱离透析管路后,用剩余的生理盐水反复循环冲洗血液透析器数分钟。

软件复用技术的分析与研究 篇5

关键词:软件复用

中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2011) 05-0000-02

Research and Analysis of the Software Reuse Technology

Fu Mingbai

(Zhaotong Teacher's College,Zhaotong657000,China)

Abstract:Software reuse is the software composition that will have been already had to used for constructing new software system.the software can composition being replied to use generally call to reply to use to reach a piece and regardless use again towards canning reply to use to reach a piece intactly an use being after still making an appropriate modification,as long as use to construct new software,then can call to reply to use.The software reuse not only is to use to the procedure's replying,it still includesoftware in the middle of the production line any activity produce of the replying of finished product is used and planned such as the item,possibility report,need definition,analysis model,design model,elaborate,the source procedure,test is used and so on.

Keywords:Software reuse

软件复用是指一种计算机软件工程的理论方法。上世纪60年代的“软件危机”使软件开发人员懂得难于维护的软件成本是非常昂贵的,当软件的规模持续扩展时,那么软件的总体综合成本可以说是很难能够负担起的,并且即使投入了昂贵的成本也很难生产出合格的产品,解决这种问题的重要方法之一就是软件复用的思想。

一、复用的障碍

对软件可复用性不断增加的关注意味着什么这一问题仍然存在混乱,复用的障碍主要体现在以下五个方面:

(一)技术原因

构件和系统应用之间的差别。许多技术开发人员开发出的构件,可以在被另外的技术人员开发的系统中使用,从对外接口到内容都恰好合适,或做很少量的改动,这的确是不容易实现的。软件复用由于受到技术发展水平的限制,常常局限在代码层次或者函数包的复用,随着技术的变革,包括面向对象语言和方法带来的更好的面向应用领域的抽象能力、各种分布式组件方法与标准的提出、过程方法的成熟,基于组件的软件开发——通过组装各种组件来构造系统被认为是实现灵活的软件架构、实现软件复用的最佳途径。基于组件的开发给软件产业带来一种新的思考方法和理论基础,它在传统面向对象和分布式组件对象方法的基础上以一种更加高层的视角来分析应用和设计软件,能够有效地控制软件开发与部署的复杂性,构建具有清晰模块化结构、更易于维护、演进、重用的软件系统。

(二)人的原因

软件研发是一种建设性工作,长时间在这个行业的人员养成了特定的习惯:更想自己去创造而非借用他人成果,特别是要对别人研发的软件作适当的改动然后使用时,他们往往喜欢自己另外再开发一个。

(三)管理原因

在软件管理中,从原来的使用与一些与复用的目标很不协同的规则,如计算工作量时,对复用的部分打不少的折扣,有时候不计算工作量;另外,不是在项目初始阶段以可复用构件为目标,而是全部任务结束后,从中去努力寻找可复用构件。这些短处阻碍了可复用软件水平规模的前进,甚至会打击投身于复用的人员的热情。

(四)教育原因

在软件科学技术的教育与培训中,缺少关于软件复用的东西,这方面的资料不多,即使在其它资料中提到软件复用,其中的篇幅与内容也相当少见。

(五)法律原因

在法律上还存在某些东西,例如,一个可复用构件在某种系统应用中出现问题,而构件的研发者和系统应用的研发者不是同一厂家,那么责任应该由谁担负?此外,在版权、有关政策等等方面也有某些没有解决的问题。

二、领域工程

(一)领域工程简介

领域工程是实现大规模,系统化软件复用关键技术之一。针对复用的过程模型,均强调并行的轨迹,在轨迹中领域工程和软件工程同时进行。经过领域工程标识、构造、分类和传播的软件能很好的适应现在和将来的的软件系统。领域工程的总目标是建立一种模式,让软件工程师复用这些软件并应用于现在和将来的软件系统。领域工程包括三个主要的活动——分析、构造和传播。

(二)领域分析

领域分析适用于任意软件工程范型,并且可以用于传统的以及面向对象的软件开发。相关注意事项如下:

1.领域分析不是针对某个特定的软件系统,而是针对一类软件系统的共同的特征、知识和需求。比需求分析更一般、更抽象、更广泛的特征。

2.领域分析(Domain Analysis)是对一类应用系统的共同应用领域进行系统化分析,以发现该领域的共同知识、需求及其应用系统的共同特征。

3.领域分析又称领域工程(Domain Engineering),是软件工程的发展与延伸。

4.领域分析是一项比系统分析更难的工作。领域分析方法可采用结构化方法和面向对象方法,而后者将成为主流。

三、建造可复用构件

软件构架不是解决软件的某个局部问题,而是描述了软件的总体结构。它描述了一类软件的总体构成情况,包括该软件有哪些主要部件以及各部件之间的关系,但是不涉及每个部件的细节。我们考虑特定于复用的问题,它们是对完整的软件工程实践的补充。

(一)构件的分类

大多数的构件分类模式可以归纳为以下三种类型:

1.枚举分类

通过定义一个层次结构来对构件进行分类。构件库中的可复用构件按照某种标准被分成了若干个大类,而每个大类中的构件再被划分成若干个小类,依此类推,这样就形成了一个构件分类的层次结构:

2.刻面分类

一个刻面描述构件某一个方面的特征。刻面分类则是从不同的侧面对构件进行分类,每一种分类方式称为一个刻面。不同的刻面根据其重要性可以设置不同的优先级。对构件的每个刻面赋予相应的值,用以描述该构件。刻面分类具有较好的灵活性,易于加入新的刻面值,因此刻面分类比枚举分类更易于扩展和修改。

该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属性值。开发人员通过指定一组属性值在构件库中对构件进行检索。

3.属性-值分类

该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属性值。开发人员通过指定一组属性值在构件库中对构件进行检索。

该分类方法与刻面分类方法有几点不同之处:

(1)属性的数量没有限制,而刻面描述一般限制在7或8个刻面;

(2)属性没有优先级,而刻面根据其重要程度,有相应的优先级;

(二)构造方法

和设计一样,可复用软件制品的构造依赖于软件工程方法,构造均可以使用传统的第三代语言、第四代语言和代码生成器、可视化程序设计技术、或更高级的技术方法来完成。

领域分析的结果为构件的选取和开发提供了指导性的原则。除了有领域分析作为其基础,构件开发还需要遵循一定的设计概念和原则。

构件应该具有相当的一般性和抽象性,能够用于满足一类相似的需求,一个过于特殊的构件是很难被重复使用的。即使一个通用性很高的构件也不可能完全适应用户的需求和运行环境,所以在一个构件被不同的应用复用时,对它的某些部分进行修改是不可避免的。所以构件开发时,需要为用户对构件的调整和修改留出余地。例如继承、参数化、模板和宏都是典型的提高构件灵活性和可调整性的机制。

(三)基于构件的开发

基于构件的开发是使用可复用构件组装开发新的应用系统。

1.构件的鉴定

构件的鉴定是对打算用于软件开发的构件能否满足应用的需要,达到应用所需要的性能、可靠性、质量的保证进行相应的考察。

2.构件的调整

通常在将构件复用到应用中时,构件需要进行必要的调整和修改才能适应应用的需要。

3.构件的组装

构件的组装是将经过鉴定和调整以后的构件组装到应用系统中。通常为了达到此目的,还必须建一个基础设施提供构件协同的模型和使构件能够交互并完成共同任务的特定服务。

在同一个领域的应用系统之间,不但可以找到其共同的软件构件,而且可以发现共同的或相似的软件体系结构。专向领域的复用开拓了一种新的复用境界,被复用的不仅是可实现某种局部功能的软件构件,而且可以是一些形成系统总体结构,并把各个可复用构件连接到一起的软件构架。电子产品的主电路板可看成该产品可复用的构架,它把许多可复用的电子器件连接在一起。软件构架是一种由特定领域的软件体系结构所决定的软件构造框架。

四、小结

复用的过程里有两个处于并发状态的子过程:领域工程以及软件工程。首先,领域工程是在一个特殊环境内标识、构造、分类和传播一组软件制品。然后,软件工程可在新系统开发中选取这些软件制品作为复用。对可复用构件的分析、设计技术采用和在良好的软件工程实践中使用的相同原则和概念。可复用构件应该在一个环境中设计,该环境为每个应用领域建立标准数据结构、接口协议和程序体系结构。

五、结束语

软件产品也是一种精神的创造产品,它的出现几乎完全是人脑思考的产生,它的存在价值,也几乎完全在于其中所产生的思想,人脑所能达到的复杂程度,比人类制造的客观物质产品更加复杂,因此,采用软件的复用技术更为困难和不易。这些和很多其他问题还在继续困扰研究者和产业专业人员,他们正在努力使软件构件复用成为主流的软件工程方法。

参考文献

[1]Adler,R.M.“Emerging Standards for Component Software,”IEEE Computer,vol 28,no.3,March 1995,pp.68-77

[2]Carma McClure《软件复用技术在系统开发过程中考虑复用》,(美),February 2003

[3]谢颖苇.软件复用技术及其应用研究[D].吉林大学硕士学位论文,2007

[作者简介]

浅谈软件复用 篇6

传统的大型应用软件的主要特点有:重复编码式开发方式和一次开发持续运行的应用软件。重复编码式开发方式, 使快速开发企业级应用软件难以实现。一次开发持续运行的方式, 导致了软件的僵化和濒危。

我们不妨参考PC电脑硬件设计:它由一块主板和一系列的设备部件组成。无论是CPU、内存条、显卡、声卡、U盘, 只要符合一定的标准就可直接在主板上进行插拔和替换。如果软件框架可以做得像主板, 软件组件做得像设备部件, 那么软件就可以像硬件一样实现快速组装和大规模生产。这实际上就是软件复用所追求的终极目标。

2 软件复用基本概念介绍

2.1 真正的软件复用

在软件演化的过程中, 重复使用的行为可能发生在三个方向上:时间上, 使用以前的软件版本作为新版本的基础, 加入新功能, 适应新需求;平台上, 以某平台上的软件为基础, 修改其和运行平台相关的部分, 使其运行于新平台;应用上, 将某软件 (或其中构件) 用于其他应用系统中, 新系统具有不同功能和用途。

这三种行为中都重复使用了现有软件。但是第一种复用实际上是软件维护, 第二种实际上是软件移植, 都不能算真正的软件复用。第三种复用是为了支持软件在应用方向上的演化, 使用“为复用而开发的软件 (构件) ”来更快、更好地开发新的应用系统, 这才是真正的软件复用。

2.2 软件复用的发展

复用概念的第一次引入早在1968年, Mc Ilroy在其论文《大量生产的软件构件》中提出。在此以前, 子程序的概念也体现了复用的思想, 但目的是为了节省当时昂贵的机器内存资源, 并不是为了节省开发软件所需的人力资源。然而子程序的概念可以用于节省人力资源的目的, 从而出现了通用子程序库, 供程序员在编程时使用。

2.3 软件复用的关键

分析传统产业的发展, 其基本模式均是符合标准的零部件 (构件) 生产以及基于标准构件的产品生产 (组装) , 其中, 构件是核心和基础, “复用”是必需的手段。标准零部件生产业的独立存在和发展是产业形成规模的前提, 软件产业发展完全可以借鉴这种模式。软件产业要发展并形成规模, 标准构件的生产和构件的复用是关键因素。这正是软件复用受到高度重视的根本原因。

3 软件复用的实现方法

3.1 与软件复用相关的技术

软件复用技术是一系列的相关技术的综合运用, 包括软件构件技术;领域工程、软件构架技术;软件再工程、开放系统技术;软件过程、CASE技术以及一些非技术因素。实现软件复用的各种技术因素和非技术因素是互相联系的, 它们互相结合共同影响软件复用的实现。

3.2 软件构件技术

构件是指应用系统中可以明确辨识的构成成分, 具有相对独立的功能和可复用的价值。可复用构件应该具有如下特点:

独立性:构件可独立开发、部署和发布, 软件构件是一个软件组装单元;

有一组定义良好的接口:构件通过一组接口对外完成其功能, 接口可分为对外服务接口和服务请求接口;

封装性:构件是一个高内聚的软件包, 通过接口对外交互, 屏蔽了内部实现细节, 构件可通过独立开发封装为符合业界认可的模型标准的二进制代码。当前构件封装采用的标准有:微软的COM+和.NET、SUN公司的Java Bean和EJB、国际组织的CORBA等;

可替换性:构件被组装到软件系统中后, 可以用具有相同接口和相同封装标准的其他构件将其替换, 替换中无须编码, 不影响系统运行;

可组装可调整性:构件可以在定义良好的体系结构下方便地组装到软件系统中, 也可以与其他构件组装成为粒度更大的构件。一般情况下, 构件要有方便的可调整机制以便于复用, 即提供多个可变点以利于客户化。

3.3 领域工程

为了能够很好的实现软件复用, 复用必须是系统化的。系统化复用的成功依赖于很多因素, 其中领域工程是系统化软件复用成功的关键。

通过领域工程, 将某一特定领域的知识转化成为一组规约、构架和相应的可复用构件。由于这些信息来自于同一领域中现有的系统, 因此它们具有较高的可复用性, 而且当一个领域中的应用系统增加了的时候, 通过领域工程, 可以对这些系统进行新的分析, 将新系统的特征也包含在规约、构架和可复用构件中, 从而使本领域系统开发的知识和经验尽可能地积累到复用基础设施中, 以促进新系统的开发。领域工程对于系统化软件复用的意义还在于, 领域工程不仅产生了可复用性较高的构件, 而且通过产生构架定义了复用时机和复用的上下文。这样对开发者复用这些构件提供了有力的支持, 使得复用变得规范、系统和高效。

3.4 软件构架

通过对软件构架的研究, 有利于发现不同系统在较高级别上的共同特性;从构架的层次上表示系统, 有利于系统较高级别性质的描述和分析。特别重要的是, 在基于复用的软件开发中, 为复用而开发的软件构架可以作为一种大粒度的、抽象级别较高的软件构件进行复用, 而且软件构架还为构件的组装提供了基础和上下文。软件构架研究如何快速、可靠地通过可复用构件构造系统的方式, 着重于软件系统自身的整体结构和构件间的互联, 对于成功的软件复用具有非常重要的意义。

3.5 软件再工程

软件再工程是指对既存对象系统进行调查, 并将其重构为新形式代码的开发过程。最大限度地重用既存系统的各种资源是再工程的最重要特点之一。再工程的主要工作是对既存系统中非可重用构件的改造。软件再工程的思想实际上和回收业的“变废为宝”的思想是十分相近的。

软件再工程是一个工程过程, 它将逆向工程、重构和正向工程组合起来, 将现存系统重新构造为新的形式。再工程的基础是系统理解, 包括对运行系统、源代码、设计、分析、文档等的全面理解。但在很多情况下, 由于各类文档的丢失, 只能对源代码进行理解, 即程序理解。

4 基于复用的软件开发过程

软件复用技术研究 篇7

软件复用是指利用现有的软件资源来构造新的软件系统。该软件成分可能是己有的构件,也可能是专门开发设计的可复用的软件构件。其中,可复用的现有软件成分是软件复用技术的核心。复用成分的获取、管理和利用是构成软件复用技术的三个基本要素。通过软件复用,在应用系统开发中可以充分利用己有的开发成果,消除了在分析、设计、编码、测试等方面的重复劳动,可以提高软件开发的效率;同时,通过复用高质量的已有的开发成果,避免了重新开发可能引入的错误,可以提高软件的质量。因此,软件复用可以大大降低软件开发的费用,并显著地提高生产效率和产品质量。

2 软件复用的主要思想

将软件看成是由不同功能部分的“组件”所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具。这样,如果完成各种工作的组件被建立起来以后,编写特定软件的工作就变成了将各种不同组件组织连接起来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。

3 软件复用的实现

软件复用有三个基本问题,一是必须有可以复用的对象;二是所复用的对象必须是有用的,三是复用者需要知道如何去使用被复用的对象。软件复用包括两个相关过程:可复用软件(构件)的开发(Development for Reuse)和基于可复用软件(构件)的应用系统构造(集成和组装)(Development with Reuse)。解决好这几个方面的问题才能实现真正成功的软件复用。前者是生产可复用构件的过程,后者是利用现有的可复用构件生产新系统的过程。可复用构件为有计划地、系统地进行复用提供了手段,是实现软件复用的基石。

4 软件复用的关键技术

实现软件复用的关键因素主要包括:软件构件技术、领域工程、软件构架、软件再工程、开放系统、软件过程、CASE技术等,以及各种非技术因素。实现软件复用的各种技术因素和非技术因素是互相联系的,它们结合在一起,共同影响软件复用的实现。

1)软件构件技术:软件构件技术是支持软件复用的核心技术。

2)软件体系结构:软件体系结构(Software Architecture)也称为架构,它是对软件系统的系统组织,是对构成系统的构件的接口、行为模式、协作关系等体系问题的决策总和。研究软件体系结构有利于发现不同系统的高层共性,保证灵活和正确的系统设计,对系统的整体结构和全局属性进行规约、分析、验证和管理。

3)领域工程:领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它覆盖了建立可复用软件构件的所有活动。领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域。领域工程包括三个主要的阶段:领域分析、领域设计以及领域实现。

4)软件再工程:现存大量的遗产软件系统由于技术的发展,正逐渐退出使用,如何对这些系统进行挖掘和整理,得到有用的构件;己有的构件随着时间的流逝会逐渐变得不可使用,如何对它们进行维护,以延长其生命期等等。软件再工程正是解决这些问题的主要技术手段。

5)开放系统技术:开放系统技术的基本原则是在系统的开发中使用接口标准,同时使用符合接口标准的实现。它为软件复用提供了良好的支持,使构件可以方便地以“即插即用”的方式组装到系统中,实现黑盒复用。这样,符合接口标准的前提下,构件就可以独立地进行开发,从而形成独立的构件制造业。

6)软件过程:软件过程又称软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合。一个良好定义的软件过程对软件开发的质量和效率有着重要影响。基于构件复用的软件开发过程和传统的一切从头开始的软件开发过程有着实质性的不同,所以探讨适应于软件复用的软件过程成为迫切的问题。

7)CASE技术:CASE技术对软件工程的很多方面都可以提供有力的自动或半自动支持。软件复用同样需要CASE技术的支持。CASE技术中与软件复用相关的主要研究内容包括:在面向复用的软件开发(Software Development)中,可复用构件的抽取、描述、分类和存储、提取组装、可复用构件的度量等等。

5 软件复用的过程

可以归纳为抽象、选取、实例化和集成四个部分。抽象是指对可复用软件资源的概括和提炼;选取是寻找、比较和选择最合适的可复用软件资源;实例化是指对软件资源的修改并形成它的实例;集成是将选定的已实例化的可复用软件资源组合成完整的软件系统。所以,软件复用过程可以概括为:一个用为复用所开发的可复用软件的资源来创建或集成软件应用程序和系统的过程。这样的复用过程将软件开发分成两个阶段:可复用软件资源的生产阶段和基于可复用软件资源的应用系统开发阶段。可复用软件资源的生产阶段对应于领域工程,进行可复用软件资源的分析、设计和实现;基于可复用软件资源的应用系统开发阶段对应于应用系统,利用可复用资源对应用系统进行分析、设计和实现

6 基于可复用构件的应用系统的开发

软构件模型是关于开发可重用软构件和构件之间通信的一组标准的描述。通过重用己有的构件,使用构件对象模型的软件开发者可以像搭积木一样快速构造应用程序。这样不仅可以节省时间和经费,提高工作效率,而且可以产生更加规范,更加可靠的应用程序。

基于可复用构件的应用系统的开发一般包括以下步骤:

1)进行系统调查和需求分析,明确和系统交互的人员、外部系统,也就是确定系统边界和问题域,同时明确系统要完成什么功能、表达什么信息,即表示系统责任;

2)对系统的每个USECASE进行流程分析,即明确每个USE CASE的实现流程;

3)采用面向对象分析方法,并结合每个USECASE的SEQUENCE框图和COLLAB A l ON框图,建立系统的CLASS框图(包括对象层、特征层和关系层),CLASS框图中的每个方法只需定义出接口,即输入、输出什么参数,而不包括实现细节,把具体的实现(包括程序框图、实现代码)留到设计阶段去做;

4)在建立系统的CLASS框图之后,综合考虑系统责任、系统的体系结构、开发平台,建立系统的构件模型;

5)设计构件。在设计构件之前,查询可复用构件库,对己有构件(相同的直接复用,相近的通过修改复用)进行复用,对于新构件进行设计。新构件设计包括接口设计(LOL文件设计)、每个功能的程序框图设计、算法设计以及复杂算法的伪代码;

6)实现新构件,使用以构件库中的可复用构件为核心开发的构件,建立应用系统;

7)系统测试与运行。将系统移植到相应的分布式环境中进行测试,对问题进行修改,直到满足用户要求。

7 发展趋势

软件工程技术日益普及,软件、平台、环境开始广泛使用。软件复用和软件构件技术受到广泛关注。采用基于软件复用的软件构件,将使软件设计、生产工厂化成为可能,是未来软件开工具发的发展方向,软件复用和软件构件技术是解决软件危机,提高软件开发效率和质量的有效途径,是一种社会化的软件开发方法。软件复用和软件构件技术将引起软件产业的深刻变革,尤其是近年来,网络的兴起为大型软件的分布式开发带来了得天独厚的条件,软件产品的国际化水平将不断提高。因此,该技术一定会有良好的发展前景。

参考文献

[1]陈菲,刘克勤.计算机软件复用技术研究[J].现代电力,2002,19(6):95-101.

[2]王少锋,何志均,王克宏.软件重用技术研究[J].计算机工程与设计,2000,21(5):10-15.

[3]曾广周,孙红梅.基于软件构件的软件开发方法研究[J].计算机研究与发展,1998,35(11):991-995.

[4]徐珊娜.基于复用技术的构件研究与实现[D].西安建筑科技大学硕士论文,2007.

浅议软件复用技术 篇8

随着软件需求的激增、软件规模和复杂度的不断增大, 大量资源被浪费在重复开发上, 传统的开发方法无法适应用户在质量、效率等方面对软件的需求。软件复用又称软件重用或软件再用, 是指重复使用“为了复用目的而设计的软件”的过程, 是利用现有的软件成分来构造新的软件系统的过程。近十年来软件复用被认为是解决软件危机、提高软件生产率和质量的最有效和最具潜力的手段。

2 软件复用简介

软件复用不仅仅是对程序的复用, 还包括对软件生产过程中任何活动所产生的制成品的复用, 如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码 (源程序) 、测试用例、文档与使用手册等等。按抽象程度的从低到高, 软件复用可以被划分为如下5个级别[1]:

(1) 代码的复用, 包括目标代码和源代码的复用。当前大部分编程语言的运行支持系统都提供了连接 (Link) 、绑定 (Binding) 等功能来支持目标代码的复用。源代码的复用级别略高于目标代码的复用, 程序员在编程时把一些想复用的代码段复制到自己的程序中, 但这样往往会产生一些新旧代码不匹配的错误。大规模的实现源代码的复用只有依靠含有大量可复用构件的构件库, 如”对象链接及嵌入” (OLE) 技术。

(2) 设计的复用。这种复用有三种途径, 第一种途径是从现有系统的设计结果中提取一些可复用的设计构件, 并把这些构件应用于新系统的设计;第二种途径是把一个现有系统的全部设计文档在新的软硬件平台上重新实现, 也就是把一个设计运用于多个具体的实现;第三种途径是独立于任何具体的应用, 有计划地开发一些可复用的设计构件。

(3) 分析的复用。可复用的分析构件是针对问题域的某些事物或某些问题的抽象程度更高的解法, 受设计技术及实现条件的影响很少, 所以可复用的机会更大。复用的途径也有三种:从现有系统的分析结果中提取可复用构件用于新系统的分析;用一份完整的分析文档作输入产生针对不同软硬件平台和其它实现条件的多项设计;独立于具体应用, 专门开发一些可复用的分析构件。

(4) 测试信息的复用, 主要包括测试用例的复用和测试过程信息的复用。前者是把一个软件的测试用例在新的软件测试中使用, 或者在软件作出修改时在新的一轮测试中使用。后者是在测试过程中通过软件工具自动地记录测试的过程信息, 包括测试员的每一个操作、输入参数、测试用例及运行环境等一切信息。

因为软件的开发过程主要是从抽象级别较高的形态向抽象级别较低的形态演化的正向过程, 所以较高级别的复用容易带动较低级别的复用。开发者可充分利用其它已有的分析件和设计件, 自己设计或编程, 完成系统的剪裁、扩充、维护、演化等活动。

3 实现软件复用的关键技术因素

软件复用的过程实际上是一系列的相关技术的综合运用过程。这些技术包括软件构件技术、领域工程、软件构架技术、软件再工程、开放系统技术、软件过程、CASE技术以及一些非技术因素。实现软件复用的各种技术因素和非技术因素是互相联系的, 它们互相结合共同影响软件复用的实现。

3.1 领域工程、软件构架技术

可复用信息依赖于特定的问题和特定的问题解决方法, 具有领域特定性。为此, 在识别、获取和表示可复用信息时, 应采用面向领域的策略。领域的需求具有一定的稳定性, 使得获取的信息可以在较长时间内多次复用。领域工程是一组相似或相近系统的应用工程建立基本能力和必备基础的过程, 覆盖了建立可复用软件构件的所有活动, 可划分为以下三个阶段[2]:

(1) 领域分析。这个阶段的主要目标是获得领域模型。领域模型描述领域中系统之间的共同需求。这个阶段的主要活动包括确定领域边界, 识别信息源, 分析领域中系统的需求, 确定哪些需求是被领域中的系统广泛共享的, 哪些是可变的, 从而建立领域模型。

(2) 领域设计。这个阶段的目标是获得领域构架 (Domain-Specific Software Architecture, 简称DSSA) 。DSSA描述了领域模型中表示需求的解决方案, 它不是单个系统的表示, 而是能够适应领域中多个系统需求的一个高层次的设计。建立了领域模型之后, 就可以派生出满足这些被建模的领域需求的DSSA。由于领域模型中的领域需求具有一定的变化性, DSSA也要相应地具有变化性。

(3) 领域实现。这个阶段的主要行为是定义将需求翻译到由可复用构件创建系统的机制。根据所采用的复用策略和领域的成熟和稳定程度, 这种机制可能是一组与领域模型和DSSA相联系的可复用构件, 也可能是应用系统的生成器。

这些活动的产品 (可复用的软件构件) 包括:领域模型、领域构架、领域特定的语言、代码生成器和代码构件等。

研究实践表明, 软件复用在特定领域内更容易获得成功。因此, 领域工程受到高度重视, 已有许多研究成果。有代表性的工作包括卡耐基梅隆大学的软件工程研究所 (CMU/SEI) 提出的面向特征的领域分析方法 (Feature Oriented Domain Analysis method, 简称FODA) , 它支持对某领域中系统共性和个性的发现、分析和文档记录。

对于软件架构, 目前还没有一个统一的定义。典型定义是, 软件架构是对构成系统的构件接口、行为模式、协作关系等体系问题的决策总和。研究软件构架有利于发现不同系统的高层共性, 保证灵活和正确的系统设计, 对系统的整体结构和全局属性进行规约、分析、验证和管理。

这样, 在基于复用的软件开发中, 为复用而开发的软件构架可以作为一种大粒度的、抽象级别较高的软件构件进行复用, 而且软件构架还为构件的组装提供了基础和上下文。构架描绘的是系统的蓝图, 是沟通软件需求与软件设计的一座桥梁, 使软件复用从代码复用发展到设计复用和过程复用。

3.2 软件再工程、开放系统技术、软件过程

现存大量的遗产软件系统由于技术的发展, 正逐渐退出使用, 如何对这些系统进行挖掘和整理, 得到有用的构件;己有的构件随着时间的流逝会逐渐变得不可使用, 如何对它们进行维护, 以延长其生命期等等。软件再工程正是解决这些问题的主要技术手段。软件再工程是一个工程过程, 它将逆向工程、重构和正向工程组合起来, 将现存系统重新构造为新的形式[3]。再工程的基础是系统理解, 包括对运行系统、源代码、设计、分析、文档等的全面理解。但在很多情况下, 由于各类文档的丢失, 只能对源代码进行理解, 即程序理解。

开放系统技术的基本原则是在系统的开发中使用接口标准, 同时使用符合接口标准的实现。开放系统技术为软件复用提供了良好的支持。特别是分布对象技术使得符合接口标准的构件可以方便地以“即插即用”的方式组装到系统中, 从而实现黑盒复用。这样, 在符合接口标准的前提下, 构件就可以独立地进行开发, 从而形成独立的构件制造业。

软件过程又称软件生存周期过程, 是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合。一个良好定义的软件过程对软件开发的质量和效率有着重要影响。然而, 基于构件复用的软件开发过程和传统的一切从头开始的软件开发过程有着实质性的不同, 探讨适应于软件复用的软件过程自然就成为一个迫切的问题。

3.3 CASE技术等以及各种非技术因素

计算机辅助软件工程 (Computer Aided Software Engineering, 简称CASE) 可使系统按照开发商规定的应用规则, 由计算机自动生成合适的计算机程序。软件复用同样需要CASE技术的支持。CASE技术中与软件复用相关的主要研究内容包括:可复用构件的抽取、描述、分类和存储;可复用构件的检索、提取和组装;可复用构件的度量等等。

除了上述的技术因素外, 软件复用还涉及人的素质、教育、法律等非技术因素问题, 如:知识产权问题;保守商业秘密的问题;复用前期投入的经济考虑;标准化问题;机构组织如何适应复用的需求;管理方法如何适应复用的需求;开发人员知识的更新;创造性和工程化的关系;开发人员的心理障碍等等。

3.4 软件构件技术

基于构件的软件复用是迄今为止最优秀的软件复用手段, 是支持软件复用的核心技术, 并在近几年迅速发展成为受到高度重视的一门学科分支。构件技术的应用必须遵循一些共同的规范, 当前流行的有OMG的CORBA、SUN的EJB和微软的DCOM。

构件是具有内部结构和功能的软件构成元素, 可通过标准接口独立提供特定服务, 并且可由一些连接器及相关规则与其它构件组装成符合要求的新软件或构件。从抽象程度来看, 面向对象技术已达到了类级复用, 因为它是以类为封装单位的。但这样的复用粒度还太小, 不足以解决异构互操作和效率更高的复用。构件将抽象的程度提到一个更高的层次, 它是对一组类的组合进行封装, 并代表完成一个或多个功能的特定服务, 也为用户提供了多个接口。整个构件隐藏了具体的实现, 只用接口对外提供服务。

因此, 在基于构件的软件开发方法下, 程序开发模式也相应地发生了根本变化, 不再是“算法+数据结构”, 而是“构件开发+基于构架指导的构件组装”。基于构件的软件开发过程 (Component-based Software Development, 简称CBSD) 有五个主要的组成部分:需求分析、构件库、 (下转第3页) (上接第17页) 构件的获取、构件的复用、构件的组装。计算机软件开发技术从面向对象技术 (OO) 和分布式面向对象技术 (DOO) 发展到软件构件技术, 并向构件技术方向演变, 软件构件以至组件技术为应用软件产品化提供了理论基础, 这是应用软件产业化发展的基本方向。

4 结束语

国际上, 软件复用在领域工程、构件及构件库的标准化、构件组装技术、基于复用的软件开发过程和复用成熟度模型等方面已经取得了重大成功。国内的相关研究也较多, 如北京大学软件工程研究所提出的青鸟构件模型, 它的目标是致力于软件复用, 以构件作为软件复用的基本单位, 提供一种有效的管理和检索构件的工具。

参考文献

[1]张韧志, 田丽芳, 葛文庚.软件复用探讨[J].电脑知识与技术, 2009, 5 (23) :6452-6453.

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

同义复用:语文教材编写不可忽视 篇9

筅南京师范大学文学院张春雷

同义复用, 这在古书中颇为常见, 古代学者称这种现象为“复语”或“重言”。顾炎武说:“古经亦有重言之者, 《书》‘自朝至于日中昃, 不遑暇食’, 遑即暇也。” (《日知录》卷二十四) , 王念孙认为:“《史记扁鹊仓公列传》中‘良工取之, 拙者疑殆’的殆亦疑也, 古人自有复语耳。” (见《读书杂志》卷三) , 王引之《经义述闻》中说:“古人行文, 不避重复, 往往有平列二字上下同义者, 解者分为二义, 反失其旨。”同义词复用现象, 有二字连用者, 也有三字复用者。二字复用者最多见, 此即所谓同义复词。

由于字、词的古义在后代往往消失或发生了词义的演变, 所以如果我们稍不注意就会将这类同义词复用曲解, 产生误注误译现象。对这类现象, 高中语文教材 (人民教育出版社2006年版) 往往失之误注、漏注, 教参往往也失之误译, 给广大语文教师的教学带来了困难和不便。现仅撮其要者说明如下, 如:

一、令孤子、寡妇、疾疹、贫病者, 纳宦其子

高中语文教材第一册《勾践灭吴》对“令孤子、寡妇、疾疹、贫病者, 纳宦其子”中的“贫病”教材解释为“贫苦和重病的人”。很显然, 教材认为“贫”为“贫苦”、“病”为“重病”, 其实这是一种错解。此句中“病”与“贫”义同, 也指“贫困”, “病”的“贫苦”义, 古代典籍习见, 如:

孟孙为成之病, 不圉马焉”。杜预注:“病, 谓民贫困”。 (《左传·哀公十四年》)

查阅《汉语大字典》、《汉语大词典》“病”字, 均收录“贫苦”义项, 可见, 此处“贫病”就是古汉语中常用的同义复用现象, 义为“贫苦”。

二、他植者虽窥伺效慕, 莫能如也

高中教材第二册柳宗元《种树郭橐驼传》对“他植者虽窥伺效慕, 莫能如也”中的“窥伺效慕”, 教材释为“暗中观察、效仿羡慕”。表面上教材的解释好像字字有解, 其实不然。“窥伺效慕”其实是同义词复用现象, 其中“窥”和“伺”均是“偷看”之义。《汉语大词典》“窥”: (1) “暗中偷看。”《汉语大词典》“伺”: (1) “窥伺;窥探;观察。”可见“窥伺”二字同义, 都是“偷看”之义。“效慕”也是如此, “效”有“仿效模仿”之义, 不需赘言, “慕”也有“仿效”之义, 《汉语大词典》“慕”: (4) 仿效。所用书证正是唐柳宗元《种树郭橐驼传》:“他植者虽窥伺效慕, 莫能如也。”可见“效慕”也是同义连用, “模仿、仿效”之义。所以“窥伺效慕”应释为:“偷看仿效”, 此句应译为:“其他植树者虽然偷看仿效, 也没有人能种得如他那样好。”《汉语大词典》收录词条“效慕”, 释为“羡慕, 仿效”, 也是不明同义复用, 才将“慕”释为“羡慕”, 其实此处的“慕”与“效”同义, 二者就是“模仿、仿效”之义, 所以“效慕”应当释为“模仿、仿效。”《汉语大词典》应改之。

三、念高危, 则思谦冲以自牧

高中教材第二册魏征《谏太宗十思疏》:“念高危, 则思谦冲以自牧。”教材释此句为:“想到 (自己的君位) 高而险, 就要不忘谦虚, 加强自身的道德修养。”很显然, 教材是释“高危”为“高而险”。这样解释也是没有认识到“高危”亦是同义复词连用, “高”“危”同义, “危”有“高”义, 典籍习见, 如:

使子路去其危冠, 解其长剑, 而受教于子。陆德明释文:“危, 高也。” (《庄子·盗跖》) 。

《汉语大词典》收录词条“高危”, 释为: (2) 指尊高的帝位。《汉语大词典》所引的书证正是魏征的这句话。可见“念高危”中的“高危”是同义复合词, 应将其释为“尊高的帝位或高高的地位”, 此句应当译为:“想到自己尊高的帝位, 就要不忘谦虚, 加强自身的道德修养。”

四、贫贱有此女, 始适还家门

高中教材第三册《孔雀东南飞》:“贫贱有此女, 始适还家门。”“适”教材注为“出嫁”, 其实这里的“适”是“才”, 时间副词, 表示动作施行或情况发生在不久前, 意思为刚刚、才。义同后文的“适得府君书, 明日来迎汝”中的“适”。句中“始适”同义复用, 表示时间短。徐仁甫《广释词》:“始适, 方才也, 谓方才还家门。”是为确诂无疑。如果如教材译为“刚出嫁不久就被休回家”不符合前文, 因为刘兰芝已经出嫁三年了, 且“被休回娘家”翻译得也过于直白, 缺少了诗句的委婉含蓄美, 刘母也不可能这样说自己的女儿, 所以应将此句译为:我们贫贱人家, 有了这个女儿, 刚刚回到家。

五、日奄日奄日欲暝, 愁思出门啼

《孔雀东南飞》:“日奄日奄日欲暝, 愁思出门啼。”“思”教材未有注释, 查阅其他教材文选, 也均未注释。《中学生文言文索引词典》则将“思”释为:“思绪、心情。”其他各家未对其注释, 自然也是认为“思”为其常义“思绪、心情”。此处的“思”不应作名词“思绪”解释, 而应理解为形容词“忧愁、悲伤”与“愁”同义, “愁”“思”同义复用。“思”有“悲哀、忧愁”之义。如:

悠、伤、忧, 思也。 (《尔雅·释诂》)

教材和各家为避免读者误解, 应补注:“思, 悲伤, 忧愁;此处, 忧、思同义复用。”

六、未曾废离

高中语文教材第四册李密《陈情表》:“臣侍汤药, 未曾废离。”教材注为:“废离, 指停止侍奉, 离开。废, 废止。”此处的“废离”也是同义连用, 教材却将其分而解之。“废”在古汉语中有“去、离”之义, 如:

1.“三臣者废车盾而设拨, 窃礼之不中者也, 而君何学焉。”郑玄注:“废, 去也。” (《礼记·檀弓下》)

“废离”连用的, 如:

2. 离诸相故寂静而住。

住寂静故恒不从缘。是故虽有入不废离缘义。如是下半显离缘义也。 (《金刚三昧经论·卷下》)

故此句应当释为:“我奉侍汤药, 未曾离开。废、离同义连用。”

七、虫跃掷径出, 迅不可捉

高中语文教材第四册《促织》对“虫跃掷径出, 迅不可捉”中的“掷”未作注解。查阅其他各家文选, 教材亦未作注。既然未加注解, 自然是以今释古, 训为其常义“投掷”, 然训“投掷”义, 此处显然不通, 教师用书也未有参考译文, 故很难让读者明了其涵义。其实, 此处的“掷”也当为“腾跃、纵跃”讲。“掷”在现代汉语中, 无“腾跃、纵跃”义, 但古代汉语中, 此义典籍习见, 如:

“ (操) 与绍还出, 失道坠枳棘中, 绍不能得动, ﹝操﹞复大叫云:‘偷儿在此。’绍遑迫自掷出, 遂以俱免。” (《世说新语·假谲》)

故此处“跃”“掷”同义复用, “腾跃、跳跃”之义。

八、终不能加胜于赵

高中语文第六册《廉颇蔺相如列传》:“秦王竟酒, 终不能加胜于赵。赵亦盛设兵以待秦, 秦不敢动。”教材将“加胜于赵”释为“胜过赵国, 意思是占上风。加, 动词。胜, 这里作名词”。其实这里的“胜”不是名词, “胜”“过”都是超过、胜过的意思, 都作动词, 在这里就是同义复词连用。在古汉语中, “加”的“超过、胜过”义是其常用义项, 《汉语大词典》“加”: (4) 超过。《史记·季布栾布列传论》:“虽往古烈士, 何以加哉!”“胜”在古汉语中是多音多义字, 查《汉语大词典》“胜shènɡ”: (2) 胜过, 超过。《书·五子之歌》:“予视天下愚夫愚妇, 一能胜予。”“加胜”同义复用表示“超过、胜过”之义, 在古代典籍中习见, 如:

吐纳云雾下瞰雷霆, 实奇观也, 又竭其精志书写受持。弘文学士张孝静者, 是张瓒父, 时号银钩, 罕有加胜。《法苑珠林·卷第二十七》

九、窃计欲亡走燕

《廉颇蔺相如列传》:“臣尝有罪, 窃计欲亡走燕。”教材对“窃计”单独进行解释, 注为“私下打算”, 将“计欲”分开, 显然没有认识到“计欲”二字本为同义复用, 都作“打算”讲。《汉语大词典》“计”: (10) 计虑;考虑。《管子·中匡》:“计得地与宝, 而不计失诸侯;计得财委, 而不计失百姓。”《汉语大词典》“欲”: (5) 想要, 希望。《商君书·更法》:“今吾欲变法以治。”《史记·陈丞相世家》:“张负归, 谓其子仲曰:‘吾欲以女孙予陈平。’”“计欲”同义复用表示“计划、打算”义, 《史记》中数见, 如:

以谒者汉王元年初起汉中, 雍军塞陈, 谒上, 上计欲还, 衍言从它道, 道通, 后为河间守。

可见, “计欲”同义复用, “窃”是修饰“计欲”这一整体的。中学语文教材将二者分而解之, 导致“欲”字无解。

十、夫劳苦倦极, 未尝不呼天也

高中语文教材第六册《屈原列传》:“夫劳苦倦极, 未尝不呼天也;疾痛惨怛, 未尝不呼父母也。”对“劳苦倦极”中的“极”, 教材未注, 让人很容易以今律古将“劳苦倦极”中的“极”译为“极点”, 释“劳苦倦极”为“劳累辛苦疲倦到了极点”。其实这里的“极”应当为“困倦”义, 与“倦”同义复用。“劳苦倦极”与“疾痛惨怛”对文, 结构相同, 均为四个同义词复用组成的并列词语。“极”作“疲惫、困倦”解, 典籍习见。《汉书·王褒传》:“庸人之御驽马, 亦伤吻弊笑夹, 而不进于行, 胸喘肤汗, 人极马倦。”“极”“倦”互文。《汉语大字典》、《辞源》、《汉语大词典》“极”均收录义项“疲困”。为避免误解, 此处教材应加注。

移动电视中的统计复用 篇10

视频信源编码由于采用帧内编码和帧间压缩编码技术,只有在场景变化或复杂场景下才需要高的码率,其他情况下可以采用低码率;任何给定的视频信号在短时间内会需要高码率,而平均码率需求却相对要低。

运用统计复用技术,可以将若干个视频信号放到一个通用的、固定带宽的共享传输信道传送,节约码率。在统计复用系统中,信源可采用可变比特率VBR模型,由于不同的视频信号的峰值码率往往发生于不同时刻,某些视频信号可以短时间内码率较高,占用较大的带宽,而复用码流总的码率不超出总的信道带宽。从效果上看,每一视频信号所需的传输带宽就接近于每一视频信号的平均码率,而不是它的峰值。

从图1可以看出,采用统计复用技术后,可以获得可观的带宽利用增益。采用统计复用的VBR模型,相对于采用CBR模型,可以在同样带宽内传输更多的节目流,更好的利用带宽资源;或在同样的带宽资源和节目数限制下,提高节目的码率,获得更好的编码视频质量。

参与复用的多个节目,内容的相关性越小,峰值分布越分散,统计复用的效果越好。一个统计复用系统中所包含的节目数越多,能够相互借用的带宽也就越大,效果就越好。此外,编码方式也对统计复用的效果有影响。

统计复用采用缓冲来平滑总的突发峰值码率,在不丢包的情况下会产生时延。像移动电视这种流式媒体应用,对时延有一定要求,这是不同于普通数据传输领域的,需要在提高信道利用率时综合考虑。

2 统计复用的系统

2.1 系统组成

在多媒体广播应用场合,统计复用根据编码器压缩所需要的码率与图像内容之间的关系,在固定复用器输出总码率的情况下,对多个视频流进行联合控制,达到多视频流尽量合理的共享总码率。

图2示意了用于多媒体广播前端的统计复用系统。在编码器和复用器之间通过交互,共同配合完成统计复用功能。根据信源端的各编码器视频内容的复杂度、编码质量要求等,按一定规则给各编码器分配带宽。编码器根据带宽分配,调整编码参数,从而改变输出码率。

在DVB-H等系统中,媒体流的传输是基于IP的,统计复用可以在IP封装时进行,即在IPE中进行。

2.2 复用器侧的实施

输入到复用器或IPE的多路节目流,可以通过统计复用来共用一定的带宽。复用器可以应对多个统计复用组。

对于每路节目流,可以规定一个最小保证带宽和一个最大峰值带宽。每个节目的最小保证带宽总是属于它自己的,不能被别的业务挤占;总带宽中除去这些节目的最小保证带宽后的带宽,是可以在这些节目之间共用的。

多路节目流从编码器传送到复用器或IPE,复用器或IPE监视实时码率。一旦多路节目的联合输出码率高出限定总带宽,复用器即作出反应。一方面,它通知编码器(或独立的编码控制器)当前状态,另一方面对超出限定部分的数据进行处理。

传统应用场景下,对超限的数据可以采取丢包策略;但在流媒体场景下,为了保证播出质量,会把超限的数据缓存下来。但缓存会造成时延,复用器一方面通过补偿措施(如总体时延)来消除这一影响,一方面监视缓存时间,超时的数据最终被丢弃。

被动态统计复用的各节目,可以根据其内容,分配不同的优先级,这样在超限时,可以根据优先级,让优先级高的节目流受到的影响最小。

2.3 在编码器的实施

动态统计复用需要编码器与复用器联合工作,编码器具有动态码率控制的功能。

在动态统计复用下,复用器需要实时给编码器反馈信息。编码器根据复用器反馈回的信息作出相应动作,调整输出码率。复用器到编码器之间的交互,简单情况下可以采用标准的拥塞控制技术,复杂情况下要采用专门的协议。动态统计复用算法目前尚无国际标准,各厂家都有各自私有的技术,复用器、编码器之间耦合紧密,不同厂家之间设备的互通、兼容性有待提高。

编码器之间如何配合也是一个重要问题。现在主要有三种方式:复用器控制、专门的编码控制器、主/从编码器控制。其中主/从编码器控制方式下编码器和复用器间的耦合度小,是一种开放架构,Envivio、UDcast等编码器厂家都在提倡这一架构。

主/从编码器控制方式,就是在一个统计复用组内,一个编码器作为主(Master),其余作为从(Slave)。Master负责带宽的分配,在某个编码器需要提高突发码率、复用器发出超限反馈信息时,作为决策节点,调整分配给各编码器的输出码率。

3 移动电视广播上的统计复用

3.1 移动电视上统计复用的特性

移动电视为了节省接收终端的电源开销,普遍采用时间片突发方式来传播节目。移动电视领域的统计复用也就具有了一些新的特点。

时间片突发(见图3)就是在很短的时间片即突发持续时间内,把整个突发周期内的数据都以高的突发码率发出去。这样,移动终端的前端就可以只在突发期内开机接收节目,其他时间做节能处理,以节省电能消耗。采用时间片突发方式后,在统计复用增益上,与传统的非分片方式不一样。

在时间片的突发持续时间d内突发了时间T(突发周期)的媒体数据,相当于在时间T内对媒体流做了平滑,这种情况下,相对于原始的VBR码流,已经有了一个带宽利用率增益。

在时间片突发方式下采用统计复用,可进一步获得的增益,与媒体数据在N多个时间T之间的峰均值差异有关。在媒体数据的编码参数一定的情况下,时间T越长,N多个时间T之间的峰均值差异就越小,通过统计复用可进一步获得的增益就越小。

在时间片突发方式下采用统计复用可进一步获得的增益还受限于突发期的数据单元粒度,时间T内发送的媒体数据需要保持整数个单元,粒度小复用起来更灵活。在移动电视领域,往往采用交织编码来做容错处理,交织后在突发期内形成的数据的粒度,往往比传统的非移动电视场景下的要大。

3.2 DVB-H的统计复用技术

DVB-H的统计复用可分应用层和复用链路层两个层面来考虑。

在应用层,DVB-H采用全IP的业务模式,用多协议封装MPE来封装基于IP的业务。这样,它可以在对节目流进行MPE封装时,通过传统的IP/TS传输流复用来实现统计复用,IP/TS传输流复用采用前述的统计复用系统。统计复用后的多个节目,作为一个整体在一个时间片中突发。

通过IP/TS流封装来做统计复用可以提高带宽利用率。但是用于移动电视,需要考虑更多因素。

首先是对电能消耗的影响。把多个节目复用到一个突发时间片,会增加时间片持续时间宽度。时间片宽度的增加会带来不利的影响:如果突发周期不变,则相对开机时间加长,电能消耗增加;如果相应增加突发周期,可以保持一定的电能消耗水平,但业务的获取时间加长,频道切换变慢。而且复用后,收看某个节目时,对于被复用的多个节目都要解调、解码,这样加大了处理,电能消耗也变大。

其次是统计复用的效果。DVB-H在突发期内发送的是带前向纠错FEC的MPE帧(参见图4),时间片持续时间受限于MPE-FEC帧的大小,这样在一个突发内可复用的节目数就有限。而复用的节目数量越少,可获得的统计复用带宽增益就越小。

在复用链路层,DVB-H的业务被分片突发传送。DVB-H的时间分片采用了Delta-t技术,来实现灵活的时间片突发。这样,对于某个节目突发的周期、突发持续时间有可能随实时码率大小来做动态调节,从而达到时分上的统计复用效果。

但是,目前DVB-H突发时间片要做到理想的动态调节也还需要进一步优化。在DVB-H的实施指南里,规定了一个突发时间片发一个MPE-FEC帧,而一个MPE-FEC帧的大小取决于RS编码行数。这个行数是在DVB-H的INT表里通告的,INT表的通告周期决定了在目前情况下,MPE-FEC帧的大小难以做到实时调整,突发时间片的持续时间也就不能实时调整。而且在描述子time_slice_and_FEC_identifier_descriptor里,行数可取的值为(256,512,768,1024),决定了MPE-FEC帧的粒度较大,这样如果采用突发时间片动态调节,大的粒度会对可取得的效果造成不利影响。

据悉DVB-H正在对统计复用技术作进一步的研究,其进展值得关注。

4 结束语

更有效的利用有限的频谱资源,是无线通信领域不懈的追求。移动电视在努力提高资源利用效率时,需要综合考虑容错、抗干扰、电能消耗、频道切换时间等各种因素。市场的启动将进一步驱动技术的进步,移动电视的前景会更加广阔。

参考文献

[1]ETSI EN302304:Digital Video Broadcasting(DVB);Transmission System for Handheld Terminals(DVB-H).European Telecommunication Standard.2004

[2]ETSI EN102377:Digital Video Broadcasting(DVB);DVB-H Implementation Guidelines.European Telecommunication Stan-dard.2005

[3]Forum F.Forward link only air interface specification.www.qualcomm.com.2005,12

[4]Chari M.et al.Flo physical layer:an overview.IEEE Trans Broadcasting.2007,53(3):1

[5]UDCast.Open statistical multiplexing architecture for mobile TV.www.udcast.com.2007,3

上一篇:小骨瓣外侧裂入路手术下一篇:社区调查