软件的设计的体系结构课件_第1页
软件的设计的体系结构课件_第2页
软件的设计的体系结构课件_第3页
软件的设计的体系结构课件_第4页
软件的设计的体系结构课件_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

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

文档简介

1、软件设计 福州大学 软件学院张舒 体系结构的风格体系结构风格也是构造的一种模式(Pattern),类似于建筑行业中的建筑风格,是描述某一特定应用域中系统组织方式的惯用模式,反映了领域中众多系统所共有的结构和语义特性。 体系结构(Architecture)的定义IEEE的定义体系结构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构以及指导上述内容设计与演化的原理对Software Architecture的常见中文翻译软件体系结构软件架构软件构架 软件体系结构的发展史 1.3 体系结构的兴起和发展 “无体系结构”设计阶段萌芽阶段以汇编语言进行小规模应用程序开发为特征以

2、描述系统的高层抽象结构为中心,不关心具体的建模细节,划分了体系结构模型与传统软件结构的界限,该阶段以Kruchten提出的“4+1”模型为标志出现了从不同侧面描述系统的结构模型,以UML为典型代表。出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征高级阶段初期阶段软件体系结构研究的问题全局组织结构系统的组织,由哪些组件构成全局性的控制结构通信和同步以及数据存取的协议将功能分配到不同的系统组成部分设计元素的组合系统的物理分布系统的可扩展性和性能 研究体系结构风格的意义:有利于发现不同系统在较高级别上的共同特性。对体系结构的了解,使得在设计软件结构时选择合适的模式,进行正确地设计。使用

3、常用的、规范的模式来组织结构,使别的设计者易于理解、便于交流。有利于较高级别上的软件复用。判断能否在不同的软件系统中使用同一体系结构。 Garlan和Shaw(2019)对体系结构的分类如下: 数据流风格:批处理序列;管道/过滤器 调用/返回风格:主程序/子程序;面向对象系统;层次结构 仓库风格:数据库系统;超文本系统;黑板系统 虚拟机风格:解释器 独立构件风格:通信进程;事件系统 介绍几种主要的体系结构风格: (1)仓库风格 基于一个共享数据库的系统模型。(见下图) 仓库系统中有两类构件:中心数据存储构件及对中心数据进行各种操作的一组构件集。中心数据存储与外部构件集之间的信息交互是该模式的至

4、关重要的问题,系统承担的功能不同,信息交互的方式也不同。传统数据库系统:由输入流中的事物出发系统相应进程,这种仓库风格就是传统数据库型系统;中心数据存储是被动的数据库,系统由输入流的事务指令触发相应进程执行。黑板系统:中心数据结构的当前状态出发系统相应的进程执行,这种库系统称为黑板系统。中心数据存储的状态控制了进程的触发,即控制完全由黑板的状态驱动,当有特别的数据可用时,会主动通报外部构件(人工智能技术)。 典型应用黑板系统的典型应用是信号处理、语音和模式识别系统。许多其他系统也组织成仓库模式,如CASE工具集、可复用构件库、大型数据库和搜索引擎等。应用示例1专家系统也是一组程序。从功能角度,

5、定义为:在某个领域,具有专家解题能力的一个程序系统。从结构角度可以定义为:一个用于解题的程序系统,有一个特定领域的知识库和一个可以获取和运用知识构件组成。 系统工作流程如下:获取人们长期总结的特定领域中的知识和经验模仿人类专家的思维规律和思维过程模式利用某些推理机制和控制策略,用计算机进行推理 专家系统的核心内容:知识库推理机制主要成分:知识库推理机工作数据库用户界面翻译程序知识获取程序 (2)管道过滤器风格把系统看作是对相继输入数据的一系列变换。一批数据进入系统,流经一个个构件最后到达终点(输出或数据仓库)。构件称为过滤器,能够对数据进行渐进式的转换(一种流变换为另一种流)。数据流的通路称为

6、管道。(见下图) 组件:过滤器,接收数据输入,进行转化后输出过滤器是独立的实体,相互之间没有状态的依赖对一个过滤器而言,它上游和下游的过滤器是透明的交互由管道提供,管道负责连接一个过滤器的输出一个另外一个过滤器的输入该风格的特点:过滤器是独立的,不与其他过滤器共享数据;无需知道其他过滤器的存在或功能。系统输出的正确性不取决于所用过滤器的顺序。 优点:没有复杂的构件交互:将系统看成各个过滤器的简单合成。支持软件重用:任意两个过滤器只要相互传输的数据格式一致,就可以连接在一起,应用到其他系统中。易于维护:过滤器替换方便。支持并行执行过滤器,但要考虑并行执行时数据流之间的同步问题。 缺陷:批处理方式

