第04章 设计工程

上传人:m**** 文档编号:568010348 上传时间:2024-07-23 格式:PPT 页数:67 大小:303.50KB
返回 下载 相关 举报
第04章 设计工程_第1页
第1页 / 共67页
第04章 设计工程_第2页
第2页 / 共67页
第04章 设计工程_第3页
第3页 / 共67页
第04章 设计工程_第4页
第4页 / 共67页
第04章 设计工程_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《第04章 设计工程》由会员分享,可在线阅读,更多相关《第04章 设计工程(67页珍藏版)》请在金锄头文库上搜索。

1、腥饿溶妥途耽腐豌亏筋衔享慷悟耪歼萤邻棋饯浦皋惧周慧著演删陕哪因北第04章 设计工程第04章 设计工程软件工程软件工程软件工程软件工程第4章 设计工程资喘太递墙捍寒吝画泅扰逊莲壮耕封扭术软园媒狙渴蔽择冲画期审粟带邻第04章 设计工程第04章 设计工程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审抵朔糜蔡谷两本摇残幻宜琅忙哄导痹义宽雾澳陷抿坦凭搬袍骚梧都稳嚎进第04章 设计工程第04章 设计工程2复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程

2、内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审爵两豫汗明贫衷说铭淌稳造揍侍必赐颊妙押奎粱村囊藤仍站弱氟棕即侩个第04章 设计工程第04章 设计工程3复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计工程概述软件设计工程概述 软件需求分析解决软件需求分析解决“做什么做什么”的问题,软的问题,软件设计过程则解决件设计过程则解决“怎么做怎么做”的问题的问题 软件设计是把软件需求变换成软件表示的软件设计是把软件需求变换成软件表示的过程,它主要

3、包含两个阶段:过程,它主要包含两个阶段:软件体系结构设计阶段和和部件级设计 些云柴康奇疤急妓哎研孰仪坑汛詹戚车郧染喷朵误愉薯简妨浙骸寡耙鞍好第04章 设计工程第04章 设计工程4复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计的任务软件设计的任务 使用一种设计方法,软件分析模型中通过数据、使用一种设计方法,软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息被传功能和行为模型所展示的软件需求的信息被传送给设计阶段,产生数据送给设计阶段,产生数据/类设计、体系结构类设计、体系结构设计、接口设计、部件级设计设计、接口设计、部件级设计 堵卡呼厌末靳秉霓樱

4、莹椎堂嘱订虎威聊逃街粕靶佯窘趾琢绳徊盔盛蠢惕肯第04章 设计工程第04章 设计工程5复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程数据/类设计:将分析:将分析-类模型变换成类类模型变换成类的实现和软件实现所需要的数据结构的实现和软件实现所需要的数据结构 体系结构设计:体系结构设计定义了软:体系结构设计定义了软件的整体结构件的整体结构接口设计:接口设计描述了软件内部、:接口设计描述了软件内部、软件和协作系统之间以及软件同人之间软件和协作系统之间以及软件同人之间如何通信如何通信 部件级设计:部件级设计将软件体系结:部件级设计将软件体系结构的结构性元素变换为对软件部件

5、的过构的结构性元素变换为对软件部件的过程性描述程性描述 玖倪裹骄滤参狂稗瞩厨炬谈瓣泳恋坦戳芒屑埃笨蓬掉澎疤快侍窜筛侍尝曳第04章 设计工程第04章 设计工程6复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程1)数据)数据/类设计类设计 在类和由在类和由CRC中定义的数据对象和关系以及数中定义的数据对象和关系以及数据字典中描述的详细数据内容提供了数据设计据字典中描述的详细数据内容提供了数据设计活动的基础活动的基础数据设计的过程包括以下两步数据设计的过程包括以下两步 :首先,为在需求分析阶段所确定的数据对象选择逻辑表示,需要对不同结构进行算法分析,以便选择一个最有效的

6、设计方案; 然后,确定对逻辑数据结构所必需的那些操作的程序模块,以便限制或确定各个数据设计决策的影响范围。 挽茎君肄缨豫隔但龚箭痒寝格空烧闸禄晨男粒儒肇屁梨丛涪挑理镐醒羌翱第04章 设计工程第04章 设计工程7复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2)体系结构设计)体系结构设计 体系结构设计定义了软件的整体结构,体系结构设计定义了软件的整体结构,它由软件部件、外部可见的属性和它它由软件部件、外部可见的属性和它们之间的关系组成。们之间的关系组成。体系结构设计表示可以从系统规约、体系结构设计表示可以从系统规约、分析模型和分析模型中定义的子系统分析模型和分析模

7、型中定义的子系统的交互导出。的交互导出。 掉趋响擎苫揩住钞赁俩仅恢踊措索量腾吝眯湛治渴募谐舍躇淫锥牵毙遂蹭第04章 设计工程第04章 设计工程8复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程3)接口设计)接口设计 接口设计主要包括三个方面:接口设计主要包括三个方面:设计软件模块间的接口设计模块和其他非人的信息生产者和消费者(比如外部实体)之间的接口设计人(用户)和计算机间的接口 薛滥粕束态雕鸟藏瞒二严妈却蔡率莎肋撬邮沙隘瑰鞋替炙辫骚勇寝瘟境潞第04章 设计工程第04章 设计工程9复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4)部

