软件设计基础幻灯片.ppt
《软件设计基础幻灯片.ppt》由会员分享,可在线阅读,更多相关《软件设计基础幻灯片.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件设计基础第1页,共82页,编辑于2022年,星期三1提纲提纲概述概述软件设计的目标软件设计的目标衡量设计的技术标准衡量设计的技术标准设计过程设计过程 设计原则:设计原则:(抽象、逐级求精、模块化、信息隐藏、模块独立)(抽象、逐级求精、模块化、信息隐藏、模块独立)(抽象、逐级求精、模块化、信息隐藏、模块独立)(抽象、逐级求精、模块化、信息隐藏、模块独立)软件体系结构设计软件体系结构设计部件级设计部件级设计设计规约与评审设计规约与评审第2页,共82页,编辑于2022年,星期三2软件设计概述软件设计概述软件需求分析解决软件需求分析解决“做什么做什么”的问题,软件的问题,软件设计过程则解决设计过程
2、则解决“怎么做怎么做”的问题。的问题。软件设计是把软件需求变换成软件表示的过软件设计是把软件需求变换成软件表示的过程,主要包括两个阶段:概要设计(程,主要包括两个阶段:概要设计(软件体软件体系结构设计阶段系结构设计阶段)和详细设计()和详细设计(部件级设计部件级设计阶段阶段)第3页,共82页,编辑于2022年,星期三3还要加上还要加上还要加上还要加上接口设计、接口设计、接口设计、接口设计、界面设计界面设计界面设计界面设计(人机接口设计人机接口设计人机接口设计人机接口设计)第4页,共82页,编辑于2022年,星期三4需求规格说明书需求规格说明书设计文档设计文档编码在搞清楚做编码在搞清楚做什么、怎
3、么做后什么、怎么做后才能进行!才能进行!第5页,共82页,编辑于2022年,星期三5软件设计是后续开发步骤及软件维护工作软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不的基础。如果没有设计,只能建立一个不稳定的系统结构。稳定的系统结构。第6页,共82页,编辑于2022年,星期三6软件设计的任务软件设计的任务使用一种设计方法,软件分析模型中通过数使用一种设计方法,软件分析模型中通过数据、功能和行为模型所展示的软件需求的据、功能和行为模型所展示的软件需求的信息被传送给设计阶段,产生数据信息被传送给设计阶段,产生数据/类设计、类设计、体系结构设计、接口设计、构件级设计体系结构
4、设计、接口设计、构件级设计第7页,共82页,编辑于2022年,星期三7还要加上还要加上还要加上还要加上接口设计、接口设计、接口设计、接口设计、界面设计界面设计界面设计界面设计(人机接口设人机接口设人机接口设人机接口设计计计计)第8页,共82页,编辑于2022年,星期三8分析模型分析模型设计模型设计模型基于类的元素基于类的元素 分析模型分析模型 用例文本用例文本用例图用例图活动图活动图泳道图泳道图 数据流图数据流图控制流图控制流图处理说明处理说明 面向流的元素面向流的元素 行为元素行为元素基于场景的元素基于场景的元素 类图类图分析包分析包数据字典数据字典协作图协作图 状态图状态图序列图序列图数据
5、数据/类设计类设计 接口设计接口设计-构件级设计构件级设计设计模型设计模型体系结构设计体系结构设计设计的原料从哪里来?设计的原料从哪里来?设计的原料从哪里来?设计的原料从哪里来?第9页,共82页,编辑于2022年,星期三9数据数据/类设计:将分析类设计:将分析-类模型变成类的实现类模型变成类的实现和软件实现所需要的数据结构和软件实现所需要的数据结构体系结构设计:体系结构设计定义了软件体系结构设计:体系结构设计定义了软件的整体结构的整体结构接口设计:接口设计描述了软件内部、软接口设计:接口设计描述了软件内部、软件和协作系统之间以及软件同人之间如何件和协作系统之间以及软件同人之间如何通信通信构件级
6、设计:构件级设计将软件体系结构构件级设计:构件级设计将软件体系结构的结构性元素变换为对软件部件的过程性的结构性元素变换为对软件部件的过程性描述描述第10页,共82页,编辑于2022年,星期三10(1)数据)数据/类设计类设计在类和由在类和由CRC中定义的数据对象和关系以中定义的数据对象和关系以及数据字典中描述的详细数据内容提供了及数据字典中描述的详细数据内容提供了数据设计活动的基础数据设计活动的基础数据设计的过程包括以下两步:数据设计的过程包括以下两步:1)为在需求分析阶段所确定的数据对象选择为在需求分析阶段所确定的数据对象选择逻辑表示,需要对不同结构进行算法分析,逻辑表示,需要对不同结构进行
7、算法分析,以便选择一个最有效的设计方案。以便选择一个最有效的设计方案。2)确定对逻辑数据结构所必需的那些操作的确定对逻辑数据结构所必需的那些操作的程序模块,以便限制或确定各个数据设计程序模块,以便限制或确定各个数据设计决策的影响范围。决策的影响范围。有一句名言有一句名言 教材教材P63第11页,共82页,编辑于2022年,星期三11(2)体系结构设计)体系结构设计体系结构设计定义了软件的整体结构,它由体系结构设计定义了软件的整体结构,它由软件构件、外部可见的属性和它们之间的软件构件、外部可见的属性和它们之间的关系组成。关系组成。体系结构设计表示可以从系统规约、分析模体系结构设计表示可以从系统规
8、约、分析模型和分析模型中定义的子系统的交互导出。型和分析模型中定义的子系统的交互导出。第12页,共82页,编辑于2022年,星期三12(3)接口设计)接口设计接口设计主要包括三个方面:接口设计主要包括三个方面:-设计软件模块间的接口设计软件模块间的接口-设计模块和其他非人的信息生产者和消费设计模块和其他非人的信息生产者和消费者(比如外部实体)之间的接口者(比如外部实体)之间的接口-设计人(用户)和计算机间的接口设计人(用户)和计算机间的接口第13页,共82页,编辑于2022年,星期三13(4)构件级设计)构件级设计构件级设计将软件体系结构的结构性元素变构件级设计将软件体系结构的结构性元素变换为
9、对软件构件的过程性描述换为对软件构件的过程性描述从类为基础的模型、流模型、行为模型中得从类为基础的模型、流模型、行为模型中得到的信息是构件设计的基础到的信息是构件设计的基础第14页,共82页,编辑于2022年,星期三14软件设计的目标软件设计的目标在进行软件设计的过程中,要密切关注软件的质量因在进行软件设计的过程中,要密切关注软件的质量因素。素。软件设计过程的目标是:软件设计过程的目标是:1)设计必须实现分析模型中所描述的所有显示需)设计必须实现分析模型中所描述的所有显示需求,必须满足用户希望的所有隐式需求求,必须满足用户希望的所有隐式需求2)设计必须是可读的、可理解的,使得将来易于编程、)设
10、计必须是可读的、可理解的,使得将来易于编程、易于测试、易于维护。易于测试、易于维护。3)设计应从实现角度出发,给出与数据、功能、行)设计应从实现角度出发,给出与数据、功能、行为相关的软件全貌。为相关的软件全貌。第15页,共82页,编辑于2022年,星期三15衡量设计的技术标准衡量设计的技术标准1)设计出来的结构应该是)设计出来的结构应该是分层分层结构,从而建立软件之间的结构,从而建立软件之间的控制控制2)设计应当)设计应当模块化模块化,从逻辑上将软件划分为完成特定,从逻辑上将软件划分为完成特定功能或子功能的部件功能或子功能的部件3)设计应当既包含数据抽象,也包含过程抽象。)设计应当既包含数据抽
11、象,也包含过程抽象。4)设计应当建立具有独立功能特征的模块。)设计应当建立具有独立功能特征的模块。5)设计应当建立能够降低模块与外部环境之间复杂连接的)设计应当建立能够降低模块与外部环境之间复杂连接的接口。接口。6)设计应能根据软件需求分析获取的信息,建立可驱动、)设计应能根据软件需求分析获取的信息,建立可驱动、可重复的方法。可重复的方法。第16页,共82页,编辑于2022年,星期三16软件设计的过程软件设计的过程制定规范制定规范体系结构和接口设计体系结构和接口设计数据数据/类设计类设计构件级(过程)设计构件级(过程)设计编写设计文档编写设计文档设计评审设计评审第17页,共82页,编辑于202
12、2年,星期三17软件设计原则软件设计原则第18页,共82页,编辑于2022年,星期三18抽象化与逐步求精抽象化与逐步求精抽象,是在软件设计的规模逐渐增大的情况抽象,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略下,控制复杂性的基本策略抽象的过程是从特殊到一般的过程,上层概抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象,下层概念是上层概念是下层概念的抽象,下层概念是上层概念的精化和细化念的精化和细化软件工程过程的每一步都是对较高一级抽象软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述的解作一次具体化的描述第19页,共82页,编辑于2022年,星期三19软件设计中主
13、要抽象手段有:过程抽象和数软件设计中主要抽象手段有:过程抽象和数据抽象据抽象过程抽象过程抽象(也称(也称功能抽象功能抽象)是指任何一个完)是指任何一个完成明确定义功能的操作都可以被使用者当成明确定义功能的操作都可以被使用者当作单个实体看待,尽管这个操作实际上是作单个实体看待,尽管这个操作实际上是由一系列更低级的操作来完成的由一系列更低级的操作来完成的数据抽象数据抽象是指定义数据类型和施加于该类型是指定义数据类型和施加于该类型对象的操作,并限定了对象的取值范围,对象的操作,并限定了对象的取值范围,只能通过这些操作修改和观察使用数据只能通过这些操作修改和观察使用数据程序设计语言的支持程序设计语言的
14、支持第20页,共82页,编辑于2022年,星期三20逐步求精逐步求精逐步求精,把问题的求解过程分解成若干步逐步求精,把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近骤或阶段,每步都比上步更精化,更接近问题的解法问题的解法抽象使得设计者能够描述过程和数据而忽略抽象使得设计者能够描述过程和数据而忽略低层的细节,而求精有助于设计者在设计低层的细节,而求精有助于设计者在设计过程中揭示低层的细节过程中揭示低层的细节第21页,共82页,编辑于2022年,星期三21模块化模块化模块化,即把软件按照规定原则,划分为一模块化,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的个个
15、较小的,相互独立的但又相互关联的部件,实际上是系统分解和抽象的过程部件,实际上是系统分解和抽象的过程模块是数据说明、可执行语句等程序对象的模块是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过集合,它是单独命名的,并且可以通过名名字字来访问来访问-例如,过程。函数、子程序、宏等例如,过程。函数、子程序、宏等第22页,共82页,编辑于2022年,星期三22设设C(x)是描述问题是描述问题x复杂性的函数,复杂性的函数,E(x)是是解决问题解决问题x所需工作量所需工作量(按时间计算按时间计算)的函数。的函数。对于两个问题对于两个问题p1和和p2,如果,如果C(p1)C(p2)(7.
16、1a)那么那么E(p1)E(p2)(7.1b)即即问题越复杂,解决问题所需要的花费更多问题越复杂,解决问题所需要的花费更多。第23页,共82页,编辑于2022年,星期三23通过对人解决问题的实验,又存在另一个有通过对人解决问题的实验,又存在另一个有趣的规律:趣的规律:C(p1+p2)C(p1)+C(p2)(7.2)方程式方程式(7.2)意味着意味着p1和和p2组合后的复杂性组合后的复杂性比单独考虑每个问题的复杂性要大。考虑比单独考虑每个问题的复杂性要大。考虑方程式方程式(7.2)和方程式和方程式(7.1)隐含的条件,可隐含的条件,可以得出以得出E(p1+p2)E(p1)+E(p2)(7.3)第
17、24页,共82页,编辑于2022年,星期三24不等式不等式(7.3)表达出了对于模块化和软件具表达出了对于模块化和软件具有十分重要意义的结论有十分重要意义的结论(即,模块化的论据即,模块化的论据):将复杂问题分解成可以管理的片段会使将复杂问题分解成可以管理的片段会使问题更加容易问题更加容易。“如果我们无限制地划分软件,开发它所需如果我们无限制地划分软件,开发它所需的工作量会变得小到可以忽略吗?的工作量会变得小到可以忽略吗?”第25页,共82页,编辑于2022年,星期三25实际情况是,影响软件开发的工作量的因素实际情况是,影响软件开发的工作量的因素还有很多,例如模块接口费用等等还有很多,例如模块
18、接口费用等等上述不等式只能说明,当模块的总数增加时,上述不等式只能说明,当模块的总数增加时,单独开发各个子模块的工作量之和会有所减单独开发各个子模块的工作量之和会有所减少少如果模块是相互独立的,当模块变得越小,如果模块是相互独立的,当模块变得越小,每个模块花费的工作量越低;每个模块花费的工作量越低;但当模块数增加时,模块间的联系也随之增但当模块数增加时,模块间的联系也随之增加,把这些模块联接起来的工作量也随之增加,把这些模块联接起来的工作量也随之增加加第26页,共82页,编辑于2022年,星期三26第27页,共82页,编辑于2022年,星期三27信息隐藏信息隐藏每个模块的实现细节对于其它模块来
19、说应每个模块的实现细节对于其它模块来说应该是隐蔽的该是隐蔽的块中所包含的信息块中所包含的信息(包括数据和过程包括数据和过程)不允许不允许其它不需要这些信息的模块使用其它不需要这些信息的模块使用通过信息隐藏,则可定义和实施对模块的通过信息隐藏,则可定义和实施对模块的过程细节和局部数据结构的存取限制过程细节和局部数据结构的存取限制第28页,共82页,编辑于2022年,星期三28模块独立模块独立模块独立:模块完成独立的功能并且与其它模块的接模块独立:模块完成独立的功能并且与其它模块的接口简单,符合信息隐藏和信息局部化原则,模块间关口简单,符合信息隐藏和信息局部化原则,模块间关联和依赖程度尽可能小联和
20、依赖程度尽可能小模块独立的重要性模块独立的重要性-功能被划分,并且接口被简化,所以具有有效模块功能被划分,并且接口被简化,所以具有有效模块化的软件更易于开发化的软件更易于开发-由于因设计和编码修改引起的副作用受到局限,错由于因设计和编码修改引起的副作用受到局限,错误传播被减小,并且模块复用成为可能,所以独立误传播被减小,并且模块复用成为可能,所以独立的模块更易于维护和测试的模块更易于维护和测试第29页,共82页,编辑于2022年,星期三29模块的独立性可以由两项指标来衡量:内聚模块的独立性可以由两项指标来衡量:内聚度与耦合度度与耦合度内聚内聚(cohesion)是一个模块内部各个元素是一个模块
21、内部各个元素彼此结合的紧密程度的度量彼此结合的紧密程度的度量耦合耦合(coupling)是模块之间的相对独立性是模块之间的相对独立性(互相连接的紧密程度互相连接的紧密程度)的度量的度量第30页,共82页,编辑于2022年,星期三30内聚内聚一般模块的内聚性分为七种类型一般模块的内聚性分为七种类型第31页,共82页,编辑于2022年,星期三311)巧合内聚巧合内聚(偶然内聚偶然内聚):将几个模块中没有:将几个模块中没有明确表现出独立功能的相同程序代码段独明确表现出独立功能的相同程序代码段独立出来建立的模块称为巧合内聚模块。立出来建立的模块称为巧合内聚模块。2)逻辑内聚:指完成一组逻辑相关任务的模
22、逻辑内聚:指完成一组逻辑相关任务的模块,调用该模块时,由传送给模块的控制块,调用该模块时,由传送给模块的控制参数来确定该模块应执行哪一种功能。参数来确定该模块应执行哪一种功能。3)时间内聚:指一个模块中的所有任务必须时间内聚:指一个模块中的所有任务必须在同一时间段内执行。例如初始化模块和在同一时间段内执行。例如初始化模块和终止模块。终止模块。第32页,共82页,编辑于2022年,星期三324)过程内聚:指一个模块完成多个任务,这过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程些任务必须按指定的过程(procedural)执行。执行。5)通信内聚:指一个模块内所有处理元素都通信内聚:指
23、一个模块内所有处理元素都集中在某个数据结构的一块区域中。集中在某个数据结构的一块区域中。6)顺序内聚:指一个模块完成多个功能,这顺序内聚:指一个模块完成多个功能,这些功能又必须顺序执行。一个成分的输出些功能又必须顺序执行。一个成分的输出是下一个成分的输入。是下一个成分的输入。7)功能内聚:指一个模块中各个部分都是为功能内聚:指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,完成一项具体功能而协同工作,紧密联系,不可分割。不可分割。第33页,共82页,编辑于2022年,星期三33巧合内聚第34页,共82页,编辑于2022年,星期三34逻辑内聚第35页,共82页,编辑于2022年,星
24、期三35通信内聚第36页,共82页,编辑于2022年,星期三36功能内聚第37页,共82页,编辑于2022年,星期三37第38页,共82页,编辑于2022年,星期三38耦合一般模块之间可能的耦合方式有七种类型一般模块之间可能的耦合方式有七种类型第39页,共82页,编辑于2022年,星期三391)内容耦合:如果一个模块直接访问另一个模块的内内容耦合:如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过正常入口转到另一模块部数据;或者一个模块不通过正常入口转到另一模块内部;或者两个模块有一部分程序代码重迭;或者一内部;或者两个模块有一部分程序代码重迭;或者一个模块有多个入口,则两个模块之间
25、就发生了内容耦个模块有多个入口,则两个模块之间就发生了内容耦合。合。2)公共耦合:若一组模块都访问同一个公共数据环境,公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆可以是全局数据结构、共享的通信区、内存的公共覆盖区等。盖区等。3)外部耦合:指模块间通过软件之外的环境联结外部耦合:指模块间通过软件之外的环境联结(如如I/O将模块耦合到特定的设备、格式、通信协议将模块耦合到特定的设备、格式、通信协议上上)时,称为外部耦合。时,称为外部耦合。第40页,共82页,编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 基础 幻灯片
限制150内