第四章软件设计主要内容:软件体系结构的概念软件设计思想结构化设计方法面向对象设计方法讨论要点(1)什么是软件结构?(2)如何建立设计模型?软件设计的目标和目的软件需求:解决“做什么”软件设计:解决“怎么做”软件设计的任务问题结构(软件需求)软件结构从软件需求规格说明书出发,形成软件的具体设计方案。映射软件的总体结构主要回答的问题•软件的组成部分•软件的层次关系•模块的内部处理逻辑•模块之间的界面软件体系结构软件体系结构包括两部分:(1)过程构件(模块)的层次结构(2)数据构件§4.1软件体系结构•软件体系结构的有关概念•软件体系结构的层次性•软件体系结构的设计原理软件体系结构的有关概念•什么是软件体系结构•软件体系结构的发展•软件体系结构的研究范畴软件设计的目标•设计应该是便于维护和升级的,因而应该是模块化的•设计应该是便于移植的•设计应该具有适应性•设计过程应该受到理性化的控制•设计应该表现出概念的完整性软件设计思想•强调信息隐蔽的单元概念•应用基于操作和数据封装构成的单元设计技术•应用专门的机制可靠地处理并发控制和分布系统问题•提出基于模型的系统结构和设计方法•明确提出软件体系结构的设计思想什么是软件体系结构•软件体系结构定义了软件局部和总体计算部件的构成,以及这些部件之间的相互作用关系。•从整体看,软件体系结构是由结构和功能各异、相互作用的部件集合,按照层次构成的。它包括了系统基础构成单元、它们之间的作用关系、在构成系统时它们的合成方法以及对合成约束的描述。普通部件及其支持的相互作用序号部件类型部件支持的相互作用类型1模块(Module)过程调用、数据共享2对象(Object)方法调用3过滤器(Filter)数据流4过程(Process)消息传递、远程调用、通讯协议、同步5数据文件(Datafile)读写6数据库(Database)模式、查询语言7文档(Document)共享表示假设软件体系结构可分为四种不同的体系:•概念结构包括部件、互连、原则和性能等•代码结构包括软件的配置管理、系统建造等•模块结构包括模块界面、模块管理、模块控制和一致性等•执行结构包括性能分析、调度分析、动态配置和不同的执行系统之间的接口等与软件体系结构有关的研究:•体系结构风格(ArchitectureStyles)表示软件系统的一种特别的基本结构,以及相关的构造方法•设计模式(DesignPatterns)构造型模式、结构型模式、行为型模式•框架(Framework)另一种研究和构造软件体系结构的方法,更多的是关于应用领域问题的已建立的系统结构。软件体系结构的层次结构•软件的构成•软件的物质基础•软件的结构基础•软件的层次结构模型•软件体系结构的层次结构模型•软件体系结构的体系软件的构成•软件体系结构需要基础•软件体系结构需要层次•软件体系结构需要模式软件的物质基础软件设计的物质基础是计算机硬件,当前的计算机硬件决定了软件设计和实现的出发点,计算机硬件的发展影响着软件体系结构。计算机硬件体系结构分类SISD单指令流单数据流计算机控制处理存储指令数据指令计算机硬件体系结构分类SIMD单指令流多数据流计算机控制处理2存储2指令数据2存储1存储n处理1处理n…………数据1数据n计算机硬件体系结构分类MISD多指令流单数据流计算机控制2处理2存储2指令1存储1存储n处理1处理n…………数据数据控制1控制n指令2指令n指令1指令2指令n……计算机硬件体系结构分类MIMD多指令流多数据流计算机控制2处理2存储2指令1存储1存储n处理1处理n…………控制1控制n指令2指令n指令1指令2指令n……数据2数据1数据n多处理机系统具有共享存储结构的多处理机控制处理MAP控制处理MAP………………存储存储……互连网络通道I/O通道I/O…………多处理机系统具有分布存储结构的多处理机控制处理MAP控制处理MAP………………互连网络I/O存储存储分布计算系统分布计算网络交换机交换机电信网络网络软件的结构基础•结构控制流•部件连接方式•结构化连接模式•基本数据类型•抽象数据类型•进程及运行环境•分时并发计算•资源共享/并行同步•实时系统•软件结构的四视图观软件体系结构的四视图概念视图模块视图代码视图运行视图部件连接器配置模块子系统层模块限制新模块分割部件连接器配置运行限制新模块分割模块变化成运行实体运行实体源代码硬件和操作系统体系结构软件的层次结构模型•计算机网络的体系结构•计算机操作系统的体系结构软件体系结构的层次结构模型第6层:应用层第5层:系统结构模式层层第4层:资源和管理调度层第3层:基础控制描述层第2层:软化的硬件层第1层:计算机硬件层客户机/服务器体系结构应用系统的组成:•显示逻辑部分(表示层):实现与用户交互•应用处理部分(功能层):进行具体运算和数据处理•数据管理部分(数据层):对数据库中数据进行查询、修改、更新等任务应用分层表示层功能层数据层三层明确分割,逻辑上独立瘦客户机和胖客户机客户机“胖”客户机应用处理逻辑显示逻辑服务器数据管理逻辑数据库“瘦”客户机表示显示逻辑数据管理逻辑数据库表示应用处理应用处理逻辑客户机服务器三层C/S的基本硬件结构将三层功能装载到硬件的三种基本方法表示层表示层表示层功能层数据层数据层功能层功能层数据层客户机服务器(1)将数据层和功能层放在一台服务器上(2)将数据层和功能层放在不同服务器上服务器(3)将功能层放在客户机上层次模型的结构关系客户层N层N-1层1使用抽象的最高层抽象的最低层2.软件设计的问题•工具—如何描述软件的总体结构•方法—用什么方法有问题结构导出软件结构•评估准则—什么样的软件结构是“最优的”•公认的、被多次使用的系统结构被称为结构风格、设计模式、(设计)框架。•如果说一门工程技术的成熟表现在其基本设计构件的提出和系统化,那么体系结构的风格、模式、框架就是软件工程中的基本构件。•体系结构概念能否成熟到使软件设计发生根本革命的水平?广泛提及的体系结构风格:管道和过滤器(PipeandFilters)数据抽象或对象(DataAbstractionandObjectOrientted)隐式调用/消息(Event-Based/ImplicitInvocation)层次(LayeredSystem)仓库(Repositories)解释器(Interpreters)过程控制(ProcessControl)分布式系统(DistributedSystem)客户/服务器(Client/Server)主程序/子程序(Main/SubPrograms)状态转换(StateTransition)专用领域(DomainSpecificStyles)对体系结构风格的理解结构风格以结构组织为特性定义了一个软件系统族,表达了部件以及部件之间的关系。体系结构风格通过组件应用的限制及其与构建有关的组成和设计规则来表现组件和组件之间的关系。体系结构风格表示了软件系统的一种特别的基本结构,以及相关的构造方法。体系结构风格应该使一些对软件构成带有整体性、普遍性、一般性的结构和结构关系的方法。在设计中,遵循这些风格的构成原则,对软件的开发和维护十分有益。面向电子商务的应用体系结构图网络平台以有应用系统数据库中间件基础设施J2EE/CORBA/COM+传统中间件操作系统B2B集成平台应用集成平台应用系统工作流o5S(o5)o6S(o6)分布式对象体系结构o1S(o1)o2S(o2)o3S(o3)o4S(o4)•基本系统组件是对象,提供一组服务,对外给出服务的接口•对象之间不存在客户机与服务器的界限,接受服务者扮演客户机角色,提供服务者就是服务器•对象可能分布在网络的多台计算机上,通过中间件相互通信软件总线(中间件)OMG体系结构和服务参考模型公共对象服务与特定非标准化应用系统有关的对象横向工具对象与特定纵向领域有关的对象应用系统接口领域接口CORBA工具接口CORBA对象请求代理(ORB)CORBA服务接口.NET体系通用语言运行时刻环境(CLR)基本类库数据和XMLWeb服务用户接口通用语言运行规范(CLS)VB.NETC++C#Perl……VisualStudio.NET某制造企业的架构用户界面销售公司子系统生产计划部生产设备处采购财务处人事处劳资处专卖处科技处仓库办公室市场部…DDL专用构件库采购管理分析对比财务管理销售管理计划管理汇总执行…文档审计文档批阅特权管理文档转发…MIS通用构件库查询…统计计帐报表计划OA构件库录入…通信维护构件库归档…恢复转储基本构件库ODBC应用数据库运行和维护平台UNIXWindowNTTCP/IPORACLE领域框架示例之一:政府招商引资招商服务相关单位招商引资工商管理财政结算税务管理电子银行……信息发布统计分析咨询服务业务受理业务预审流程定制业务流转…投资咨询网上洽谈投诉受理…政策法规办事流程招商简报…领域框架示例之二:统计局信息输入系统管理统计查询数据收集数据上报统计局综合信息库数据接口基础数据库综合信息库统计局综合管理系统政府信息资源库MIS的构件提取的案例采购半成品库供应商原料库成品库成品顾客原料本成品仓库管理生产车间仓库管理销售成品成品半成品半成品半成品原料原料采购供应商三级商品库仓库管理销售商品顾客二级商品库一级商品库仓库管理仓库管理商品商品商品在不同行业的仓库物流模型寻找共性,进行模式复用采购MIS的构件提取的案例物资库供应商原料库物资物流模型的构件提取仓库管理顾客仓库管理销售物资物资物资物资物资采购和销售的仓库物流模型•在MIS领域中模式复用•可作为MIS通用构件库的高级构件MIS的构件提取的案例再一次模式复用采购物资库供应商原料库物资仓库管理顾客仓库管理销售物资物资物资物资物资供应者输入接受者处理输出所有处理过程的基本IPO(Input,Process,Output)模式•可作为基本构件库的高级构件或标准,来检验所有MIS系统或非MIS系统中处理过程是否全面—包括输入、输出和处理三部分。入库申请商品仓库系统调度模型进库出库申请仓库管理出库仓库入库批准出库批准入库商品出库商品递交申请脱机打印系统管理模型打印申请执行申请打印管理打印机打印任务集递交批准执行批准递交的任务执行的任务生产申请资源的生产消费模式资源生产消费请求资源管理资源消费资源仓库生产批准消费批准生产的资源消费的资源从两个不同领域且不同侧面的模型,抽象出一个模式可把该模式转化为构件类,使用时只要对类实例化,就生成了构件,它对应一种模型酒店管理信息系统功能结构图HMIS收银管理子系统收银管理子系统收银管理子系统客人登记预定登记客房处理历史记录客房查询预定查询餐桌安排菜单作业营业结帐汇总打印各类查询初始设置客帐处理退房处理夜审处理客帐查询报表打印大型零售商场管理信息系统功能结构图TMMIS系统维护POS系统零售实时系统商品进货管理商品批发管理商品库存管理商品及商品帐管理顾客管理连锁店管理财务管理人事工资管理计划统计管理经理查询软件体系结构的设计原理•抽象•封装•信息隐蔽•模块化•注意点分散(SeparationofConcerns)•耦合和内聚•充分性和原始性•策略和实现的分离•接口和实现的分离•分而制之(Divide-and-conquer)•层次化