8、件级设计)部件级设计 部件级设计将软件体系结构的结构性部件级设计将软件体系结构的结构性元素变换为对软件部件的过程性描述。元素变换为对软件部件的过程性描述。从类为基础的模型、流模型、行为模从类为基础的模型、流模型、行为模型中得到的信息是部件设计的基础。型中得到的信息是部件设计的基础。 谬硫黑挞狐粥哄窒美谩框牧隙叶思杨塌侯笋侣危棉创绸斯尧送于陋长屯近第04章 设计工程第04章 设计工程10复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计的目标软件设计的目标 在进行软件设计的过程中,我们要密切关在进行软件设计的过程中,我们要密切关注软件的质量因素。注软件的质量因

9、素。 McGlanghlin 软件设计过程的目标:软件设计过程的目标: 1)设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。2)设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护。3)设计应从实现角度出发,给出与数据、功能、行为相关的软件全貌。诞捉铆休耶孤框怪怠湃令档草矩紊群搜披搁菊恋对敢关乙渔睁沤瓣吼蔚由第04章 设计工程第04章 设计工程11复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程衡量设计的技术标准衡量设计的技术标准 1)设计出来的结构应是分层结构,从而建立设计出来的结构应是分层结构,从而建立软件成份之间的控制。软

10、件成份之间的控制。2)设计应当模块化,从逻辑上将软件划分为设计应当模块化,从逻辑上将软件划分为完成特定功能或子功能的部件。完成特定功能或子功能的部件。3)设计应当既包含数据抽象,也包含过程抽设计应当既包含数据抽象,也包含过程抽象。象。4)设计应当建立具有独立功能特征的模块。设计应当建立具有独立功能特征的模块。5)设计应当建立能够降低模块与外部环境之设计应当建立能够降低模块与外部环境之间复杂连接的接口。间复杂连接的接口。6)设计应能根据软件需求分析获取的信息,设计应能根据软件需求分析获取的信息,建立可驱动、可重复的方法。建立可驱动、可重复的方法。劈蜀交矫升值首籽篱头膨疥椎质囊隙藉案颐褐队贷站缮香

11、痢密余婶荧仅血第04章 设计工程第04章 设计工程12复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计的过程软件设计的过程 1)制定规范制定规范2)体系结构和接口设计体系结构和接口设计3)数据数据/类设计类设计4)部件级(过程)设计部件级(过程)设计5)编写设计文档编写设计文档6)设计评审设计评审风御歧摔陌猖文堰茄薯酬外芽塞卯构恕尾菱窑逼每契院驳捻海扒氨捶典拍第04章 设计工程第04章 设计工程13复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系

12、结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审者碴坷裔疽卉溯枢述榜肩苯窜劲核戊圆德胰谅拔彪凛弗量织浑直设舒嘴流第04章 设计工程第04章 设计工程14复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程抽象化与逐步求精抽象化与逐步求精 抽象,是在软件设计的规模逐渐增,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策大的情况下,控制复杂性的基本策略。略。 抽象的过程是从特殊到一般的过程,抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。概念是上层概念的

13、精化和细化。 软件工程过程的每一步都是对较高软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述一级抽象的解作一次具体化的描述 造荤绒滚授香既跌览院缮班桌犯勤越血黎劝势鬃递菇簇北鸯泻蜗雄胃曼讥第04章 设计工程第04章 设计工程15复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计中主要抽象手段有:软件设计中主要抽象手段有:过程抽象和和数据抽象 过程抽象(也称功能抽象)是指任何一(也称功能抽象)是指任何一个完成明确定义功能的操作都可被使用个完成明确定义功能的操作都可被使用者当作单个实体看待,尽管这个操作实者当作单个实体看待,尽管这个操作实际上是由一系

14、列更低级的操作来完成的际上是由一系列更低级的操作来完成的数据抽象是指定义数据类型和施加于该是指定义数据类型和施加于该类型对象的操作,并限定了对象的取值类型对象的操作,并限定了对象的取值范围,只能通过这些操作修改和观察数范围,只能通过这些操作修改和观察数据据涛掖懊椒搜唬宦菱关溉溪米仅铸狼铡华砧刘轻沿导揍甘乏绑熙黑坠要懒押第04章 设计工程第04章 设计工程16复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程逐步求精逐步求精 逐步求精,把问题的求解过程分解成若干,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接步骤或阶段,每步都比上步更精化,更接近问题的

15、解法近问题的解法抽象使得设计者能够描述过程和数据而忽使得设计者能够描述过程和数据而忽略低层的细节,而略低层的细节,而求精有助于设计者在设有助于设计者在设计过程中揭示低层的细节计过程中揭示低层的细节 腔筒泪沽耙瞥执勤萄下喀古牙伪蓖幌务题注毙修腋涧申矢眶磐右怖僵渊加第04章 设计工程第04章 设计工程17复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模块化模块化 模块化,即把软件按照规定原则,划分为,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联一个个较小的,相互独立的但又相互关联的部件,实际上是系统分解和抽象的过程。的部件,实际上是系统分解和抽象

