您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 结构设计 > 第二次-体系结构概述与调用返回体系结构
下午6时52分第二次调用返回体系结构CallbackSoftwareArchitecturestyle任课老师:黄武下午6时52分提纲软件体系结构概述调用返回体系结构下午6时52分软件体系结构概述提纲背景软件体系结构的概念软件体系结构的意义软件体系结构和软件质量属性软件体系结构风格下午6时52分1.1背景Edsger.Dijstra指出“软件的规模越大,其整体构架就越重要”20世纪90年代,软件体系结构逐渐被工业界和学术界广泛接受,并且业内普遍认为:对于大规模复杂软件系统而言,构架的设计比数据结构以及算法的设计更为重要下午6时52分1.2软件体系结构的概念MaryShaw和DavidGarlan的定义:软件体系结构用于描述系统的构成要素、构成要素之间的交互和组合模式以及在进行组合时的约束条件LenBass的定义:软件体系结构是指程序或者系统的组成关系,这种组成关系包括软件、软件的外部可见属性以及这些软件之间的关系下午6时52分1.2.1软件体系结构的概念(续)IEEE1471-2000中的定义:软件体系结构是系统的基本组织结构,包括系统构成要素,这些要素相互之间以及与运行环境之间的关系,还包括系统设计及演化时应遵循的原则软件体系结构包括三个基本要素:构件、连接件和约束下午6时52分1.3软件体系结构的意义软件体系结构是软件相关人员之间进行交流的手段软件体系结构是一种高层次的设计复用手段软件体系结构是早期设计决策的体现,决定了最终软件的质量下午6时52分1.4软件体系结构与软件质量属性软件体系结构的优劣依赖于各种因素,这些因素通常被称为软件质量属性(qualities)质量属性包括:性能,可伸缩性,可用性,可维护性,安全性,易用性,可重复性,可测试性以及可移植性等下午6时52分1.5软件体系结构的风格软件体系结构风格是对软件体系结构的分类,每一种软件体系结构风格都代表一类软件的结构组织模式软件体系结构风格是在实践中被重复使用的构件设计的总结下午6时52分1.5.1软件体系结构的风格(续)软件体系结构风格包括:数据流风格,顺序批处理风格,管道-过滤器风格,调用-返回风格,主程序-子程序风格,面向对象风格,分层的风格,独立构件风格,进程通讯,事件系统,虚拟机风格,解释器,基于规则的系统,以数据为中心的风格,数据库,超文本以及黑板风格等。另外还有分布式的风格,比如云计算,P2P风格等下午6时52分2调用-返回风格提纲非结构化的编程简介调用-返回风格软件体系结构的概念主程序-子程序软件体系结构面向对象软件体系结构主程序-子程序与面向对象体系结构举例下午6时52分2.1非结构化的编程简介非结构化的编程技术是历史上最早的编程范型非结构化语言(比如汇编语言)编写的程序通常包内含一系列有序的命令,每行有一个行号标记,便于程序跳转下午6时52分2.1.1非结构化编程的特点非结构化编程已经引入了循环,分支及子程序的概念非结构化编程中的子程序允许有多个入口和多个出口程序的执行顺序可以被任意变换下午6时52分2.1.2非结构化编程的举例01main02movAX,045;03movBX,012;04addAX,BX;05jnz17;06…07jump012;08…下午6时52分2.2调用-返回风格软件体系结构调用-返回风格体系结构(CallandReturnArchitecture)采用分而治之的策略,其主要思想是将一个复杂的大系统分解为一些子系统,以便降低复杂度,并且增加可修改性这种系统的程序执行顺序通常只由一个单线程控制下午6时52分2.2.1调用-返回风格体系结构示意AMainBCDE12910456738程序运行的控制流示意下午6时52分2.2.2调用-返回风格体系的概念每个软件都设计为有一个唯一的程序执行入口和一个唯一的程序执行出口;程序执行结束后,则控制被返回给程序的调用构件;这些程序的构件被称为子程序(Subroutine)从一个构件到另一个构件的控制传递被称为程序调用(call)下午6时52分2.2.3调用-返回风格体系的组织拥有整个软件入口的构件叫做主程序(MainProgram),它控制子程序的执行顺序可以被所有构件访问的共享数据被称为全局变量(Globalvarible)MainSub1Sub2Sub3GlobalDataSub4Sub5下午6时52分2.2.4调用-返回风格体系的层次组织调用-返回风格体系结构可以被组织成任何形式。但层次结构的组织形式更清晰层次结构的设计被称为共享数据的主程序-子程序软件体系结构MainSub1Sub2Sub3Sub4Sub5Sub6Sub7Sub8DataSub10DataSub9Sub11下午6时52分2.3主程序-子程序软件体系结构主程序-子程序软件体系结构在设计上使用层次化的划分方法,该体系结构中使用由编程语言直接支持的单一控制线程相比于非结构化编程,主程序-子程序软件体系结构能够较好地支持系统的可改变性和可伸缩性等性能,其采用分而治之的策略下午6时52分2.3.1自顶向下的设计方法主程序-子程序软件体系结构通常采用自顶向下的设计方法,即从系统的功能角度出发,从高层开始,将整个功能逐步细化为子功能MainSub1Sub2Sub3Sub11Sub12Sub21Sub22Sub31Sub211Sub121Sub111下午6时52分2.3.2自顶向下的设计举例一个药品成本计算系统(MedicineCostComputation)要计算一种药品的单位成本,要求输入药品的名称(MedicineName),然后系统输出该药品的单位成本(MedicineCostperUnit)MedicineCostComputationMedicineNameMedicineCost系统的第一层数据流图(DFD)下午6时52分2.3.2.1系统层次化数据流图结构化设计从数据流图开始,然后将数据流图转换为程序结构图系统的第三层数据流图(DFD)系统的第二层数据流图(DFD)MedicineCostComputationEnterMedicineNameOutputMedicineCostGetResearchCostperUnitEnterMedicineNameGetProductionCostperUnitOutputMedicineCost下午6时52分2.3.2.2系统结构图设计数据流图从数据输入开始,对数据的各个处理过程以及最后的输出进行描述,然后构建结构图GetResearchCostperUnitEnterMedicineNameGetProductionCostperUnitOutputMedicineCostMedicineCostComputationSystemCalculatemedineCost13245678下午6时52分2.3.2.3自顶向下结构化设计的问题1.功能演化困难2.现实中的系统功能不容易描述,比如服务请求式的系统难于找到顶层功能模块3.功能化设计丢掉了数据与数据结构4.由功能设计得到的软件产品产生的可复用代码较少下午6时52分2.3.3结构化设计的优缺点优点1.逻辑设计与物理设计分离2.开发过程中形成一套规范化的文档,便于将来修改和维护缺点1.开发周期长,开发过程复杂2.系统难于适应环境变化经验表明,较小的程序(小于10万行)适合于结构化开发下午6时52分2.4面向对象的体系结构结构化编程中的数据可以被程序的任何语句访问,当程序变大时,这种做法使得程序缺陷可能被传到很远,难于维护面向对象设计可以将数据和操作封装起来,使数据的访问受到限制。这种将数据和操作捆绑的方式被称为对象下午6时52分2.4.1面向对象的体系结构面向对象的设计中,系统被看作为一些对象的集合,消息从一个对象发送到另一个对象,每个对象完成一定的功能Obj1Obj7Obj6Obj5Obj4Obj3Obj2CallCallCallCallCallCallCallCall面向对象的体系结构下午6时52分2.4.2面向对象的特点封装性继承性多态复用和可维护性对象是对现实世界的抽象并且可以管理自己系统功能通过对象服务表示共享数据区域被取消对象可以是分布式的下午6时52分2.4.3面向对象的继承机制继承的目的是代码复用继承提供了一个统一的接口,容易实现多态AnimalLandAnimalAquaticAnimalBirdfamilyMammalsElephantWhale下午6时52分2.4.4面向对象的优点面向对象设计有如下优点:1.容易维护,没有共享的数据2.可复用性好3.映射现实世界,便于理解4.容易对一个系统进行分解下午6时52分2.4.5面向对象的缺点面向对象设计有如下缺点:1.程序占用的内容大2.一个对象要和其它对象交互,必须知道其它对象的身份下午6时52分2.5主程序-子程序与面向对象的体系结构比较设计一个文档更新系统,对符合一定格式的输入文档进行更新,系统的功能描述如下:1.政治问题,将文档中的Japanese修改为Germany2.两千年问题,将两位日期修改为四位日期3.对商品按字典序排序下午6时52分2.5.1文档更新系统的数据变化原始文件Printer$230Germany89-02-01Refrigerator$380Japaness88-12-08Refrigerator$360Taiwan89-05-12Printer$330Japaness89-07-11政治修改后的文件Printer$230Germany89-02-01Refrigerator$380Germany88-12-08Refrigerator$360Taiwan89-05-12Printer$330Germany89-07-11下午6时52分2.5.2文档更新系统的数据变化经过两千年问题修改的文件Printer$230Germany1989-02-01Refrigerator$380Germany1988-12-08Refrigerator$360Taiwan1989-05-12Printer$330Germany1989-07-11排序后的文件Printer$230Germany1989-02-01Printer$330Germany1989-07-11Refrigerator$360Taiwan1989-05-12Refrigerator$380Germany1988-12-08下午6时52分2.5.3结构化程序设计文档更新系统结构化程序中包含一个主程序和5个子程序结构化设计的程序包含数据与函数,程序中的全局变量没有被封装,由每个函数访问与修改MainInputCorrectPoliticalErrorCorrectY2KErrorSortOutput下午6时52分2.5.4面向对象设计文档更新系统面向对象的设计将数据、政治问题,排序及输出功能封装在不同的类中,类之间的数据通过参数进行传递LegacyFileUpdateGUI《Interface》FileUpdateInterface+update():voidInput-file:ArrayList+update():voidPoliticalIssue-file:ArrayList+update():voidSorting-file:ArrayList+update():voidOutput-file:ArrayList+update():void下午6时52分2.6主程序-子程序与面向对象体系结构的比较主程序-子程序和面向对象设计相似之处1.都属于调用-返回风格2.主程序-子程序体系结构所产生的程序中,每个软件构件都有一个唯一的程序执行入口和出口,当一个函数调用另一个函数时,另一个函数获得控制权,该函数执行完后控制权返回给调用函数3.面向对象设计结构中,当一个对象调用另一个对象的方法时,被调
本文标题:第二次-体系结构概述与调用返回体系结构
链接地址:https://www.777doc.com/doc-4341782 .html