1、第二次体系结构概述及调用返回体系结构(优选)第二次体系结构概述及调用返回体系结构2023-1-28软件体系结构概述提纲软件体系结构概述提纲背景背景软件体系结构的概念软件体系结构的概念软件体系结构的意义软件体系结构的意义软件体系结构和软件质量属性软件体系结构和软件质量属性软件体系结构风格软件体系结构风格2023-1-281.1 背景背景Edsger.Dijstra指出指出“软件的规模越大,其软件的规模越大,其整体构架就越重要整体构架就越重要”20世纪世纪90年代,软件体系结构逐渐被工年代,软件体系结构逐渐被工业界和学术界广泛接受,并且业内普遍业界和学术界广泛接受,并且业内普遍认为对于大规模复杂软
2、件系统而言,构认为对于大规模复杂软件系统而言,构架的设计比数据结构以及算法的设计更架的设计比数据结构以及算法的设计更为重要为重要2023-1-281.2 软件体系结构的概念软件体系结构的概念Mary Shaw和和David Garlan的定义软件的定义软件体系结构用于描述系统的构成要素、构体系结构用于描述系统的构成要素、构成要素之间的交互和组合模式以及在进成要素之间的交互和组合模式以及在进行组合时的约束条件行组合时的约束条件Len Bass的定义软件体系结构是指程序的定义软件体系结构是指程序或者系统的组成关系,这种组成关系包或者系统的组成关系,这种组成关系包括软件、软件的外部可见属性以及这些括
3、软件、软件的外部可见属性以及这些软件之间的关系软件之间的关系2023-1-28软件体系结构的概念(续)软件体系结构的概念(续)IEEE 14712000中的定义软件体系结构是中的定义软件体系结构是系统的基本组织结构,包括系统构成要系统的基本组织结构,包括系统构成要素,这些要素相互之间以及与运行环境素,这些要素相互之间以及与运行环境之间的关系,还包括系统设计及演化时之间的关系,还包括系统设计及演化时应遵循的原则应遵循的原则软件体系结构包括三个基本要素构件、软件体系结构包括三个基本要素构件、连接件和约束连接件和约束2023-1-281.3 软件体系结构的意义软件体系结构的意义软件体系结构是软件相关
4、人员之间进行软件体系结构是软件相关人员之间进行交流的手段交流的手段软件体系结构是一种高层次的设计复用软件体系结构是一种高层次的设计复用手段手段软件体系结构是早期设计决策的体现,软件体系结构是早期设计决策的体现,决定了最终软件的质量决定了最终软件的质量2023-1-281.4 软件体系结构与软件质量属性软件体系结构与软件质量属性软件体系结构的优劣依赖于各种因素,软件体系结构的优劣依赖于各种因素,这些因素通常被称为软件质量属性这些因素通常被称为软件质量属性(qualities)质量属性包括性能,可伸缩性,可用性,质量属性包括性能,可伸缩性,可用性,可维护性,安全性,易用性,可重复性,可维护性,安全
5、性,易用性,可重复性,可测试性以及可移植性等可测试性以及可移植性等2023-1-28Medicine Cost开发周期长,开发过程复杂LegacyFileUpdateGUI2 软件体系结构的概念-file:ArrayList02 mov AX,045;软件体系结构是软件相关人员之间进行交流的手段面向对象设计文档更新系统根据用户需求产生用例模型每个软件都设计为有一个唯一的程序执行入口和一个唯一的程序执行出口;2 软件体系结构的概念面向对象设计结构中,当一个对象调用另一个对象的方法时,被调用对象控制程序,运行完后控制权又交给调用对象根据用户需求产生数据流图结构化设计从数据流图开始,然后将数据流图转
6、换为程序结构图Medicine Cost ComputationIEEE 14712000中的定义软件体系结构是系统的基本组织结构,包括系统构成要素,这些要素相互之间以及与运行环境之间的关系,还包括系统设计及演化时应遵循的原则Len Bass的定义软件体系结构是指程序或者系统的组成关系,这种组成关系包括软件、软件的外部可见属性以及这些软件之间的关系软件体系结构是软件相关人员之间进行交流的手段1.5 软件体系结构的风格软件体系结构的风格软件体系结构风格是对软件体系结构的软件体系结构风格是对软件体系结构的分类,每一种软件体系结构风格都代表分类,每一种软件体系结构风格都代表一类软件的结构组织模式一类
7、软件的结构组织模式软件体系结构风格是在实践中被重复使软件体系结构风格是在实践中被重复使用的构件设计的总结用的构件设计的总结2023-1-28软件体系结构的风格软件体系结构的风格(续续)软件体系结构风格包括数据流风格,顺软件体系结构风格包括数据流风格,顺序批处理风格,管道过滤器风格,调用序批处理风格,管道过滤器风格,调用返回风格,主程序子程序风格,面向对返回风格,主程序子程序风格,面向对象风格,分层的风格,独立构件风格,象风格,分层的风格,独立构件风格,进程通讯,事件系统,虚拟机风格,解进程通讯,事件系统,虚拟机风格,解释器,基于规则的系统,以数据为中心释器,基于规则的系统,以数据为中心的风格,
8、数据库,超文本以及黑板风格的风格,数据库,超文本以及黑板风格等。另外还有分布式的风格,比如云计等。另外还有分布式的风格,比如云计算,算,P2P风格等风格等2023-1-282 调用返回风格提纲调用返回风格提纲非结构化的编程简介非结构化的编程简介调用返回风格软件体系结构的概念调用返回风格软件体系结构的概念主程序子程序软件体系结构主程序子程序软件体系结构面向对象软件体系结构面向对象软件体系结构主程序子程序与面向对象体系结构举例主程序子程序与面向对象体系结构举例2023-1-282.1非结构化的编程简介非结构化的编程简介非结构化的编程技术是历史上最早的编非结构化的编程技术是历史上最早的编程范型程范型
9、非结构化语言(比如汇编语言)编写的非结构化语言(比如汇编语言)编写的程序通常包内含一系列有序的命令,每程序通常包内含一系列有序的命令,每行有一个行号标记,便于程序跳转行有一个行号标记,便于程序跳转2023-1-28非结构化编程的特点非结构化编程的特点非结构化编程已经引入了循环,分支及非结构化编程已经引入了循环,分支及子程序的概念子程序的概念非结构化编程中的子程序允许有多个入非结构化编程中的子程序允许有多个入口和多个出口口和多个出口程序的执行顺序可以被任意变换程序的执行顺序可以被任意变换2023-1-28非结构化编程的举例非结构化编程的举例01 main02 mov AX,045;03 mov
10、BX,012;04 add AX,BX;05 jnz 17;06 07 jump 012;08 2023-1-282.2 调用返回风格软件体系结构调用返回风格软件体系结构调用返回风格体系结构(调用返回风格体系结构(Call and Return Architecture)采用分而治之的策采用分而治之的策略,其主要思想是将一个复杂的大系统略,其主要思想是将一个复杂的大系统分解为一些子系统,以便降低复杂度,分解为一些子系统,以便降低复杂度,并且增加可修改性并且增加可修改性这种系统的程序执行顺序通常只由一个这种系统的程序执行顺序通常只由一个单线程控制单线程控制2023-1-28面向对象设计可以将数据
11、和操作封装起来,使数据的访问受到限制。结构化设计从数据流图开始,然后将数据流图转换为程序结构图Medicine Cost Computation SystemLen Bass的定义软件体系结构是指程序或者系统的组成关系,这种组成关系包括软件、软件的外部可见属性以及这些软件之间的关系自顶向下结构化设计的问题调用返回风格体系的概念相比于非结构化编程,主程序子程序软件体系结构能够较好地支持系统的可改变性和可伸缩性等性能,其采用分而治之的策略要计算一种药品的单位成本,要求输入药品的名称(Medicine Name),然后系统输出该药品的单位成本(Medicine Cost per Unit)主程序子程
12、序与面向对象体系结构举例(优选)第二次体系结构概述及调用返回体系结构结构化设计的程序包含数据与函数,程序中的全局变量没有被封装,由每个函数访问与修改+update():void2 软件体系结构的概念+update():voidPrinter$230 Germany 89020103 mov BX,012;-file:ArrayListCorrectPoliticalErrorRefrigerator$360 Taiwan 890512根据用户需求产生数据流图调用返回风格体系结构示意调用返回风格体系结构示意AMainBCDE12910456738程序运行的控制流示意程序运行的控制流示意2023-
13、1-28调用返回风格体系的概念调用返回风格体系的概念每个软件都设计为有一个唯一的程序执每个软件都设计为有一个唯一的程序执行入口和一个唯一的程序执行出口;行入口和一个唯一的程序执行出口;程序执行结束后,则控制被返回给程序程序执行结束后,则控制被返回给程序的调用构件;这些程序的构件被称为子的调用构件;这些程序的构件被称为子程序程序(Subroutine)从一个构件到另一个构件的控制传递被从一个构件到另一个构件的控制传递被称为程序调用称为程序调用(call)2023-1-28调用返回风格体系的组织调用返回风格体系的组织拥有整个软件入口的构件叫做主程序拥有整个软件入口的构件叫做主程序(Main Pro
14、gram),它控制子程序的执行顺序,它控制子程序的执行顺序可以被所有构件访问的共享数据被称为全局变可以被所有构件访问的共享数据被称为全局变量量(Global varible)MainSub1Sub2Sub3Global DataSub4Sub52023-1-28调用返回风格体系的层次组织调用返回风格体系的层次组织调用返回风格体系结构可以被组织成任何形式。调用返回风格体系结构可以被组织成任何形式。但层次结构的组织形式更清晰但层次结构的组织形式更清晰层次结构的设计被称为共享数据的主程序子程层次结构的设计被称为共享数据的主程序子程序软件体系结构序软件体系结构MainSub1Sub2Sub3Sub4S
15、ub5Sub6Sub7Sub8DataSub10DataSub9Sub112023-1-282.3 主程序子程序软件体系结构主程序子程序软件体系结构主程序子程序软件体系结构在设计上使主程序子程序软件体系结构在设计上使用层次化的划分方法,该体系结构中使用层次化的划分方法,该体系结构中使用由编程语言直接支持的单一控制线程用由编程语言直接支持的单一控制线程相比于非结构化编程,主程序子程序软相比于非结构化编程,主程序子程序软件体系结构能够较好地支持系统的可改件体系结构能够较好地支持系统的可改变性和可伸缩性等性能,其采用分而治变性和可伸缩性等性能,其采用分而治之的策略之的策略2023-1-28 自顶向下
16、的设计方法自顶向下的设计方法主程序子程序软件体系结构通常采用自顶向下主程序子程序软件体系结构通常采用自顶向下的设计方法,即从系统的功能角度出发,从高的设计方法,即从系统的功能角度出发,从高层开始,将整个功能逐步细化为子功能层开始,将整个功能逐步细化为子功能MainSub1Sub2Sub3Sub11Sub12Sub21Sub22Sub31Sub211Sub121Sub1112023-1-28 自顶向下的设计举例自顶向下的设计举例一个药品成本计算系统(一个药品成本计算系统(Medicine Cost Computation)要计算一种药品的单位成本,要求输入要计算一种药品的单位成本,要求输入药品的
17、名称(药品的名称(Medicine Name),然后系),然后系统输出该药品的单位成本(统输出该药品的单位成本(Medicine Cost per Unit)Medicine Cost ComputationMedicine NameMedicine Cost系统的第一层数据流图(系统的第一层数据流图(DFD)2023-1-28 系统层次化数据流图系统层次化数据流图结构化设计从数据流图开始,然后将数结构化设计从数据流图开始,然后将数据流图转换为程序结构图据流图转换为程序结构图系统的第三层数据流图(系统的第三层数据流图(DFD)系统的第二层数据流图(系统的第二层数据流图(DFD)Medicine
18、 Cost ComputationEnter Medicine NameOutput Medicine CostGet Research Cost per UnitEnter Medicine NameGet Production Cost per UnitOutput Medicine Cost2023-1-28 系统结构图系统结构图设计数据流图从数据输入开始,对数据的各设计数据流图从数据输入开始,对数据的各个处理过程以及最后的输出进行描述,然后个处理过程以及最后的输出进行描述,然后构建结构图构建结构图Get Research Cost per UnitEnter Medicine Name
19、Get Production Cost per UnitOutput Medicine CostMedicine Cost Computation SystemCalculate medine Cost132456782023-1-28自顶向下结构化设计的问题自顶向下结构化设计的问题功能演化困难功能演化困难现实中的系统功能不容易描述,比如服现实中的系统功能不容易描述,比如服务请求式的系统难于找到顶层功能模块务请求式的系统难于找到顶层功能模块功能化设计丢掉了数据与数据结构功能化设计丢掉了数据与数据结构由功能设计得到的软件产品产生的可复由功能设计得到的软件产品产生的可复用代码较少用代码较少2023
20、-1-28 结构化设计的优缺点结构化设计的优缺点优点优点逻辑设计与物理设计分离逻辑设计与物理设计分离开发过程中形成一套规范化的文档,便于将开发过程中形成一套规范化的文档,便于将来修改和维护来修改和维护缺点缺点开发周期长,开发过程复杂开发周期长,开发过程复杂系统难于适应环境变化系统难于适应环境变化1.经验表明,较小的程序(小于经验表明,较小的程序(小于10万行)适合万行)适合于结构化开发于结构化开发2023-1-28CorrectPoliticalError由功能设计得到的软件产品产生的可复用代码较少Dijstra指出“软件的规模越大,其整体构架就越重要”Refrigerator$380 Ger
21、many 19881208面向对象设计有如下缺点调用返回风格体系结构可以被组织成任何形式。+update():void4 面向对象的体系结构软件体系结构的概念(续)第二次体系结构概述及调用返回体系结构系统功能通过对象服务表示政治问题,将文档中的Japanese修改为GermanyLegacyFileUpdateGUI面向对象的设计中,系统被看作为一些对象的集合,消息从一个对象发送到另一个对象,每个对象完成一定的功能映射现实世界,便于理解面向对象设计可以将数据和操作封装起来,使数据的访问受到限制。现实中的系统功能不容易描述,比如服务请求式的系统难于找到顶层功能模块系统的第三层数据流图(DFD)I
22、EEE 14712000中的定义软件体系结构是系统的基本组织结构,包括系统构成要素,这些要素相互之间以及与运行环境之间的关系,还包括系统设计及演化时应遵循的原则2.4 面向对象的体系结构面向对象的体系结构结构化编程中的数据可以被程序的任何结构化编程中的数据可以被程序的任何语句访问,当程序变大时,这种做法使语句访问,当程序变大时,这种做法使得程序缺陷可能被传到很远,难于维护得程序缺陷可能被传到很远,难于维护面向对象设计可以将数据和操作封装起面向对象设计可以将数据和操作封装起来,使数据的访问受到限制。这种将数来,使数据的访问受到限制。这种将数据和操作捆绑的方式被称为对象据和操作捆绑的方式被称为对象
23、2023-1-28 面向对象的体系结构面向对象的体系结构面向对象的设计中,系统被看作为一些面向对象的设计中,系统被看作为一些对象的集合,消息从一个对象发送到另对象的集合,消息从一个对象发送到另一个对象,每个对象完成一定的功能一个对象,每个对象完成一定的功能Obj1Obj7Obj6Obj5Obj4Obj3Obj2CallCallCallCallCallCallCallCall面向对象的体系结构面向对象的体系结构2023-1-28-file:ArrayList根据用户需求产生用例模型软件体系结构风格包括数据流风格,顺序批处理风格,管道过滤器风格,调用返回风格,主程序子程序风格,面向对象风格,分层的
24、风格,独立构件风格,进程通讯,事件系统,虚拟机风格,解释器,基于规则的系统,以数据为中心的风格,数据库,超文本以及黑板风格等。Len Bass的定义软件体系结构是指程序或者系统的组成关系,这种组成关系包括软件、软件的外部可见属性以及这些软件之间的关系要计算一种药品的单位成本,要求输入药品的名称(Medicine Name),然后系统输出该药品的单位成本(Medicine Cost per Unit)Len Bass的定义软件体系结构是指程序或者系统的组成关系,这种组成关系包括软件、软件的外部可见属性以及这些软件之间的关系软件体系结构是早期设计决策的体现,决定了最终软件的质量Printer$33
25、0 Germany 19890711从一个构件到另一个构件的控制传递被称为程序调用(call)Refrigerator$360 Taiwan 8905124 软件体系结构与软件质量属性主程序子程序软件体系结构Medicine Cost+update():void政治问题,将文档中的Japanese修改为Germany第二次体系结构概述及调用返回体系结构开发周期长,开发过程复杂面向对象设计可以将数据和操作封装起来,使数据的访问受到限制。相比于非结构化编程,主程序子程序软件体系结构能够较好地支持系统的可改变性和可伸缩性等性能,其采用分而治之的策略软件体系结构的概念(续)-file:ArrayLis
26、t 面向对象的特点面向对象的特点封装性封装性继承性继承性多态多态复用和可维护性复用和可维护性对象是对现实世界的抽象并且可以管理自己对象是对现实世界的抽象并且可以管理自己系统功能通过对象服务表示系统功能通过对象服务表示共享数据区域被取消共享数据区域被取消对象可以是分布式的对象可以是分布式的2023-1-28面向对象的继承机制面向对象的继承机制继承的目的是代码复用继承的目的是代码复用继承提供了一个统一的接口,容易实现继承提供了一个统一的接口,容易实现多态多态AnimalLand AnimalAquatic AnimalBirdfamilyMammalsElephantWhale2023-1-28面
27、向对象的优点面向对象的优点面向对象设计有如下优点面向对象设计有如下优点容易维护,没有共享的数据容易维护,没有共享的数据可复用性好可复用性好映射现实世界,便于理解映射现实世界,便于理解容易对一个系统进行分解容易对一个系统进行分解2023-1-28面向对象的缺点面向对象的缺点面向对象设计有如下缺点面向对象设计有如下缺点程序占用的内容大程序占用的内容大一个对象要和其它对象交互,必须知道一个对象要和其它对象交互,必须知道其它对象的身份其它对象的身份2023-1-282.5 主程序子程序与面向对象的体主程序子程序与面向对象的体系结构比较系结构比较设计一个文档更新系统,对符合一定设计一个文档更新系统,对符
28、合一定格式的输入文档进行更新,系统的功格式的输入文档进行更新,系统的功能描述如下能描述如下政治问题,将文档中的政治问题,将文档中的Japanese修改修改为为Germany两千年问题,将两位日期修改为四位两千年问题,将两位日期修改为四位日期日期对商品按字典序排序对商品按字典序排序2023-1-28文档更新系统的数据变化文档更新系统的数据变化原始文件原始文件Printer$230 Germany 890201Refrigerator$380 Japaness 881208Refrigerator$360 Taiwan 890512 Printer$330 Japaness 890711政治修改后
29、的文件政治修改后的文件Printer$230 Germany 890201Refrigerator$380 Germany 881208Refrigerator$360 Taiwan 890512 Printer$330 Germany 8907112023-1-28文档更新系统的数据变化文档更新系统的数据变化经过两千年问题修改的文件经过两千年问题修改的文件Printer$230 Germany 19890201Refrigerator$380 Germany 19881208Refrigerator$360 Taiwan 19890512 Printer$330 Germany 198907
30、11排序后的文件排序后的文件Printer$230 Germany 19890201Printer$330 Germany 19890711Refrigerator$360 Taiwan 19890512 Refrigerator$380 Germany 198812082023-1-28结构化程序设计文档更新系统结构化程序设计文档更新系统结构化程序中包含一个主程序和结构化程序中包含一个主程序和5个子程序个子程序结构化设计的程序包含数据与函数,程序中的结构化设计的程序包含数据与函数,程序中的全局变量没有被封装,由每个函数访问与修改全局变量没有被封装,由每个函数访问与修改MainInputCor
31、rectPoliticalErrorCorrectY2KErrorSortOutput2023-1-28面向对象设计文档更新系统面向对象设计文档更新系统面向对象的设计将数据、政治问题,排面向对象的设计将数据、政治问题,排序及输出功能封装在不同的类中,类之序及输出功能封装在不同的类中,类之间的数据通过参数进行传递间的数据通过参数进行传递LegacyFileUpdateGUIInterface FileUpdateInterface+update():voidInput-file:ArrayList+update():voidPoliticalIssue-file:ArrayList+update
32、():voidSorting-file:ArrayList+update():voidOutput-file:ArrayList+update():void2023-1-282.6主程序子程序与面向对象体系主程序子程序与面向对象体系结构的比较结构的比较主程序子程序和面向对象设计相似之处主程序子程序和面向对象设计相似之处都属于调用返回风格都属于调用返回风格主程序子程序体系结构所产生的程序中,每主程序子程序体系结构所产生的程序中,每个软件构件都有一个唯一的程序执行入口和个软件构件都有一个唯一的程序执行入口和出口,当一个函数调用另一个函数时,另一出口,当一个函数调用另一个函数时,另一个函数获得控制权
33、,该函数执行完后控制权个函数获得控制权,该函数执行完后控制权返回给调用函数返回给调用函数面向对象设计结构中,当一个对象调用另一面向对象设计结构中,当一个对象调用另一个对象的方法时,被调用对象控制程序,运个对象的方法时,被调用对象控制程序,运行完后控制权又交给调用对象行完后控制权又交给调用对象2023-1-28两种体系结构的系统分析区别两种体系结构的系统分析区别结构化设计结构化设计面向对象设计面向对象设计根据用户需求产生数根据用户需求产生数据流图据流图根据数据流图生成结根据数据流图生成结构图构图使用结构化英语描述使用结构化英语描述算法算法通过数据关系分析产通过数据关系分析产生数据关系图生数据关系
34、图建立领域模型类图建立领域模型类图根据用户需求产生用根据用户需求产生用例模型例模型用例实现用例实现建立对象互动图,包建立对象互动图,包括:时序图,协作图及括:时序图,协作图及状态图等状态图等2023-1-283 软件体系结构的意义Calculate medine Cost03 mov BX,012;设计数据流图从数据输入开始,对数据的各个处理过程以及最后的输出进行描述,然后构建结构图对象是对现实世界的抽象并且可以管理自己Refrigerator$360 Taiwan 890512Dijstra指出“软件的规模越大,其整体构架就越重要”Refrigerator$380 Japaness 8812
35、08系统的第三层数据流图(DFD)自顶向下结构化设计的问题一个药品成本计算系统(Medicine Cost Computation)IEEE 14712000中的定义软件体系结构是系统的基本组织结构,包括系统构成要素,这些要素相互之间以及与运行环境之间的关系,还包括系统设计及演化时应遵循的原则软件体系结构和软件质量属性-file:ArrayList质量属性包括性能,可伸缩性,可用性,可维护性,安全性,易用性,可重复性,可测试性以及可移植性等面向对象的设计中,系统被看作为一些对象的集合,消息从一个对象发送到另一个对象,每个对象完成一定的功能要计算一种药品的单位成本,要求输入药品的名称(Medic
36、ine Name),然后系统输出该药品的单位成本(Medicine Cost per Unit)Refrigerator$380 Germany 19881208两种体系结构的设计区别两种体系结构的设计区别结构化设计结构化设计面向对象设计面向对象设计数据库设计,包括数数据库设计,包括数据库的正则化据库的正则化用户图形界面设计用户图形界面设计详细设计:函数的参详细设计:函数的参数,算法,返回值数,算法,返回值具体的数据库设计具体的数据库设计设计元素设计元素设计系统软件体系结设计系统软件体系结构构设计类图设计类图设计构件设计构件用户图形界面数据用户图形界面数据详细设计,设计类,详细设计,设计类,类中的方法和属性类中的方法和属性