16、的过程。 模块是数据说明、可执行语句等程序对象是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过的集合,它是单独命名的,并且可以通过名字来访问名字来访问 例如,过程。函数、子程序、宏等 恭连闽柔眉沛俘查她秒才只撞赊所擎娇案裳婚射栏窄涧褐亏且埋串导蝴坝第04章 设计工程第04章 设计工程18复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设设C(x)是描述问题是描述问题x 复杂性的函数,复杂性的函数,E(x)是解决问题是解决问题x 所需工作量所需工作量(按时间计按时间计算算)的函数。对于两个问题的函数。对于两个问题p1 和和p2,如,如果果C(p1

17、)C(p2)那么那么 E(p1)E(p2) 即问题越复杂,解决问题所需要的花费即问题越复杂,解决问题所需要的花费更多。更多。 添框组挡隋堵走撅抑揩凄额耶迪峻倪舔努屯程链桂惊忧辖菱酋祝手帮塑锈第04章 设计工程第04章 设计工程19复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程通过对人解决问题的实验,又存在另一个有趣通过对人解决问题的实验,又存在另一个有趣的规律:的规律:C(p1p2)C(p1)C(p2) (4.2)方程式方程式(4.2)意味着意味着p1 和和p2 组合后的复杂性组合后的复杂性比单独考虑每个问题时的复杂性要大。考虑方比单独考虑每个问题时的复杂性要大

18、。考虑方程式程式(4.2)和方程式和方程式(4.1)隐含的条件,我们可隐含的条件,我们可以得出以得出 E(p1p2) E(p1)E(p2) (4.3)不等式不等式(4.3)表达出了一个对于模块化和软件表达出了一个对于模块化和软件具有十分重要意义的结论(即,模块化的论据)具有十分重要意义的结论(即,模块化的论据):将复杂问题分解成可以管理的片断会更使解:将复杂问题分解成可以管理的片断会更使解决问题更加容易。决问题更加容易。 剐尸斗撑明柿辆络轰苔旗稠友掳赂享恳锐络赫弗皋馆抢锤汽甄等鲤馆硒远第04章 设计工程第04章 设计工程20复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件

19、工程课程如果我们无限制地划分软件,开发它所需如果我们无限制地划分软件,开发它所需的工作量会变得小到可以忽略?!的工作量会变得小到可以忽略?! 事实上,影响软件开发的工作量的因素还事实上,影响软件开发的工作量的因素还有很多,例如模块接口费用等等有很多,例如模块接口费用等等上述不等式只能说明,当模块的总数增加上述不等式只能说明,当模块的总数增加时,单独开发各个子模块的工作量之和会时,单独开发各个子模块的工作量之和会有所减少有所减少 雕征粟佳庐已巧品窄驳隧虞砍邻内虾待哪诉上枝年盂瑶孩誊毅评纸判丰榜第04章 设计工程第04章 设计工程21复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课

20、程软件工程课程如果模块是相互独立的,当模块变得越如果模块是相互独立的,当模块变得越小,每个模块花费的工作量越低;小,每个模块花费的工作量越低;但当模块数增加时,模块间的联系也随但当模块数增加时,模块间的联系也随之增加,把这些模块联接起来的工作量之增加,把这些模块联接起来的工作量也随之增加。也随之增加。 咀口猿殴弥痕吉丸臼较盈狼帘琅诞脊厕谰沟厂绿到柳斌崎靛窖殖伏锋席戳第04章 设计工程第04章 设计工程22复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程信息隐藏信息隐藏 每个模块的实现细节对于其它模块来说应每个模块的实现细节对于其它模块来说应该是隐蔽的该是隐蔽的 块

21、中所包含的信息(包括数据和过程)不块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用允许其它不需要这些信息的模块使用 通过通过信息隐蔽,则可定义和实施对模块的,则可定义和实施对模块的过程细节和局部数据结构的存取限制过程细节和局部数据结构的存取限制 骸妻噬漠竞叭蔼窒狄涯白杂说岛崩痪届笔久腑哈鲸迷阀搬枪芥洁常炙桓搐第04章 设计工程第04章 设计工程23复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模块独立模块独立 模块独立:模块完成独立的功能并且与:模块完成独立的功能并且与其他模块的接口简单,符合信息隐蔽和其他模块的接口简单,符合信息隐蔽和信息局

22、部化原则,模块间关联和依赖程信息局部化原则,模块间关联和依赖程度尽可能小度尽可能小 模块独立的重要性模块独立的重要性功能被划分,并且接口被简化,所以具有有效模块化的软件更易于开发 由于因设计和编码修改引起的副作用受到局限,错误传播被减小,并且模块复用成为可能,所以独立的模块更易于维护和测试 走炒惨甸解耽葛杯抱郝停字旅纠跨隐永酬慢巴祈哲壤赂纂来足机掏吴鹅孔第04章 设计工程第04章 设计工程24复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模块独立模块独立模块的独立性可以由两项指标来衡量:模块的独立性可以由两项指标来衡量:内聚度与与耦合度 内聚(cohesion)

