清华软件工程:第04章设计工程知识课件

上传人:yulij****0329 文档编号:271164792 上传时间:2022-03-28 格式:PPT 页数:71 大小:483KB
返回 下载 相关 举报
清华软件工程:第04章设计工程知识课件_第1页
第1页 / 共71页
清华软件工程:第04章设计工程知识课件_第2页
第2页 / 共71页
清华软件工程:第04章设计工程知识课件_第3页
第3页 / 共71页
清华软件工程:第04章设计工程知识课件_第4页
第4页 / 共71页
清华软件工程:第04章设计工程知识课件_第5页
第5页 / 共71页
点击查看更多>>
资源描述

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

1、软件工程软件工程软件工程软件工程第4章 设计工程1复旦大学计算机科学与工程系 软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审2复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审3复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设

2、计的任务软件设计的任务 使用一种设计方法,软件分析模型中通过数据、使用一种设计方法,软件分析模型中通过数据、功能和行为模型所展示的软件需求的信息被传功能和行为模型所展示的软件需求的信息被传送给设计阶段,产生数据送给设计阶段,产生数据/类设计、体系结构类设计、体系结构设计、接口设计、部件级设计设计、接口设计、部件级设计 5复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程数据/类设计:将分析:将分析-类模型变换成类类模型变换成类的实现和软件实现所需要的数据结构的实现和软件实现所需要的数据结构 体系结构设计:体系结构设计定义了软:体系结构设计定义了软件的整体结构件的整体

3、结构接口设计:接口设计描述了软件内部、:接口设计描述了软件内部、软件和协作系统之间以及软件同人之间软件和协作系统之间以及软件同人之间如何通信如何通信 部件级设计:部件级设计将软件体系结:部件级设计将软件体系结构的结构性元素变换为对软件部件的过构的结构性元素变换为对软件部件的过程性描述程性描述 6复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程1)数据)数据/类设计类设计 在类和由在类和由CRC中定义的数据对象和关系以及数中定义的数据对象和关系以及数据字典中描述的详细数据内容提供了数据设计据字典中描述的详细数据内容提供了数据设计活动的基础活动的基础数据设计的过程包括

4、以下两步数据设计的过程包括以下两步 :首先,为在需求分析阶段所确定的数据对象选择逻辑表示,需要对不同结构进行算法分析,以便选择一个最有效的设计方案; 然后,确定对逻辑数据结构所必需的那些操作的程序模块,以便限制或确定各个数据设计决策的影响范围。 7复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程2)体系结构设计)体系结构设计 体系结构设计定义了软件的整体结构,体系结构设计定义了软件的整体结构,它由软件部件、外部可见的属性和它它由软件部件、外部可见的属性和它们之间的关系组成。们之间的关系组成。体系结构设计表示可以从系统规约、体系结构设计表示可以从系统规约、分析模型和

5、分析模型中定义的子系统分析模型和分析模型中定义的子系统的交互导出。的交互导出。 8复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程3)接口设计)接口设计 接口设计主要包括三个方面:接口设计主要包括三个方面:设计软件模块间的接口设计模块和其他非人的信息生产者和消费者(比如外部实体)之间的接口设计人(用户)和计算机间的接口 9复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程4)部件级设计)部件级设计 部件级设计将软件体系结构的结构性部件级设计将软件体系结构的结构性元素变换为对软件部件的过程性描述。元素变换为对软件部件的过程性描述。从类为基

6、础的模型、流模型、行为模从类为基础的模型、流模型、行为模型中得到的信息是部件设计的基础。型中得到的信息是部件设计的基础。 10复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计的目标软件设计的目标 在进行软件设计的过程中,我们要密切关在进行软件设计的过程中,我们要密切关注软件的质量因素。注软件的质量因素。 McGlanghlin 软件设计过程的目标:软件设计过程的目标: 1)设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。2)设计必须是可读、可理解的,使得将来易于编程、易于测试、易于维护。3)设计应从实现角度出发,给出与数据、功能、

7、行为相关的软件全貌。11复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程衡量设计的技术标准衡量设计的技术标准 1)设计出来的结构应是分层结构,从而建立设计出来的结构应是分层结构,从而建立软件成份之间的控制。软件成份之间的控制。2)设计应当模块化,从逻辑上将软件划分为设计应当模块化,从逻辑上将软件划分为完成特定功能或子功能的部件。完成特定功能或子功能的部件。3)设计应当既包含数据抽象,也包含过程抽设计应当既包含数据抽象,也包含过程抽象。象。4)设计应当建立具有独立功能特征的模块。设计应当建立具有独立功能特征的模块。5)设计应当建立能够降低模块与外部环境之设计应当建立

8、能够降低模块与外部环境之间复杂连接的接口。间复杂连接的接口。6)设计应能根据软件需求分析获取的信息,设计应能根据软件需求分析获取的信息,建立可驱动、可重复的方法。建立可驱动、可重复的方法。12复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计的过程软件设计的过程 1)制定规范制定规范2)体系结构和接口设计体系结构和接口设计3)数据数据/类设计类设计4)部件级(过程)设计部件级(过程)设计5)编写设计文档编写设计文档6)设计评审设计评审13复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程内容摘要内容摘要软件设计工程概述软件设计工程