7、,不适合构建交互式应用的系统。在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。 该模式常见的变种流水线:表现为线性的拓扑结构批处理系统、UNIX Shell、编译器有界管道:对一个管道所能传输的数据量作出限制类型管道:对一个管道所能传输的数据类型作出限制应用示例2一个典型的数字通信系统为例,展示如何用管道过滤器风格组织系统中的各个构件。请考虑数字通信系统中信息传输的过程。 上图中有4个过滤器和相互之间联系所需要的管道。 数字通信系统中存在几个问题:数字信号传输过程中,信道噪声产生的误差可以通过控制编码等手段来控制,所以在

8、发送端要增加一个编码器,接收端要增加一个解码器。若信息要保密,则要增加加解密设备数字通信系统中传送的是码元,因此发送和接收要同步因此在此通信系统中要有同步控制构件。 应用示例3考虑一个字串处理系统,在这个系统中:一个字符串可以简单地分成一组单词然后这些单词可以按照某种规则组成一个新的字符串最后将这个新的字符串字母排序,然后输出。 整个系统的处理过程可以概括为分割、合并、排序这些个。 如果输入一个字符串到这个过滤器中,那么它会将这个字符串分割为一组单词,然后输出来。而后合并、排序过滤器可以分割过滤器中接收这些输出的数据,再产生出新的字符串。 (3)调用返回风格是一种集中式控制模型。自上而下的调用

9、,控制始于结构层次的顶层,往往只有一个控制线程。优点是容易分析与理解系统的控制流,但不适合并发执行的系统。 (4)基于事件的隐式调用风格基于事件的隐式调用风格的基本思想:构件不直接调用一个过程,而是触发或广播(broadcast)一个或多个事件(在“源对象”和“监听者对象”之间,某种状态发生变化的传递机制)。其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。 从体系结构上说,这种风格的构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注

10、册一些过程,当发生这些事件时,过程被调用。基于事件的隐式调用风格的主要特点是:事件的触发者并不知道哪些构件会被这些事件影响。这样就不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。 支持基于事件驱动的应用系统如:在编程环境中用于集成各种工具在数据库管理系统中确保数据的一致性约束在用户界面系统中管理数据在编译器中支持语法检查 优点: 为软件重用提供了强大的支持。当需要将一个构件加入现存系统中,只需要将他注册到系统的事件中。为改进系统带来了方便。在不改变系统中其他构件接口的情况下,构件可以非常容易的被其他构件取代。 缺点: 构件放弃了

11、对系统计算的控制。一个构件触发一个事件时,不能确定其它构件是否会响应它。而且即使它知道事件注册了哪些构件的构成,它也不能保证这些过程被调用的顺序。数据共享的问题。有时数据被一个事件传递,基于事件的系统必须依靠一个共享的数据库来解决各个对象进行数据交换,如何保证共享数据能够得到合理的访问是一个关键问题。 (5)面向对象风格面向对象模式集数据抽象、抽象数据类型、类继承为一体,根本出发点是追求问题空间和软件系统空间结构的一致性。它将自己的数据结构定义和功能实现封装起来,实现了信息隐藏和数据抽象,可作为基本构件单元被不同软件系统重用。 优点: 高度模块性。对象是一个功能和数据独立的单元,相互之间只有通

12、过消息传递进行通讯,可以较为方便的为各个不同的软件系统所用。 封装功能。为信息隐藏提供具体的实现手段,外部不必知道对象的内部状态,只需了解其功能描述就可使用。 代码共享。继承性提供了一种代码共享的手段,可以避免重复的代码设计,提高软件的可重用性。 灵活性。对象的功能执行是在消息传递时确定的,支持对象的主体特征,使得对象可以根据自身的特点进行功能实现。 易维护性。对象实现了抽象和封装功能,使其中可能出现的错误限制在自身,不会向外传播,易于检错和修改。 可扩充性。面向对象系统可通过继承机制不断扩充功能。 不足: 如果一个对象需要调用另一个对象,它就必须知道那个对象的标识(对象名或其他标识符),增强