23、是一个模块内部各个元是一个模块内部各个元素彼此结合的紧密程度的度量素彼此结合的紧密程度的度量 耦合(coupling)是模块之间的相对独立性是模块之间的相对独立性(互相连接的紧密程度)的度量(互相连接的紧密程度)的度量 循大秃圣碴续绰撰荧秸捷篆杯猖附肩亮衔缸娩睹荡章衣密效另捍迭掩粪谚第04章 设计工程第04章 设计工程25复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内聚内聚 一般模块的内聚性分为七种类型一般模块的内聚性分为七种类型 氓苗菩跃溶葵秒羔讳呢梅价池椒汪奈排汪要宵滔马兰塘委轿斗憾腕数多棋第04章 设计工程第04章 设计工程26复旦大学计算机科学与工程系

24、复旦大学计算机科学与工程系 软件工程课程软件工程课程内聚内聚1)巧合内聚(偶然内聚):将几个模块中没有:将几个模块中没有明确表现出独立功能的相同程序代码段独立出明确表现出独立功能的相同程序代码段独立出来建立的模块称为巧合内聚模块。来建立的模块称为巧合内聚模块。2)逻辑内聚 :指完成一组逻辑相关任务的模:指完成一组逻辑相关任务的模块,调用该模块时,由传送给模块的控制型参块,调用该模块时,由传送给模块的控制型参数来确定该模块应执行哪一种功能。数来确定该模块应执行哪一种功能。3)时间内聚:指一个模块中的所有人物必须在:指一个模块中的所有人物必须在同一时间段内执行。例如初始化模块和终止模同一时间段内执

25、行。例如初始化模块和终止模块。块。傣廓簿胁找摇衔缝誉沦皮冀敌谍领啸藻萄亿惶疆跑扛凉损幢更定乾终讹铜第04章 设计工程第04章 设计工程27复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内聚内聚4)过程内聚 :指一个模块完成多个任务,这:指一个模块完成多个任务,这些任务必须按指定的过程(些任务必须按指定的过程(procedural)执行。)执行。5)通信内聚 :指一个模块内所有处理元素都:指一个模块内所有处理元素都集中在某个数据结构的一块区域中。集中在某个数据结构的一块区域中。6)顺序内聚:指一个模块完成多个功能,这些:指一个模块完成多个功能,这些功能又必须顺序执

26、行。功能又必须顺序执行。7)功能内聚 :指一个模块中各个部分都是为:指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不完成一项具体功能而协同工作,紧密联系,不可分割的。可分割的。添厂相蘸恕呵冕泽搀钾塑漾欺甄涉幌壳哉赌隆责么惕酋藩眉女俩赚陌捅生第04章 设计工程第04章 设计工程28复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程耦合耦合 一般模块之间可能的耦合方式有七种类型一般模块之间可能的耦合方式有七种类型 剃皑蚊锑澜笋帝弘保朴哈指钻皮揖烘敢明托殿款拥伦彰愉翠醛体需代相歇第04章 设计工程第04章 设计工程29复旦大学计算机科学与工程系复旦大学计

27、算机科学与工程系 软件工程课程软件工程课程耦合耦合1)内容耦合 :如果一个模块直接访问另一个模块的内部数:如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过正常入口转到另一模块内部;据;或者一个模块不通过正常入口转到另一模块内部;或者两个模块有一部分程序代码重迭;或者一个模块有或者两个模块有一部分程序代码重迭;或者一个模块有多个入口,则两个模块之间就发生了内容耦合。多个入口,则两个模块之间就发生了内容耦合。2)公共耦合 :若一组模块都访问同一个公共数据环境,则:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以它们之间的耦合就称为公共耦合。公共的数

28、据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。是全局数据结构、共享的通信区、内存的公共覆盖区等。3)外部耦合 :指模块间通过软件之外的环境联结(如:指模块间通过软件之外的环境联结(如I/O将模块耦合到特定的设备、格式、通信协议上)时,称将模块耦合到特定的设备、格式、通信协议上)时,称为外部耦合。为外部耦合。铲哨蠢灿渝度存吓哟动酚船虚待啦便瓣堆湛乖首恤栈颧奏藏霓匝岩下恭点第04章 设计工程第04章 设计工程30复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程耦合耦合4)控制耦合:如果一个模块传送给另一个模块:如果一个模块传送给另一个模块的参数中包含了控

29、制信息,该控制信息用于控的参数中包含了控制信息,该控制信息用于控制接收模块中的执行逻辑,则称为控制耦合。制接收模块中的执行逻辑,则称为控制耦合。5)标记耦合:两个模块之间通过参数表传递一:两个模块之间通过参数表传递一个数据结构的一部分(如某一数据结构的子结个数据结构的一部分(如某一数据结构的子结构),就是标记耦合。构),就是标记耦合。6)数据耦合:两个模块之间仅通过参数表传递:两个模块之间仅通过参数表传递简单数据,则称为数据耦合。简单数据,则称为数据耦合。7)非直接耦合 :如果两个模块之间没有直接:如果两个模块之间没有直接关系,即它们中的任何一个都不依赖于另一个关系,即它们中的任何一个都不依赖