9、概述软件设计原则软件设计原则 软件体系结构设计软件体系结构设计部件级设计技术部件级设计技术 设计规约与设计评审设计规约与设计评审14复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程抽象化与逐步求精抽象化与逐步求精 抽象,是在软件设计的规模逐渐增,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策大的情况下,控制复杂性的基本策略。略。 抽象的过程是从特殊到一般的过程,抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层上层概念是下层概念的抽象,下层概念是上层概念的精化和细化。概念是上层概念的精化和细化。 软件工程过程的每一步都是对较高软件工程过程的每一

10、步都是对较高一级抽象的解作一次具体化的描述一级抽象的解作一次具体化的描述 15复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程软件设计中主要抽象手段有:软件设计中主要抽象手段有:过程抽象和和数据抽象 过程抽象(也称功能抽象)是指任何一(也称功能抽象)是指任何一个完成明确定义功能的操作都可被使用个完成明确定义功能的操作都可被使用者当作单个实体看待,尽管这个操作实者当作单个实体看待,尽管这个操作实际上是由一系列更低级的操作来完成的际上是由一系列更低级的操作来完成的数据抽象是指定义数据类型和施加于该是指定义数据类型和施加于该类型对象的操作,并限定了对象的取值类型对象的操

11、作,并限定了对象的取值范围,只能通过这些操作修改和观察数范围,只能通过这些操作修改和观察数据据16复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程逐步求精逐步求精 逐步求精,把问题的求解过程分解成若干,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接步骤或阶段,每步都比上步更精化,更接近问题的解法近问题的解法抽象使得设计者能够描述过程和数据而忽使得设计者能够描述过程和数据而忽略低层的细节,而略低层的细节,而求精有助于设计者在设有助于设计者在设计过程中揭示低层的细节计过程中揭示低层的细节 17复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工

12、程课程软件工程课程模块化模块化 模块化,即把软件按照规定原则,划分为,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联一个个较小的,相互独立的但又相互关联的部件,实际上是系统分解和抽象的过程。的部件,实际上是系统分解和抽象的过程。 模块是数据说明、可执行语句等程序对象是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过的集合,它是单独命名的,并且可以通过名字来访问名字来访问 例如,过程。函数、子程序、宏等 18复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程设设C(x)是描述问题是描述问题x 复杂性的函数,复杂性的函数,E(x)是解

13、决问题是解决问题x 所需工作量所需工作量(按时间计按时间计算算)的函数。对于两个问题的函数。对于两个问题p1 和和p2,如,如果果C(p1)C(p2)(4.1a)那么那么 E(p1)E(p2) (4.1b)即问题越复杂,解决问题所需要的花费即问题越复杂,解决问题所需要的花费更多。更多。 19复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程通过对人解决问题的实验,又存在另一个有趣通过对人解决问题的实验,又存在另一个有趣的规律:的规律:C(p1p2)C(p1)C(p2) (4.2)方程式方程式(4.2)意味着意味着p1 和和p2 组合后的复杂性组合后的复杂性比单独考虑

14、每个问题时的复杂性要大。考虑方比单独考虑每个问题时的复杂性要大。考虑方程式程式(4.2)和方程式和方程式(4.1)隐含的条件,我们可隐含的条件,我们可以得出以得出 E(p1p2) E(p1)E(p2) (4.3)不等式不等式(4.3)表达出了一个对于模块化和软件表达出了一个对于模块化和软件具有十分重要意义的结论(即,模块化的论据)具有十分重要意义的结论(即,模块化的论据):将复杂问题分解成可以管理的片断会更使解:将复杂问题分解成可以管理的片断会更使解决问题更加容易。决问题更加容易。 20复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程如果我们无限制地划分软件,开发

15、它所需如果我们无限制地划分软件,开发它所需的工作量会变得小到可以忽略?!的工作量会变得小到可以忽略?! 事实上,影响软件开发的工作量的因素还事实上,影响软件开发的工作量的因素还有很多,例如模块接口费用等等有很多,例如模块接口费用等等上述不等式只能说明,当模块的总数增加上述不等式只能说明,当模块的总数增加时,单独开发各个子模块的工作量之和会时,单独开发各个子模块的工作量之和会有所减少有所减少 21复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程如果模块是相互独立的,当模块变得越如果模块是相互独立的,当模块变得越小,每个模块花费的工作量越低;小,每个模块花费的工作量越

16、低;但当模块数增加时,模块间的联系也随但当模块数增加时,模块间的联系也随之增加,把这些模块联接起来的工作量之增加,把这些模块联接起来的工作量也随之增加。也随之增加。 22复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程信息隐藏信息隐藏 每个模块的实现细节对于其它模块来说应每个模块的实现细节对于其它模块来说应该是隐蔽的该是隐蔽的 块中所包含的信息(包括数据和过程)不块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用允许其它不需要这些信息的模块使用 通过通过信息隐蔽,则可定义和实施对模块的,则可定义和实施对模块的过程细节和局部数据结构的存取限制过程细节和局部数据结构的存取限制 23复旦大学计算机科学与工程系复旦大学计算机科学与工程系 软件工程课程软件工程课程模块独立模块独立 模块独立:模块完成独立的功能并且与:模块完成独立的功能并且与其他模块的接口简单,符合信息隐蔽和其他模块的接口简单,符合信息隐蔽和信息局部化原则,模块间关联和依赖程信息局部化原则,模块间关联和依赖程度尽可能小度尽可能小 模块独立的重要性模块独立的重要性功能被划分,并且接口被

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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