版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章总体设计5.1设计过程5.2设计原理5.3启发规则5.4描绘软件结构的图形工具5.5面向数据流的设计方法5.6小结习题第五章总体设计5.1设计过程学习要求掌握:1、软件设计过程中应遵循的基本原理和相关概念;2、描绘软件结构的图形工具的运用;3、面向数据流设计方法概念;变换分析、事务分析法过程和应用。理解:1、典型的总体设计过程包括的步骤;2、设计中的启发式规则;学习要求掌握:重点和难点重点:软件设计过程中应遵循的基本原理;面向数据流的设计方法难点:变换分析、事务分析法的过程和应用重点和难点重点:软件设计的目标和任务软件需求:解决“做什么”软件设计:解决“怎么做”.软件设计的任务:以软件需求规格说明书为依据,着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中。软件设计的重要性:是软件开发阶段的第一步,最终影响软件实现的成败和软件维护的难易程度。软件设计的目标和任务软件需求:解决“做什么”软件设计的两个阶段第一阶段:概要设计(总体设计)根据软件需求,设计软件系统结构和数据结构,确定程序的组成模块及模块之间的相互关系。回答“概括地说,系统应该如何实现?”。其重要性是:站在全局高度,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。软件设计的两个阶段第一阶段:概要设计(总体设计)软件设计的两个阶段第二阶段:详细设计(过程设计)确定模块内部的算法和数据结构;选定某种过程的表达形式来描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评审。软件设计的两个阶段第二阶段:详细设计(过程设计)将需求分析模型转换为软件设计软件结构设计以需求分析中得到的数据流图为基础而进行。将需求分析模型转换为软件设计软件结构设计以需求分析中得到的数第一个阶段总体设计的任务①制定规范②设计软件系统结构(简称软件结构)③处理方式设计④数据结构及数据库设计⑤可靠性设计⑥编写概要设计文档⑦概要设计评审第一个阶段总体设计的任务①制定规范①制定规范为软件开发小组制定在进行软件设计时,应该共同遵守的标准,以便协调组内各成员的工作。①制定规范为软件开发小组制定在进行软件设计时,应该共同遵守②软件结构设计包括:将系统按功能划分成模块确定每个模块的功能确定模块之间的调用关系确定模块之间的接口,即模块之间传递的信息评价模块结构的质量②软件结构设计包括:③处理方式设计包括:功能设计:确定实现功能算法,评估算法的性能.性能设计:确定实现性能需求必须的算法和模块间的控制方式③处理方式设计包括:5.1设计的过程5.1设计的过程5.2设计原理5.2.1模块化5.2.2抽象5.2.3逐步求精5.2.4信息隐蔽和局部化5.2.5模块独立5.2设计原理5.2.1模块化5.2.1模块化(Modularity)①什么是模块和模块化思想?采取自顶向下的方式,逐层把软件系统划分成若干可单独命名和可编址的部分-“模块”,每个模块完成一个特定的子功能;所有模块按某种方法组成一个整体,完成整个系统所要求的功能。软件系统就是通过这些模块的组合来实现。5.2.1模块化(Modularity)①什么②模块化的优点模块化是软件解决复杂问题所具备的手段,可降低软件复杂性,减少开发工作量,从而降低开发成本,提高软件生产率,以下是模块化的依据。②模块化的优点模块化是软件解决复杂问题所具备的手段,可降低③模块化与软件成本的关系接口③模块化与软件成本的关系接口④模块的基本属性接口:指模块的输入与输出。功能:指模块实现什么功能。模块化好处:模块化使软件容易测试和调试,因而有助提高软件的可靠性。模块化能提高软件的可修改性。模块化有助于软件开发工程的组织管理。④模块的基本属性接口:指模块的输入与输出。5.2.2抽象(Abstraction)①什么是抽象?认识复杂事物和现象时,抽出事物本质的共同特性而暂不考虑它们的细节。②软件开发中的抽象过程的抽象数据的抽象学生大学生湛江师范学院的学生湛师信息学院的学生湛师信息学院11计本的学生5.2.2抽象(Abstraction)①什么是抽象抽象什么是抽象思想?在认识事物、分析和解决问题的过程中,忽略那些与当前研究目标不相关的部分,以便将注意力集中于与当前目标相关的方面软件开发实际上就是一个从高层次抽象到低层次抽象逐步过渡的过程。一个复杂的系统先用一些高级的抽象概念构造和理解,这些高级概念又用较低级的概念构造和理解,如此进行下去,直到具体元素。抽象什么是抽象思想?形体衣着性格抽象抽象例子外表形体衣着性格抽象抽象例子外表5.2.3逐步求精逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。可把逐步求精看作是一项把一个时期内必须解决的种种问题按优先级排序的技术。逐步求精是一种自顶向下的设计策略,按这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。5.2.3逐步求精逐步求精:为了能集中精力解决主要问逐步求精外表形体衣着性格头发脸形领带抽象逐步求精的例子逐步求精外表形体衣着性格头发脸形领带抽象逐步求精的例子自顶向下,逐步求精的基本思想将功能、信息的说明分为多个层次,最高层也最抽象―仅仅只是概念性地描述功能或信息,不提供功能的内部工作情况或信息的内部结构;设计者从最高层开始,仔细推敲,进行功能和信息的细化,给出下层实现的细节;随着每个后续细化逐步的完成,提供越来越多的细节,最终得出用程序设计语言表达的程序。自顶向下,逐步求精的基本思想将功能、信息的说明分为多个层次,结合了模块化和逐步细化思想建立的软件结构图结合了模块化和逐步细化思想建立的软件结构图5.2.4信息隐蔽和局部化信息隐蔽:在设计和确定模块时,使得一个模块内包含的信息(过程或数据),不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。局部化:将一些关系密切的软件元素物理地放得彼此靠近。5.2.4信息隐蔽和局部化信息隐蔽:在设计和确定模块时,使5.2.5模块独立1、什么是模块独立性(moduleindependence)模块只完成系统要求的相对独立的功能符合信息隐蔽原则模块间关联和依赖程度尽量小2、模块独立的优点容易开发、测试和维护5.2.5模块独立1、什么是模块独立性(module3、衡量模块独立性的两个准则①耦合性(coupling)②内聚性(cohesion)3、衡量模块独立性的两个准则①耦合性(coupling①耦合性(coupling)也称块间的联系。是对软件系统结构中,各模块间相互联系紧密程度的一种度量。设计目标:低耦合①耦合性(coupling)也称块间的联系。是对软件系无直接耦合两个模块没有直接关系,模块独立性最强。无直接耦合两个模块没有直接关系,模块独立性最强。数据耦合属松散耦合。一模块访问另一模块时,通过数据参数交换输入、输出信息。数据耦合属松散耦合。一模块访问另一模块时,通过数据参数交换输控制耦合模块之间传递的是控制信息(如开关、标志、名字等),控制被调用模块的内部逻辑。控制耦合模块之间传递的是控制信息(如开关、标志、名字等),控控制耦合举例控制耦合举例去除模块间控制耦合的方法控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。解决方法:(1)将被调用模块内的判定上移到调用模块中进行(2)被调用模块分解成若干单一功能模块去除模块间控制耦合的方法控制耦合增加了理解和编程的复杂性,调改控制耦合为数据耦合举例改控制耦合为数据耦合举例特征耦合两个模块通过传递数据结构加以联系,或都与一个数据结构有关系,则称这两个模块间存在特征耦合。可能出现的情况:当把整个数据结构作为参数传递时,被调用的模块虽然只需要使用其中的一部分数据元素,但实际可以使用的数据多于它真正需要的数据,这将导致对数据访问失去控制。特征耦合两个模块通过传递数据结构加以联系,或都与一个数据结构特征耦合举例说明:“住户情况”是一个数据结构,图中模块都与此数据结构有关。“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是特征偶合。特征耦合举例说明:将特征耦合修改为数据耦合举例将特征耦合修改为数据耦合举例公共环境耦合一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构。共享通讯区。内存公共覆盖区等。公共环境耦合一组模块引用同一个公用数据区(也称全局数据区、公公共环境耦合举例模块A、B、C间存在错综复杂的联系公共环境耦合举例模块A、B、C间存在错综复杂的联公共耦合存在的问题(1)软件可理解性降低(2)诊断错误困难(3)软件可维护性差(4)软件可靠性差公共耦合存在的问题(1)软件可理解性降低内容耦合有下列情况之一的。是最不好的耦合形式!内容耦合有下列情况之一的。是最不好的耦合形式!模块间耦合强度模块间耦合强度耦合强度依赖的因素:一模块对另一模块的引用一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量模块间接口的复杂程度耦合强度依赖的因素:一模块对另一模块的引用降低耦合度的设计原则1、根据问题特点,选择合适的耦合类型。尽量使用数据耦合,少用控制耦合和特征耦合,限制公共耦合的范围,完全不用内容耦合2、降低模块接口的复杂性。减少每个模块的参数个数;尽量使用标准过程调用方式,少用直接引用的方式;传送的信息以标准、直接的方式提供。3、把模块的通信信息放在缓冲区中。降低耦合度的设计原则1、根据问题特点,选择合适的耦合类型。②内聚性(cohesion)又称块内联系。指一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内聚性就越.设计目标:高内聚②内聚性(cohesion)又称块内联系。指一个模块内巧合内聚(偶然内聚)块内各组成成份在功能上是互不相关的。模块M中的三个语句没有任何联系。缺点:可理解性差,可修改性差巧合内聚(偶然内聚)块内各组成成份在功能上是互不相关的。模块逻辑内聚把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。逻辑内聚把几种相关功能(逻辑上相似的功能)组合在一模块内,每逻辑内聚模块逻辑内聚模块时间内聚(经典内聚)模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。例:初始化系统模块系统结束模块、紧急故障处理模块等时间内聚(经典内聚)模块完成的功能必须在同一时间内执行,这些过程内聚(顺序性组合)模块内各处理成分相关,且必须以特定次序执行。过程内聚(顺序性组合)模块内各处理成分相关,且必须以特定次序通信内聚模块内各部分使用相同的输入数据,或产生相同的输出结果通信内聚模块内各部分使用相同的输入数据,或产生相同的输出结果顺序内聚模块完成多个功能,各功能都在同一数据结构上操作,每一功能有唯一入口。顺序内聚模块完成多个功能,各功能都在同一数据结构上操作,每一功能内聚模块仅包括为完成某个功能所必须的所有成分。模块所有成分共同完成一个功能,缺一不可内聚性最强功能内聚模块仅包括为完成某个功能所必须的所有成分。模块间内聚的类型模块间内聚的类型总结:耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。设计要求:低耦合,高内聚总结:耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的定5.3启发规则改进原则:高内聚、低耦合①改进软件结构,提高模块独立性②模块规模适中③深度、宽度、扇出和扇入适中④将模块的影响限制在控制范围内⑤降低模块接口的复杂性⑥设计单入口单出口的模块⑦模块功能可预测5.3启发规则改进原则:高内聚、低耦合①改进软件结构,提高模块独立性通过模块分解或合并,降低耦合提高内聚①改进软件结构,提高模块独立性通过模块分解或合并,降低耦合②模块规模适中模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂在考虑模块的独立性同时,为了增加可理解性,模块的大小最好在50一150条语句左右,可以用1一2页打印纸打印,便于人们阅读与研究。②模块规模适中模块过大:可理解程度下降③深度、宽度、扇出和扇入适中软件结构度量术语③深度、宽度、扇出和扇入适中软件结构度量术语例:避免平铺结构例:避免平铺结构增加中间层降低扇出增加中间层降低扇出作用域是指受模块内一个判定影响的所有模块的集合控制域是指这个模块本身及其所有的下属模块的集合④将模块的作用域限制在控制范围内作用域是指受模块内一个判定影响的所有模块的集合④将模块的作模块C的控制范围:C、D、E、F、G、H。如果模块C作出的决策影响了模块L,L超出了C的控制范围使任一模块的作用域在其控制域内模块C的控制范围:C、D、E、F、G⑤降低模块接口的复杂性接口传递信息应简单且和模块功能一致。模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。⑤降低模块接口的复杂性接口传递信息应简单且和模块功能一致。⑥设计单入口单出口的模块不要使模块间出现内容耦合。⑥设计单入口单出口的模块不要使模块间出现内容耦合。⑦模块功能可预测,但防止模块功能过分局限如果一个模块可以当作一个黑盒子,相同输入产生相同输出,其功能为可预测的。若模块带有内部“存储器”,其功能可能是不可预测的,难理解、难测试、难维护。单一的模块具有高内聚。但模块功能过分局限,可使用范围将过分狭窄,缺乏灵活性和扩充性。⑦模块功能可预测,但防止模块功能过分局限如果一个模块可以当5.4描绘软件结构的图形具5.4.1层次图和HIPO图描述软件的层次结构。层次图中,一个方框代表一个模块,方框间的连线表示调用关系。HIPO图=层次图+IPO图5.4描绘软件结构的图形具5.4.1层次图和正文加工系统层次图主控模块正文加工系统层次图主控模块酒店管理信息系统功能结构图酒店管理信息系统功能结构图5.4.2结构图(SCStructureChart)5.4.2结构图(SCStructureChart)主要成分说明:一个方框表示一个模块;一个模块指向另一个模块的箭头或直线,表示前一模块对后一模块的调用;调用直线边的小箭头,表示调用时从一个模块传给另一个模块的数据,也指出了传送方向。主要成分说明:SC中的四种模块从下属模块取得数据,经过处理,再传入上级模块从上级模块获得数据,经过处理,再传送给下属模块加工模块。从上级模块获得数据,经过处理,转换成其他形式,再送回上级模块。对所有下属模块进行协调和管理的模块SC中的四种模块从下属模块取得数据,经过处理,再传入上级模结构图(SC)举例结构图(SC)举例SC中的选择调用SC中的选择调用SC中的循环调用SC中的循环调用5.5面向数据流的设计方法5.5.1概念把信息流映射成软件结构,信息流的类型决定了映射的方法,信息流可分为两种类型变换型流事务型流5.5面向数据流的设计方法5.5.1概念变换型数据流基本模型特点:具有明确的传入、变换(或称主加工)和传出界面的DFD变换型数据流基本模型特点:具有明确的传入、变换(或称主加工)另一种表示图另一种表示图变换型数据流举例变换型数据流举例事务型数据流基本模型事务中心的任务:接受输入数据(事务)分析每个事务以确定它的类型。根据事务类型选取一条活动通路事务型数据流基本模型事务中心的任务:事务型数据流举例事务型数据流举例针对两种数据流的设计方法针对两种数据流的设计方法系统结构特征可归纳为两种典型形式系统结构特征可归纳为两种典型形式大型系统的DFD中,变换型和事务型往往共存大型系统的DFD中,变换型和事务型往往共存5.5.2变换分析例1:有如下数据流图5.5.2变换分析例1:有如下数据流图步骤1:区分输入、变换中心、输出部分,在DFD上标明分界线注意;所谓“输入”、“输出”是站在整个系统的角度来看的,是整个系统的输入、输出部分步骤1:区分输入、变换中心、输出部分,在DFD上标明分界步骤2:第一级分解。设计顶层和第一层模块步骤2:第一级分解。设计顶层和第一层模块第一级分解后SC的数据流第一级分解后SC的数据流步骤3:第二级分解。自顶向下分解SC各分支,设计出每个分支的中、下层模块步骤3:第二级分解。自顶向下分解SC各分支,设计出每个分1、传入分支的分解(1)1、传入分支的分解(1)1、传入分支的分解(2)若有必要,继续分解。以“输入金额”为例,可将此分支也看成一个变换型数据流得结构图:1、传入分支的分解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026海南海钢产业园投资开发有限公司招聘8人备考题库及答案详解(全优)
- 2026四川内江市隆昌市人民政府古湖街道办事处招聘2人备考题库带答案详解(基础题)
- 2026云南楚雄州永仁县发展和改革局政府购买服务人员招聘5人备考题库附答案详解(a卷)
- 2026湖南益阳市市直医疗卫生单位招聘及引进紧缺(急需)专业人才39人备考题库附答案详解(能力提升)
- 2026湖南郴州市第一人民医院招聘58人备考题库含答案详解(培优b卷)
- (二模)宜春市2026年高三模拟考试语文试卷(含答案详解)
- 心理咨询服务合同模板
- 2026广东珠海市拱北海关缉私局警务辅助人员招聘6人备考题库及参考答案详解ab卷
- 2026贵州黔南州荔波县事业单位引进高层次人才和急需紧缺专业人才18人备考题库附参考答案详解(综合卷)
- 2026新疆克州柔性引进紧缺人才招募82人备考题库及参考答案详解(预热题)
- 2026年安全员之C证(专职安全员)考试题库500道附参考答案【完整版】
- 《用事实说话-透明化沟通的8项原则》读书笔记
- 《海洋工程设计基础》课件-第二章 海洋平台载荷
- 我国城市流浪犬猫安置的现状与分析
- (2021-2025)五年高考英语真题分类汇编专题16 完形填空(10空和20空)(全国)(原卷版)
- T-ZZB 2691-2022 塔式起重机司机室
- 金融交易操盘手实战技能训练手册
- 清华最难的数学试卷
- 2024-2025学年广东省深圳市龙华区六年级下册期末英语检测试题(附答案)
- 物料防呆管理办法
- 全国课一等奖统编版语文七年级上册《我的白鸽》公开课课件
评论
0/150
提交评论