30、于另一个而能独立工作,这种耦合称为非直接耦合。而能独立工作,这种耦合称为非直接耦合。耸揽枪抡众泌潭吩钉搬词仿虞巳鹏钾莲废壹勉貉甚都匈礁烦菜枪功柳扦哀第04章 设计工程第04章 设计工程31复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模块之间的连接越紧密,联系越多,耦模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱合性就越高,而其模块独立性就越弱 一个模块内部各个元素之间的联系越紧一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高密,则它的内聚性就越高 模块独立性比较强的模块应是模块独立性比较强的模块应是高内聚低耦合的模块的模块 货顿贬蓑

31、偶临屑坟雪不谁毗镍红阎档谜群创妻评疏剥龙玉澄宙堪颈倡馏包第04章 设计工程第04章 设计工程32复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审瓮涛慕蟹逻茵谭彝辆蛆泌默跟酮吴警箔秉凿漠逆僳宅屡猿歼晃怜召褐沏描第04章 设计工程第04章 设计工程33复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件体系结构设计软件体系结构设计 软件体系结构关注系统的一个或多个结构,

32、软件体系结构关注系统的一个或多个结构,包含软件构件、这些构件的对外可见的性包含软件构件、这些构件的对外可见的性质以及它们之间的关系质以及它们之间的关系 Bass提出体系结构重要的三个关键理由:提出体系结构重要的三个关键理由:方便利益相关人员的交流 有利于系统设计的前期决策 可传递的系统级抽象 兜锤琐论湃搪瞄仔媒政罗鸿匪赠邓糕监入映蝴刻钟埃素吩拳闸难至卜把猫第04章 设计工程第04章 设计工程34复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程体系结构发展过程体系结构发展过程 常见的软件体系结构常见的软件体系结构单主机结构单主机结构C/S(Client/Server

33、)结构)结构B/S(Browser/Server)结构)结构 涪彪恫杉丙取算童尉妥穴徒订岩担烛拄健尊立钥除佬懈撒箩西宫烘颧粳盯第04章 设计工程第04章 设计工程35复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件体系结构的风格软件体系结构的风格 绝大多数可以被归类为相对小数量的体绝大多数可以被归类为相对小数量的体系结构风格之一系结构风格之一 每种风格描述一种系统范畴,范畴包括:每种风格描述一种系统范畴,范畴包括:一些实现系统所需的功能的部件(如数据库、计算模块);一组用来连接部件“通信、协调和合作”的“连接子”;定义部件之间怎样整合的系统约束;使设计者能够理

34、解整个系统属性并分析已知属性的语义模型。 版膘垮敷渔市卒余鹤缘坪肠纱头郝赎定总垄殷唾悉规敌寅详跟洛牲侗佐纫第04章 设计工程第04章 设计工程36复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程数据为中心体系结构数据为中心体系结构 一些数据(比如一个文件或者数据库)保一些数据(比如一个文件或者数据库)保存在整个结构的中心,并且被其他部件频存在整个结构的中心,并且被其他部件频繁地使用、添加、删除、或者修改繁地使用、添加、删除、或者修改 臭仅系腹踏名忙婿卜烤企堑晒毕雁与赘致慷洼陀嘲孪棺豆寸平殖棘谎枫俐第04章 设计工程第04章 设计工程37复旦大学计算机科学与工程系复

35、旦大学计算机科学与工程系 软件工程课程软件工程课程数据流风格的体系结构数据流风格的体系结构 这种结构适用于输入数据被一系列的计算这种结构适用于输入数据被一系列的计算或者处理部件变换成输出数据。或者处理部件变换成输出数据。滇状刺娘溺疲腥苇八截钱贯昏焙沾陇胆标模裸凸轨往眶井逆款俐良粤婪咏第04章 设计工程第04章 设计工程38复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程调用和返回风格的体系结构调用和返回风格的体系结构 这种风格使一个软件设计者设计出非常容这种风格使一个软件设计者设计出非常容易修改和扩充的体系结构。易修改和扩充的体系结构。包含:包含:主程序/子程序风

36、格体系结构和和远程过程调用风格的体系结构 灰藻奎三棕牙允致警造啼式耍蕉船谎岿牡编呐乓午爪楚秸追僵茸邑甭膳茵第04章 设计工程第04章 设计工程39复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程在这里要了解几个概念:在这里要了解几个概念:程序结构的深度程序结构的深度:程序结构的层次数称为结构的深度。结构的深度在一定意义上反映了程序结构的规模和复杂程度。程序结构的宽度程序结构的宽度:层次结构中同一层模块的最大模块个数称为结构的宽度。模块的扇入和扇出模块的扇入和扇出:扇出表示一个模块直接调用(或控制)的其它模块数目。扇入则定义为调用(或控制)一个给定模块的模块个数。多

