您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 434-1_软件体系结构设计_软件工程课件
第2章软件过程不方法1第4章软件设计1计算机科学与技术学院软件工程软件工程第四章软件设计乔立民qlm@hit.edu.cn2010年5月16日第2章软件过程不方法2第4章软件设计2主要内容4.1软件设计工程4.1.1软件设计的背景4.1.2设计概念4.1.3设计模型4.2软件体系结构设计4.3用户界面设计4.4设计建模第2章软件过程不方法3第4章软件设计3建筑设计什么是“设计”?机械设计封面设计课程体系设计服装设计业务流程设计平面广告设计汽车设计第2章软件过程不方法4第4章软件设计4设计=天才+创造力每个工程师都希望做设计工作,因为这里有“创造性”——客户需求、业务要求和技术限制都在某个产品或系统中得到集中的体现。“设计”是最充分展现工程师个人价值的工作。第2章软件过程不方法5第4章软件设计5―设计”的本质什么是设计?设计是你身处两个世界——技术世界和人类的目标世界——而你尝试将这两个世界结合在一起。——MitchKapor,《软件设计宣言》第2章软件过程不方法6第4章软件设计6从建筑设计看软件设计“设计良好的建筑应该展示出坚固、适用和令人赏心悦目的特点。”对好的软件设计来说也是如此–适用:软件要符合开发的目标,满足用户需求;–坚固:软件应该不含任何妨碍其功能的缺陷;–赏心悦目:使用软件的体验应该是愉快的。第2章软件过程不方法7第4章软件设计7良好的软件设计的三个特征目标:设计必须是实现所有包含在分析模型中的明确需求、以及客户期望的所有隐含需求;形态:对开发、测试和维护人员来说,设计必须是可读的、可理解的、可操作的指南;内容:设计必须提供软件的全貌,从实现的角度去说明功能、数据、行为等各个方面。第2章软件过程不方法8第4章软件设计8―软件设计”的定义设计:为问题域的外部可见行为的规约增添实际的计算机系统实现所需的细节,包括关于人机交互、任务管理和数据管理的细节。——Coad/Yourdon关于“软件设计”的几个小例子:–需求1:教学秘书需要将学生的综合成绩按高到低进行排序–设计1:voidOrderScores(struct*scores[]){冒泡排序算法,step1;step2;…}–需求2:数据字典“销售订单”–设计2:关系数据表Order(ID,Date,Customer,…),OrderItem(No,PROD,QUANTITY,..)–需求3:边界类“查询满足条件的图书”–设计3:图形化web用户界面第2章软件过程不方法9第4章软件设计9软件设计在SE中所处的位置需求规格说明SRS软件设计设计文档软件需求分析软件编码Whatdoto?Towhatdegree?Howtodo?Howtoreachthedegree?设计:将用户需求准确的转化为软件设计模型不文档的方法第2章软件过程不方法10第4章软件设计10设计的目标:质量协和式飞机戴高乐机场瑞典瓦萨战舰第2章软件过程不方法11第4章软件设计11设计的目标:质量“设计阶段”是软件工程中形成质量的关键阶段,其后所有阶段的活动都要依赖于设计的结果。“编写一段能工作的灵巧的代码是一回事,而设计能支持某个长久业务的东西则完全是另一回事。”第2章软件过程不方法12第4章软件设计12软件质量外部质量:面向最终用户–如易用性、效率、可靠性、正确性、完整性等内部质量:面向软件工程师,技术的角度–如可维护性、灵活性、可重用性、可测试性等第2章软件过程不方法13第4章软件设计13软件设计的方式软件设计的目标是创作出坚固、适用和赏心悦目的模型或设计表示方式:先实现多样化再进行聚合–多样化:找到各种可能的解决方案–聚合:折中选取最适合的多样化和聚合需要直觉和判断力,其质量取决于–构造类似实体的经验–一系列指导模型演化方式的原则和(或)启发–一系列质量评价的标准以及导出最终设计表示的迭代过程软件工程缺少经典工程设计(如建筑)所具有的深度、灵活性和定量性第2章软件过程不方法14第4章软件设计14设计=丌断的作出决策解决“Howtodo”,就需要不断的做出各种“设计决策”,在各类需求之间进行“折中”,使得最终设计性能达到最优。分离客户机的用户界面客户机-服务器瘦客户胖客户用户界面丌独立用Java编程用VB编程用C++编程单机第2章软件过程不方法15第4章软件设计15主要内容4.1软件设计工程4.1.1软件设计的背景4.1.2设计概念4.1.3设计模型4.2软件体系结构设计4.3用户界面设计4.4构件级设计建模第2章软件过程不方法16第4章软件设计16设计概念抽象:强调关键特征,忽略实现细节–过程抽象:具有明确和有限功能的指令序列–数据抽象:描述数据对象的冠名数据集合体系结构:程序构件(模块)的结构、构件交互的形式、构件的数据结构–结构模型:程序构件的一个有组织的集合–框架模型:提高设计的抽象级别–过程模型:注重系统必须提供的业务设计或技术流程设计–功能模型:表示系统的功能层次结构模式:解决某个特定设计问题的设计结构–体系结构模式–设计模式第2章软件过程不方法17第4章软件设计17设计概念:模块化和软件成本模块化:分治策略,将软件划分为独立构件(模块)–合理划分模块数量成本最小区域M成本/模块集成成本软件总成本成本或工作量模块数量第2章软件过程不方法18第4章软件设计18设计概念信息隐藏:每个模块对其他所有模块都隐藏自己的设计决策–软件只通过定义清晰的接口通信–每一个接口尽可能暴露最少的信息–如果内部细节发生变化,外部的受到影响应当最小功能独立:是模块化、抽象概念和信息隐藏的结果–功能专一,避免与其他模块过多交互求精:–逐步求精–分解细化–层次结构第2章软件过程不方法19第4章软件设计19设计概念重构:是一种重新组织的技术,不改变外部行为而是改进内部结构设计类:精化分析类、创建新的设计类–用户接口类:人机交互所必需的抽象–业务域类:分析类的精化–过程类:底层业务抽象–持久类:持续存在的数据存储–系统类:软件管理和控制功能第2章软件过程不方法20第4章软件设计20设计建模原则设计可追溯到分析模型经常关注待建系统的架构数据设计与功能设计同等重要必须设计接口(包括内部接口和外部接口)用户界面设计必须符合最终用户要求功能独立的构件级设计构件之间以及构件与外部环境之间松散耦合设计表述(模型)应该做到尽可能易于理解设计应该迭代式进行。每一次迭代,设计者都应该尽力简化第2章软件过程不方法21第4章软件设计21主要内容4.1软件设计工程4.1.1软件设计的背景4.1.2设计概念4.1.3设计模型4.2软件体系结构设计4.3用户界面设计4.4设计建模第2章软件过程不方法22第4章软件设计22软件设计的元素用户构件+构件(4)构件(3)数据结构(2)人机界面(1)体系结构(2)接口其他软硬件第2章软件过程不方法23第4章软件设计23设计模型的维度分析模型设计模型类图分析包CRC模型协作图数据流图控制流图处理叙述设计类实现子系统协作图精化为:设计类实现子系统协作图用例文本用例图活动图泳道图协作图状态图顺序图技术接口设计导航设计图形用户界面设计类图分析包CRC模型协作图数据流图控制流图处理叙述状态图顺序图构件图设计类活动图顺序图精化为:构件图设计类活动图顺序图Req约束协同能力目标和配置设计类实现子系统协作图构件图设计类活动图顺序图部署低高抽象维度体系结构元素接口元素构件级元素部署级元素过程维度第2章软件过程不方法24第4章软件设计24软件设计的元素体系结构设计:定义了软件的主要结构元素之间的联系,也用于达到系统所定义需求的体系结构风格和设计模式以及影响体系结构实现方式的约束接口设计:描述了软件和协作系统之间、软件和使用人员之间是如何通信的数据/类设计:将分析类模型转化为设计类的实现以及软件实现所要求的数据结构构件级设计:将软件体系结构的结构元素变换为对软件构件的过程性描述第2章软件过程不方法25第4章软件设计25软件体系结构设计选择适合于需求的软件体系结构风格;基于功能层次结构建立系统:–采用某种设计方法,将系统按功能划分成模块的层次结构–确定每个模块的功能–建立与已确定的软件需求的对应关系–确定模块间的调用关系–确定模块间的接口–评估模块划分的质量模块+模块第2章软件过程不方法26第4章软件设计26接口设计接口是类、构件或其他分类(包括子系统)的外部可见的(公共的)操作说明,而没有内部结构的规格说明–用户界面(UI)–与其他系统、硬件的外部接口–各种构件之间的内部接口用户人机界面通讯接口其他软硬件Lee,JangwooLee,MinkyuLim,Heejin构件间接口第2章软件过程不方法27第4章软件设计27构件级设计构件是面向软件体系架构的可复用软件模块完整地描述了每个软件构件的内部细节–为本地数据对象定义数据结构,为构件内的处理定义算法细节–定义允许访问所有构件操作(行为)的接口Kim,Hyunsoo第2章软件过程不方法28第4章软件设计28数据设计体系结构级数据设计–确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计–确定输入、输出文件的详细的数据结构构件级数据设计–结合算法设计,确定算法所必需的逻辑数据结构及其操作–确定对逻辑数据结构所必需的那些操作的程序模块(软件包)–限制和确定各个数据设计决策的影响范围–确定其详细的数据结构和使用规则–数据的一致性、冗余性设计数据结构和数据库课程详细介绍第2章软件过程不方法29第4章软件设计29软件设计的两大阶段从工程管理的角度看,软件设计包括:–概要设计:将软件需求转化为数据结构和软件的系统结构–详细设计:即构件设计,通过对软件结构表示进行细化,得到软件的详细的数据结构和算法数据设计体系结构设计构件设计接口设计√√√√√概要设计详细设计技术视角管理视角第2章软件过程不方法30第4章软件设计30基于模式的软件设计模式:特定问题的解决方案体系结构模式:定义软件的整体结构,体现了子系统和软件构件之间的关系,并定义了说明体系结构元素(类、包、构件、子系统)之间关系的规则设计模式:这些模式解决设计中特有的元素,例如解决某些设计问题中的构件聚集、构件间的联系或影响构件到构件之间通信的机制框架:已实现的特定的骨架基础设施,提供了基础功能,并规定了构件及构件的连接方式。开发者只需要将注意力集中于业务逻辑的实现第2章软件过程不方法31第4章软件设计31主要内容4.1软件设计工程4.2软件体系结构设计4.2.1软件体系结构的背景与定义4.2.2软件体系结构的基本概念4.2.3软件体系结构风格4.2.4体系结构设计4.3用户界面设计4.4构件级设计建模第2章软件过程不方法32第4章软件设计32起源于建筑学的“体系结构”“体系结构(Architecture)”一词起源于建筑学–如何使用基本的建筑模块构造一座完整的建筑?包含两个因素:–基本的建筑模块:砖、瓦、灰、沙、石、预制梁、柱、屋面板…–建筑模块之间的粘接关系:如何把这些“砖、瓦、灰、沙、石、预制梁、柱、屋面板”有机的组合起来形成整体建筑?第2章软件过程不方法33第4章软件设计33计算机硬件系统的“体系结构”计算机体系结构是程序员所看到的计算机的属性,即概念性结构与功能特性如何将设备组装起来形成完整的计算机硬件系统?包含两个因素:–基本的硬件模块:控制器、运算器、内存储器、外存储器、输入设备、输出设备…–硬件模块之间的连接关系:总线计算机体系结构的风格:–以存储程序原理为基础的冯·诺依曼结构–存储系统的层次结构–并行处理机结构–……第2章软件过程不方法34第4章软件设计341.软件体系结构:软件构建的方式软件构建单位单位组织方法合作依赖包含、继承调用、使用控制逻辑序列机器码语言逻辑单位数据构件/模块子系统函数类、对象第2章软件过程不方法35第4章软件设计35软件体系结构的例子第2章软件过程不方法36第4章软件设计36软件体系结构的例子第2章软件过程不方法37第4章
本文标题:434-1_软件体系结构设计_软件工程课件
链接地址:https://www.777doc.com/doc-6310600 .html