13、了对象之间的依赖关系。如果一个对象改变了自己的标识,就必须通知系统中所有和它有调用关系的对象。 这种显式调用方式可能有副作用。例如,如果A使用了对象B,C也使用了对象B,那么,C对B的使用(引起状态改变)可能造成的对A的影响。 继承使得设计变得复杂,引入多层对象结构使得维护变得困难父类、子类、子类的子类树状结构要不断向上追述,使得对子类的理解变得困难由于继承,使得某一父类修改会影响到他的所有子类应用示例5某公司打算建立一个两层的建筑,并安装一部电梯。公司要制定一个软件模拟器来模拟电梯的运作,以确定它是否能符合公司的需要。考虑该模拟软件设计中可以使用的体系结构方案。 分析可知该软件系统主要由三部

14、分构成:模拟器:仿真模型,模拟运作的电梯模型展示界面:用户可以通过这个图形化界面观察电梯的运作图形用户界面:用户可以通过该界面控制仿真过程解决方案1面向对象风格首先要在模型中将履行重要职责的实体名称提取出来模型、电梯井、电梯、人、楼层、电梯门、楼层门、电梯按钮、楼层按钮、钟、灯。可以省略不重要的名称例如:公司、办公室等 其次,可以在系统中基于以上名词分类建立类模型。可以使用UML的类图,创建所有的类,还有类之间的联系。类图通过提供系统中的类(也就是系统的构建单元),模拟了系统的体系结构。 解决方案2事件隐式调用风格通过前面的分析,可知电梯模拟系统中有许多事件,例如:当电梯到达地面时,电梯发送e

15、levatorArrieved事件给电梯门,电梯门就会确定其行动,比如将门对象打开的状态通知人。按电梯按钮,或者楼层按钮时,也会将相应的事件发送给对应的处理对象。 为了便于对不同的事件进行不同的处理,可在模拟过程中创建一个超类ElevatorModelEvent对象来描述模型中的事件,并可以派生不同的事件类。 (6)层次式风格系统采用层次化的组织方式构建,系统中的每一层都要承担两个角色:为结构中的上层提供服务;作为结构中下层的客户,调用下层提供的功能函数。 最内层完成最基本的公用操作,向外各层逐渐进行功能扩展。 在大多数分层系统中,各层仅和自己相邻层次交互信息。在一些特定情况下,内部层次也可能

16、会开放一些服务供其他层次调用。这样,分层系统中的各个组件在不同层次上形成了不同功能级别的虚拟机(Virtual Machine),各虚拟机之间通过系统设计时约定的协议进行通讯。一个概念上的分层模型如下图所示: 该模型最典型的应用如网络通讯系统的设计, 在这一应用领域中,每一层提供一个抽象的功能,作为上层通讯的基础,较低的层次定义低层的交互,最低层次通常只定义硬件物理连接。优点: 支持基于抽象程度递增的系统设计,可将一个复杂的系统按功能递增的步骤进行分解。 具有较好的可扩展性。每一层功能的改变最多影响相邻上下层。 支持软件复用。只要提供的服务接口不变,同一层的不同实现可以交换使用。因此可定义一组

17、标准接口,允许有多种不同的实现方法。 不足:并不是所有系统都会适用分层模式来描述。即使可从逻辑上对系统功能进行分层,出于性能考虑,设计者不得不将逻辑上高层次的功能和低层次上的具体实现紧密结合,加大了不同层次间的耦合度。定义一个合适的抽象层次可能会很困难。 (7)客户机服务器体系结构客户机服务器系统(client-server system)是至少包含一个服务器和一个客户机的分布式系统。在分布式系统中(distributed system) ,计算由不同的程序执行,这些程序一般运行在不同的硬盘上,合作完成系统的任务。 服务器就是为其他程序提供某些服务的程序,其他程序使用通讯通道与服务器相连接。客

18、户机就是访问服务器的程序。客户机可以访问许多服务器来执行不同的功能,而服务器可以同时被许多客户机所访问。除了同步请求或接收结果的时候,客户和服务器中的控制流都是相互独立的。客户机服务器体系结构的一个重要变体就是三层模型(three-tier-model)。在该模型中应用服务器需要同客户机(通常经由Internet)和数据库服务器(出于安全原因通常在企业网络内部)通信。当访问数据库服务器时,应用服务器相当于一个客户机。(见图) 下图中互联网银行系统是使用C/S体系结构的例子。银行的客户数据库提供数据管理服务,一个Web服务器提供应用服务如用于现金转帐、生成银行结算单和工资单等。 在某些情况下,可