37、扇出意味着需要控制和协调许多下属模块。而多扇入的模块通常是公用模块。娇蛀真坚恃罕嘱节樟诱丹坊谨臼僧苇述擂喘操菇软腥声荷兰木探掂散矿惭第04章 设计工程第04章 设计工程40复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程面向对象风格的体系结构面向对象风格的体系结构 系统部件封装数据和操作数据的系统部件封装数据和操作数据的方法。方法。部件之间的交互和协调通过消息部件之间的交互和协调通过消息来传递。来传递。 苇膜绵撵换斤撩脉磺烦趟闪脯纳氓噶供册载仑遮岸最谊镐厅舔辖谋涯锭挤第04章 设计工程第04章 设计工程41复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件

38、工程课程软件工程课程层次式风格的体系结构层次式风格的体系结构 在这种结构中,定义不同的层次,每层都在这种结构中,定义不同的层次,每层都完成了相对外层更靠近机器指令的操作完成了相对外层更靠近机器指令的操作颤抢缄扳重邯燎纠哄龟几赡荤蜂唯礼奸丁阂氯挞艾轻要邢词岩灶降闭燃阵第04章 设计工程第04章 设计工程42复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程评估可选的体系结构评估可选的体系结构 对于同一个软件需求,由于各种设计方法对于同一个软件需求,由于各种设计方法的原理不同,会导出不同的软件结构。的原理不同,会导出不同的软件结构。 同一问题的不同软件结构:同一问题的不

39、同软件结构:肚相孤蹭红步挂馅莹院铸瓣牙师悯腥钞殖硬姨疗叮纶庆辽艘窟圆俊仰刷姑第04章 设计工程第04章 设计工程43复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程在进行软件体系结构设计时,可以参考如下规在进行软件体系结构设计时,可以参考如下规则:则: (1) 改进软件结构提高模块独立性(2)模块适当的深度、宽度、扇出和扇入(3)模块判断作用范围应在其控制作用范围内(4)力争降低模块接口的复杂度(5)设计单入口单出口的模块(6)模块功能应该是可以预测的模块大小适中(7)一般一个模块包含的语句在3050条左右较好。(8)一个设计好的软件结构,通常顶层扇出比较高,中层

40、扇出比较少,底层有高扇入。综辅曝题甘颜玄椒万圈辜比硅恤菌锨俄膘垦桂厅贱新颗素俄勘碘入鸯项胶第04章 设计工程第04章 设计工程44复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审汇现阁配鲜伶怎珐昧刚裤又蓑熬龙旗瑚椒锦叮寿绎测攻涟车镊孔训恿叶猴第04章 设计工程第04章 设计工程45复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程部件级设计技术部件级设计技术 在结构化

41、分析和设计方法时部件往往被称在结构化分析和设计方法时部件往往被称为为模块在面向对象分析和设计时部件被称为类,在面向对象分析和设计时部件被称为类,在基于构件的开发方法中,部件被称为在基于构件的开发方法中,部件被称为构件。 噬傀找讯申礁专闰咳歌宵剥肆汾噬掺桑慌峙涟硒汾阳逃伏撩勺绵琅假蕉拼第04章 设计工程第04章 设计工程46复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程部件级设计技术部件级设计技术 在部件级设计阶段,主要完成如下工作:在部件级设计阶段,主要完成如下工作:(1)为每个部件确定采用的算法,选择某种适当的工具表达算法的过程,编写部件的详细过程性描述; (

42、2)确定每一部件内部使用的数据结构; (3)在部件级设计结束时,应该把上述结果写入部件级设计说明书,并且通过复审形成正式文档,作为下一阶段(编码阶段)的工作依据。 烫塞隙誉证榜锨蛾奢棱扳亥袍肿拆幸魁用烘嘻成控擒印敢肘序福刚涟壕袁第04章 设计工程第04章 设计工程47复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程结构化程序设计方法结构化程序设计方法 一种较为流行的定义是:一种较为流行的定义是:“如果一个程序如果一个程序的代码块仅仅通过顺序、选择和循环这三的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连结,并且每个代码种基本控制结构进行连结,并且每个代码块

43、只有一个入口和一个出口,则称这个程块只有一个入口和一个出口,则称这个程序是结构化的序是结构化的”。 随着面向对象和软件复用等新的软件开发随着面向对象和软件复用等新的软件开发方法和技术的发展,更现实、更有效的开方法和技术的发展,更现实、更有效的开发途径可能是自顶向下和自底向上两种方发途径可能是自顶向下和自底向上两种方法有机的结合。法有机的结合。 竿庙撵孽犹戎秽悯忘居蝇托向朵钾惕暮惊定们唉辛管鸵骋粱峙躬望鞭伸羌第04章 设计工程第04章 设计工程48复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程图形表示法图形表示法 程序流程图 N-S图 PAD 务玻济洼铭念寂寒弟呻

44、度鞋惫境诧蔚卵桥柒镐想小仪下挑摹峨道缠抓坝禽第04章 设计工程第04章 设计工程49复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程程序流程图程序流程图 程序流程图独立于任何一种程序设计语言,程序流程图独立于任何一种程序设计语言,比较直观、清晰、易于学习掌握比较直观、清晰、易于学习掌握 为使用流程图描述结构化程序,必须限制为使用流程图描述结构化程序,必须限制流程图只能使用五种基本控制结构流程图只能使用五种基本控制结构 方倦序剖丽懊褥痕漫冒借贬扛捷瘫朔矾阎病骑姬枪详谈四洽踩记亨涝砒头第04章 设计工程第04章 设计工程50复旦大学计算机科学与工程系复旦大学计算机科学

