资源预览内容
第1页 / 共91页
第2页 / 共91页
第3页 / 共91页
第4页 / 共91页
第5页 / 共91页
第6页 / 共91页
第7页 / 共91页
第8页 / 共91页
第9页 / 共91页
第10页 / 共91页
亲,该文档总共91页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,Sofeware Engineering,软 件 设 计,2,结构就如同人的骨架。 模块就如同人的器官,具有特定的功能。数据结构与算法就如同人的血脉和神经,分布在体系结构和模块中,将协调系统的各个功能。用户界面就如同人的外表。象人类追求心灵美和外表美那样,软件系统也追求(内在的)功能强大和(外表的)界面友好。在进行系统设计时,要深情地关注软件的质量因素.,3,5.1 软件设计概述5.2 软件体系结构介绍5.3 结构化设计的基础模块化5.4 结构化的设计方法5.5 数据的设计5.6 界面设计5.7 软件详细(过程)设计5.8 设计中的几个问题目的:解决“怎么做”的问题,内 容,4,5.1 软件设计概述,软件设计的含义软件设计与分析关系软件设计的主要内容软件设计的原则,汽车设计,5.1.1 什么是“设计”?,机械设计,封面设计,课程体系设计,服装设计,业务流程设计,平面广告设计,设计的目标:质量,协和式飞机,戴高乐机场,瑞典瓦萨战舰,由于协和式飞机设计于1960年代,所使用的技术只能代表60年代的技术水平,所以存在着两个重大的缺陷:一个是经济性差。协和式飞机一次可满载95.6 吨的燃油,可每小时却要消耗掉20.5吨,耗油率较高。最大油量航程7000多公里,最大载重航程5000公里,由于协和式飞机航程较短,也就是说它只能 勉强横跨大西洋飞行,而不能横跨太平洋飞行,这就限制了它的使用范围。协和式飞机标准客座为100,最大客座为140,载客量偏小,运营成本较高。从而降 低了它的经济性。二是起落时噪音太大,致使世界上绝大部分国家都不让它起落;而且由于超音速飞行产生的音爆,被限制不得在大陆上空进行超音速飞行。,瑞典的瓦萨战舰,时间:1620年代 背景:瑞典 vs. 波兰交战 用户:瑞典国王 需求:建造一艘巨型战舰,长70m,载员300人,两层甲板、64门重炮,以尽快结束战争。此前从未有人设计过如此复杂的战舰,荷兰设计师Henrik Hybertsson穷尽毕生精力,设计完成,并建造下水。 大结局:1628年8月10日,Vasa战舰下水,在鸣放了几响礼炮之后,很快沉入水中。,瓦萨战舰的教训,合理切合实际的系统结构是保证系统成功运行的首要因素。虽然Vasa战舰制造工艺精良,但船体比例严重失调,体系结构存在致命缺陷; 设计师在无前人设计经验的基础上,既要执行国王的“功能性”需求,又要考虑“性能”要求(如安全性、可靠性、造价等)。面对诸多相互冲突的约束条件,做出了错误的权衡,对一些不可能实现的要求作了妥协。,从建筑设计看软件设计,“设计良好的建筑应该展示出坚固、适用和令人赏心悦目的特点。” 对好的软件设计来说也是如此 坚固:软件应该不含任何妨碍其功能的缺陷; 适用:软件要符合开发的目标,满足用户需求; 赏心悦目:使用软件的体验应该是愉快的。,建筑设计,设计=天才+创造力,每个工程师都希望做设计工作,因为这里有“创造性”客户需求、业务要求和技术限制都在某个产品或系统中得到集中的体现。 “设计”是最充分展现工程师个人水平的工作。,为问题域的外部可见行为的规约增添实际的计算机系统实现所需的细节,包括关于人机交互、任务管理和数据管理的细节。 Coad/Yourdon,“设计”的本质,设计是你身处两个世界,技术世界和人类的目标世界,而你尝试将这两个世界结合在一起。 Mitch Kapor, 软件设计宣言,“设计阶段”是软件工程中形成质量的关键阶段,其后所有阶段的活动都要依赖于设计的结果。“编写一段能工作的灵巧的代码是一回事,而设计能支持某个长久业务的东西则完全是另一回事。” C. Ferguso,结构化的设计,需求规格说明 SRS,设计文档,What do to?,How to do?,软件需求 分析,软件设计,软件编码,图 5-1 软件设计在SE中所处的位置,把软件需求规格说明转为软件过程性的表示。解决“怎么做”的问题。,设计=不断的作出决策,解决“How to do”,就需要不断的做出各种“设计决策” ,在各类需求之间进行“折中”,使得最终设计性能达到最优。,图 5-2 软件设计的决策,良好的设计的三个特征,设计必须是实现所有包含在分析模型中的明确需求、以及客户期望的所有隐含需求;,设计必须提供软件的全貌,从实现的角度去说明功能、数据、行为等各个方面。,对开发、测试和维护人员来说,设计必须是可读的、可理解的、可操作的指南;,5.1.2 将分析模型转换为设计模型,数,据,流,图,实,体,关,系,图,状态转换图,加,工,控,制,规,规,格,格,说,说,明,明,数,据,对,象,描,述,数据 字典,图 5-3 分析模型转换为设计模型,从工程管理的角度看,软件设计包括: 概要设计: 详细设计:,5.1.3 软件设计的主要内容,从技术的角度看,软件设计包括: 体系结构设计 数据结设计 接口设计 算法设计,概要设计,详细设计,数据设计,体系结构设计,过程设计,接口设计,图 54 软件设计的内容,17,5.1.4 软件设计的原则(Davis 1995):,(1) 使用基本的设计概念:抽象、逐步求精、自顶向下、模块化等.,(2) 设计应追朔到分析模型,(4) 软件设计应尽量模拟问题域的结构,(3) 注重复用技术,(5) 设计应具有一致性、集成性,(7) 设计不是编码,(6) 设计应便于修改,适用于异常条件,(8) 注重评审,18,5.1 软件设计概述5.2 软件体系结构介绍5.3 结构化设计的基础模块化5.4 结构化的设计方法5.5 数据的设计5.6 人机交互设计5.7 软件详细(过程)设计5.8 设计中的几个问题,内 容,5.2 软件体系结构简介,5.2.1 什么是软件体系结构,5.2.2 为什么要提出“软件体系结构”,5.2.3 体系结构风格,20,杨叔子院子曾这样指点其弟子: 文学中有科学,音乐中有数学,漫画中有现代数学的拓扑学。漫画家可以“几笔”就把一个人画出来,不管怎么美化或丑化,就是活像。为什么?,5.2 软件体系结构简介,软件体系结构是软件系统中最本质的东西,因为那“几笔”不是别的,而是拓扑学中的特征不变量,这是事物最本质的东西。,21,体系结构是对复杂事物的一种抽象。良好的体系结构是普遍适用的,它可以高效地处理多种多样的个体需求。,体系结构在一定的时间内保持稳定。只有在稳定的环境下,人们才能干点事情。对需求变化,只做些皮皮毛毛的修改.,本节将论述两种非常通用的软件体系结构:层次结构和客户机/服务器(Client/Server)结构。,“体系结构”一词起源于建筑学 如何使用基本的建筑模块构造一座完整的建筑? 包含两个因素: 基本的建筑模块:砖、瓦、灰、沙、石、预制梁、柱、屋面板 建筑模块之间的粘接关系:如何把这些“砖、瓦、灰、沙、石、预制梁、柱、屋面板”有机的组合起来形成整体建筑?,5.2.1 什么是“体系结构” (Architecture),汽车发动机结构图,主板,CPU,内存,声卡,显卡,电源,硬盘,光驱,硬盘线,光驱线,主机内部结构,硬盘内部结构,1) 计算机硬件系统的“体系结构”,如何将设备组装起来形成完整的计算机硬件系统?,计算机体系结构的风格: 以存储程序原理为基础的冯诺依曼结构 存储系统的层次结构 并行处理机结构 ,包含两个因素: 基本的硬件模块:控制器、运算器、内存储器、外存储器、输入设备、输出设备 硬件模块之间的连接关系:总线,“体系结构”的共性,共性: 一组基本的构成要素构件 这些要素之间的连接关系连接件 这些要素连接之后形成的拓扑结构物理分布 作用于这些要素或连接关系上的限制条件约束 质量性能,软件的架构与模式之经典架构,Layers(层次)架构模式 Faade(门面)架构模式 Mediator(调停者)架构模式,Layers架构模式,横向划分将系统按照商业目的划分。比如一个书店的管理系统可以划分成为进货、销售、库存管理、员工管理等等。 纵向划分则不同,它按照抽象层次的高低,将系统划分成“层“,或叫Layer。比如一个公司的内网管理系统通常可以划分成为下面的几个Layer:,Layers架构模式,Layers架构模式的好处是: 第一、任何一层的变化都可以很好地局限于这一层,而不会影响到其他各层。 第二、更容易容纳新的技术和变化。Layers架构模式容许任何一层变更所使用的技术,Facade架构模式,Facade架构模式,就如同医院的接待员一样, Facade模式的门面类型将使用端与子系统的内部复杂性分隔开, 使得使用端只需要与门面对象打交道, 而不需要与子系统内部的很多对象打交道。,Mediator架构模式,这是一个过度耦合的系统,Mediator架构模式,使用了Mediator架构模式之后的结构图,Mediator架构模式,在Mediator模式中,所有的成员对象都可以协调工作,但是又不直接相互管理。 这些对象都与一个处于中心地位的调停者对象发生紧密的关系,由这个调 停者对象进行协调工作。 这个协调者对象叫做调停者(Mediator),而调停者所协调的成员对象称做同事(Colleague)对象。,Mediator架构模式,在Colleague 对象内部发生的事件会影响到所有的同事,但是这种影响不是以直接管理的方式直接传到其它的对象上的。 记住在小组的成员增加时,这样的相互作用关系是以比指数更快的方式增加的。 相反,这种影响仅仅直接影响到调停者对象,而调停者对象反过来会协调其它的同事,形成整个系统的行为。 如果小组的成员增加时,调停者对象可能会面临修改,而其它的同事则可以装做不知道这个新的成员一样,不必修改。 反过来,如果小组的成员之一被从系统中删除的话,调停者对象需要对此做出修改,而小组中其它的同事则不必改动。,2) “软件体系结构”(Software Architecture),提供了对软件系统的结构、行为和属性的抽象。反映系统开发中具有重要影响的设计决策,便于各种人员的交流,据此开发的系统能完成系统既定的功能和性能需求。,从宏观层次来考虑组成系统的构件、构件之间的连接,以及由构件与构件交互形成的拓扑结构 这些要素应该满足一定的限制,遵循一定的设计规则。 体系结构 = 构件 + 连接件 + 约束 Architecture = Components + Connectors + Constrains,(1) 构件(Component),构件是具有某种功能的可复用的软件结构单元,表示了系统中主要的计算元素和数据存储。,任何在系统运行中承担一定功能、发挥一定作用的软件体都可看作是构件。,程序函数、模块 对象、类 文件 相关功能的集合 .,(2) 接口(Interface),构件作为一个封装的实体,只能通过其接口与外部环境交互; 芯片的管脚 内部结构则被隐藏起来(Black-box); 一个构件至少有一个接口, 一个构件可以提供多重接口: 接不同的管脚,实现不同的功能。 构件接口与构件实现严格分开.,(3) 服务(Service),构件被看作一个“黑盒”(Black Box),其内部具体的实现机制被封装和隐藏起来。 构件的功能以服务(Service)的形式体现出来,并通过接口向外发布,进而产生与其它构件之间的关联。,(4) 连接件(Connector),连接件(Connector):表示构件之间的交互并实现构件之间的连接,如: 管道(pipe) 过程调用(procedure call) 事件广播(event broadcast) 客户机-服务器(client-server) 数据库连接(SQL) 连接件也可看作一类特殊的构件,区别在于: 一般构件是软件功能设计和实现的承载体; 连接件是负责完成构件之间信息交换和行为联系的专用构件。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号