19、以在系统中添加服务器,把三层的C/S结构扩展成多层结构。多层系统适合于当应用程序需要到不同的数据库中存取数据的情况。客户机服务器体系结构的进一步扩展是对等模式(peer-to-peer ) 。对等系统是一个特殊的客户机服务器系统,每个构件(或子系统)既可以是客户机,又可以是服务器,其中的控制流除了在同步请求的时候,都是互相独立的。2019年以来,P2P有了很大的改进,用户之间直接传递音乐、电影、游戏和文件等,大大的改变了人们的工作方式和生活方式。 (8)异质构架风格 软件系统很少纯粹是一个风格,不同的体系结构在处理能力上有各自的优点和缺陷,异构软件体系结构由几种体系结构组合而成。几种组合类型:

20、局部异质:多个不同风格层次异质:每个构件有自己的风格并行异质:同时复合好几种风格 例如调用返回体系结构可存在于更复杂的体系结构(如C/S结构)中。如何进行系统体系结构设计?根据已选的软件、硬件以及网络环境构造系统的整体结构,划分系统模块,并对系统内各个模块之间的关系进行定义。确定已定义的对象及其组件在系统内如何交互、通信。如果待开发的系统是最终使用系统的一个子系统或者将要使用现有的一些其他相关系统,应对它们各自的功能和相互间的关系给与具体描述。案例:网上招聘系统体系结构设计系统简介:本系统可以实现网上的在线招聘,应聘者通过网上投递简历并进行网上测评。招聘单位可以汇总简历,浏览简历,并通过测评结

21、果选择合格的简历,通知面试,进行面试。系统可以使企业与求职者方便的进行交流,系统本身包括管理端子系统和客户端子系统。 管理端子系统包括题库管理、问卷管理、职位管理、简历管理、面试管理、用户管理。 客户端子系统包括查询职位,简历录入,回答问卷,提交简历。 系统的总体结构设计遵循如下原则 :系统应具有良好的适应性:能适应用户对系统的软件环境、管理内容、模式和界面的要求;系统应具有可靠性:采用成熟的技术方法和软件开发平台,以保证在以后的实际应用中安全、可靠;系统应具有较好的安全性:应提高完善的安全机制和用户权限限制机制,确保数据的受限访问; 系统的总体结构设计遵循如下原则 :系统应具有良好的可维护性

22、:系统应易于维护、安装;系统应具有良好的可扩展性:系统应适应未来信息化建设的要求,能方便得进行功能扩展,以建立完善的信息集成管理体系。系统体系结构本系统开发决定采用MVC架构方式,并采用Struts框架实现。Struts 是一个基于模型 (Model) 视图 (View) 控制器 (Controller)(MVC) 模式的应用架构的开源框架。在Struts框架中模型由实现业务逻辑的JavaBean或者EJB组件构成,控制器由ActionSevelet和Action来实现,视图由一组JSP文件组成,它可以使设计人员不必要从头开始全部开发组件,对于大项目更是很好的选择。Struts实现的MVC架构

23、 根据系统分析结果,该系统从结构上应满足:基于浏览器进行显示以方便用户使用;采用MVC的三层体系结构,分化各个功能组件;采用JDBC技术与数据库通讯以便于数据库的转换;采用标签技术完成动态页面的简单逻辑。 遵循struts的框架规范,设计本系统的体系结构如下:其中表示层:用于与用户进行交互以及显示结果。包括所有的JSP,提供用户界面,接受用户输入, 还包括相应的ActionFrom Bean,用来存放表单数据,并进行表单数据验证。 控制层:包括所有的Action类,它完成三项任务:进行业务逻辑验证,调用模型组件,决定将合适的视图组件返回给用户。模型:进行逻辑处理的JavaBean等。数据库采用

24、ODBC技术以提供数据库的可移植性 最终实现系统体系结构如下:从概要设计到过程设计 在概要设计阶段采用自顶向下逐步求精的设计方法,可以把一个复杂问题的解分解和细化为一个由若干模块组成的层次结构的软件系统; 在详细设计阶段采用自顶向下逐步求精的设计方法,可以把一个模块的功能逐步分解和细化为一系列具体的处理步骤。 过程设计的任务在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。 -这就是过程设计的任务为了精确地表达这些算法所使用的过程规格说明的工具叫做详细设计工具,它可以分为以下三类: 图形工具 表格工具 语言工具程序流程图程序流程图也