45、与工程系 软件工程课程软件工程课程控制结构相互组合和嵌套的实例控制结构相互组合和嵌套的实例 歌短邹铺赁腋峨淤农挚轻烽亚寂恰荒矫保确糊蝎桥僻禾享笆智捎婆芍勘由第04章 设计工程第04章 设计工程51复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程N-S图图 Nassi和和Shneiderman 提出了一种符合结提出了一种符合结构化程序设计原则的图形描述工具,叫做构化程序设计原则的图形描述工具,叫做盒图,也叫做盒图,也叫做N-S图图 五种基本控制结构五种基本控制结构 疚造万谆悬梦挫搁恶汝醉厉托碌茹容巩暴端眺袖绳辕凌夫酪譬列昌卜篱双第04章 设计工程第04章 设计工程5

46、2复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程控制结构相互组合和嵌套的实例控制结构相互组合和嵌套的实例抉胡维茹滇趾骨白斥辩缉钞桃鞍客磨毖搔油爪衡矿当晦滋躲网谢潍垢词歼第04章 设计工程第04章 设计工程53复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程PAD PAD是是Problem Analysis Diagram的缩的缩写写 ,由程序流程图演化而来,由程序流程图演化而来五种基本控制结构五种基本控制结构 扶广嚣速厅觅坛坝孤肤柬极塘魂规朱夸潭罩窑姓卒链侵淬版荷久乾兹术钧第04章 设计工程第04章 设计工程54复旦大学计算机科学与

47、工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程PAD实例实例 扳过藐青茂崇姓市武搜偷霹纠深粕亏筏玩渍晨纯邯沮牛廖戍格鸽祷莎甸处第04章 设计工程第04章 设计工程55复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程判定表判定表 当算法中包含多重嵌套的条件选择时,用当算法中包含多重嵌套的条件选择时,用程序流程图、程序流程图、N-S图或图或PAD都不易清楚地都不易清楚地描述。描述。然而,然而,判定表却能清晰地表达复杂的条件却能清晰地表达复杂的条件组合与应做动作之间的对应关系。组合与应做动作之间的对应关系。图图4-11的例子的例子 ,把多分支判断改为两分,把

48、多分支判断改为两分支判断支判断 席脐续疟陕咳质擎羡卡问汤宣氢主妨赋酱查秆窒获码雁唆狙浚剂炼竹斤镐第04章 设计工程第04章 设计工程56复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程不包含多分支结构的流程图实例不包含多分支结构的流程图实例 鼎搁磁耍礼倒雕尧掉拽七植育晤下帆蛔似钎蔷噶从鹰肛菌淌旬缎储蝇沈甫第04章 设计工程第04章 设计工程57复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程反映程序逻辑的判定表反映程序逻辑的判定表 盛种锻哩会掖魄伙席吗社涵辣恢锻肆处殷耻留泡弹畸肘庭酵磕厉惋二恶灶第04章 设计工程第04章 设计工程58

49、复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程判定表的优点是能够简洁,无二义性地判定表的优点是能够简洁,无二义性地描述所有的处理规则。描述所有的处理规则。但判定表表示的是静态逻辑,是在某种但判定表表示的是静态逻辑,是在某种条件取值组合情况下可能的结果,它不条件取值组合情况下可能的结果,它不能表达加工的顺序,也不能表达循环结能表达加工的顺序,也不能表达循环结构构 耙诚湃萎妥件谦沂岗勋荡真声捣蒙锑炭剁姨稻怀晚采杰奏险办穗橇屹谎式第04章 设计工程第04章 设计工程59复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计性语言设计性语言P

50、DL PDL(Program Design Language)是一是一种用于描述功能部件的算法设计和处理种用于描述功能部件的算法设计和处理细节的语言,称为细节的语言,称为设计性语言。 它是一种伪码。一般地,伪码的语法规它是一种伪码。一般地,伪码的语法规则分为则分为“外语法外语法”和和“内语法内语法” 外语法应当符合一般程序设计语言常用语句的语法规则;内语法可以用英语中一些简单的句子、短语和通用的数学符号,来描述程序应执行的功能 逸夯知畦掠续颅顺刃鸿石树嚷兑窃标纳秩顶黍耽次族妓枢祖滚摄桌寿榨恩第04章 设计工程第04章 设计工程60复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课

51、程软件工程课程PDL的使用实例的使用实例PROCEDURE spellcheck IS 查找错拼的单词查找错拼的单词 BEGIN split document into single words 把整个文档分离成单词把整个文档分离成单词 lood up words in dictionary 在字典中查这些单词在字典中查这些单词 display words which are not in dictionary 显示字典中查不到的单显示字典中查不到的单词词 create a new dictionary 造一新字典造一新字典 END spellcheck膜坤饭敝哑溶脖振卞吟品炮细另咖摘巡柞净呵

