软件工程王忠杰rainy@hit.edu.cn2012年10月15日软件工程第四章软件设计13 软件体系结构的典型风格13 软件体系结构的典型风格经典体系结构风格数据流批处理管道-过滤器虚拟机解释器基于规则的系统调用-返回主程序-子过程OO分层以数据为中心仓库黑板独立构件事件系统隐式调用显式调用进程通信13 软件体系结构的典型风格主程序‐子过程该风格是结构化程序设计的一种典型风格,从功能的观点设计系统,通过逐步分解和逐步细化,得到系统体系结构。–构件:主程序、子程序–连接器:调用-返回机制–拓扑结构:层次化结构本质:将大系统分解为若干模块(模块化),主程序调用这些模块实现完整的系统功能。主程序子过程1子过程2子过程313 软件体系结构的典型风格面向对象风格系统被看作对象的集合,每个对象都有一个它自己的功能集合;数据及作用在数据上的操作被封装成抽象数据类型(ADT);只通过接口与外界交互,内部的设计决策则被封装起来–构件:类和对象–连接件:对象之间通过函数调用、消息传递实现交互软件工程13.1 以数据为中心的风格13 软件体系结构的典型风格例1:注册表(Windows Registry)13 软件体系结构的典型风格注册表的结构应用程序1应用程序2硬件树形注册表(共享仓库)App1.iniApp2.iniHardware.ini……昀初,硬件/软件系统的配置信息均被各自保存在一个配置文件中(.ini);这些文件散落在系统的各个角落,很难对其进行维护;为此,引入注册表的思想,将所有.ini文件集中起来,形成共享仓库,为系统运行起到了集中的资源配置管理和控制调度的作用。注册表中存在着系统的所有硬件和软件配置信息,如启动信息、用户、BIOS、各类硬件、网络、INI文件、驱动程序、应用程序等;注册表信息影响或控制系统/应用软件的行为,应用软件安装/运行/卸载时对其进行添加/修改/删除信息,以达到改变系统功能和控制软件运行的目的。13 软件体系结构的典型风格例2:剪贴板(Clipboard)剪贴板当前数据1应用1应用2应用n复制读取复制读取复制读取当前数据k…剪贴板是一个用来进行短时间的数据存储并在文档/应用之间进行数据传递和交换的软件程序–用来存储带传递和交换信息的公共区域(形成共享数据仓库);–不同的应用程序通过该区域交换格式化的信息;–访问剪贴板的方式:copy & paste.13 软件体系结构的典型风格以数据为中心的体系结构风格以数据为中心的体系结构风格(也称仓库风格)数据存储功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块功能模块13 软件体系结构的典型风格示例1:基于数据库的系统结构ApplicationApplication1DBDBDB1DB1DB2DB2DB3DB3Application2Application313 软件体系结构的典型风格示例2:仓库形式的编译器结构符号表语法分析树词法分析器语法分析器语义分析器代码生成器源代码调试器语法编辑器优化器2优化器1软件工程13.2 层次风格13 软件体系结构的典型风格层次结构层次化早已经成为一种复杂系统设计的普遍性原则;两个方面的原因:–事物天生就是从简单的、基础的层次开始发生的;–众多复杂软件设计的实践,大到操作系统,中到网络系统,小到一般应用,几乎都是以层次化结构建立起来的。通信者活动界面通信者活动界面邮局服务业务邮局服务业务邮局转运业务邮局转运业务运输部门的(邮件)运输业务书写信件粘贴邮票投递进信箱收集信件加盖邮戳邮件分检邮件打包转送运输部门选择运输路径(路由)转送邮局接收邮件接收邮件邮件拆包邮件投递邮件分检信箱取信阅读邮件发信者收信者13 软件体系结构的典型风格DBMS中的“三级模式‐两层映像”概念视图外部视图B外部视图A主语言+DML主语言+DML主语言+DML主语言+DML主语言+DML数据库(内部视图)概念模式/内模式映象外模式/概念模式外模式/概念模式映象A映象B内模式概念模式外模式13 软件体系结构的典型风格计算机操作系统的层次结构计算机硬件(CPU、存储器、I/O等)基本输入输出(BIOS)操作系统内核(Systemkernel)系统调用语言处理、系统工具、系统应用程序Shell解释运行用户13 软件体系结构的典型风格网络的分层模型链路层协议物理层协议网络层协议分组流比特流帧流报文流应用层7应用层传输层4传输层网络层3网络层链路层2链路层物理层1物理层表示层6表示层会话层5会话层报文流报文流段流网络层网络层链路层链路层物理层物理层子网内部协议通信子网转接节点转接节点13 软件体系结构的典型风格层次系统在层次系统中,系统被组织成若干个层次,每个层次由一系列构件组成;层次之间存在接口,通过接口形成call/return的关系–下层构件向上层构件提供服务–上层构件被看作是下层构件的客户端13 软件体系结构的典型风格层次系统的优点这种风格支持基于可增加抽象层的设计,允许将一个复杂问题分解成一个增量步骤序列的实现。不同的层次处于不同的抽象级别:–越靠近底层,抽象级别越高;–越靠近顶层,抽象级别越低;由于每一层昀多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。13 软件体系结构的典型风格严格分层和松散分层严格分层系统要求严格遵循分层原则,限制一层中的构件只能与对等实体以及与它紧邻的下面一层进行交互–优点:修改时的简单性–缺点:效率低下松散的分层应用程序放宽了此限制,它允许构件与位于它下面的任意层中的组件进行交互–优点:效率高–缺点:修改时困难严格分层系统要求严格遵循分层原则,限制一层中的构件只能与对等实体以及与它紧邻的下面一层进行交互–优点:修改时的简单性–缺点:效率低下松散的分层应用程序放宽了此限制,它允许构件与位于它下面的任意层中的组件进行交互–优点:效率高–缺点:修改时困难软件工程13.3 C/S和B/S结构13 软件体系结构的典型风格“客户机‐服务器”体系结构客户机/服务器:一个应用系统被分为两个逻辑上分离的部分,每一部分充当不同的角色、完成不同的功能,多台计算机共同完成统一的任务。–客户机(前端,front-end):业务逻辑、与服务器通讯的接口;–服务器(后端:back-end):与客户机通讯的接口、业务逻辑、数据管理。一般的,–客户机为完成特定的工作向服务器发出请求;–服务器处理客户机的请求并返回结果。客户机服务器Data(数据)13 软件体系结构的典型风格客户机/服务器的层次性“客户机‐服务器”结构的发展历程:–两层C/S–三层C/S–多层C/S客户界面数据库服务器客户界面数据库服务器业务逻辑服务器客户界面数据库服务器业务逻辑服务器Web服务器13 软件体系结构的典型风格两层C/S结构用户1用户2用户3用户4用户5PrintServerLink/RxLPT1LPT2COMPower/TXPWROKWIC0ACT/CH0ACT/CH1WIC0ACT/CH0ACT/CH1ETHACTCOL其他公用设备打印机调制解调器InternetIntranet数据库服务器13 软件体系结构的典型风格两层C/S结构输入数据输出数据请求按钮表示层业务处理开始SQL请求结束SQL请求开始业务处理结束数据存取请求业务处理程序业务处理请求和业务处理所需的全部输入数据全部处理结束DBMS执行SQL数据层业务处理开始数据存取请求业务处理结束数据存取程序数据登录/更新/读取的请求数据登录/更新/读取的结果13 软件体系结构的典型风格胖客户端与瘦客户端业务逻辑的划分比重:在客户端多一些还是在服务器段多一些?–胖客户端:客户端执行大部分的数据处理操作–瘦客户端:客户端具有很少或没有业务逻辑13 软件体系结构的典型风格用户1用户2...用户nInternetIntranet数据库服务器1数据库服务器2应用服务器...三层C/S体系结构在客户端与数据库服务器之间增加了一个中间层–第一层:用户界面—表示层–第二层:业务逻辑—功能层–第三层:数据库—数据层13 软件体系结构的典型风格三层C/S结构输入数据输出数据请求按钮表示层业务处理开始SQL请求结束SQL请求开始业务处理结束数据存取请求业务处理程序业务处理请求和业务处理所需的全部输入数据全部处理结束DBMS执行SQL数据层业务处理开始数据存取请求业务处理结束数据存取程序数据登录/更新/读取的请求数据登录/更新/读取的结果功能层13 软件体系结构的典型风格B/S结构浏览器/服务器(B/S)是三层C/S风格的一种实现方式。–表现层:浏览器–逻辑层:•Web服务器•应用服务器–数据层:数据库服务器数据库服务器数据库客户端浏览器客户端浏览器Web服务器13 软件体系结构的典型风格B/S结构13 软件体系结构的典型风格B/S结构基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决,系统维护成本低:–客户端无任何业务逻辑,用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。–良好的灵活性和可扩展性:对于环境和应用条件经常变动的情况,只要对业务逻辑层实施相应的改变,就能够达到目的。B/S成为真正意义上的“瘦客户端”,从而具备了很高的稳定性、延展性和执行效率。B/S将服务集中在一起管理,统一服务于客户端,从而具备了良好的容错能力和负载平衡能力。13 软件体系结构的典型风格C/S+B/S内外有别模式为了克服C/S与B/S各自的缺点,发挥各自的优点,在实际应用中,通常将二者结合起来;Web服务器数据库服务器企业内部企业外部内部局域网C/S结构B/S结构Internet查询和浏览工作站修改和维护工作站查询和浏览工作站修改和维护工作站Internet用户遵循“内外有别”的原则:–企业内部用户通过局域网直接访问数据库服务器•C/S结构;•交互性增强;•数据查询与修改的响应速度高;–企业外部用户通过Internet访问Web服务器/应用服务器•B/S结构;•用户不直接访问数据,数据安全;13 软件体系结构的典型风格C/S+B/S查改有别模式遵循“查改有别”的原则:–不管用户处于企业内外什么位置(局域网或Internet),凡是需要对数据进行更新操作的(Add, Delete, Update),都需要使用C/S结构;–如果只是执行一般的查询与浏览操作(Read/Query),则使用B/S结构。查询和浏览工作站维护和修改工作站数据库服务器Internet用户维护和修改工作站企业内部企业外部内部局域网C/S结构B/S结构InternetWeb服务器InternetC/S结构查询和浏览工作站13 软件体系结构的典型风格J2EE B/S+C/S ArchitectureB/SC/SC/S与B/S的混合相当于分层风格里的“松散分层模式”13 软件体系结构的典型风格基于集群(Cluster)的C/S和B/S物理分布事实上,功能层并不一定只驻留在同一台服务器上,数据层也是如此;如果功能层(或数据层)分布在多台服务器上,那么就形成了基于集群(Cluster)的C/S物理分布模式。13 软件体系结构的典型风格集群(Cluster)A cluster is a group of loosely coupled servers that work together closely so that in many respects it can be viewed as though it were a single server. (一组松散耦合的服务器,共同协作,可被看作是一台服务器)Clusters are usually deployed to improve speed,reliabilityandavailabilityover that provided by a single server,