25、称为程序框图,程序流程图使用五种基本控制结构是:程序流程图的标准符号循环的标准符号 注解的使用多出口判断 示例流程图的优缺点优点:比较直观,灵活,并且比较容易掌握 缺点:(1)由于程序流程图的特点,它本身并不是逐步求精的好工具。(2)程序流程图中用箭头代表控制流,这样使得程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制;(3)程序流程图在表示数据结构方面存在不足。N-S图N-S图也叫做盒图。五种基本控制结构由五种图形构件表示。 示例N-S图的嵌套定义形式N-S图的特点(1)功能域(即某一个特定控制结构的作用域)有明确的规定,并且可以很直观地从N-S图上看出来;(2)它的控制转移

26、不能任意规定,必须遵守结构化程序设计的要求;(3)很容易确定局部数据和全局数据的作用域;(4)很容易表现嵌套关系,也可以表示模块的层次结构。PAD也设置了五种基本控制结构的图式,并允许递归使用。问题分析图(PAD)PAD描述的示例对应于增量型循环结构for i := n1 to n2 step n3 do在PAD中有相应的循环控制结构PAD的扩充控制结构判定表判定表用于表示程序的静态逻辑在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理要求将程序流程图中的多分支判断都改成两分支判断无多分支判断结构建立判定表的步骤列出与一个具体过程(或模块)有关的所有处理。列出过程执行期间的

27、所有条件(或所有判断)。将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动作。 用电收费系统中的某一个处理: 如果按固定比率收费,月耗电少于100KWH的用户负担的费用为某个固定值(最低月收费),其他用户按表A的规则收费。如果按变动比率收费,月耗电少于100KWH的用户按表A的规则收费,其他用户按表B的规则收费。 决策表(判定表): 组合 规则 固定比率用户 变动比率用户 耗电量100度用户 耗电量100度用户 最低月收费 按表A收费 按表B收费 TT1234FFF F T TT F T F F T F T 条

28、件动作判定表特点优点:能够简洁,无二义性地描述所有的处理规则 缺点:表示的是静态逻辑,是在某种条件取值组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结构, 数据设计及文件设计数据设计的原则文件设计数据设计的原则R.S.Pressman数据设计的过程 为在需求分析阶段所确定的数据对象选择逻辑表示,需要对不同结构进行算法分析,以便选择一个最有效的结构;设计对于这种逻辑数据结构的一组操作,以实现各种所期望的运算。 确定对逻辑数据结构所必需的那些操作的程序模块(软件包),以便限制或确定各个数据设计决策的影响范围。Pressman提出了一组原则,用来定义和设计数据。实际上,在进行需求分析时往

29、往就开始了数据设计。1.用于软件的系统化方法也适用于数据。在导出、评审和定义软件的需求和软件体系结构时,必须定义和评审其中所用到的数据流、数据对象及数据结构的表示。应当考虑几种不同的数据组织方案,还应当分析数据设计给软件设计带来的影响。2.确定所有的数据结构和在每种数据结构上施加的操作。设计有效的数据结构,必须考虑到要对该数据结构进行的各种操作。3.应当建立一个数据词典并用它来定义数据和软件的设计。数据词典清楚地说明了各个数据之间的关系和对数据结构内各个数据元素的约束。4.低层数据设计的决策应推迟到设计过程的后期进行。在进行需求分析时确定的总体数据组织,应在概要设计阶段加以细化,在详细设计阶段

30、才规定具体的细节。5.数据结构的表示只限于那些必须直接使用该数据结构内数据的模块才能知道。此原则就是信息隐蔽和与此相关的耦合性原则。6.应当建立一个存放有效数据结构及相关操作的库。数据结构应当设计成为可复用的。建立一个存有各种可复用的数据结构模型的部件库。7.软件设计和程序设计语言应当支持抽象数据类型的定义和实现。 以上原则适用于软件工程的定义阶段和开发阶段。“清晰的信息定义是软件开发成功的关键”。文件设计文件设计的过程,主要分两个阶段。第一个阶段是文件的逻辑设计,主要在概要设计阶段实施。(1) 整理必须的数据元素:在软件设计中所使用的数据,有长期的,有短期的,还有临时的。它们都可以存放在文件中,在需要时对它们

温馨提示

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

评论

0/150

提交评论