52、扇逐虎薯漓拼犯竟碾壶训疯第04章 设计工程第04章 设计工程61复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程PDL特点特点1.有固定的关键字外语法,提供全部结构化控制结构、数有固定的关键字外语法,提供全部结构化控制结构、数据说明和部件特征。属于外语法的关键字是有限的词汇据说明和部件特征。属于外语法的关键字是有限的词汇集,它们能对集,它们能对PDL正文进行结构分割,使之变得易于理正文进行结构分割,使之变得易于理解。为了区别关键字,规定关键字一律大写,其它单词解。为了区别关键字,规定关键字一律大写,其它单词一律小写。一律小写。2.内语法使用自然语言来描述处理特性。

53、内语法比较灵活,内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。主要精力放在描述算法的逻辑上。3.有数据说明机制,包括简单的(如标量和数组)与复杂有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。的(如链表和层次结构)的数据结构。4.有子程序定义与调用机制,用以表达各种方式的接口说有子程序定义与调用机制,用以表达各种方式的接口说明。明。滦向俘瞄滤划会奸勤控逆再唁琳袄巧钩侩闺仁缄玩值诸梦降胸逛遣蔽砒同第04章 设计工程第04章 设计工程6

54、2复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审役谩迄呜繁噪绚宁牲踊伊焕喷垃邦度剑稚付梦老笨柏碗挑腆烬盅籍马跑坡第04章 设计工程第04章 设计工程63复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计评审设计评审 软件设计的最终目标是要取得最佳方软件设计的最终目标是要取得最佳方案案 “最佳最佳”是指在所有候选方案中,就是指在所有候选方案中,就节省开发费用,降低

55、资源消耗,缩短节省开发费用,降低资源消耗,缩短开发时间的条件,选择能够赢得较高开发时间的条件,选择能够赢得较高的生产率、较高的可靠性和可维护性的生产率、较高的可靠性和可维护性的方案的方案 茵冤灰烹柞诲装哨哇秤琢容诌伐苇阅臂椰俭柠赵蛤夹腿迫亡掖敌构弟较瘪第04章 设计工程第04章 设计工程64复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计评审的内容设计评审的内容 1可追溯性:即分析该软件的系统结构、子系统结构,:即分析该软件的系统结构、子系统结构,确认该软件设计是否覆盖了所有已确定的软件需求,软确认该软件设计是否覆盖了所有已确定的软件需求,软件每一成分是否可追

56、溯到某一项需求。件每一成分是否可追溯到某一项需求。 2接口:即分析软件各部分之间的联系,确认该软件:即分析软件各部分之间的联系,确认该软件的内部接口与外部接口是否已经明确定义。部件是否满的内部接口与外部接口是否已经明确定义。部件是否满足高内聚和低耦合的要求。部件作用范围是否在其控制足高内聚和低耦合的要求。部件作用范围是否在其控制范围之内。范围之内。3风险:即确认该软件设计在现有技术条件下和预算:即确认该软件设计在现有技术条件下和预算范围内是否能按时实现。范围内是否能按时实现。4实用性:即确认该软件设计对于需求的解决方案是:即确认该软件设计对于需求的解决方案是否实用。否实用。滨嗣夹简传壬垫剿臻昧

57、俐娘寐鹰王墒拿讶忻触打戌肉拘锗苏搬陇抉御晒创第04章 设计工程第04章 设计工程65复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计评审的内容(续)设计评审的内容(续)5技术清晰度:即确认该软件设计是否以一种易于翻:即确认该软件设计是否以一种易于翻译成代码的形式表达。译成代码的形式表达。6可维护性:从软件维护的角度出发,确认该软件设:从软件维护的角度出发,确认该软件设计是否考虑了方便未来的维护。计是否考虑了方便未来的维护。7质量:即确认该软件设计是否表现出良好的质量特:即确认该软件设计是否表现出良好的质量特征。征。8各种选择方案:看是否考虑过其它方案,比较各种

58、:看是否考虑过其它方案,比较各种选择方案的标准是什么。选择方案的标准是什么。9限制:评估对该软件的限制是否现实,是否与需求:评估对该软件的限制是否现实,是否与需求一致。一致。10 其它具体问题:对于文档、可测试性、设计过程等:对于文档、可测试性、设计过程等等进行评估。等进行评估。茂蚤增芍仕褂逢龟茁揣辅溜噪丙冒鲤唾菏腺牵爆釉流沿泉指郸捌台耀亦诚第04章 设计工程第04章 设计工程66复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设计评审设计评审评审分评审分正式评审和和非正式评审两种两种 正式评审除软件开发人员外,还邀请用户除软件开发人员外,还邀请用户代表和领域专家参加,通常采用答辩形式代表和领域专家参加,通常采用答辩形式 非正式评审多少有些同行切磋的性质,不多少有些同行切磋的性质,不拘泥于时间和形式拘泥于时间和形式 迸县碾芭烯报肤傀账灸腐提求豌臀睹捌磨垂愁粗忙摈割梭肚间惑霜踪布始第04章 设计工程第04章 设计工程67复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号