(计算机应用技术专业论文)一种基于agent的软件体系结构风格研究.pdf_第1页
(计算机应用技术专业论文)一种基于agent的软件体系结构风格研究.pdf_第2页
(计算机应用技术专业论文)一种基于agent的软件体系结构风格研究.pdf_第3页
(计算机应用技术专业论文)一种基于agent的软件体系结构风格研究.pdf_第4页
(计算机应用技术专业论文)一种基于agent的软件体系结构风格研究.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(计算机应用技术专业论文)一种基于agent的软件体系结构风格研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一种基于a g e n t 的软件体系结构风格研究 摘要 科学合理的软件体系结构是开发一个成功应用系统的必要条件,对于 提高系统的开发效率和质量具有非常重要的意义;另一方面,面向a g e n t 技术的提出为复杂分布式问题的求解找到了办法。在软件体系结构中引入 a g e n t 技术,可以使体系结构具有良好的灵活性、动态性和适应性,进而 提高体系结构的通用性、适用性和重用性。 本文首先分析了软件体系结构的基本概念和基本理论,包括软件体系 结构的定义、生命周期模型等;然后系统阐述了软件a g e n t 的基本概念和 基本理论,包括软件a g e n t 的定义、属性、结构等:根据对软件体系结构 和软件a g e n t 技术两者的分析和研究,把软件体系结构与软件a g e n t 技术 结合到一起,提出了基于a g e n t 的多级正交软件体系结构风格及基于 a g e n t 的多级正交软件体系结构风格的软件开发方法理论。最后,利用医 院信息管理系统实例进行了分析和验证。 关键词:软件体系结构;软件a g e n t ;软件体系结构风格:多级正交软件体 系结构;医院信息管理系统 本文得到安徽省教育厅自然科学研究项目基金( 2 0 0 5 k j 3 6 4 z c ) 和安庆师范学院自然科学研 究项l g 基金( 2 0 0 3 y l y 0 6 ) 资助 r e s e a r c ho na na g e n t - b a s e ds o f t w a r ea r c h i t e c t u r es t y l e a b s t r a c t s c i e n t i f i ca n dr e a s o n a b l es o f t w a r ea r c h i t e c m r ei san e c e s s a r yc o n d i t i o nt o d e v e l o pas u c c e s s f u la p p l i e ds y s t e m a n di ti sv e r yi m p o r t a n tt oi m p r o v et h e d e v e l o p m e n te f f i c i e n c ya n dq u a l i t yo f t h es y s t e m t op r e s e n ta g e n t b a s e dt e c h n o l o g y b e c a m eam e t h o dt os o l v ec o m p l e xa n dd i s t r i b u t e dp r o b l e m t op l u n g es o f t w a r e a g e n ti n t os o f t w a r ea r c h i t e c t u r em a yg a i nb e t t e rf l e x i b l e ,d y n a m i ca n da d a p t i v ee t c a n dg e n e r a l u s a b l ea n dr e u s a b l ep r o p e r t i e so fs o f t w a r ea r c h i t e c t u r es h 0 1 l l db e i m p r o v e d f i r s t l y , t h ed i s s e r t a t i o na n a l y z e sb a s i cc o n c e p ta n dt h e o r yo fs o f t w a r e a r c h i t e c t u r ei n c l u d ed e f i n i t i o n ,s t y l ea n dl i f ec y c l em o d e le r e t h e n ,t h ed i s s e r t a t i o n d e s c r i b e sb a s i cc o n c e p ta n dt h e o r yo fs o f t w a r ea g e n ti n c l u d ed e f i n i t i o n ,p r o p e r t i e s a n ds t r u c t u r ee t c t oa n a l y z ea n ds t u d yt h e o r yb e t w e e ns o f t w a r ea r c h i t e c t u r ea n d s o f t w a r ea g e n t ,a g e n t b a s e dm u l t i - l e v e l e do r t h o g o n a ls o f t w a r ea r c h i t e c t u r es t y l ei s p r e s e n t e db yc o m b i n es o f t w a r ea r c h i t e c t u r ew i t hs o f t w a r ea g e n t a n di ti sp r e s e n t e d f o rs o f t w a r ed e v e l o p m e n tm e t h o db ya g e n t - b a s e dm u l t i - l e v e l e do r t h o g o n a ls o f t w a r e a r c h i t e c t u r es t y l e f i n a l l y , h o k u mi n f o r m a t i o ns y s t e mi sr e g a r d e da sa ne x a m p l et o a n a l y z ea n dv e r i f y k e yw o r d s :s o f t w a r ea r c h i t e c t u r e ;s o f t w a r ea g e n t ;s o f t w a r ea r c h i t e c t u r es t y l e ; m o s a ( m u l t i - l e v e l e do r t h o g o n a l s o f t w a r ea r c h i t e c t u r e ) ;h i s ( h o s p i t a li n f o r m a t i o ns y s t e m ) 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。 据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写 过的研究成果也不包含为获得 盒世王些盔堂 或其他教育机构的学位或证书而使 用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明 并表示谢意。 学位论文作者签名签字日期:咕年钥弓d 日 学位论文版权使用授权书 本学位论文作者完全了解盒目l 王些盍堂有关保留、使用学位论文的规定,有权保留 并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权金 世王些盔堂可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密屙适用本授权书) 学位论文作者签名: 土 签字日期:如r 年f 月,o 日 学位论文作者毕业后去向 工作单位: 通讯地址: 导师签名 签字日k 箨f 月弓口日 电话 邮编 致谢 衷心感谢我的导师李心科博士副教授在整个论文撰写的过程中,给予 我的悉心指导和热情的帮助与鼓励。他的鼓励给了我充分的信心:他所提 出的许多富有启发性及建设性的宝贵建议,使我受益匪浅。特别要感谢李 心科导师在论文的选题、开题报告的撰写及修改、论文的撰写及修改直至 定稿的过程中,投入了大量的糟力和时闻;李老师不仅对我硕士学位论文 进行指导,而且还对我所写的学术论文进行指导。没有导师的精心培养和 悉心教诲,没有导师的启发性教育和指导,本论文是不可能完成的。李老 师严谨的治学态度、诲人不倦的教师风范、兢兢业业的事业心给我留下了 深刻的印象,是我学习的楷模。 衷心感谢袁兆山教授在我论文撰写过程中,对我论文所提出的许多富 有启发性及建设性的宝贵建议,以及给我的悉心指导和热情的帮助。 向所有参与本论文评审和答辩的老师致敬,感谢他们为本论文所付出 的辛勤劳动。 感谢合肥工业大学计算机学院苏本跃博士、刘奎、章静硕士、中国科 技大学计算机系罗永龙博士等为我查阅资料、提供有关论文信息,感谢他 们在学习上给予我的帮助和建议。 感谢合肥工业大学研究生部及计算机与信息学院的老师和领导对我 的帮助和支持。感谢安庆师范学院计算机与信息学院的领导和老师对我的 帮助和支持。 同时,我还要感谢我的父母对我的养育之恩,以及家人对我的关心与 照顾。 最后,向所有关心和帮助过我的师长、同事、同学、朋友以及家人表 示深深的谢意! 作者:王一宾 2 0 0 5 年5 月 第一章绪论 随着软件规模和复杂程度不断地扩大和增加,软件开发的成败在很大程度 上取决于软件系统体系结构的设计,软件体系结构是当前软件工程领域的一个 研究热点,是大型软件开发中必须解决的核心技术,大量的软件工程实践也证 明了:一个成功的软件系统往往都有一个好的软件体系结构。面向a g e n t 技 术的提出为解决复杂分布式问题的求解找到了办法,它是人工智能和计算机科 学新的结合,用于解决复杂分布的现实问题,开发处于动态的、不确定环境中 的、健壮的、大规模的软件系统0 1 。在软件体系结构中引入a g e n t 技术,就会 使体系结构具有良好的灵活性、动态性和适应性,进而提高体系结构的通用性、 适用性和重用性。因此,将这两大技术进行结合,就可从宏观和微观两个方面 促进当前分布式异构环境下软件危机的解决。 本章简要介绍了软件、软件工程与软件体系结构的基本概念,分析了面向 对象和面向a g e n t 的基本思想,给出了本文的主要内容及组织结构。 1 1 软件、软件工程与软件体系结构 1 1 1 软件 众所周知,计算机硬件的发展基本上遵循了摩尔定律,即每1 8 个月芯片的 性能与速度均提高一倍。软件的发展也十分惊人:就体系结构而言,它经历了 从主机结构到文件服务器结构,从客户服务器系统到基于i n t e r n e t 的服务器 浏览器系统等变化;从编码语言来讲,它经历了从机器语言代码到汇编语言代 码,从高级语言到人工智能语言等变化:从开发工具来看,它经历了从分离的 开发工具到集成的可视化开发系统,从简单的命令行调试器到方便的多功能集 成调试器的变化;等等。 但在过去的几十年中,软件的基本定义却并未改变。有些初学者认为软件 就是程序,这个理解是不全面的。这里引用著名的美国软件工程教材作者 r s p r e s s m a n 的定义:“软件是能够完成预定功能和性能的可执行的计算机程 序和使程序正常执行所需要的数据,加上描述程序的操作和使用的文档。”简单 地表述即“软件= 程序+ 数据+ 文档”。程序是为了解决某个特定问题而应用程序 设计语言描述的适合计算机处理的若干语句序列。数据则是程序执行时需要进 行输入的或保存的内容。文档则是软件开发活动的记录,主要供人们阅读,既 可用于专业人员和用户之间的通信和交流,也可以用于软件开发过程的管理和 运行阶段舱维护等”,。 1 1 2 软件工程 随着计算机应用的逐步扩大,软件需求量迅速增加,规模也日益增长。长 达数万行、数十万行乃至百万行以上的软件,已不鲜见。庞大的软件费用,加 上软件质量的下降,对计算机应用的继续扩大构成巨大的威胁。软件界的有识 之士发出了软件危机的警告,而为了解决软件危机,必须把软件生产从个人化 方式改变为工程化方式,从而导致了软件工程的诞生。 对于“软件工程”一词,首先是1 9 6 8 年北大西洋公约组织( n a t o ) 在联邦 德国召开的一次会议上提出的。 软件工程定义有多种不同的说法,下面给出几种典型的表示:软件工程是 一种层次化的技术。任何工程方法必须以有组织的质量保证为基础,从低层 到高层分别为过程层、方法层和工具层。软件工程是我们用计算机知识和计算 来解决问题”1 。软件工程是- - f 旨在生产无故障的、及时交付的、在预算之内 的和满足用户需要的软件的学科。更进一步地说,软件必须能够按照用户的需 要,很容易做出相应的修改。b o e h m 曾为软件工程给出如下定义:“运用现代 科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需 的相关文件资料等“”。1 9 8 3 年,i e e e 给出的定义为:“软件工程是开发、运行、 维护和修复软件的系统方法”。 1 1 3 软件体系结构 随着计算机硬件技术的飞速发展,对计算机软件的功能、结构和复杂性提 出了更高的需求。随着计算机软件规模的扩大及复杂性的不断增加,在软件的 设计中,软件的局部和整体系统结构方面,已经越来越显出其重要性,甚至超 过了软件算法和数据结构这些常规软件设计的概念”1 。 软件体系结构概念的提出和应用,表明软件工程走向新的发展阶段,说明 了软件设计技术在更高层次上的发展并走向成熟。未来的软件工程设计会逐步 发展成为如同机械和建筑设计的机械组装过程一样,从而摆脱艰难的脑力劳动 和无可靠质量保证的手工劳动。这其中软件体系结构将起到主导作用。即新一 代软件工程将是软件体系结构的工程4 1 。 在诸如建筑和计算机硬件设计中,体系结构是指整个系统构成的基本和主 体形态。在一个发展成熟的领域中,这种结构成为建立和考察系统的总体指导 或基本出发点。例如计算机硬件的主体结构形态具有单处理器、多处理器、并 行计算机等。类似地,软件体系结构是软件在设计构成上的基本、可供选择的 形态和总体结构一,。 2 1 2 从面向对象到面向a g e n t 方法 软件开发方法是随着计算机的发展而同步发展的,软件工程在成为一个正 式的学科之前,软件开发方法几乎就是编程的同义词,当时由于软件的规模普 遍较小,人们对软件的整体规划设计等问题很少考虑。六十年代,随着软件危 机的出现,人们开始认识到软件开发方法的重要性,于是,人们开始用工程的 观点来看待软件开发方法,并出现了大量的开发方法,如功能分解法、数据流 方法等,这些方法对软件的发展起到了一定的促进作用,但这些方法由于在对 问题的分析时不是保持事物的本来面目,而是打破其间的界限,在全局范围内 以功能、数据流为中心来分析,与后期的实现阶段有很大的差别,于是就出现 了“分析与设计的鸿沟”,为了解决这一问题,人们总结各种开发方法的优点, 提出了面向对象的软件开发方法“。 1 2 1 面向对象 面向对象的方法是八十年代初期提出的一种新兴的程序设计方法,它彻底 地改变了过去数据流、事务流分析等方式的缺点,采用直接对问题域进行自然 抽象的方法,并逐渐发展成包括面向对象分析、设计、编程、测试、维护等一 整套内容的完整体系。面向对象的方法比较符合人们对客观世界的认识,从而 使软件设计与人们的认识统一起来,并保持软件整个开发过程中概念的一致性, 便于各个阶段的管理与控制,是人们在软件开发过程中认识的一次飞跃,其基 本思想“”是从现实世界中客观存在的事物出发,强调直接以问题域中的事物为 中心来思考问题、认识问题,根据这些事物的本质特征,将其抽象为系统中的 对象,并作为系统中的基本构成单位。通过对象、类、继承、封装、消息等基 本概念来进行程序设计。 1 2 2 面向a g e n t 面向a g e n t 的基本思想是从现实世界中人类、事物和环境出发,认为事物 的属性特别是动态特性在很大程度上受到与其密切相关的人和环境的影响,强 调认识、思维与客观事物及其所处环境之间的相互作用,将影响事物的主观与 客观特征相结合,并抽象为系统中的a g e n t ,作为系统的基本构成单位,通过 a g e n t 之间的合作实现系统的整体目标1 。与对象相比较,a g e n t 引入了信念、 期望、意图等心智状态和规划、学习等心智活动,将人类的主观意识与客观世 界紧密结合,反映了客观世界事物之间的深层联系及其静态和动态特征的本质 与根源。因而,面向a g e n t 的方法更接近客观世界的真实情况和人类解决问题 的一般方法与习惯,是对面向对象的完善和发展。 1 3 本文的内容及组织 1 3 1 本文的主要内容 本论文的主要内容包括软件体系结构、软件a g e n t 技术、基于a g e n t 的多 级正交软件体系结构风格及医院信息管理系统的正交线索化分析四个部分。首 先介绍了软件体系结构的基本概念和基本理论,然后系统阐述了软件a g e n t 的 概念和结构等知识,根据对软件体系结构和软件a g e n t 技术两者的深入分析和 研究,提出了一种基于a g e n t 的软件体系结构风格及基于a g e n t 的软件体系结 构风格的软件开发理论,并给出了实例进行分析和验证。 1 3 2 本文的组织结构 第一章绪论 介绍了软件、软件工程与软件体系结构的基本概念,分析了面向对象及面 向a g e n t 的基本思想,给出了本文的主要内容及组织结构。 第二章软件体系结构 介绍了软件体系结构的起源与发展、定义、生命周期模型、软件体系结构 在软件生命周期中的位置和作用、基于软件体系结构的软件开发过程,软件体 系结构的研究现状及发展趋势等。 第三章软件a g e n t 技术 介绍了软件a g e f i t 技术的起源与发展、定义与属性、结构、基于a g e n t 的 软件开发方法,软件a g e n t 的研究现状及发展趋势等。 第四章基于a g e n t 的多级芷交软件体系结构风格 该部分是本文的最主要部分,也是本文的创新之处。在第二、三章深入分 析的基础上,把软件体系结构与软件a g e n t 技术结合起来,提出基于a g e n t 的 多级正交软件体系结构风格及基于a g e n t 的多级正交软件体系结构风格的软件 开发理论。 第五章医院信息管理系统的正交线索化分析 利用第四章所提出的开发理论,对所给出的实例进行分析,以验证所提出 理论的有效性和实用性。 第六章结束语 总结全文,并指出下一步要做的工作。 4 第二章软件体系结构 软件体系结构( s o f t w a r ea r c h i t e c t u r e ,s a ) 是2 0 世纪9 0 年代提出 的一种构造软件的新方法,试图用类似建筑学的观点去构造软件,并以更 精确的方式刻画软件的结构。软件体系结构正作为一门学科逐渐得到人们 重视,并成为软件工程领域的研究热点,p e r r y 和w o l f 预言“未来年代 将是研究软件体系结构的时代! ”。 本章就软件体系结构以及一些相关的重要技术进行讨论和总结。主要 内容包括:软件体系结构起源与发展,软件体系结构定义,软件体系结构 生命周期模型及其它,软件体系结构视角,基于软件体系结构的软件开发 过程等。 2 1 软件体系结构起源与发展 2 1 1 软件体系结构起源 自n a t o 于1 9 6 8 年提出软件工程概念以来,软件工程界已经提出了一系列理 论、方法、语言和工具,解决了软件开发过程中的若干问题。但是,软件固有 的复杂性、易变性和不可见性,使得软件开发周期长、代价高和质量低的问题 依然存在。大量实践统计表明:大系统软件开发中7 0 的错误是由需求和设计 阶段引入的,而且错误在系统中存在的时间愈长则愈难发现,解决这些错误的 代价也愈高。为了提高软件需求和软件设计的质量,软件工程界提出了需求分 析工程技术和各种软件建模技术。但在需求与设计之间仍存在一条很难逾越的 鸿沟,即缺乏能够反映做决策的中间过程,从而很难有效地将软件需求转换为 相应的设计。为此,软件体系结构概念应运而生,并试图在软件需求与软件设 计之间架起一座桥梁,着重解决软件系统的体系结构和需求向实现平坦地过渡 的问题2 1 。 从机器语言、汇编语言、过程式程序设计语言、面向对象程序设计语言、 形式化( 半形式化) 规格说明语言( 如体系结构描述语言a d l ) 发展过程中, 可以发现:计算机语言越来越适合于开发人员的思维活动模型,代码重用的级 别也在不断地提升,体系结构技术的研究,使软件重用从代码重用发展到设计 重用和过程重用。鉴于软件体系结构的重要性,d e p e r r y 将软件体系结构视 为软件开发中第一类重要的设计对象,而b a r r yb o e h m 明确指出:“在没有设计 出体系结构及其规则对,那么整个项目不能继续下去,而且体系结构应该看作 是软件开发中可交付的中间产品”。由此可见,体系结构在软件开发中为不同的 人员提供了共同交流的语言,体现并尝试了系统早期的设计决策,并作为系统 设计的抽象,为实现框架和组件的共享与重用、基于体系结构的软件开发提供 了有力的支持。 2 1 2 软件体系结构发展 软件系统的规模在迅速增大的同时,软件开发方法经历了一系列的变革。 在此过程中,软件体系结构也由最初模糊的概念发展到一个渐趋成熟的广泛使 用的技术3 。 2 0 世纪7 0 年代以前,尤其是在以a l g o l 语言为代表的高级语言出现以前, 软件开发基本上都是汇编语言程序设计。此阶段系统规模较小,很少明确考虑 系统结构,一般不存在系统建模工作。7 0 年代中后期,由于结构化开发方法的 出现与广泛应用,软件开发中出现了概要设计与详细设计,而且主要任务是数 据流设计与控制流设计。因此,此时软件结构已作为一个明确的概念出现在系 统的开发中。 2 0 世纪8 0 年代初到9 0 年代中期,是面向对象开发方法兴起与成熟阶段。 由于对象是数据与基于数据之上的操作的封装,因而在面向对象开发方法下, 数据流设计与控制流设计则统一为对象建模,同时,面向对象方法还提出了一 些其它的结构视图。如在o m t 方法中提出了功能视图、对象视图与动态视图; 而b o o c h 方法中则提出了类视图、对象视图、状态迁移图、交互作用图、模块 图、进程图;而1 9 9 7 年出现的统一建模语言u m l 则从功能模型( 用例视图) 、 静态模型( 类图、对象图、组件图、包图) 、动态模型( 协作图、顺序图、状态 图、活动图) 、配置模型( 配置图) 描述应用系统的结构。 9 0 年代以后则是基于组件的软件开发阶段,该阶段以过程为中心,强调软 件开发采用组件化技术和体系结构技术,要求开发出的软件具备很强的自适应 性、互操作性、可扩展性和重用性。此阶段中,软件体系结构已经作为一个明 确的文档和中间产品存在于软件开发过程中,同时,软件体系结构作为- - 1 7 学 科逐渐得到人们的重视,并成为软件工程领域的研究热点,因而p e r r y 和w o l f 认为,“未来的年代将是研究软件体系结构的时代! ” 纵观软件体系结构技术发展过程,从最初的“无结构”设计到现行的基于 体系结构软件开发,可以认为经历了四个阶段。1 :( 1 ) “无体系结构”设计阶段: 以汇编语言进行小规模应用程序开发为特征;( 2 ) 萌芽阶段:出现了程序结构 设计主题,以控制流图和数据流图构成软件结构为特征;( 3 ) 初期阶段:出现 了从不同侧面描述系统的结构模型,以u m l 为典型代表;( 4 ) 高级阶段:以描 述系统的高层抽象结构为中心,不关心具体的建模细节,划分了体系结构模型 与传统的软件结构的界限,该阶段以k r u c h t e n 提出的“4 + 1 ”模型为标志。由 于概念尚不统一、描述规范也不能达成一致认识、在软件开发实践中软件体系 6 结构尚不能发挥重要作用,因此,我们认为软件体系结构技术达到成熟还需一 段时日,还需要学术界进行更深入的研究。 2 2 软件体系结构定义 软件体系结构是国际上软件工程研究的一个新兴领域,至今对软件体系结 构的定义尚未统一。下面给出一些典型的观点”“”: 1 9 9 2 年,d e w a y n ep e r r y 和a l e xw o l f 定义:软件体系结构= 元素,形式, 准则 。软件体系结构是由具有特定形式的体系结构元素或设计元素构成,包括 处理元素、数据元素和连接元素。处理元素负责对数据进行加工,数据元素是 被加工的信息,连接元素把体系结构的不同部分组合连接起来。软件体系结构 形式由专有特性和关系组成。而在多个体系结构方案中选择合适的体系结构方 案往往基于一组准则。这一定义注重区分处理元素、数据元素和连接元素,这 一方法在其它的定义和方法中基本上得到保持。 1 9 9 3 年,d a v i dg a l a n 和m a r ys h a w 提出:软件体系结构= 组件,连接件, 约束) 。组件可以是一组代码,如程序的模块:也可以是一个独立的程序,如数 据库服务器。连接件可以是过程调用、管道、远程调用等,用于表示组件之间 的相互作用。一个软件体系结构还包括某些约束,约束一般为对象连接时的规 则或指明连接的势态和条件。软件体系结构是设计过程的一个层次,它处理那 些超越算法和数据结构的设计,研究整体结构设计和描述方法。 1 9 9 4 年,b a s s 等人提出:体系结构设计至少应包括应用领域的功能分割、 系统结构、结构的领域功能分配三个方面。 1 9 9 5 年,d a v i dg a r l a n 和m a r ys h a w 修正定义:软件体系结构包括系统组 件的结构、组件的相互关系以及控制组件设计演化的原则和指导三个方面。 1 9 9 6 年,k r u c h t e n 指出,软件体系结构有四个角度:概念角度、模块角度、 运行角度和代码角度。概念角度描述系统的主要组件及它们之间的关系:模块 角度包含功能分解与层次结构:运行角度描述了一个系统的动态结构;代码角 度描述了各种代码和库函数在开发环境中的组织。 1 9 9 7 年,b a s s ,c l e m e n t s 和k a z m a n 提出:软件体系结构包括组件、组件 的外部可见性以及相互的关系。其中软件组件的外部可见性是指软件组件提供 的服务、性能、特性、错误处理、共享资源使用等。该定义强调体系结构分析 需要从系统中抽象出用于分析、决策的信息。 概括各种不同观点,可发现它们都支持这样的观点,即:软件体系结构包 括系统总体组织、全局控制、通信技术、同步、数据存取、设计元素的功能、 组织、规模、性能、设计方案的选择”。 2 3 软件体系结构生命周期模型及其它 2 3 1 软件体系结构生命周期模型 软件体系结构生命周期模型是对软件体系结构在整个生存期间所需经历的 所有阶段和步骤的描述,这种描述独立于具体的软件体系结构,使得体系结构 的设计遵循一定的理论基础和工程原则。为了形象化地表示体系结构的生命周 期,文献 2 1 建立了一个软件体系结构生命周期模型,它主要由以下几个阶段 组成: ( 1 ) 软件体系结构的非形式化描述一种软件体系结构在其产生时。其思 想通常是简单的,并常常由软件设计师用非形式化的自然语言表示概念、原则。 尽管该阶段的描述通常是用自然语言描述的,但是该阶段的工作却是创造性和 开拓性的。 ( 2 ) 软件体系结构的规范描述和分析通过运用合适的形式化数学理论模 型对第一阶段体系结构的非形式化描述进行规范定义,从而得到软件体系结构 的形式化规范描述,以使软件体系结构的描述精确、无歧义,并进而分析软件 体系结构的性质,如有无死锁、安全性、活性等。分析软件体系结构的性质有 利于在系统设计时选择合适的软件体系结构,从而对软件体系结构的选择起指 导作用,避免盲目的选择。 ( 3 ) 软件体系结构的求精及其验证大型系统的软件体系结构总是通过从 抽象到具体,逐步求精而后得到的,因为一般说来,由于系统的复杂性,抽象 是人们在处理复杂问题和对象时必不可少的思维方式,软件体系结构也不例外。 但是过高的抽象却使软件体系结构难以真正在系统设计中实施。因而,如果软 件体系结构的抽象粒度过大,就需要对其进行求精、细化,直至能够在系统设 计中实施为止。在软件体系结构的每一步求精过程中,需要对不同抽象层次的 软件体系结构进行验证,+ 以判断较具体的软件体系结构是否与抽象的软件体系 结构的语义一致,并能实现抽象的软件体系结构。 ( 4 ) 软件体系结构的实施将求精后的软件体系结构实施于系统的设计 中,并将软件体系结构的组件与连接件等有机地组织在起,形成系统设计的 框架,以便据此实施于软件设计和构造中。 ( 5 ) 软件体系结构的演化和扩展在实施软件体系结构时,根据系统的需 求,常常是非功能需求,如性能、容错性、安全性、互操作性、自适应性等非 功能性质影响软件体系结构的扩展和改动,这称为软件体系结构的演化。由于 对软件体系结构的演化常常由非功能性质的非形式化需求描述引起,因而需要 重复第一步,如果由于功能和非功能性质对以前的软件体系结构进行演化,就 要涉及对软件体系结构的理解,需要进行软件体系结构的逆向工程和再造工程。 8 ( 6 ) 软件体系结构的提供、评价和度量这一阶段通过将软件体系结构实 施于系统设计后,根据系统实际的运行情况,对软件体系结构进行定性的评价 和定量的度量,以利于对软件体系结构的重用。 ( 7 ) 软件体系结构的终结 如果一个软件系统的软件体系结构进行多次 演化和修改,软件体系结构将变得难以理解,更重要的是不能达到系统设计的 要求,不能适应系统的发展。这时,对该软件体系结构的再造工程既不必要、 也不可行,说明该软件体系结构已经过时,应该摈弃,以全新的满足系统设计 要求的软件体系结构取而代之。 2 3 2 软件体系结构在软件生命周期中的位置 软件的开发过程可划分为从概念直到实现的若干阶段,包括:问题定义、 需求分析、概要设计、详细设计、测试、运行与维护等。软件体系结构的建立 位于需求分析之后、软件设计之前。下面从各个阶段的功能出发,分析这几个 层次之间的关系。 ( 1 ) 需求分析阶段该阶段主要是根据需求,决定系统的功能,在此阶段, 设计者应对目标对象和环境做细致深入的调查,收集目标对象的基本信息,从 中找出有用信息,这是一个抽象思维、逻辑推理的过程,结果是软件规格说明。 ( 2 ) 建立软件体系结构阶段设计者主要从结构的角度对整个系统进行分 析,选择恰当的部件、部件间的相互作用关系以及对它们的约束,最后形成一 个系统框架以满足用户需求,为设计奠定基础。 ( 3 ) 设计阶段主要是对系统进行模块化并决定描述各个部件间的详细接 口、算法和数据类型的选定,对上支持建立体系结构阶段形成的框架,对下提 供实现基础。 ( 4 ) 实现阶段将设计阶段设计的算法及数据类型用程序设计语言进行表 示,满足设计、体系结构和需求分析要求,从而得到满足设计需求的目标系统。 2 3 3 软件体系结构在软件生命周期中的作用 软件体系结构在系统开发的全过程中起着基础的作用,是设计的起点和依 据,同时也是装配和维护的指南。良好的软件体系结构对于软件系统的重要意 义在软件生命周期中各个阶段都有体现。 在系统分析阶段,软件体系结构发挥着巨大的作用。一方面,借助于软件 体系结构进行描述,可以使问题得以进一步抽象,使整个系统更易于被系统分 析设计人员把握,更清晰地认识系统,完善对系统的理解,还可为系统分析设 计人员提供新的思路。另一方面,它能够帮助软件系统的各有关权益方形成统 一认识,互相交流。在软件开发过程中,软件体系结构对系统生命期的影响最 大。因软件体系结构代表了系统早期的设计决策,同时,软件体系结构也难于 改变,会对整个系统开发活动造成深远影响;软件体系结构是系统实现的基本 约束,即系统的后继开发工作要遵循体系结构所描述的设计决策;软件体系结 构决定了开发和维护项目的组织结构,软件体系结构也会反映到开发工作的分 解,以及项目的人员组织。软件体系结构对于软件质量控制也具有重要的意义, 好的软件体系结构是成功的必要条件。体系结构技术的研究,使软件重用从代 码重用发展到设计重用和过程重用,实现多层次的软件重用”1 。 2 4 软件体系结构视角 对于同一座建筑,住户、建筑师、内部装修人员和电气工程师有各自不同 的视角。这些视角反映了建筑物的不同方面,但它们彼此都有内在的联系,而 且合起来形成了建筑物的总体结构。通过前面对软件体系结构的定义,我们知 道软件体系结构反映了系统的总体结构,因此它和建筑物一样,存在不同的角 度来反映系统的体系结构。而且,当面对一个复杂的系统时,必须从多个角度 来考虑问题。在处理体系结构时我们通常只考虑系统功能方面的需求,而实际 上除了功能需求,物理分布、过程通讯和同步等等也必须在体系结构一级加以 考虑。这些来自不同方面的需求就形成了软件体系结构的不同视角。 每种不同的视角说明了系统中不同角色或参与者各自所关注的焦点。每个 视角都可以看成是一幅软件蓝图,同时具有自己的标记方法,可以选择自己的 体系结构风格。然而,所有的视角并不是完全独立的,不同视角之间的元素在 一定的规则下是相关联的。 从1 9 9 0 年开始,r a t i o n a l 公司的p h i l i p p ek r u c h t e n 对软件体系结构的 不同视角进行了专门研究,并于1 9 9 5 年在i e e e 上提出了“体系结构的4 + 1 视 角模型”。它们是逻辑视角、进程视角、物理视角、开发视角,另外加上场景。 4 + 1 视角模型为理解复杂系统软件体系结构提供了简单和易于理解的方式。它 从5 个不同的角度来描述软件,每个角度都显示模型系统的一个具体方面”1 。 西门子合作研究部的s o n i ,n o r d 和h o f m e i s t e r 也进行了类似的研究。通过分 析大量s i e m e n s 公司的软件系统,他们为设计者在描述软件时建立了四种不同 的体系结构视角:( 1 ) 概念结构:主要的设计以及它们的联系;( 2 ) 模块结构: 功能分解、接口和层;( 3 ) 执行结构:系统的动态结构;( 4 ) 代码结构:源代 码、库和二进制代码的组织。上述四种结构合起来,加上专门的实现技术,可 以降低采用软件体系结构设计的系统实现的复杂度,增强可重用性和可修改性。 下文主要依据目前广泛采用的k r u c h t e n 的4 + 1 视角模型,同时参考s o n i 的模型对软件体系结构的视角加以说明。 1 0 逻辑视角:或称为概念视角,主要是用来支持对系统功能需求的抽象描述, 也就是系统所提供给终端用户的服务。它与问题域紧密相连,是系统工程师与 领域专家之间有效的交流媒介。逻辑视角强调问题空间各实体间的相互作用关 系,一般采用面向对象技术来表达。例如r a t i o n a l 的b o o c h 方法用类图和类模 板来描述系统,主要的构件是类,其风格为面向对象的风格。对于数据驱动的 应用程序,可用非形式化的实体关系图来描述。 开发视角:或者说模块视角,是最常见的设计软件体系结构的角度。它侧 重于实际软件模块的组织。这种视角下的基本构成单位是模块,可以用模块和 子系统图来描述开发视角。根据系统中模块的组织方式,开发视角可以采取不 同的形式。开发人员可以按照项目的开发和维护需要将模块组织成子系统的形 式。例如,可以根据维护的需要按照信息隐藏的标准来组织模块。另外一种形 式则是按照设计的需要将模块组织成层次结构,相邻层之阔可以进行通信。层 次系统的设计通常限制在4 至6 层之间。大多数情况下,开发视角应同时考虑 开发难度、软件管理、重用性和普遍性,以及由工具集、编程语言带来的限制 等相关的内部需求。开发视角是各种活动的基础,如:需求分配、团队工作分 工、费用评估和计划、项目进展监测、软件的重用性、安全性和移植性等。它 还是建立产品线的基础。 进程视角:如果说开发视角是处理系统的静态方面,那么进程视角则侧重 于系统的运行特征,即系统的动态属性。进程视角,又称协作视角,主要考虑 一些非功能性的需求,如性能和有效性。它主要解决系统的并发和分布,以及 系统的完整性和容错能力,同时也定义在逻辑视角中的各个类的操作如何分布 到不同的控制之中。进程视角中的结构化构件是进程。进程是一组形成可执行 单元的任务,是具有自己线程控制的指令序列。在系统运行期洵,进程可以启 动、关闭、恢复和重新配置等等,必要时可以和其它进程保持通讯和同步。这 个视角可以用于评测系统的性能和基于进程间通信模式下的运行时调度。 物理视角:描述如何将软件映射到硬件上,通常要考虑系统的性能、规模 和容错性等。当软件运行在不同的结点上时,各种角度中的构件都直接或间接 地对应于系统的不同结点之上。因此,从软件到结点的映射要有较高的灵活性, 同时这种映射关系直接影响系统的性能。 场景:上述四种视角从不同的侧面反映了系统的体系结构。逻辑视角和开 发视角表示了静态系统结构j 然而进程视角和物理视角描述了动态的或者运行 时的系统结构。对于逻辑视角和开发视角的区别目前仍然是争议的对象。对于 不同类型的系统,软件体系结构模型侧重的角度也不同。例如,对于管理信息 系统,更侧重于逻辑和开发视角,而实时系统则关注进程和物理视角。虽然四 种视角相对独立,但是根据一定规则可以实现从一种视角到另一种视角的转换, 不同视角下的元素能够实现“连接”。 图2 1 所示显示了k r u c h t e n “4 + 1 ”视角模型中各种视角的含义及其之间 的联系。 最终用户程序员 系统集成人员系统工程师 图2 1k r u c h t e n ”4 + 1 ”视角模型 从图2 1 可见,最终用户关心的是逻辑视角,主要是功能方面的描述:程 序员则从开发视角出发,关心的是软件管理;系统集成人员往往从进程视角出 发,关注体系结构的性能、规模和容量等;系统工程师则从体系结构的物理视 角出发,考虑系统的拓扑结构、分发、安装以及远程通信。当然,我们并不要 求所有的体系结构都要有上述四种视角。通过图2 1 ,还可以看到,为了将前 面四种视角联系起来,增加了一个场景视角。四种视角的元素通过一些重要场 景更普遍的用例( u s ec a s e s ) 实例来实现无缝协同工作。场景的实质是描述系统 功能的脚本:从某种意义上说场景是最重要的系统需求抽象。在开发体系结构 时,它可以帮助设计者找到体系结构的构件及这些构件之间的相互作用关系; 在体系结构设计完成后可以起一个说明作用,同时作为体系结构原型测试的出 发点。 2 5 基于软件体系结构的软件开发过程 所有软件开发方法都要解决从需求到实现之间的转换问题。基于体系结构 的软件开发包含以下几个主要阶段1 : ( 1 ) 通过对特定领域应用软件进行分析,提炼出其中的稳定需求和易变需 求,建立可重用的领域模型。依据领域模型和用户需求,产生应用系统的需求 规格说明。 ( 2 ) 在领域模型的基础上,根据需求规格说明提炼出特定领域的软件体系 结构。这是系统的高层设计,其目标是通过重用领域体系结构库中已有的高质 量的体系结构,或生成最适合该用户需求的体系结构,并加以提炼入库,以备 将来的重用,并在此体系结构的指导下,把系统逐步分解成相应的组件和连接 件,直至组件和连接件可以被设计模式和面向对象方法处理为止。 ( 3 ) 这个阶段主要解决具体组件和连接件的设计问题。通过重用可重用组 件库中模式、对象和其它可重用的设计件,或重新设计的组件,并提炼入库: 然后通过具体的编程实现,就可得到可运行的程序。 软件体系结构的理论指导软件设计的优点。:( 1 ) 能识别出重要的通用范 型,这样就能理解系统与系统之间的高级关系,新系统能在旧系统的基础上经 过变换得到。( 2 ) 使软件系统设计成功的要素是正确的体系结构,错误的体系 结构会导致灾难性的后果。软件体系结构可作为满足需求分析的框架,为系统 的设计和管理提供技术和管理的基础,( 3 ) 软件体系结构风格通常对分析和描 述复杂系统的高级属性是必要的。( 4 ) 便于软件重用,体系结构可帮助解决软 件重用所遇到的障碍,对系统部件约束最小的地方重用性最大,而作为系统早 期设计的体系结构对部件的约束最小,基于软件体系结构的重用为软件重用开 拓了一条新的道路。 2 6 软件体系结拇研究现状及发展趋势 2 6 1 软件体系结构研究现状 目前软件体系结构研究很活跃,主要集中在软件体系结构风格。”、软件体 系结构质量评价、软件体系结构性能评价、软件体系结构描述语言汹1 、软 件体系结构基础理论n 8 ”、软件体系结构求精方法研究嘲、软件体系结构设 计方法”1 、软件体系结构抽象模型。“、实用软件体系结构帕、基于软件体系结 构的软件开发方法“3 “等方面的研究。从软件体系结构概念的提出到现在的更 深入、更具体的研究及应用,也说明了软件体系结构的研究已进入了一个活跃 时期,同时也可见软件体系结构具有很强的生命力。加强其基础理论和应用方 法的研究,不论对学科发展,还是对软件生产都具有非常重要的理论意义和现 实意义。 2 6 2 软件体系结构发展趋势 由于认识到好的体系结构是决定软件系统成败的重要因素,软件体系结构 已经成为国内外软件研究的热点。随着软件系统规模的不断扩大,软件体系结 构的设计显得越来越重要。由于软件体系结构研究刚刚起步,现有的研究成果 不能满足工程需要。总体来说,有以下几个方面需要进一步研究。( 1 ) 软件体 系结构基础理论研究主要研究形式化建模方法、软件体系结构分析方法、软 件体系结构行为检测。( 2 ) 软件体系结构描述语言研究现有软件体系结构描 述语言已有十几种,但各自风格和描述手段不尽相同。建立一种具有普遍意义 的体系结构描述语言将是一件有意义的工作。( 3 ) 软件体系结构设计研究包 括体系结构设计方法、体系结构风格、体系结构设计空间等。( 4 ) 动态软件体 系结构研究研究软件系统由于特殊需要必须在连续运行情况下的体系结构变 化与支撑平台。( 5 ) 基于软件体系结构的软件开发研究引入体系结构后的软 件开发过程、基于体系结构开发与中间件技术集成、基于体系结构的程序框架 自动生成技术等“2 1 ”“1 。 1 4 第三章软件a g e n t 技术 近年来,随着计算机技术的飞速发展,新的问题与需求不断地出现,主要 表现有:应用需求的发展和激烈的市场竞争对常规的分布计算技术提出了新的 问题:人工智能涵义的更新,推动了人们对人工智能研究不断向a g e n t 技术方 向发展;硬件发展一直超过软件,使得硬件不能发挥其全部功能,而新开发的 程序落后于社会发展不能满足要求:世界是在变化的,而成品

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论