




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
闽江学院软件工程过程论文 题目: 基于层次消息总线的体系结构风格概述 院 系: 专业班级: 学 号: 学生姓名: 指导教师: 年 月 日目录一软件体系结构概述.3 1.1软件体系结构作用和意义.3 1.2软件体系结构的发展.5二.基于层次消息总线的软件体系构.7 2.1 HMB概述.7 2.2 构件归约.8 2.3 构件接口.9 2.4 构件结构.10 2.5 构件行为.10三体会.10四参考文献.11软件体系结构的作用和意义目前,软件体系结构尚处在迅速发展之中,越来越多的研究人员正在把注意力投向软件体系结构的研究。用于对软件体系进行规格描述的模型、标记法和工具仍很不正规。尽管这些不正规的模型是有用的,为使之更为精确和健壮,在很多方面的研究工作还需要继续进行。许多项目都是在回顾时,才发现问题在结构上,因结构局限性,付出太多的代价,在体系设计上付出一天的努力解决的问题,在以后阶段可能要多付出几天到十几天. 首先,体系结构一般说来与需求是密切相关的.明确的需求可以制定明确的软件规格,越明确的规格来设计出来的软件架构越清晰。需求的变更也是必须要考虑,有明确的变更趋势也可以更早的在设计中体现出来。然后,在定制软件规格的阶段,要考虑一个问题,就是一些核心的技术,指的是这个项目中比较重要的关键的技术,应实验一个这些技术是否可行,如果稳定可靠才能采用,否则只能另寻它路.一些难关也是要考虑的。这样制定的规格才能符合实际.这些工作应作为结构设计上的重要参考。最后,如果有明确的需求和规格,那应该进行详细的结构设计,从用例到类图,到关键部分的序列图,活动图等,越细越好.多多与别人交流,尽量让更多的人了解你的设计,为设计提出建议。结构设计应注重体系的灵活性,一定要考虑各种变更的可能性。这是最关键的阶段, 但这通常是理想状态,一般来说,客户不会给出太明确的需求。只有走别的线路了, 这种情况下前面的亮点还是需要的,不能省略.总之写在纸上的东西就有案可查. 比如说: (1)写出一个小的原型来.如果有用户界面的,最好办,先写出界面,不实现具体功能.让用户试用.如果没有用户界面,试写一个能工作的最小系统,同样给用户试用.这样你和用户才能对这个软件有感性认识;(2)与用户探讨,记录用户的反馈; (3) 如果没问题进入第3步 ;(4) 回到(1),写一个更完善的。 在Coding阶段时应遵循体系结构.所以开发人员必须对这个体系有深入的了解.了解它的内部结构和如何扩展.记录下遇到的问题.测试人员可针对这个体系设计测试程序.如性能上的,可能的缺陷等 在测试时期,记录下体系结构导致的问题,以便借鉴.开发人员Review整个架构。 总结整个项目,分析优缺点可以把这个体系作为后续项目的范本. 整个项目一般受到多种限制,尤其明显的是Schedule.面对这些问题.在设计架构上要注意模块的划分,模块越独立越好.不要过分注重其它特性.如果设计不清,就要调整一个规格,去掉一些不重要的功能,这才是可行的.关于软件体系结构的研究工作主要在国外展开的,国内到目前为止对于软件体系结构的研究尚处在起步阶段。软件体系结构在国内未引起人们广泛注意的原因主要有两点:(1)软件体系结构从表面上看起来是一个老话题,似乎没有新东西。(2)与国外相比,国内对大型和超大型复杂软件系统开发的经历相对较少,对软件危机的灾难性体会没有国外深刻,因而对软件体系结构研究的重要性和必要性的认识还不很充分。软件体系结构设计既然作为软件工程的一部分,它的计算机辅助实现手段是相当重要的。我们应当开发出一些软件工具来实现体系结构的描述和分析,开发阶段转换工具,以实现阶段成果的自动转换,例如,把需求规格说明自动转换为构件等。目前关于这方面的研究成果很少,特别是可以应用到实际项目开发中的工具和环境就更少。当今软件系统的规模变得越来越大,结构也越来越复杂,同时从头开始构建的大系统数量在急剧地减少,因而很多遗留系统正在被逐步地利用。从遗留系统软件代码和系统中抽取结构信息,经过描述、统一、抽象、一般化与实例化等处理,可总结出系统的体系结构。在这种情况下,软件再工程变得越来越重要,因为它提供了一条把遗留系统转换为可进化系统的现实可行的途径,是一种可以改进人们对软件的理解和改进软件本身的活动。这类研究的目的是为一些特定的应用领域的软件系统提供一些体系结构框架,如控制系统、移动机器人和用户接口界面等。通过这些框架可以很方便地构造一个新的软件系统。所以正确合理地运用软件体系结构的知识可以在项目开发中发挥它无穷的力量。软件体系结构的发展 随着计算机技术的发展和应用的不断深入,软件系统的规模和复杂度日益增加, 在软件设计过程中人们所面临的问题不仅仅是考虑软件系统的功能问题,而是面临要解决更难处理的可修改性、 性能、 可靠性等非功能性问题。特别是从 80年代起,对软件系统适应变更的要求越来越高,因此系统整体的结构设计已经超过了算法和数据结构,成为系统开发关注的主要问题。为了更好地进行系统结构的设计,研究人员在90 年代初期提出了新的解决方法: 软件体系结构,试图用类似建筑学的观点去构造软件,以更精确的方式刻画软件的结构。1. 软件体系结构的发展现状近年来,人们逐渐认识到软件体系结构在软件开发中的重要地位, 好的软件体系结构已经是决定一个软件系统成功的重要因素。因此,软件工程研究人员将研究热点集中到软件体系结构的研究上。目前已有一些公用的体系结构范型,如管道/过滤器、 层次系统、 Client/ Server 结构等。但是软件体系结构的研究尚处在发展之中,用于对软件体系进行规格描述的模型、 标记法和工具目前仍很不正规, 只是用特定的方式来理解并用于特定的系统。软件系统设计者没有从系统体系结构中寻找共性, 以便在特定领域形成通用的体系结构范型;没有对体系结构模型进行选择的原则,甚至没有能将他们的设计技巧规范地表达出来。因此,为了使模型、 标记法更为精确和健壮,在很多方面的研究工作还需要继续进行,如充实、完善公用体系结构范型中所用的术语, 使之标准化和规范化。另外还要为软件构件间的交互定义更好的抽象模型并加以实现。建立完善的软件体系结构的形式模型、 描述方法、 度量模型、 评价方法和可复用的软件体系结构范型库, 将有助于对软件的理解、 复用,以及解决软件危机问题,并且使以后的软件开发者节省时间。归纳现有体系结构的研究活动,主要包括如下几个方面:( 1)体系结构理论模型的研究;( 2)体系结构描述研究:主要研究体系结构描述语言及其支持环境、 体系结构描述规范;( 3)体系结构设计研究:包括体系结构设计方法、 体系结构风格、 体系结构设计空间等内容;( 4)体系结构分析与验证:研究如何将软件的非功能特性转化为体系结构的需求, 如何分析体系结构满足期望的需求的属性, 对体系结构的语法、 语义、 类型失配等进行检查与验证的研究;( 5)体系结构演化与复用研究:研究产品线中软件体系结构演进的理论与方法, 从已有文档、 系统设计和代码中逆向提取软件体系结构、 体系结构复用等;( 6)动态体系结构研究:研究软件系统由于特殊需要必须在连续运营情况下的体系结构变化与支撑平台;( 7)基于体系结构的软件开发:研究引入体系结构后的软件开发过程、 基于体系结构开发与中间技术集成、 基于体系结构的程序框架自动生成技术等。尽管软件体系结构研究领域取得了若干成果, 但在应用方面, 软件体系结构仍然很不成熟。N. Medvovo nic认为, 目前对软件体系结构的理解还仅限于直观、 或当作稀奇事、 或当作民间传说;语义丰富但不严紧。体系结构似乎没有解决实际问题。由此可见, 若要有效地指导软件工程实践、 为软件开发提供一个好的结构及其设计结构的指导原则,软件体系结构研究还有若干问题需要解决。2 一种层次式软件体系结构设计由上面的讨论可知, 软件体系结构不仅指定了系统的组织结构和拓扑结构, 并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。所以, 这里利用建筑学中的构件概念构建一个层次式软件体系结构的基本思想和结构框架。3 软件系统分析,构建系统模型如何抽象问题领域模型来建立软件模型是系统软件体系结构设计成功的关键。对于软件项目的开发来说,一个清晰的软件体系结构是首要的。尽管在开发的初期就设计好系统的最终结构是不可能的,也是不现实的,因为需求还在不断地发生变化。所以,一个好的软件体系结构应该可以创建或再创建功能、 用户界面和问题域模型,进化原型以满足新的软件需求。为了使开发人员在开发软件时对系统体系结构有一个清晰的把握, 不至于将一大堆工作混杂在一起而造成系统的维护困难。利用层次软件体系结构来对系统进行层次化的分类, 即把大型软件系统按照功能的扩展性, 分成若干层。其中有些部分实现比较底层的操作, 比如与数据库打交道;有些部分实现某一类数据结构的基本操作,比如栈、 队列的操作等;还有些部分是专门与系统的最终用户进行交互、 读取用户输入信息,将结果反馈给用户等。这些不同部分之间有可能是纯粹的聚集关系。它们在一起只是因为系统需要它们各自的功能来完成不同的任务。另外一种关系就可能是层次关系, 实现底层操作的部分为实现较高层操作的部分提供服务。有了底层的基本服务,高层操作就只需要关心本层必须完成的任务。对于底层的操作, 它只需要明确定义可以提供给高层的服务接口即可。其内部可以采用不同的实现方法,层与层之间是完全透明的。它们只通过层间的服务接口进行交互。4 软件系统功能的层次化划分在对软件系统进行分析后, 首先对它的所有功能进行层次化划分, 然后对每一个层次的功能进行模块化分解。一个层次中可能有多个模块具有相似的功能, 对这些模块进行更深层次的划分,将相同部分提取出来作为低一层次来对待,而上层的不同部分就划分到不同模块中。这样的层次划分和模块化分解一直进行下去, 直到系统所有功能都有一个明确的模块归属为止。这种软件系统的分解采用先水平后垂直的划分方法。层与层之间的界限是明确的, 但层中的模块内部可能要进行进一步的划分。这是一个反复迭代的递归分解过程。在对软件系统进行先水平后垂直的分解过程中,可能会发现同一层不同模块的内部模块中有功能相似的子模块, 对于这种情况需要将它们的公共部分进行提取, 然后对初始的层次划分进行调整,将公共部分作为它们的下一个层次。当前层次只需要去访问公共部分提供的服务。完成软件系统的分解后, 首先按照各模块对上层提供的服务来定义它与上层模块之间的接口。定义好层与层之间的服务接口后,就可以对各个模块进行独立的设计了。有了这种先进行层次化分解再进行独立设计的方法, 软件开发人员就可完全按照各模块的设计进行独立的开发。这样就不会再出现将多个层次的东西绞在一起的情况。3. 3 构建三层系统结构在明确不同构件所处的层次以及所要完成的功能后, 按照MVC ( Model、 View、 Cont ro ller) 设计范式,可以构造如下层次结构的软件体系结构。 图1 三层构件系统结构示意图数据操作层构件:这类构件与数据库打交道,其主要功能是完成对数据库操作。划分这一层构件的目的是用这一层的构件来屏蔽底层数据库操作的复杂性和多样性, 为上层应用提供统一或数据库操作服务接口。业务层构件:这一层构件有两种,一种是用于公共服务,一种是用于特定领域操作。公共服务构件专注于提供常见问题的高效解决算法,同时提供与操作系统相关的公共服务, 比如文件读写、目录管理、 报表制作等。它还对一些通用数据结构提供常见的操作支持。这类构件支持水平复用,也就是说各种软件系统都可能使用它们提供的服务, 从而避免重复劳动, 节省软件开发时间,避免重复开发过程中引入错误, 提高软件产品质量。特定领域构件与实际的应用领域密切相关。首先需要领域专家对该领域作广泛深入的调查研究,进行领域分析,搜集各种资料,最后为各个构件界定范围。表示层构件: 这类构件与软件系统的最终用户打交道,提供用户界面操作服务,所以称为用户界面构件。当前可视化开发环境中已经提供了大量的界面构件,为软件系统的界面开发提供了有力支持。可以对这些界面构件进行组合、 改进,开发不仅使最终用户感觉友好, 而且使开发人员更易于使用的大粒度用户界面构件。总之,这样的构件层次是一个大粒度的划分,它们之间不具有严格意义上的上下层关系,在各个层次构件的内部层次划分中才能看到明显的上软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。 二.基于层次消息总线的体系结构风格HMB2.1HMBHMB风格基于层次消息总线、 支持构件的分布和并发 ,构件之间通过消息总线进行通讯 ,如图 1 所示.消息总线是系统的连接件 ,负责消息的分派、 传递和过滤 ,以及处理结果的返回;各个构件挂接在消息总线上 ,向总线登记感兴趣的消息类型;构件根据需要发出消息 ,由消息总线负责将该消息分派到系统中所有对此消息感兴趣的构件 ,消息是构件之间通讯的唯一方式;构件接收到消息后 ,根据自身状态对消息进行响应 ,并通过总线返回处理结果.由于构件之间通过总线进行连接 ,并不要求各个构件具有相同的地址空间或局限在一台机器上.该风格可以较好地刻划分布式并发系统 ,以及基于CORBA、 COM和 E JB规范的系统. 图1 HMB风格的系统示意图如图1所示 ,系统中的复杂构件可以分解为比较简单的子构件 ,这些子构件通过局部消息总线进行连接 ,这种复杂的构件称为复合构件.如果子构件仍然比较复杂 ,还可以进一步分解.如此分解下去 ,整个系统形成了树状的拓扑结构 ,树结构的末端结点称为叶结点 ,它们是系统中的原子构件 ,不再包含子构件 ,原子构件的内部可以采用不同于 HMB 的风格 ,例如数据流风格、 面向对象风格、 管道 - 过滤器风格等,这些属于构件的内部实现细节 ,但要把它们集成到 HMB 风格的系统中 ,必须满足HMB风格的构件模型的要求 ,主要是在接口规约方面的要求.另外 ,整个系统也可以作为一个构件 ,通过更高层的消息总线 ,集成到更大的系统中.于是 ,可以采用统一的方式刻划整个系统和组成系统的单个构件.2 构件规约 在SADL 中 ,构件是系统的基本构造单元 ,具有较好的自包含性.每个构件对外提供了一个或多个不同的接口 ,接口定义了一组发送和接收的消息集合 ,刻画了构件对环境提供的服务和向环境要求的服务.此外 ,在构件规约中 ,还刻画了构件的静态结构和动态行为 ,如图3所示.component - spec : : = component name provides inter face2list is/ / 接口部分 structure2 part / / 结构部分 behavior2 part / / 行为部分 end component ; 图3 SADL 的构件规约框架上述的构件规约同样适用于刻画整个系统.HMB 风格的系统是由构件通过消息总线连接而成的 ,其中的每个复合构件都是一个子系统 ,由更低层的构件通过局部消息总线连接而成;同时 ,系统也可以看作是一个大的复合构件 ,集成到更大的系统中. SADL 支持用统一的方法对构件和系统进行描述.在这个意义上 ,系统和构件只有层次上的差异 ,同我们考虑问题时所处的上下文相关 ,这符合人们认识客观世界的一般规律.3. 构件接口在 SADL 中 ,一个构件可以提供一个或多个接口 ,构件接口定义如图4所示.接口定义给出了构件接收和发送的消息集合.在接口定义时 ,可以直接继承多个接口.在一般程序设计语言中 ,过程、 函数或对象接口只定义了其对外提供的服务 ,而 SADL 的构件接口定义中还包括了要求的外部环境提供的服务 ,体现了互联接口的通讯完整性9 .inter face2spec : : = inter face name extends inter face2list is/ /接口之间的继承send :message2spec / /发出的消息集合receive :message2spec / /接收的消息集合 end inter face ;inter face2list : : = inter face2name ,inter face2name message2spec : : = sync| asyn message2name ( parameter2list ) ;parameter2list : : =parameter ,parameterparameter : : =direction type parameter2namedirection : : = in| out| in out图4 SADL 的构件接口定义构件之间通过发送消息进行交互 ,消息可以是同步消息或异步消息 ,同步消息的发送者必须等待消息的处理结果返回后 ,才可继续运行;异步消息的发送者不必等待结果的返回 ,就可以继续运行 ,这样发送者和接收者可以并发运行.消息中的参数分为三种:in、 out 和 in out ,分别代表输入、输出和输入输出 ,in 参数是随消息一起发出的只读参数 ,out参数保存了消息处理的结果 ,in out 参数同时具有两者的特点 ,缺省情况下是 in 参数.指明参数的传递方向不仅关系到不同的参数的处理方式 ,在分布式环境下 ,还可以减少网络上的数据传输量.对 in 参数而言 ,只需把数据从服务请求方传到服务提供方 ,out 参数则只需把结果数据从服务提供方传到服务请求方 ,只有in out 参数需要在两个方向上传递数据.由上可以看出 SADL 提供的接口定义具有以下一些特点:a.支持互联接口 ,可以充分地表达构件和环境之间的关系.通过接口定义 ,表达了构件同环境的所有交互信息 ,减少了构件使用时对环境依赖的不确定性 ,提高了构件的复用潜力. b.方便构件集成.构件在实现时 ,如果需要外部环境提供的服务 ,只需使用在接口处定义的请求服务.在构件集成时 ,通过把构件请求的服务同其它构件(即环境)提供的服务匹配起来即可.c.支持对构件之间的同步和异步消息通讯的表达.2.4 构件结构在SADL 中 ,复合构件是由低层的构件通过局部消息总线连接而成的 ,其结构定义如图5所示.reference : component2list ; / / 引用的构件consistof :component2name instance2list ; / /构件实例声明alias :instance2name. message2name to new2name ; / / 消息过滤表registry : (bus2message ,instance2name) ; / / 构件- 消息响应登记表图5 SADL 的构件结构定义在上述构件结构定义中 ,(1) reference部分指明了所有引用到的子构件.(2) consistof 部分指出了实际组成该复合构件的所有子构件实例 ,一个复合构件可能包含多个同类型的子构件实例.(3)由于不同来源的构件事先并不知道各自的接口 ,因此可能同一消息在不同构件中使用了不同的名字 ,或不同的消息使用了相同的名字 ,造成构件集成时的冲突和不匹配. alias部分对构件发出和接收的消息进行简单地换名或阻塞某个消息 ,当新名字是 null 时 ,表示阻塞相应的消息.(4) registry部分登记了每个子构件实例感兴趣的消息 ,形成构件 - 消息响应登记表.对每个登记项中的 bus 2message ,构件实例instance2name中应有一个接收消息与此对应 ,即在消息名称、 参数个数和类型、 以及返
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外护试题及答案
- 铁矿复工试题及答案
- 2025年标准策划保密协议模板获取
- 2025年演出协议标准文本
- 2025年卸任财务人员信息保密协议
- 内部审计与合规管理的融合路径
- 教育资源与产业需求对接的创新模式
- 金融支持对工业园区创新的推动作用
- 企业创新驱动与经开区经济联动发展
- 2025年消防安全员培训考试题库:消防队伍建设与管理法律法规
- 办公楼室内装饰工程施工设计方案技术标范本
- 2024年无锡市滨湖区名小六年级毕业考试语文模拟试卷
- 中职语文基础模块下册第六单元测试卷-【中职专用】(高教版2023基础模块下册)解析版
- C6150车床主轴箱箱体加工工艺及夹具说明书
- 19S406建筑排水管道安装-塑料管道
- 健康与免疫智慧树知到期末考试答案2024年
- 化工施工安全技术交底
- 甲状腺疾病预防和治疗科普课件
- 第五章排球大单元教学设计课时教学设计人教版初中体育与健康七年级全一册
- 新媒体视频节目制作 课件 学习领域1 新闻短视频制作
- 矿山应急救援钻探技术规范
评论
0/150
提交评论