软件体系结构范文
时间:2023-03-24 13:15:30
导语:如何才能写好一篇软件体系结构,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
关键词:软件体系结构;重用;模式
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)35-2519-02
A Comprehensive Introduction to the Study of Software Architecture
WANG Qiang
(AnHui Technical College of Mechanical and Electrical Engineering, Wuhu 241000, China)
Abstract: Software architecture is the hotspot in software engineering research. This article discusses about the purpose and current situation of software architecture researching.
Key words: software architecture; reuse; mode
1 引言
随着计算机技术的发展和应用的不断深入,软件系统的规模和复杂度日益增加,在软件设计过程中人们所面临的问题不仅仅是考虑软件系统的功能问题,而是面临要解决更难处理的可修改性,性能,可靠性等非功能性问题。特别是80年代以来,对软件适应变更的要求越来越高,所以对软件整体的设计已经超过了算法和数据结构,成为系统开发关注的主要问题。软件开发最大的风险来自需求变更,但一蹴而就搞定需求不现实,好的体系结构是易改动的基础。 能否复用很重要,设计复用比代码复用更有用更难。因此,研究软件体系结构研究的能提高软件生产率和简化维护。提高软件生产率的关键在于软件相关部分的复用,而简化维护的关键是减少软件理解的成本和提高软件的质量,这就是研究软件体系结构的目的。
2 软件体系结构的概念
软件系统的规模在迅速增大的同时,软件开发方法也经历了一系列的变革.在此过程中,软件体系结构也由最初模糊的概念发展到一个渐趋成熟的技术。
1) 1992年Perry 和Wo1f 在他们早期关于软件体系结构的论文中指出:软件体系结构是一组具有一定形式的结构化元素或称为设计元素组成。
2) 1993年Shaw 和Garlan 认为软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。
3) 1994年Hayes Roth 则认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。
4) 1995年Garlan 和Perry 在IEEE 软件工程学报上又采用如下的定义:软件体系结构是一个程序各构件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。
5) 1996年Boehm 和他的学生提出,一个软件体系结构包括一个软件和系统构件,互联及约束的集合。
6) 1997年Ctements 和Kazman在《使用软件体系结构》一书中给出如下的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。
3 软件体系结构的现状
下面介绍几种常见的体系结构。
模型-视图-控制结构是交互式应用程序广泛使用的一种体系结构。它有效地在存储和展示数据的对象中区分功能模块以降低它们之间的连接度,这种体系结构将传统的输入、处理和输入模型转化为图形显示的用户交互模型,或者换一种说法,是多层次的Web商业应用;MVC体系结构具有三个层面:模型(Model)、视图(View)和控制(Controller),每个层面有其各自的功能作用。
模型层负责表达和访问商业数据,执行商业逻辑和操作。也就是说,这一层就是现实生活中功能的软件模拟;在模型层变化的时候,它将通知视图层并提供后者访问自身状态的能力,同时控制层也可以访问其功能函数以完成相关的任务。
视图层负责显示模型层的内容。它从模型层取得数据并指定这些数据如何被显示出来。在模型层变化的时候,它将自动更新。另外视图层也会将用户的输入传送给控制器。控制层负责定义应用程序的行为。它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作;在一个图形界面中,常见的用户输入包括点击按钮和菜单选择。在Web应用中,它包括对Web层的HTTP GET和POST的请求;控制层可以基于用户的交互和模型层的操作结果来选择下一个可以显示的视图,一个应用程序通常会基于一组相关功能设定一个控制层的模块,甚至一些应用程序会根据不同的用户类型具有不同的控制层设定,这主要是由于不同用户的视图交互和选择也是不同的。
在模型层、视图层和控制层之间划分责任可以减少代码的重复度,并使应用程序维护起来更简单。同时由于数据和商务逻辑的分开,在新的数据源加入和数据显示变化的时候,数据处理也会变得更简单。
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。它反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。按这种方式理解,软件体系结构风格定义了用于描述系统的术语表和一组指导构件系统的规则。
对软件体系结构风格的研究和实践促进了对设计的复用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。体系结构风格的不变部分使不同的系统可以共享同一个实现代码。只要系统是使用常用的、规范的方法来组织,就可使别的设计者很容易地理解系统的体系结构。例如,如果某人把系统描述为"客户/服务器"模式,则不必给出设计细节,我们立刻就会明白系统是如何组织和工作的。
下面是Garlan和Shaw对通用体系结构风格的分类:
1) 数据流风格:批处理序列;管道/过滤器
2) 调用/返回风格:主程序/子程序;面向对象风格;层次结构
3) 独立构件风格:进程通讯;事件系统
4) 虚拟机风格:解释器;基于规则的系统
5) 仓库风格:数据库系统;超文本系统;黑板系统
设计模式使人们可以更简单方便地复用成功地设计和体系架构。将以证实的技术表述成设计模式也会使新系统开发者更容易理解其设计思路。设计模式帮助你做出有利于系统复用的选择,避免设计损害了系统复用性。通过提供一个显示类和对象作用关系以及它们之间潜在联系的说明规范,设计模式甚至能够提高已有系统的文档管理和系统维护的有效性。简而言之,设计模式可以帮助设计者更快更好地完成系统设计。
一个设计模式描述了对于特定设计问题被验证的解决方案,它综合了所有开发者对这个问题所在领域的知识和见解;同时也是对于常见问题的可重用方案,它们一般适用于单个问题,但是组织在一起就可以提供整个企业系统的解决方案。J2EE平台就用到很多设计模式,列举如下:
1) 前控制器。
2) 控制器
3) 视图
4) 视图帮助
5) 会话面
6) 数据访问对象
7) 值对象或传输对象
8) 截取过滤器
随着软件体系结构的不断发展,出现了一种新型的体系结构即SOA。SOA被称为软件体系结构的划时代革命。
SOA是一种结构模型,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件交互的人为依赖性。SOA的关键是“服务”的概念,W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。将SOA定义为:“本质上是服务的集合。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数。” 将SOA定义为:“按需连接资源的系统。在SOA中,资源被作为可通过标准方式访问的独立服务,提供给网络中的其他成员。与传统的系统结构相比,SOA规定了资源间更为灵活的松散耦合关系。” Gartner则将SOA描述为:“客户端/服务器的软件设计方法,一项应用由软件服务和软件服务使用者组成……SOA与大多数通用的客户端/服务器模型的不同之处,在于它着重强调软件组件的松散耦合,并使用独立的标准接口。” Gartner相信BPM和SOA的结合对所有类型的应用集成都大有助益――“SOA极大的得益于BPM技术和方法论,但是SOA面临的真正问题是确立正确的企业意识,即:强化战略化的SOA计划(针对供应和使用)并鼓励重用。”虽然不同厂商或个人对SOA有着不同的理解,但是我们仍然可以从上述的定义中看到SOA的几个关键特性:一种粗粒度、松耦合服务结构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。
4 软件体系结构存在的不足
尽管软件体系结构研究领域取得了若干成果,但在应用方面,软件体系结构仍然有很多可以改进的地方。N. Medvovonic认为,目前对软件体系结构的理解还仅限于直观、或当作稀奇事、或当作民间传说;语义丰富但不严谨。体系结构似乎没有解决实际问题。由此可见,若要有效地指导软件工程实践、为软件开发提供一个好的结构及其设计结构的指导原则,软件体系结构研究还有若干问题需要解决。比如缺乏统一的软件体系结构的概念,各种软件体系结构的不易操作性,ADL繁多,缺乏统一的ADL支持等等。
5 前景展望
目前,软件体系结构领域研究非常活跃。随着研究的不断深入,软件复用的层次越来越高,人们在开发新的系统时不必总是重复别人已经创造的东西,而是可在软件开发中复用已有成果,这样可以把注意力投入到软件新增功能上,提高软件开发效率。
针对软件体系结构发展趋势,Clements预测在未来的5~10年内软件体系结构研究将围绕如下5个方向展开:体系结构创建与选择;体系结构表示;体系结构分析;基于体系结构开发;体系结构演化.而Perry在IFIP 2000 年世界计算机大会主题演讲中认为,最为重要的3个研究方向是:体系结构风格、体系结构连接件和动态体系结构。
参考文献:
[1] 王霞俊.浅谈软件体系结构[J].常州轻工职业技术学院学报,2007(1).
[2] 邓伦丹,罗丹,汪伟.几种主要的软件体系结构风格的分析[J].科技信息,2007(32):102.
[3] 孙昌爱,金茂忠,刘超.软件体系结构研究综述[J].软件学报,2002(13)
[4] 秦建超,杜友福,孟珍伟.浅谈软件体系结构科技信息[J],2007(2)
[5] Michale Kircher.面向模式的软件体系结构[M].1版.北京:机械工业出版社,2005:5-6.
篇2
【 关键词 】 软件体系结构;浏览器引擎
Research of Hybrid Web/Native Software Architecture
Liu Lei Liu Qiang
(Guangdong Certificate Authority Co., Ltd GuangdongGuangzhou 510100)
【 Abstract 】 Hybrid Web/Native software architecture was proposed to satisfy the complex and variable business need of CA operators. The architecture integrates Web browser engine with native client software. With this architecture, client software owns the full control of hardware, while it is as flexible as a Web application. The UI and business flow of client software can be dynamically modified by Web server side code in real time.
【 Keywords 】 software architecture; browser engine
1 引言
随着数字证书应用的不断发展,数字证书运营商对业务灵活性的需求不断增加。目前主流数字证书客户端软件基本属于纯粹的本地客户端软件,虽然经过多年的不断开发完善,功能已经基本成熟、稳定,但是随着客户端软件部署数量的不断增加以及地域范围的不断扩大,当数字证书运营商的业务管理规则需要调整时,客户端软件的更新维护成本将会很高。更重要的是,有的业务规则调整之前需要做到所有的本地客户端软件都统一更新到一个最新的版本,否则将会导致用户体验不一致问题的发生。数字证书运营商迫切需要一种统一、快速、准确控制客户端软件功能的技术解决方案。
基于Web的应用虽然具有很高的灵活性以满足这种需求,但由于主流浏览器在安全方面的限制,使得在涉及硬件设备管理的领域,Web应用常常存在各种使用上的困难。以IE浏览器为例,虽然可以通过开发ActiveX控件的方式来使得Web页面具有访问本地数字证书硬件设备的能力,但是各种不同的IE安全设置和操作系统安全设置常常使得控件无法正常使用,这大大增加了运营商的维护工作量。另一方面,传统的本地客户端软件,虽然具有完全控制硬件设备的权限,但是在灵活性上还远远不如像Web页面那样可以通过服务器端代码动态实时为客户端生成用户界面和业务流程。
本文提出了一种Web/Native混合软件体系结构,该体系将Web浏览器引擎集成到本地客户端软件中,实现了在客户端软件中通过HTML、CSS和JavaScript来控制用户界面和业务流程,底层则可以直接访问硬件设备,实现对设备的完全控制。
2 体系结构设计
Qt是一套开放源代码的跨平台C++开发框架,为了将来客户端软件可以顺利移植到各种基于嵌入式操作系统的车载或手持移动设备上,选择Qt作为体系结构的技术实现框架。Web浏览器引擎采用了开放源代码的WebKit,该引擎目前已经被各种商用浏览器广泛使用,例如苹果Safari、Google Chrome等。
基于Qt和WebKit的Web/Native混合软件体系结构如图1所示。最上层的Application层将完全使用网页开发语言来进行描述(HTML/CSS/JS),可以通过网页开发工具来进行开发,这使得数量众多的网页开发人员可以参与到客户端软件开发中,在某种程度上降低了客户端软件开发的人力成本。在Application层之下,是WebKit浏览器引擎,用于对网页代码进行解析。在WebKit之下,则是Qt提供的对网络、图形界面等方面的开发库,这些库都通过C++代码来进行调用。在这一层中也包含了各种自行开发的对硬件设备进行控制的库。
3 JavaScript与本地Qt对象交互机制
将Web页面与底层开发库整合起来的核心在于实现JavaScript与本地Qt对象之间的交互机制,本文将对该机制进行详细描述。
信号和槽(Signal and Slot)机制是Qt机制的核心,用于对象间的通信,也是Qt的一个主要特点。Qt提供了信号和槽机制,当一个信号被触发,与其连接的槽便会触发,这是在Qt的预编译过程中生成moc代码来实现的。
在图形用户界面开发中,当对一个Widget进行操作时,常常需要触发另一个Widget去处理,也就是实现两个对象之间的通信。例如,当按下一个按钮时,希望窗口关闭。
常见的实现机制是使用回调函数。回调函数是调用一个函数指针所指向的函数。如果需要在按下按钮时,执行某个函数,则需要把指向这个函数的指针作为参数传入到回调函数中。但采用这样的机制存在类型安全问题,此外还会增强类之间的耦合性,不利于软件的扩展和维护。
JavaScript与本地Qt对象的交互分为两个步骤,如图2所示:1)将本地Qt对象的信号和JavaScript的slots连接起来;2)通过JavaScript调用本地Qt对象的slots。
在开发中,一个对象只需继承Qobject,便可使用该机制。信号和槽机制首先是类型安全的,信号和槽的参数必须匹配(槽函数的参数表必须小于或等于信号的参数表)。其次,使用该机制可以降低对象耦合性,在开发一个对象时,不需考虑一个信号发出后需要进行什么操作,也不需考虑谁要连接到这个槽函数,这样有利于多人合作开发以及将来的代码复用。信号和槽的连接方法请见图3所示。
4 对象与Web页面的整合方式
有两种方式可以将Qt对象整合到Web页面中,然后再用QWebView widget来显示这张Web页面:方式1 将Qt对象添加到JavaSript的上下文环境中;方式2 创建一个插件,然后通过对象标签将Qt widgets置入到Web页面中。
我们选择了使用方式2,页面中widgets的公共槽将像普通函数一样公开给JavaScript函数。widget要能整合到Web页面中,需要继承QWebPluginFactory类,并且重新实现plugins方法和create方法。plugins方法用来通知Web页面该插件可用。但需要创建widgets时,create方法将被调用。例如,当需要将一个名为my-device-control的widget置入页面的HTML代码时,可使用如下的对象标签:
/>
为了创建这个widget,必须激活plugins并且将plugin工厂类通知给QWebPage。在下面的代码中,DeviceControlFactory在application/my-device-control发出请求时,创建了DeviceControl实例widget。
{
...
QWebSettings::globalSettings()->
setAttribute( QWebSettings::PluginsEnabled, true);
webView->page()->setPluginFactory( new DeviceControlColorLabelFactory( this ) );
...
}
DeviceControl widget公开了一个名为openDevice()的公共槽,这样就可以在JavaSript中像调用普通函数那样进行调用了,调用代码如下:
打开设备
5 实现效果
如图4所示是基于Web/Native结构开发的数字证书客户端软件。该客户端的显示界面全部采用Web方式实现。界面分为证书功能区、证书消息区、证书展现区。使用纯Web的方式很容易实现证书消息区和证书展现区的功能,但是如果不进行一系列浏览器安全设置,是无法实现读取USB Key中的数字证书的,也就无法实现数字证书与服务器消息之间的对应关系。引入Native的方式很好的解决了这个问题,通过Native接口不仅可以在完全无需额外设置的情况下读取USB Key中的数字证书,还可以实现证书功能区中的修改USB Key密码、使用USB Key中的私钥进行文件签名等功能。
5 结束语
Web/Native混合软件体系结构通过在传统C/S结构的客户端软件中集成Web浏览器引擎,使得客户端软件既具有对硬件设备的全面控制能力,又具有与Web应用相同的灵活性。基于该体系结构开发的数字证书客户端管理软件将能很好的满足数字证书运营商越来越复杂多变的业务需求。
参考文献
[1] 布施曼等著.面向模式的软件架构(卷4):分布式计算的模式语言.人民邮电出版社,2010.
[2] 叶伟等著.互联网时代的软件革命――SaaS架构设计.电子工业出版社,2009.
[3] 伊斯特等著.C++设计模式――基于Qt 4开源跨平台开发框架.清华大学电子工业出版社,2007.
[4] Developing hybrid Web/GTK+ rich internet applications. http:///webkit/webkitgtk-fosdem08.pdf.
[5] Federal Information, Web Enabling your Native Apps,http:///webkit/WebEnableYourNativeApp.pdf.
作者简介:
篇3
关键词:化学抽象机;软件体系结构信息科学
1概述软件体系结构是当前软件工程领域的一个研究热点,是大型软件开发中必须解决的核心技术。无数的写作论文软件工程实践证明:一个成功的软件系统往往都有一个好的软件体系结构。但是在软件设计、开发、测试、运行以及升级的各个阶段,体系结构都不可避免地会发生变化,如何把运行时适应性机制加到复杂的大规模软件系统中就成为一个重要的工程问题。然而要通过软件体系结构的研究实现这一目标,首先必须用某种方式描述动态体系结构。
目前已定义的ADL超过20种,具有代表性的ADL包括C2、Darwin、Rapide、Unicon、Wright、D-ADL和ACME等[1];国内包括XYZ/ADL、ABC/ADL、FRADL和A-ADL等。但这些语言大多注重软件系统结构静态特性的描述,而对其动态特性描述不足。PaolaInverardi和AlexxanderLWolf[2]首先将CHAM应用于描述和分析软件体系结构。他们充分利用CHAM擅长描述系统动态性和并行性的优点,用CHAM形式化方法描述和分析了软件体系结构动态操作性语义,在软件体系结构动态特性描述方面进行了有效的扩展,主张用CHAM模型描述软件体系结构,并例举描述了编译器的体系结构,包括顺序多阶段编译器和并行、共享存贮库的多阶段编译器。基于CHAM的体系结构描述,运用重写技术和结构归纳证明方法,能够对体系结构的部分行为属性进行形式化或半形式化的证明。
2化学抽象机化学抽象机CHAM主要用于异步并行计算模型的建模[3],通过将化学反应和抽象机概念有机结合描述系统状态变化,它将一个系统的状态看成化学溶液,溶液由分子组成,分子根据一定的反应规则相互反应又引起新的系统状态变化。溶液中不同分子可按反应规则平行地进行反应,只要各自反应的分子集不重叠。因CHAM在描述系统动态性、并行性方面的优良特性,所以可较好描述异步并行计算模型,尤其擅长描述如λ计算和CCS进程计算模型[4]。一个化学抽象机由一组分子m0,m1,m2…、溶液s0,s1,s2…和变换规则组成,分子是CHAM的基本元素,由一个常数集和操作符集派生而成的句法代数定义;溶液是由有限多个分子的集合,它反映了系统的某种状态,溶液中的分子根据变换规则进行反应。
变换规则从应用范围可分为:通用规则,即在整个CHAM中通用的规则;专用规则,适用于某些特定分子的规则。从反应作用可分为:加热规则,把大分子分解成小分子的规则;冷却规则,小分子合成大分子的规则。从反应涉及的分子可分为:自反应规则,只有单一分子的状态变化;互反应规则,反应过程中至少有两个分子参加反应。本质上,CHAM可看成一种有限状态机,因此它具有一般状态机特征,与其他以状态机为转换模型的技术相比,CHAM利用化学反应这一隐喻,因此在刻画系统的动态性特征方面比较自然。CHAM规格说明是一个基于操作的系统框架,这种框架不会把所描述的系统曲解为某种特定的计算模型。CHAM描述不仅可以描述系统静态特征,还能从系统操作动态性方面进行描述,通过对各单元的描述、引入的转换规则及项重写描述和分析体系结构的动态行为,因而可使软件开发人员很快地了解系统功能和行为,适用于多种层次的用户。在CHAM中,膜是一种封装结构,任何溶液可以被看作一个关于其它溶液的单一分子,膜内的溶液可以独立进化。膜具有半可渗透性,允许某些分子进入和离开,通过膜上的气孔,可以有选择地从膜中抽取分子,同时,气孔的可逆性允许分子被重新吸收到原始溶液中,膜表示了复合构件,实际上提供了一种刻画系统模块化的途径。
3在SA中的应用3.1描述SA。用于描述SA的CHAM可表示成一个三元组CHAM=(M,E,R),其中:3.1.1分子集M={m|m∈MS∨MI},MS={mS1,…,mSn}为稳定状态分子集,处于稳定状态的分子不吸收或释放电子,MI={mi|mi∈{mS(.P)+,(P.)+mS(.P)+,(P.)+mS}∧mS∈MS}为离子状态分子集,处于离子状态的分子准备进行吸收或释放电子操作,其中P={i(e),o(e)}为分子上的操作集,i(e)为吸收电子,o(e)为释放电子,操作符“.”表示操作顺序。3.1.2电子集E={e1,…,ek},分子可根据自反应规则准备进行进行收或释放电子,当溶液中有两种互补电子,即一对释放-吸收电子时,可根据互反应规则进行反应。3.1.3规则集R=RS∪RM,RS={r|r∈{mS1=mI1,…,mSj=mIj}∪{mS1=mS1*,…,mSj=mSj*},mSj∈MS∧mIj∈MI,j=1,2,…}是分子自身从吸收电子到释放电子的过程或分子复制自身过程规则集,mSj*表示由mSj复制与mSj性质、状态完全相同的分子,RM={r|r∈{m11,m21,…=m11,m21,…},mij,mij∈MI,i,j=1,2,…}是电子在分子间流动过程的规则集,rp∈RM,rq∈RM,p≠q,若{mp1,…,mpj}∩{mq1,…,mqj}=",则rp,rq可并行反应。3.2描述构件、连接件。用CHAM描述软件连接件或构件,可表示成一个四元组(MC,ECI,ECO,RC):3.2.1连接件或构件的分子集MC;3.2.2连接件或构件的前置条件,即输入电子集ECI;3.2.3连接件或构件的后置断言,即输出电子集ECO;3.2.4连接件或构件分子集的反应规则集Rc。连接件或构件的分子集反映了连接件或构件的角色集及在角色上进行的输入输出操作,相对来说是静态的,是一种实现上的结构,属于语法层。输入电子集是使用该连接器或构件前必须具备的条件,输出电子集后映的是使用该连接件或构件后的状态。反应规则集说明了连接件或构件如何运用反应规则从而发生状态的演变,实质上是连接件或构件的动态行为,是相对动态的,属于语义层。如管道-过滤器体系结构风格的CHAM描述如下:定义过滤器:MC:PIPE_FILTERECI:readerECO:writerRC1:PIPE_FILTER=PIPE_FILTER.i(reader)RC2:PIPE_FILTER.i(reader)=i(reader).PIPE_FILTER,PIPE_FILTER.o(writer)RC3:PIPE_FILTER.o(writer)=o(writer).PIPE_FILTER定义管道:MC:PIPE_CONNECI:readerECO:writerRC1:PIPE_CONN=PIPE_CONN.i(reader)RC2:PIPE_CONN.i(reader)=i(reader).PIPE_CONN,PIPE_CONN.o(writer)RC3:PIPE_CONN.o(writer)=o(writer).PIPE_CONN由过滤器和管道构造一个系统:SYS_M:PIPE_FILTER,PIPE_CONNSYS_E:reader,writerSYS_R1:PIPE_FILTER.o(writer),PIPE_CONN.i(reader)=o(writ-er).PIPE_FILTER,i(reader).PIPE_CONN
4展望目前基于构件的软件工程正逐渐成为软件开发的新趋势,但是也给基于构件的软件系统测试带来了新的问题,而CHAM不仅可用于描述动态软件体系结构,还可用于测试体系结构,因为CHAM这种对系统状态变化的描述特别适合于测试系统的行为和功能,Bertolino[5]等人提出从软件体系结构描述中导出实现层的测试用例,以指导构件系统的集成测试的思想,随着对CHAM的深入研究,必将有新的应用被提出。
参考文献
[1]MedvidovicN,TaylorRN,Aclassificationandcomparisonframeworkforsoftwarearchitecturedescriptionlanguages[J].IEEETrans.onSoftwareEngi.,2000,26(1):70-93.
[2]InverardiP,WolfAL.Formalspecificationandanalysisofsoftwarearchitecturesusingthechemicalabstractmachinemodel[J].IEEETrans.onSoftwareEngi.,1995,21(4):373-386.
[3]BerryG.,BoudolG.TheChemicalAbstractMa-chine[J].TheoreticalComputerScience,1992,(96):217-248.
篇4
【关键词】软件体系结构 构件模型 构件语言 SACM SAJ
【中图分类号】G642 【文献标识码】A 【文章编号】1674-4810(2013)14-0081-01
在软件开发中,如何提高软件质量是人们的普遍追求和共同愿望。而提高质量的关键问题就是构件技术和软件体系结构技术。但是,目前在这两项技术开发中面临着多方面的挑战,本文拟对这些问题提出相应的解决方案。
一 基于软件体系结构的构件模型SACM
第一,构件。SACM构件是能提供相对独立服务的计算单元,具有规范的接口和显示的上下文依赖,能够被第三方组合。就其组成来看,主要包括端口和服务两个部分,每个端口代表一个交互点,至多有一个请求服务接口和一个提供服务接口。对于构件来说,其服务实现部分由方法体构成,这就降低了构件之间的耦合度,能够提高构件的复用程度。
第二,构件之间的关系。在SACM中,存在着多种构件,这些构架之间相互联系,形成了多种多样的不同的关系,主要有部分-整体关系、泛化关系、连接关系、协作关系。
第三,连接子的引入及其作用。为了更容易地实现映射、对软件系统属性进行分析、验证和跟踪,提高构件的复用程度,提高软件系统结构的动态配置、加强低软件的维护,在SACM构件中有必要引入连接子。就其作用来看,连接子主要发挥通信、转换、辅助交换、协调控制的作用,对整个软件系统的运行有着积极的意义。
第四,基于连接子构件组合方法。在SACM构件当中,构件组合方法主要有两种:基于被动的和基于主动的连接子构件组合方法,不同的方式有各自的优势,需要根据具体情况选用。
二 面向构件语言SAJ
第一,SAJ语言设计的目的。该语言设计的目的主要包括以下几个方面:能够更好地支持面向构件软件开发、实现从体系结构设计模型到地层代码的映射。
第二,SAJ语言支持面向构件软件开发。在进行软件开发的过程中,为了能够更好地对面向构件的软件进行支持,面向构件语言应能够支持构件的封装、复用和组合,并支持构件的设计与开发。具体来说,是从以下五个方面来支持面向构件软件开发的:构件的封装性、构件组合、面向构件设计原则、设计模式、连接子复用。
第三,SAJ语言的实现。使用Polyglot框架来实现SAJ语言的编译器,并将编写的源代码翻译成Java代码,每个端口自动产生一个字段,保存所使用的连接子。由连接子协调构件之间的通信,通过消息截取和消息过滤,有利于解决构件之间不相容的问题。有利于实现日志、数据加密传输等服务,并能够实现各种体系结构风格,具有良好的运用空间。
三 SAJ语言的语法、语义和类型系统
第一,SAJ语言的简介。对于SAJ语言来说,它的核心是基于RelJ,它是在RelJ的基础上,添加了构件、端口、连接子、角色等软件体系结构。
第二,SAJ语言的类型系统。类型是程序设计中项的集合,它们具有共同的性质。对于类型系统,从本质上来说,它是一个类型推导规则的集合,在程序设计中具有重要的作用:检查类型错误、支持语言抽象、优化程序,并支持语言的安全性。
四 丰富构件接口信息
第一,显示相应的服务关系。显示描述请求服务和提供服务之间的关系,构件要想为外界服务,就需要从外界得到相应的请求服务。对于现有构件模型来说,请求服务和提供服务之间的关系是固定的。但是在可复用构件的软件开发中,请求服务和提供服务之间不存在严格的依赖关系,往往存在着一些问题与不足,影响正常的服务。因此,有必要显示请求服务与提供服务之间的关系。此外,从构件复用粒度的角度来说,显示它们之间的服务也是十分必要的。同时,显示它们之间的关系,有利于对构件质量进行精确度量、调整与改进,更能灵活适应不同的环境,提高服务质量,更好地满足软件开发的实际需要。
第二,描述服务的参数值。在进行软件开发时,服务的参数值往往会对构件行为产生一定的影响。并且构件开发人员对这个也非常清楚。所以,在接口中增加描述服务的参数值是现实的、必要的。在构件接口中,有提供服务和请求服务,对于它们的参数值描述略有不同。一般是在行为协议中描述参数值,并在构件组合中得到具体应用。
五 结束语
总之,构件模型和面向构件语言有利于解决当前构件技术和软件体系结构技术所面临的问题。文中所提出的构件模型SACM和构件语言SAJ,能够有力地促进构件技术的发展。在今后的实际工作中,仍然有对该相关问题进行进一步深入研究的必要。
参考文献
[1]岳洋.SMC/ADL:一种层级式构件系统的体系结构描述语言[J].计算机科学,2012(7)
篇5
关键词: 模糊测试; 体系结构分析; 漏洞挖掘; 安全漏洞
中图分类号: TN711?34; TM417 文献标识码: A 文章编号: 1004?373X(2016)09?0099?04
Abstract: To improve the efficiency of vulnerability mining, the vulnerability mining system Fast Fuzzing based on software architecture analysis was designed and implemented in combination with the advantages of symbolic execution, stain analysis and fuzzing test. This system is composed of architecture analysis, instruction tracing, symbolic execution, stain analysis and dynamic testing. To improve the system efficiency, the traditional technology method was optimized. The experimental results show that the Fast Fuzzing system can effectively detect the security problems in IE8 and IE10, successfully trigger multiple vulnerabilities in IE8 and IE10, which is suitable for the safety testing of common software.
Keywords: fuzzing test; architecture analysis; vulnerability mining; security vulnerability
0 引 言
由于软件漏洞的高危害性,漏洞挖掘技术已成为计算机领域中的一个研究热点[1]。一方面,软件安全研究人员专注于各种流行软件的安全性分析和测试,以发现这些软件中的安全问题;另一方面,软件开发商也积极投入到产品的安全检测中,以提高软件的安全性[2]。
近年来,在程序分析和编译原理等领域的促进下,面向源代码的漏洞挖掘技术取得了一定成果。然而,该技术仍然存在着许多不足之处:如出于商业利益和商业保护等原因,绝大多数的软件开发商并不对外提供软件的源代码[3]。其次,源代码层次的漏洞挖掘和分析并不能发现在程序编译、程序链接过程中产生的漏洞问题。此外,软件中引入的软件体系结构方法、对外接口的不规范调用,也有可能存在潜在的安全问题[4]。
1 系统需求与目标
现有的符号执行技术主要面临路径爆炸、约束求解困难和效率比较低等问题,而本文的设计思想基于符号执行技术和模糊测试技术,同时与软件体系结构的方法相结合[5]。因此,本系统的设计目标主要包括如下几点:
(1) 高效率。提高本系统的测试效率,使得系统能够对待测软件进行自动化测试,分析软件运行时的状态信息,并且能够准确记录软件的异常行为和崩溃信息。
(2) 高适用性。能够对通用格式的数据进行处理,并且通过反馈式生成测试用例,驱动测试过程的持续运行。
(3) 高代码覆盖率。能够在动态测试时分析测试用例的代码覆盖率,尽可能生成不同路径的测试用例,提高系统测试时的代码覆盖率。
2 系统架构设计
为了提高漏洞挖掘的效率,本文在软件体系结构分析的基础上,结合了符号执行和污点分析技术,设计和实现了针对二进制程序的漏洞挖掘系统Fast Fuzzing[6]。
Fast Fuzzing漏洞挖掘系统采用离线符号执行和离线污点分析的方法,在PANDA平台的基础上实现了上述功能,同时利用STP求解器进行约束求解,生成新的测试用例。另外,还结合了污点分析结果,得到相关的污点信息,从而用于导向型测试用例的生成[7]。在进行动态测试时,Fast Fuzzing系统会计算每次测试用例的代码覆盖情况,从而在选择新的测试用例进行测试时,优先选择能够提高代码覆盖率的新测试用例。Fast Fuzzing系统架构图如图1所示。Fast Fuzzing漏洞挖掘系统主要由指令追踪模块、体系结构分析模块、符号执行模块、污点分析模块和测试模块组成。
3 系统实现
3.1 指令追踪模块设计与实现
指令追踪模块的主要功能是,记录测试程序执行时每条指令的地址、上下文信息和内存信息等。该模块是在动态分析平台 PANDA下实现的,其作为 PANDA平台的一个工具模块 panda_tools。指令追踪模块主要有如下三个模块:
指令追踪:程序执行过程中能够动态分析每条指令,记录指令的具体信息和寄存器信息。指令追踪功能主要通过注册PANDA_CB_INSN_TRANSLATE和PANDA_CB_INSN_EXEC两个回调函数实现。
内存追踪:程序执行过程中对内存的操作进行有针对性的记录,包括内存的申请、内存的读/写、内存块大小和数据信息等。内存追踪方法与指令追踪类似,通过注册 [PANDA_CB_VIRT_MEM_READ,PANDA_CB_VIRT_][MEM_WRITE,]PANDA_CB_PHYS_MEM_READ和PANDA_CB_PHYS_MEM_WRITE四个类型的回调函数,分别实现对虚拟地址内存的读/写操作和物理地址内存的读/写操作的监控。
函数追踪:程序执行过程中能够记录系统函数的调用,同时在提供符号表的情况下,能够记录指定函数的调用信息。系统通过 PANDA平台对指令分析的过程,注 册了两个回调函数对其进行处理,类型为PANDA_CB_INSN_TRANSLATE的translate_call back函数和类型为PANDA_CB_INSN_EXEC的exec_callback函数。
3.2 体系结构分析模块设计与实现
体系结构分析模块的功能是对最基本的主程序和子程序进行静态分析,通过对二进制程序进行基本块划分,记录相关的基本块信息,提取其中的函数调用关系,从而分析程序中的所有路径,再根据静态分析时的信息提取出相应路径的约束关系,用于后续的符号执行中[8]。
体系结构分析模块是在IDAPro静态分析工具的基础上实现的,之后通过模块实现的插件对IDAPro反汇编结果进行深入的分析,对程序进行基本块划分和记录,同时提取出其中的调用关系。该模块的基本架构如图2所示。在体系结构分析模块中,主要包含基本代码块分析、函数调用分析和路径分析三个部分。
3.3 符号执行模块设计与实现
符号执行模块通过分析指令追踪时的记录,结合体系结构分析时的路径关系,将输入数据符号化表示,生成相应的约束关系;之后,在轨迹重放时,根据程序执行时的上下文环境,更新路径约束关系,并利用约束求解器进行求解,生成新的测试用例,对程序进行进一步的测试。本系统基于PANDA平台构建,其底层由QEMU模拟器构建,采用TCG中间语言的方式对指令进行翻译处理。本文在此基础上,采用了离线符号执行的方式,根据指令追踪时的记录,实现对中间代码的符号化分析,从而提高符号执行的效率。
符号执行模块首先在体系结构分析模块的基础上,通过对目标软件的静态分析,生成软件内部的函数调用图,进而推导出软件中的路径关系。该模块的基本流程如图3所示。
3.4 污点分析模块设计与实现
污点分析模块通过指令追踪时对原始输入数据的污点标记,分析相关内存信息,记录污点数据的传播过程,获得输入数据与敏感内存操作的关系,从而生成新的测试用例。
污点分析模块是在PADNA平台基础上实现的,借助于指令追踪模块,对目标程序的执行流程进行轨迹记录,生成相应的轨迹记录文件。轨迹记录部分主要针对每条执行过的指令,具体包括指令的地址、指令机器码和指令运行时寄存器、内存的相关信息。
3.5 动态测试模块设计与实现
动态测试模块是在Windows异常处理机制的基础上,通过执行目标程序捕获运行时出现的异常信息判断测试用例是否会引发程序崩溃,再进一步分析崩溃信息,判断该问题是否是由于软件自身的安全漏洞而引起的。同时,动态测试模块的功能还在于能够不断生成新的测试用例,对目标程序进行持续的测试。本系统主要是在Windows异常处理平台下实现了动态测试模块,主要通过对未执行代码块中插入软件断点追踪指令的执行过程,并且对程序运行时的异常情形进行监控。
(1) 处理流程
动态测试模块采用加载目标程序的方式对目标程序进程测试。同时,在创建目标程序的进程时,通过DLL注入的方式实现对异常信息的监控和对代码覆盖率的检测功能。其具体处理流程如图4所示。在程序碰到异常情形时,首先通过注入的DLL判断此处的异常是否是DLL注入时插入的指令造成的,如果是则恢复原先指令,记录此时的状态信息,以便分析代码覆盖率;否则的话,则认为是程序中存在的安全问题触发了此类异常,记录测试用例、此时的寄存器和上下文信息,以便进一步确认该安全问题是一个程序漏洞。
(2) 异常监控
异常监控部分主要包含追踪路径初始化、基本代码块断点设置和异常处理函数设置这两个功能,其具体实现是通过DLL注入的方式对目标程序的执行进程进行监控。
(3) 代码覆盖率检测
在对基本代码块进行断点设置时,根据BBL_INFO结构中的isexecute字段判断基本代码块是否执行。对于已经执行的基本代码块,将其记录在已测试基本代码块结构中,然后在程序执行完后,将记录中的代码块与模块中的所有代码块进行比对,算出该模块中的基本代码块代码覆盖率。
4 系统测试与分析
4.1 功能测试
(1) 测试方法
针对IE10,初始测试用例大小为21 824 B,指令记录文件大小为53 323 MB, 共生成了625 369个测试用例,发现了24个异常。针对IE8,初始测试用例大小为21 824 B,指令记录文件大小为23 954 MB,共生成了405 712个测试用例,发现异常数为31个。通过上述异常分析可以看到,IE8中的异常2和IE10中的异常2信息基本一致,都属于访问不可访问内存错误,而其他异常信息也属于此类错误。为测试Fast Fuzzing系统的代码覆盖率情况,本测试中对比分析FileFuzz工具对IE8软件的测试代码覆盖率情况,结果如表3所示。
通过上述结果的对比,可以发现Fast Fuzzing相对于传统的模糊测试工具而言,其在测试时覆盖的代码面更广,能够对软件进行更为全面的安全测试。
5 结 论
针对传统模糊测试方法的不足,本文设计并实现了一种基于软件体系结构的漏洞挖掘工具,并且结合了混合符号执行技术和细粒度污点分析技术,通过对这两方法的反馈信息进行深入分析,生成新的测试用例驱动测试流程,从而大大地提高了测试时代码的覆盖率和测试效率。
参考文献
[1] 杨世德,梁光明,余凯.基于ARM嵌入式系统底层漏洞挖掘技术研究[J].现代电子技术,2015,38(18):94?96.
[2] 蒲石,陈周国,祝世雄.震网病毒分析与防范[J].信息网络安全,2012(2):40?43.
[3] 王铁磊.面向二进制程序的漏洞挖掘关键技术研究[D].北京:北京大学,2011.
[4] 陈宝国.美国国家网络安全战略解析[J].信息网络安全,2010(1):66?68.
[5] BRUMLEY D, POOSANKAM P, SONG D, et al. Automatic patch?based exploit generation is possible: techniques and implications [C]// Proceedings of 2008 IEEE Symposium on Security and Privacy. [S.l.]: IEEE, 2008: 143?157.
[6] BALAKRISHNAN G, REPS T, MELSKI D, et al. What you see is not what you execute [J]. ACM transactions on programming languages and systems, 2010, 32(6): 202?213.
篇6
关键词 软件通信体系结构 无线电系统 软件定义
中图分类号:TP319 文献标识码:A
在现实生活中,软件定义无线电技术在军事方面的应用不断地发展研究,各国为了早日实现军事化的软件定义无线电技术,加大了对软件定义无线电的研究。目前,软件定义无线电技术已成为未来军事通信发展的趋势。①
1 软件通信体系结构
1.1 硬件体系结构
软件通信体系中硬件体系结构采用了面向对象技术,通过面向面向对象技术的概念对系统内部的典型模块进行划分,要求实际系统一旦实现,必须将其详细的、完整的接口进行公开。软件开发人员可以通过公开的接口,对硬件的性能和容量以加载特定的波形,第三方则通过公开的接口,提供系统内部模块,方便了新技术的插入。
硬件体系结构除了要对所有无线设备系统内部硬件模块的组成进行定义,还要给出所有无线设备内部硬件的物理属性。当无线设备系统内部硬件物理属性符合条件时,这些硬件设备就可以应用到实际平台硬件模块,具有统一性,针对所有的通信设备来说都是通用的,实现了硬件模块设计的实用性与通用性,节约了系统成本。未来无线通信系统发展主要以软件为主,而现代无线通信系统是由软件与硬件相结合来实现无线通信的功能。因此,为满足无线通信系统未来发展的需求,硬件模块要具有一定的可扩展性,这可以确保在原有硬件模块基础上,通过增加新的功能或者在已有的硬件模块中增加新的硬件模块来实现新的技术,既保证了硬件模块统一性,又增加了硬件模块内在的灵活性,满足软件无线电发展的需求。②
1.2 软件体系结构
在软件通信体系中软件与硬件所承担的功能不同,根据软件在通信体系中所承担的功能,可将软件体系结构由上到下分为应用程序、核心框架、公共对象请求体系中间件和嵌入式实时操作系统四部分。其中核心框架、公共对象请求体系中间件以及嵌入式实时操作系统三部分共同构成了软件体系结构中的核心内容,也是软件体系结构中一个通用的软件平台。软件平台的构成给开发人员和波形的设计带来了新的要求与限制,有利于实现波形从一个无线通信系统到另一个无线通信系统的移植。
1.3 安全体系结构
软件通信体系中安全体系结构,为了保证在不同的无线通信系统能够相互通连与相互操作,是为了确保用户的信息在传输、发送、处理以及存储过程中的完整性与机密性。在安合体系结构中,整个系统的安全功能是由一个通信保密模块、红边处理器以及黑边处理器三部分共同来完成的,而非一个边界分明的安全模块来单独完成。③
2 软件定义无线电系统
软件定义无线电系统又称为软件无线电系统,是一种可以通过软件进行编辑,实现全部功能的无线电,具有较高的灵活性与通用性。用户通过软件无线电系统,对动态修改配置对系统中的网络装备与软件更新设备进行修改,从而获得更好的服务与性能。软件定义无线电系统是通过一个简单的终端设备,运用软件重配置功能来支持各种不同种类的无线系统与服务的新技术。固定或者移动的软件定义无线电设备,都能让用户通过改变软件改变接收与发送的特征。移动无线电系统与改变运行模式的软件定义无线电设备相互通联,并且能够同时在多种公共安全频带中工作。
软件定义无线电系统不仅具备基本的无线通信功能,还具有以下三个方面的功能:一是通过软件定义无线电系统能够升级系统所装载的软件,以此来达到对系统的升级与功能的更新。④二是软件定义无线电系统可以支持不同电台系统的相互通联,达到不同独立运行的电台系统能够互传信息。三是软件定义无线电系统主要以软件为主,解放了硬件通信业务传输方式,通过软件定义无线电系统所装载不同软件实现动态配置系统功能。
3 软件定义无线电的发展
软件定义无线电技术采用现代化高端软件进行操纵与控制,具有高自动化程度与较强的扩展能力,打破传统依赖于硬件发展的通信体系。软件定义无线电体系的发展是通信领域的第三次革命,经历了从固定通信到移运通信,模拟通信到数字通信的改革。
软件定义无线电技术作为现代通信行业新技术,在未来的无线电通信应用中有良好的发展前景,可能成为未来无线电通信技术的支柱。软件定义无线电技术可以多频段多模式的手机、卫星通信、智能天线以及蜂窝移动通信系统、无线局域网等各个相关的应用领域。
4 总结
随着科学技术的不断发展,软件定义无线电系统在各个领域中得到了广泛的应用,无线通信体系朝着通信数字化、智能一体化的发展。由于我国目前无线通信体系硬件水平的有限,导致软件无线电通信还达不到理想的要求。针对软件通信体系与软件定义无线电系统的研究,可以预见,软件定义无线电技术可能成为未来通信行业发展的核心内容。⑤
注释
① 范建华,王晓波,李云洲.基于软件通信体系结构的软件定义无线电系统[J].通信技术,2011,51(8):1031-1037.
② 刘献,张栋岭,陈涵生.软件定义无线电及软件通信体系结构的规范[J].计算机工程,2009,30(1):95-98.
③ 邱永红,朱勤.基于软件通信系统的无线通信系统研究[J].系统工程与电子技术,2009,26(5)621-625.
篇7
关键词:软件;抽取;需求
信息化产业经过几十年的发展和建设,正逐步从最初的用于解决局部问题的小型或简单软件,向复杂、成体系、网络化的企业级系统扩展。软件系统的构成不再只是模块,越来越多的是功能构件和子系统,使软件系统成为“系统的系统”,或叫复杂系统。如何构建可扩充、可裁剪、可生长的满足企业应用的大型软件系统,已成为软件业研究的重要课题之一。其中,复杂系统的结构设计是人们最关注的核心问题。
1 软件设计的需求分析
软件通常是因需求才进行设计开发,由用户方从解决业务问题的角度提出,均以专业的术语或事务性的语言描述。高质量、清晰准确的需求描述,可有效约束软件系统的结构设计和功能定位。边缘清晰、描述规范的要求,会在一定程度上降低软件设计和开发的成本,提高软件质量和开发效率。但是,需求的成长和变化,往往伴随软件的整个开发过程,这种现状使得软件设计的难度不断增加,程序开发也从传统的开发方法向敏捷编程转化。
用户基于一定的业务需要提出需求,通常不能直接指导软件的开发,只有经过软件设计者的分析提取,通过规范的技术语言描述,形成面向软件开发者的需求规格说明,才能指导软件的研制。抽取需求是软件设计师必须完成的工作,传统的需求抽取方法一般包括面谈、问卷、观察和业务文档研究等,这些方法简单、成本低,对业务逻辑清晰、封闭性较好的需求比较适合,而对复杂且很难封闭的需求,采用传统的抽取方法,则风险很大。在软件开发领域,需求抽取方法有原型法、联合应用开发法和快速应用开发法三种。
1.1 原型法
通过构造软件演示系统,即根据理解的需求,建立一个快速而粗糙的工作模型,由可视化方法获得用户的反馈。
1.2 联合应用开发法
是将领导、用户、开发人员、系统设计师等召集起来通过会议的方式,集中所有人的智慧,对要求进行分析抽取。
1.3 快速应用开发法
就是集前两种方法,加上最优方案的系统研制而进行的一种需求抽取方法,是一种快速软件开发方法。
以上是目前常被采用的需要抽取方法,但对于系统分析员或系统设计师来说,无论采用哪种方法,都必须面临提取关键需求、判断需求增长点和发展方向的问题。
2 需求分析对系统体系结构设计的影响
2.1 抽取影响软件结构的需求,是需求分析的核心
关键需求是软件结构设计的核心,而提取关键需求是软件结构设计师必备的技能。以一个数据录入软件为例,一般需要提供一个交互式界面,由用户键入所需数据,提交存储到文件或数据库里即可。但用户要求录入的数据项,应能随着业务的不断变化而进行增加或删减,可多人同时进行录入。同时,要求对存储的数据按照需要的方式进行查询调阅,甚至进行一定的复合计算或评估分析等。对于这样的需求,录入项不断变化、多人同时操作、存储要求等都是核心元素,这些元素将直接影响软件结构的设计。软件设计应考虑分布式并发机制和大量的数据存储访问要求。这些需求均与功能无关,但会影响软件结构的设计。数据库访问相关的软件,一般采用传统的C/S结构。当用户增加到一定量时,该结构会导致数据库服务器负载加重,甚至系统崩溃。为了适应这种变化,应采用多层结构,将用户操作与数据存储进行分离。采用多层结构,不仅可以缓解数据库服务访问压力,还能降低数据库变化给用户操作带来的影响。录入项的变化需求,潜在地存在着数据项扩充、界面调整等功能要求。一般情况下,完全适应这种变化的软件很难设计。为此,可把录入项作为配置要素,界面设计和数据存储项根据配置项进行定制,应用服务层要在接口设计上考虑数据项的扩充能力。具有这类需求的软件,一般由界面构造工具、录入界面、应用服务软件和数据库服务器构成。
在抽取关键需求的过程中,抽取与业务无关的需求非常重要。“与业务无关”指支撑业务功能运行且与业务处理逻辑无关的功能。传输服务是典型的与业务无关的功能,在任意基于网络运行的软件中,不可避免的需要信息传输功能的支持。抽取与业务无关的需求,需要分析人员有丰富的软件设计经验,这种公共需求的抽取,有利于开发过程中软件的重用,可降低开发成本。
2.2 关注需求中与规模发展相关的因素
软件设计应用规模的发展速度,是软件结构设计时应考虑的主要需求之一。规模是考验软件支撑能力的主要因素。规模的发展可能是用户量的膨胀,也可能是数据量的迅猛增长,或两者都有。软件能力的成长性设计,通常会使开发付出代价,这是由于一方面在设计初期没有考虑这种成长性,导致设计失败;另一方面,虽然考虑了成长性,但由于软件复杂度的增大,增加了开发成本和风险。因此,对并发和负载的设计,应在设计之前就要给予充分考虑。
2.3 捕捉需求的变化方向
确定需求的增长点是考验软件适应能力的关键。需求的变化和调整是客观存在的,软件设计者分析需求时,应考虑到需求中可能存在的变化点或变化趋势,以提高软件的适应能力和成长能力。需求的增长点通常隐含在企业发展和技术发展中,一类是业务发展引起的工作流变化或增长。这种软件结构应具备新业务处理软件的集成能力;一类是业务转向。原有的业务处理软件不能满足转向后的业务处理要求,存在改造、裁剪、新增能力等潜在需求。软件结构还应具备可裁剪、可扩充的能力,否则将会造成巨大的经济损失。
抓住需求的变化点,设计合适的体系结构,可增强软件的生命力。面对需求多变的现实,降低结构的耦合度是有效缓解软件适应能力的方法之一。但是,降低耦合度一般会带来效率或系统复杂度的上升。因此,小型软件选择这种方法应慎重。(下转第16页)(上接第13页)
综上所述,设计满足需求的软件结构,重点关注的是功能,而设计适应需求变化的软件结构,关注的往往是非功能性需求,这需要系统设计师除了具备丰富的经验和敏锐的洞察力外,还应花大量的时间和精力同用户不断沟通与交流,从中获取最需要的需求,以支持软件整体结构的设计。
参考文献:
篇8
【关键词】计算机体系 结构软件模拟技术 分析
虽然软件模拟技术在计算机体系结构上的应用起步较晚,但是已经取得了一定的成就,在现代处理器或计算机系统设计中,体系结构软件模拟技术已成为一个不可缺少的环节。尽管如此,软件模拟技术仍然存在着许多的问题,由于软件模拟技术的开发工艺比较复杂,还需要花费大量的时间对其进行标准测试,所以为了能够让它在计算机体系结构方面的应用能够达到人们对计算机能力日益增长的需求,需要对计算机体系机构软件模拟技术进行分析。
1 计算机体系结构软件模拟技术存在的问题
1.1 软件模拟技术的开发难度比较大
由于计算机的机构极其复杂,当前如果要将计算机里边的晶体管和电路全部通过模拟技术实现是不太现实的操作,所以只能采取结构简化措施,按照一定的层次分配对计算机的体系结构进行简化。但是在同等情况下,计算机体系结构在简化之后依旧相当的复杂,不利于软件模拟技术的开发。所以,为了能够解决计算机体系结构软件模拟技术在应用过程中的这一难题,编程人员经过研究发现可以使用C语言当中的功能语言来开发相对应的模拟软件。这种方式下开发出来的软件和其它方式开发的软件相比,具有明显的优势,比如在使用过程更不容易出错,还可以减少对能源资源以及时间的消耗。当前我国在软件模拟技术开发方面的工作,基本上都是在原本的模拟器基础上开始的,并没有严格遵守从最开始的步骤出发的要求,由于软件模拟技术的复杂性,让许多开发出来的软件在推广使用之前受到广大用户的质疑。因此在软件模拟技术的开展工作上,需要加大对软件设计的力度,以提高软件运行的准确性。
1.2 模拟器的设计时间长
计算机主机上的一大重要运行程序就是模拟器,在模拟运行系统运行过程的时候,记录处理器运行的状态一般都是利用时钟级别以上的记录器。在这种状态下包含大量的数据在当中,在模拟运行速度方面产生了直接的影响。目前我国最快的模拟器运行速度远远慢于计算机主机的硬件运行速度,通过软件模拟技术让处理器的运行速度不断提高,为能够同时提高软件模拟技术的测试运行性能,相关组织也相应的了测试标准程序,解决因测试耗费的时间过长而引起的低工作效率问题。
1.3 软件模拟技术中模拟器的运行结果有待提高
当前我们主要把计算机体系结构模拟器开发的主要过程分为三个阶段,其一是目标体系的构建,其二是模拟器结构的设计,其三是模拟器的实现。这三个阶段中目标体系的构建主要是针对迷你软件的开发,是它开发过程中的一个重要环节,但是在运行结果方面存在很大的缺陷。第二个阶段出现的问题主要体现在它的细节方面,虽然这个过程中能够对计算机的体系结构目标具有比较明确的理解,但是容易出现细节性的错误。综上所述,软件模拟技术在测试运行结果的时候需要特别注意一些运行方面的错误,避免给模拟器运行的结果带来严重的影响。
2 提高计算机体系结构软件模拟技术的有效措施
2.1 相应的减少模拟器运行的参数
为了能够提高计算机的运行速度,可以针对计算机的运行过程是用一些具有代表性的测试参数,并适当对一些模拟器的测试程序进行修改,以减少模拟器运行的参数,提高模拟器运行的测试效果,节约程序测试的使用时间。可以随意选去一些模拟器的运行参数,将它们设置在模拟器设置中,执行的结果为最终结果,如果参数的讯息可以在模拟器中找到对应的结果,则可以将其参数保存,反之则可以进行删减。通过减少运行参数的方式,不仅提高了运行的速度,还可以减少测试过程的误差,降低错误率,提高软件模拟技术在计算机体系结构方面的运用。
2.2 减少模拟器运行指令的数量
计算机作为当代社会信息传播的主要方式之一,在运行过程中需要消耗大量的数据,所以如果要对其运行过程进行全面的模拟,需要在程序中添加大量的运行指令来满足要求,而这些指令也正是运行耗费大量时间的关键所在。所以,为了能够很好的解决这一弊端,随着我国科学技术的不断进步,以及对软件模拟技术的深入研究,发现如果采用全部的指令来完成软件的模拟工作是行不通的,但是如果只是采用其中的部分指令,让这部分指令的运行过程来代替全部指令的运行过程,将让模拟效果大幅度提高。因此同时也面临着一个重要难题,在众多的指令中应该如何取舍才能完美的取代全部指令的运行过程。在做出指令选择的时候需要了解各指令之间的差异,对它的运行效果有所了解,然后进行筛选,在保证不直接影响模拟效果的前提下,选出具有代表性的指令。当前主要的指令选择方式有两种,一个是直接选择指令,另一个是通过统计学的方式对指令进行选择。
3 结语
随着我国信息的传输量大幅度提高,对计算机体系结构要求的提出的更高要求,软件模拟技术被大量的推广和应用,在计算机的发展过程中起到重要作用,对这项技术进行分析就是为了能够促进这项技术更好的发展。
参考文献
[1]李明树,杨秋松,翟健.软件过程建模方法研究[J].软件学报,2009(03).
[2]许建卫,陈明宇,杨伟,潘晓雷,郑规,赵健博,孙凝晖.计算机体系结构模拟器技术和发展[J].系统仿真学报, 2009(20).
[3]王杰生,李舟军,李梦君.用描述逻辑进行语义Web服务组合[J].软件学报, 2008(04).
篇9
随着科学技术的不断进步,我国的建筑设计也开始向现代化设计发展,建筑设计的应用结构也开始使用计算机软件进行精确的设计,本文就应用结构计算分析软件的几个问题进行深入的探讨,并且是否正确使用程序、分析判断计算结果、人工调整计算结果等多个方面进行探讨,分析了进行结构计算和设计时应用结构计算分析软件时应注意的问题。
关键词:结构计算;分析软件使用;分析判断;调整
一、引言
随着时代的不断发展,中国改革开放的进程不断推进,中国的房屋建筑设计也迎来了他们发展机遇,建筑形式的多样化,是当代人们的需求,众多新颖的建筑造型、多样化的构造形式、多元化的设计理念,尤其是在计算机的广泛应用后,建筑设计的功能更加齐全,设计的图样更加精美,设计的数据也更加精确。
目前,整个建筑设计行业应用计算机进行结构计算和设计已经非常普遍,通过计算机结构计处,能大大的提高结构设计人员的工作效率与工作能力,有效提高单纯计算的准确性与精准度,减轻结构设计人员的工作强度。
随着计算机软件和设计自动化的不断提高,由于结构设计人员对软件编制原理理解不透彻,加上工期短、任务重,有时难免出现一些失误和错误,甚至严重影响工程质量。因此结构设计人员在应用计算分析软件进行结构分析及设计时应谨慎对待,绝对不能完全依赖软件。
因不同的计算软件其侧重点不同,都有自身的特点,各具长处和不足,在此我无意进行评论。本文只限于我在实践操作中一些体会,结合工程实际特点,与各位共同探讨在结构计算分析软件的应用中应多加注意的几个问题。
二、正确选择和使用程序
首先,无论从提高维护知识产权意识,还是对应用者的自身长远利益出发,我们都应在程序选择时注意选用经过有关方面鉴定的、正版计算软件。因为在盗版软件解密的过程中,会将软件的一些数据破坏或丢失,有些时候将影响计算的准确性,严重的将会导致产生错误。
目前使用的混凝土房屋建筑行业中结构计算软件主要有:三维空间计算软件如L:=M、LML、L:N=MO、=MLP7,平面杆系软件如OQ,基础计算软件如MR等。结构设计人员应根据工程受力特点,正确地选用相应力学模型的分析软件。在使用软件前应熟悉程序的编制原理、编制条件,搞清其主要功能和适应对象,同时应知道程序的应用范围及限制条件、荷载取值范围等,结合工程的实际情况,对计算程序进行正确的选择和应用。以前曾出现过在结构设计中,利用L:=M 软件进行楼板开大洞的工程的结构分析时,认为面荷为零处计算程序会按无板处理,其实这种理解是错误的。实际上L:=M 软件无法处理楼板开洞问题,它不会对无面荷的区域按洞来对待,这是因为软件的计算假定是建立在楼板平面内刚度无穷大的条件下。
因此要处理此类问题应采用程序,把楼板按弹性板或者分块刚性和分块弹性相结合的情况来处理,这样建立的模型才是正确的。要保证程序的正确使用,就应该熟悉程序的编制原理,不能以我们人的大脑思维逻辑当作计算机的思维。比如目前结构分析软件中的构件是由节点联系在一起的,如果两个构件没有共同的节点,软件就认为它们不是相连的仅通过构件宽度连接两个构件,利用各自的节点建立程序分析模型,这样建立的模型和我们需要的模型并不相符,当然分析出的结果也肯定是不正确。
三、对计算结果进行正确分析判断
结构设计人员应对软件的计算结果进行分析,应令我们建立的计算模式符合结构的实际工作状态,其技术条件应符合有关规范和标准的规定要求,保证计算结果的合理、准确,同时满足工程设计中安全适用、经济合理的原则。有条件的来使用计算分析软件,对计算分析软件的结果不要过于轻信。如在使用基础计算软件,进行十字交叉梁和梁筏基础计算时,在一些结构设计中发现,基础梁的主筋图形中主筋计算配筋量很异常,软件使用说明中又没有具体说明正负主筋的图形位置,经再三仔细核查,输入参数均正确。
为了解决此问题,通过察阅内力及配筋输出文件,我们发现软件在图形输出时,将梁的负筋左右两端取较大值放在梁轴线的下部(我们认为是正筋的位置),而将梁正筋的最大配筋量取相同数值放在我们认为是负筋的位置。这样才发现配筋量是合理的。通过实践我们能得出这样的结论:设计时应按配筋文件进行基础梁设计,不应只图省事而采用配筋图形。
在建筑设计过程中,技术人员可以利用软件进行结构分析时,会发现在同样截面情况下,软件输出的上下层刚度比二层比一层经常大得多,一般在两倍以上。如纯框架结构在选用楼板平面内刚度无穷大的模式下用模型是相同的,同样截面情况下用计算的上下层刚度比要比用计算的要小很多。因此在利用计算时如发现二层比一层的刚度比大时,不要盲目地加大一层构件的结构断面,应进行分析后区别对待。
四、设计不能完全自动化,应对软件的计算结果进行人工调整
设计不能完全自动化应对软件的计算结果进行人工调整建筑设计有关规范中明确规定:结构分析所采用的电算程序应经过考核和验证。为了使设计更加合理,设计不能完全依靠计算机自动化来完成,通常还需要对软件的计算结果进行人工调整,以免因设计人员的失误或粗心而造成安全隐患。复杂结构遇多重荷载作用下的内力和变形分析时,应采用不少于两个不同的力学模型,并对其计算结果进行分析比较。利用结构计算软件进行等高度井字梁或十字交叉梁计算时,由于实际施工中梁的纵筋在两梁相交节点处只有一个方向的梁有效高度!- 可以得到满足,而另一个方向的梁有效高度减小,若按计算配筋,梁的实际承载力会减小。因此需要人为的加大这个方向梁的配筋数量与配质量。
在实际工程中由于框架梁在竖向荷载的作用下支座负弯矩较大,特别是在抗震设防区支座负弯矩非常大,为了保证“强柱弱梁”,一般须考虑框架梁端混凝土的塑性变形引起的内力重分布,以减小梁端负弯矩,相应的增大梁跨中弯矩,以使框架梁的配筋上下均匀、合理。因此各种计算软件均有梁端弯矩调幅系数。但是结构设计人员在应用软件时要特别注意,次梁和悬挑梁不应参与调幅。
有些软件没有区分调幅梁与不调幅梁,因此结构设计人员应用软件时对调幅梁与不调幅梁应加以人工区分,以免应整体调幅引起次梁和悬挑梁计算配筋偏小而造成安全隐患。为了使设计更加合理,由于设计不能完全自动化,经常还需要对软件的计算结果进行人工调整,以免因设计人员的失误或粗心而造成安全隐患
篇10
关键词:明挖车站;SAP2000;车站结构;板单元;壳单元;风道;
中图分类号:U231文献标识码: A
一.概述
明挖地铁车站的计算通常采用平面刚架结构模型[1],在与线路垂直方向截取尺寸,荷载条件不同的截面进行车站横断面计算,再沿线路走向截取纵断面,计算梁柱受力。这种计算方式有着计算模型受力机理清晰,建模简便,设计保守的优点,但相对于车站三维整体建模,二维模型也有其弊端:首先二维模型对于车站断面形式变化较少的车站相对简便,但如果车站断面形式多样,尤其是纵断面需要不止计算一种的情况下,其计算量会非常大,因为其纵断面,每段梁的荷载需用板带法进行手动计算再进行进行施加,如果柱跨不均匀,车站宽度变化多,会大大增加建模工作量,而三维整体建模只需建模一次,并且无需手动计算梁单元荷载,所以相对于三维维整体建模,二维模型计算并不一定能做到简便省时;从受力考虑,二维模型计算没有考虑板的纵向刚度,即板不能与梁共同承受弯矩,这显然不合理,会造成梁单元弯矩比实际大,造成经济浪费;另外由于平面模型自身的局限性,无法模拟侧墙风道出入口开洞,盾构开孔,中板开孔等细部计算。因此需要适时考虑应用三维模型计算,减少工作量,提高结构设计的可靠性和经济性。
二.明挖地铁车站结构
明挖车站结构不同于地上混凝土框架结构,其顶,中,底板极少采用双向板肋梁楼盖与无梁楼盖结构,但也不同于单向板肋梁楼盖,通常,延线路方向梁为主梁,在垂直于线路方向的位置,只有设置扶梯吊钩与车站高度宽度变化等位置才设置次梁,一般只有单方向的主梁;明挖车站没有基础,其底板结构即是基础结构,以温克尔弹簧的连接方式作用于地基土体;侧墙是车站结构的主要承重结构,车站侧向土体土压力作用在侧墙上,平衡于顶、中、底板的轴力。车站顶板,底板与侧墙连接处通过腋角增强刚度。在整个受力体系中,墙、板结构发挥了重要的作用,这与以梁柱结构为主的地上混凝土框架结构形成了鲜明的对比。在这种情况下,板结构不能简单的归为单向板还是双向板,而是在SAP2000软件中,通过单元网格划分,与梁柱体系协同受力。
在SAP2000软件中可以实现面单元的网络划分,通过网络划分后的板单元,其边缘处的梁单元也自动进行划分并于划分后的板单元共用节点。根据车站结构体系的特点,面荷载需施加“均布荷载”而不是“均匀分布到框架”,实际计算中,如果采用“均匀分布到框架”的方式施加荷载则结算结构明显比实际偏小。
三.明挖车站结构在SAP2000有限元软件在有限元软件中的实现
3.1 工程概况
本次分析选取兰州市城市轨道交通1号线一期工程拱星墩站,位于城关区现状道路东岗东路与焦家湾路丁字路口处,车站沿东岗东路东西方向铺设。标准段:宽度为20.10~20.70m,总高13.54~14.23m,结构底板埋深约17.36~18.05m;盾构加深段:宽度为30.60m,总高14.87m,结构底板埋深约18.24m。中心里程处结构顶板覆土厚约3.82m。
拱星墩站所处场地地基土自上而下为:地表一般分布有人工填土;其下为全新统的冲积黄土状土、卵石,底部为下更新统卵石。
3.2主要构件材料及尺寸
1) 材料的选择须满足结构强度及耐久性要求,按照《混凝土结构设计规范》[2](GB50010--2010)及《混凝土结构耐久性设计规范》[3]((GB/T50476--2008)要求,主要受力构件材料选取如下:
混凝土:顶、底板和侧墙混凝土强度等级为C50,抗渗等级为P12,中板为C35,柱为C50,素混凝土垫层为C20;主筋采用HRB400
2)主要构件尺寸
标准段:顶板厚800mm,中板厚400mm,底板厚900mm。顶、中、底板与内衬墙支座处均设斜托局部加厚
3.2 模型实现
SAP2000是独立的基于有限元的结构分析和设计程序。它提供了功能强大的交互式用户界面,带有很多工具帮助快速和精确创建模型,同时具有分析最复杂工程所需的分析技术[4]。 SAP2000默认情况下有两个操作窗口,可以在这两个操作窗口中可以分别设置显示模式,显示对象和结构激活、钝化情况,非常方便,另外与Midas软件不同,SAP2000可以在划分单元网络之后,可对划分后的单元进行整体指定操作,例如施加荷载,定义截面、边界条件等,它还可以将划分精细程度不同的相邻板单元或实体单元实现变形协调。但在施加渐变荷载方面,SAP2000只能通过定义节点样式来进行施加,不如Midas操作灵活。
在SAP2000中,板壳对象按照受力特点可以分为三类:膜单元、板单元和壳单元。膜单元只具有平面内的刚度;板单元与膜单元相反,只具有平面外的刚度,承受弯曲力,模拟薄梁或者地基梁等;壳单元的力学行为是膜单元与板单元之和,是真正意义上的壳单元。 墙板结构是明挖车站的受力主体。模型实现过程中的每一个细节,决定模型质量与受力分析的准确性。本次车站所有墙,板结构均采用壳单元进行模拟,并应选择厚壳。其中,参数“Thickness of Membrane” 用于计算壳元或膜元的面内刚度和用于计算自重和质量(动力);Thickness of Bending 用于计算板或壳单元的面外刚度,所以本次建模应将这两个参数应与实际板单元厚度一致[5]。
3.3计算结果
图3.1 车站整体框架体系基本组合弯矩图
图3.2 车站侧墙基本组合弯矩图
图3.3 车站底板基本组合弯矩图
图3.4 车站中板基本组合弯矩图
图3.5 车站顶板基本组合弯矩图
图3.6 车站盾构端端墙基本组合弯矩图
表3.1 二维三维模型计算结果对比
构件位置 二维平面计算基本组合弯矩(KN・m) 三维整体计算基本组合弯矩
(KN・m)
顶板标准段(跨中/中柱支座) 653/1071 760/1203
中板标准段(跨中/中柱支座) 95/170 160/250
底板标准段(跨中/中柱支座) 876/1121 1005/1477
侧墙(跨中/与底板连接处) 246/970 430/1003
顶纵梁标准段(跨中/支座) 4733/6700 3446/4655
中纵梁标准段(跨中/支座) 1684/1972 892/1302
底纵梁标准段(跨中/支座) 5663/9100 4733/7889
4.结论
通过本次三维模型计算,得出如下结论:
1)通过三维建模可以推断,墙、板结构在明挖车站受力体系中发挥着重要作用,与梁、柱体系协同承担荷载,三维计算结果表明真实情况下墙,板实际受力略大于二维平面计算结果,各主梁的实际弯矩小于二维平面计算结果。
2)车站与风道连接处,应确保变形缝量测梁的刚度和柱跨的合理性,减小顶板变形。
3)车站盾构扩大段与标准段连接处的底横梁,跨中位置基本组合弯矩达到8000KN・m以上,应增强底横梁截面上部配筋。
4)盾构端墙抗震柱两侧和第一层抗震柱之间的区域弯矩很小,建议盾构端墙采取在此类区域减少配筋。
5)车站各侧梁,弯矩都处于较低水平,尤其是中板盾构端边梁与平面计算出入较大。其梁的尺寸和配筋还有优化余地
参考文献:[1]李兴高,张弥.地铁车站结构内力计算中的问题[J].都市快轨交通.2005,18(5):26―30.Li Xinggao,Zhang Mi.Problems in Internal Force Calculation ofMetro Station Structure[J].Uraban Rapid Rail Transit.2005.18(5):26―30.
[2] 中华人民共和国住房和城乡建设部.GB50010--2010混凝土结
构设计规范[s].北京:中国建筑工业出版社。2010.
[3] 中华人民共和国住房和城乡建设部.GB/T50476--2008混凝土
结构耐久性设计规范[S].北京:中国建筑工业出版社.2008.