第总体设计学习.pptx

上传人:莉*** 文档编号:77739828 上传时间:2023-03-16 格式:PPTX 页数:87 大小:1.71MB
返回 下载 相关 举报
第总体设计学习.pptx_第1页
第1页 / 共87页
第总体设计学习.pptx_第2页
第2页 / 共87页
点击查看更多>>
资源描述

《第总体设计学习.pptx》由会员分享,可在线阅读,更多相关《第总体设计学习.pptx(87页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 重点和难点重点:软件设计过程中应遵循的基本原理;面向数据流的设计方法难点:变换分析、事务分析法的过程和应用第1页/共87页2 前言前言 软件设计概述软件设计概述需求评审通过以后,软件过程进入到设计阶段,设计结果又将是实现的直接依据;软件系统设计是把软件需求“变换”为用于构造软件的蓝图;“输入”是需求分析各种模型元素“输出”是软件设计模型和表示软件设计是后续开发步骤及软件维护工作的基础,如果没有设计,只能建立一个不稳定的系统结构。第2页/共87页3 软件设计的目标和任务软件需求:解决“做什么”软件设计:解决“怎么做”软件设计的任务:以软件需求规格说明书为依据,着手实现软件的需求,并将设计的结

2、果反映在“设计规格说明书”文档中。软件设计的重要性:是软件开发阶段的第一步,最终影响软件实现的成败和软件维护的难易程度。第3页/共87页4 将需求分析摸型转换为软件设计软件结构设计以需求分析中得到的数据流图为基础而进行。第4页/共87页5 软件设计的两个阶段软件设计分为两个阶段:概要设计、详细设计。概要设计也称总体设计,确定软件的结构以及各组成成分(子系统或模块)之间的相互关系(接口)。概要设计的主要任务是:方案设计:考虑系统的总体布局(集中、分布),c/s或b/s模式;将系统划分成模块;决定每个模块的功能;决定模块的调用关系;决定模块的界面,即模块间传递的数据。概要设计阶段的主要任务是通过数

3、据流图来确定系统的结构图,并且对这些结构图进行分析和细化。在概要设计阶段,结构化设计主要采用面向数据流的设计方法。第5页/共87页6 软件设计的两个阶段第二阶段:详细设计(过程设计)确定模块内部的算法和数据结构;选定某种过程的表达形式来描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评审。第6页/共87页7 5.1 总体设计的过程第7页/共87页8 5.2 设计原理模块化抽象逐步求精信息隐蔽和局部化模块独立第8页/共87页9 5.2.1 模块化(Modularity)模块,在程序中是数据说明、可执行语句等程序内容的集合。该集合一般是因完成一个功能放在一起。在形式上,它可以是高级语言中

4、的一个过程、函数和子程序等。在软件的构架中,模块是可以组合、分解和更换的单元。模块具有以下几种基本特点:(1)接口:指模块输入与输出。(2)功能:是模块存在的必要条件,模块必然是为实现某个功能而延生的。(3)逻辑:指模块内部的算法逻辑。功能、状态与接口反映模块的外部特性,逻辑反映它的内部特性。第9页/共87页10 模块化的优点 采取自顶向下的方式,逐层把软件系统划分成若干可单独命名和可编址的部分“模块”,每个模块完成一个特定的子功能,“分而治之”;所有模块按某种方法组成一个整体,完成整个系统所要求的功能。软件系统就是通过这些模块的组合来实现。模块化是软件解决复杂问题所具备的手段。l模块化使软件

5、容易测试和调试,因而有助提高软件的可靠性。l模块化能提高软件的可修改性。l模块化有助于软件开发工程的组织管理。第10页/共87页11 模块化与软件成本的关系第11页/共87页12 抽象(Abstraction)什么是抽象?认识复杂事物和现象时,抽出事物本质的共同特性而暂不考虑它们的细节。软件开发中的抽象过程的抽象数据的抽象宜宾学院计算机学宜宾学院计算机学院院08级学生级学生宜宾学院计算机宜宾学院计算机学院学生学院学生宜宾学院宜宾学院软件开发实际上就是一个从软件开发实际上就是一个从高层次抽象高层次抽象到到低层次抽低层次抽象象逐步过渡的过程。逐步过渡的过程。第12页/共87页13 5.2.3 逐步

6、求精逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。可把逐步求精看作是一项把一个时期内必须解决的种种问题按优先级排序的技术。逐步求精是一种自顶向下的设计策略,按这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。第13页/共87页14 自顶向下,逐步求精的基本思想l将功能、信息的说明分为多个层次,最高层也最抽象 仅仅只是概念性地描述功能或信息,不提供功能的内部工作情况或信息的内部结构;l设计者从最高层开始,仔细推敲,进行功能和信息的细化,给出下层实现的细节;l随着每个后续细化逐步的完成,提供越来越多的细节,最终得出用程序设计语言表达的程序。第14页/共87页1

7、5 结合了模块化和逐步细化思想建立的软件结构图第15页/共87页16 5.2.4信息隐蔽和局部化信息隐蔽:在设计和确定模块时,使得一个模块内包含的信息(过程或数据),不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。具体讲有两个方面:()软件内部的过程,在外部是不应该直接被调用的()模块内部的数据,必须严格设计其可见性公共受保护私有局部化:将一些关系密切的软件元素物理地放得彼此靠近。第16页/共87页17 5.2.5 模块独立1、什么是模块独立性(module independence)模块只完成系统要求的相对独立的功能l符合信息隐蔽原则l模块间关联和依赖

8、程度尽量小 2、模块独立的优点容易开发、测试和维护第17页/共87页18 3、衡量模块独立性的两个准则 耦合性(coupling):也称为块间联系,一个模块被连接到系统其它模块的程度。内聚性(cohesion):也称为块内联系或模块强度,模块独立性愈高,则块内联系越强,块间联系越弱。第18页/共87页19 耦合性(coupling)也称块间的联系。是对软件系统结构中,各模块间相互联系紧密程度的一种度量。设计目标:低耦合第19页/共87页20 模块间耦合强度耦合强弱,表现出相应的模块间接口的复杂程度。耦合强弱,表现出相应的模块间接口的复杂程度。尽量使用数据耦合,少用控制耦合和特征耦合,限制公共耦

9、合,不用内容耦合。尽量使用数据耦合,少用控制耦合和特征耦合,限制公共耦合,不用内容耦合。第20页/共87页21 无直接藕合两个模块没有直接关系,模块独立性最强。第21页/共87页22 数据耦合属松散耦合。一模块访问另一模块时,通过数据参数交换输入、输出信息。第22页/共87页23 控制藕合模块之间传递的是控制信息(如开关、标志、名字等),控制被调用模块的内部逻辑。第23页/共87页24 控制耦合举例第24页/共87页25 特征耦合两个模块通过传递数据结构(日期)加以联系,或都与一个数据结构有关系,则称这两个模块间存在特征耦合。可能出现的情况:当把整个数据结构作为参数传递时,被调用的模块虽然只需

10、要使用其中的一部分数据元素,但实际可以使用的数据多于它真正需要的数据,这将导致对数据访问失去控制,第25页/共87页26 特征耦合举例说明:l“住户情况”是一个数据结构,图中模块都与此数据结构有关。l“计算水费”和“计算电费”本无关,由于引用了此数据结构产生依赖关系,它们之间也是标记偶合。第26页/共87页27 将特征耦合修改为数据耦合举例第27页/共87页28 公共环境耦合一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:l全局数据结构。l共享通讯区。l内存公共覆盖区等第28页/共87页29 公共环境耦合举例模块 A、B、C 间存在错综复杂的联系第29页/共87页3

11、0 内容耦合有下列情况之一的。是最不好的耦合形式!第30页/共87页31 内聚性(cohesion)又称块内联系。指一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系的越紧密,则它的内聚性就越设计目标:高内聚第31页/共87页32 模块间内聚的类型第32页/共87页33 巧合内聚(偶然内聚)块内各组成成份在功能上是互不相关的。模块模块 M 中的三个语句没有任何联系。中的三个语句没有任何联系。缺点:可理解性差,可修改性差缺点:可理解性差,可修改性差第33页/共87页34 逻辑内聚把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确

12、定执行哪种功能。第34页/共87页35 时间内聚(经典内聚)模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。例:初始化系统模块系统结束模块、紧急故障处理模块等第35页/共87页36 过程内聚(顺序性组合)模块内各处理成分相关,且必须以特定次序执行。第36页/共87页37 通信内聚模块内各部分使用相同的输入数据,或产生相同的输出结果第37页/共87页38 顺序内聚模块完成多个功能,各功能都在同一数据结构上操作,每一功能有唯一入口。第38页/共87页39 功能内聚模块仅包括为完成某个功能所必须的所有成分。模块所有成分共同完成一个功能,缺一不可内聚性最强第39页/共87页40 总

13、结:耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。设计要求:低耦合,高内聚第40页/共87页41 5.3 启发规则改进原则:高内聚、低耦合 改进软件结构,提高模块独立性 模块规模适中 深度、宽度、扇出和扇入适中 将模块的影响限制在控制范围内 降低模块接口的复杂性 设计单入口单出口的模块 模块功能可预测第41页/共87页42 改进软件结构,提高模块独立性通过模块分解或合并,降低耦合提高内聚第42页/共87页43 模块规模适中模块过大:可理解程度下降模块过小:开销大,有效操作系统接口复杂 在

14、考虑模块的独立性同时,为了增加可理解性,模块的大小最好在 50 一 150 条语句左右,可以用 1 一 2 页打印纸打印,便于人们阅读与研究。第43页/共87页44 深度、宽度、扇出和扇入适中深度:指结构图控制的层次,也是模块的层数。图8-4中的结构图的深度为4。能粗略表示一个系统的大小和复杂程度,深度和程序长度之间存在着某种对应关系。宽度:指一层中最大的模块个数。图8-4中的结构图的宽度为6。一般来说,结构的宽度越大,则系统就越复杂。扇出:指一个模块直接下属模块的个数。图8-4中的结构图的顶层黄色模块的扇出为3。扇出过大,表示模块过分复杂,需要控制和协调的下级模块太多。扇出的上限一般为 59

15、,平均一般为3或4。扇入:指一个模块直接上属模块的个数。图8-4中的结构图的底层蓝色模块的扇入为2。扇入过大,意味着共享该模块的上级模块数目多,这有一定的益处,但是决不能违背模块的独立性原则而片面追求高扇入。第44页/共87页45 第45页/共87页46 作用域是指受模块内一个判定影响的所有模块的集合控制域是指这个模块本身及其所有的下属模块的集合 将模块的影响限制在控制范围内模块模块 C 的控制范围:的控制范围:C、D、E、F、G、H。如果模块如果模块 C 作出的决作出的决策影响了模块策影响了模块 L,L超出了超出了 C 的控制范围的控制范围第46页/共87页47 降低模块接口的复杂性接口传递

16、信息应简单且和模块功能一致。模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。第47页/共87页48 设计单入口单出口的模块不要使模块间出现内容耦合。第48页/共87页49 模块功能可预测,但防止模块功能过分局限如果一个模块可以当作一个黑盒子,相同输入产生相同输出,其功能为可预测的。若模块带有内部“存储器”,其功能可能是不可预测的,难理解、难测试、难维护。单一的模块具有高内聚。但模块功能过分局限,可使用范围将过分狭窄,缺乏灵活性和扩充性。第49页/共87页50 5.4 描绘软件结构的图形工具 5.4.1 层次图和 HIPO 图描述软件的层次结构。层次图中,一个方框代表一个模块,

17、方框间的连线表示调用关系。层次图层次图主控模块第50页/共87页HIPO 图=层次图 IPO 图(b)IPO图第51页/共87页52 结构图(SC Structure Chart)结构图的例子第52页/共87页53 主要成分说明:l一个方框表示一个模块;l一个模块指向另一个模块的箭头或直线,表示前一模块对后一模块的调用;l调用直线边的小箭头,表示调用时从一个模块传给另一个模块的数据,也指出了传送方向。第53页/共87页54 SC中的选择调用第54页/共87页55 SC中的循环调用第55页/共87页56 5.5 面向数据流的设计方法5.5.1 概念把信息流映射成软件结构,信息流的类型决定了映射的

18、方法,信息流可分为两种类型l变换型流l事务型流第56页/共87页57 变换型数据流基本模型特点:具有明确的传入、变换(或称主加工)和传出界面的 DFD第57页/共87页58 另一种表示图第58页/共87页59 变换型数据流举例第59页/共87页60 事务型数据流基本模型事务中心的任务:事务中心的任务:接受输入数据(事务)接受输入数据(事务)分析每个事务以确定它的类型。分析每个事务以确定它的类型。根据事务类型选取一条活动通路根据事务类型选取一条活动通路第60页/共87页61 事务型数据流举例事务选择确定事务类型审计记录事务1事务2事务3事务4审计信息事务5更新事务v有效事务查询更新事务w有效事务

19、存款更新事务x有效事务取款更新事务y有效事务转账更新事务z有效事务修改密码第61页/共87页62 ATM机系统结构机系统结构ATM机处理事务主控调度器更新文件查询编辑事务分析器事务选择存款转账取款修改密码第62页/共87页63 针对两种数据流的设计方法第63页/共87页64 系统结构特征可归纳为两种典型形式第64页/共87页65 附:混合流设计大型系统的 DFD 中,变换型和事务型往往共存第65页/共87页66 5.5.2 变换分析第66页/共87页67 变换流设计策略变换流设计策略变换流设计的要点是分析数据流图,确定输入流、输出流边界,根据输入、变换、输出三个数据流分支将软件映射成一个标准的

20、“树型”体系结构。在有多个输入流和多个输出流时,应分别找出各个输入流和输出流的边界,即最高抽象点,然后分别连接这些输入流的最高抽象点和输出流的最高抽象点,分别形成输入边界和输出边界。下面设计一个“统计输入文件中单词数目”程序。输入流边界 输出流边界有效的文件名单词总数格式化单词数验证文件名统计单词数格式化单词数读文件名文件名单词总数显示单词数文件名第67页/共87页68 第一次分解第一次分解文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数第68页/共87页69 第二次分解第二次分解文件单词数目统计读取和验证文件名统计单词数目格式化和显示单词数格式化单词数显示单词数读文件名验证文件

21、名第69页/共87页70 5.5.2 变换分析第70页/共87页71 5.5.2 变换分析例1:有如下数据流图第71页/共87页72 步骤1:区分输入、变换中心、输出部分,在 DFD 上标明分界线注意;所谓注意;所谓“输入输入”、“输出输出”是站在整个系统的角度来看是站在整个系统的角度来看的,是整个系统的输入、输出部分的,是整个系统的输入、输出部分第72页/共87页73 步骤2:第一级分解。设计顶层和第一层模块第73页/共87页74 步骤3:第二级分解。自顶向下分解 SC 各分支,设计出每个分支的中、下层模块未经精华的输入结构第74页/共87页75 1、传入分支的分解(1)第75页/共87页7

22、6 2.传出分支的分解第76页/共87页77 3、中心加工分支的分解第77页/共87页78 第78页/共87页79 事务分析当数据流具有明显的事务特征时,应该采用事务流的分析方法基本步骤步骤1.复审基本系统模型步骤2.复审和精化数据流图步骤3.确定数据流图的类型:变换流还是事务流第79页/共87页80 步骤4.识别事务流各个组成部分把整个事务型DFD划分为以下三个部分 接受路径部分:接受事务的输入 事务处理中心 动作路径部分判定在每一条动作路径上数据流的特征:变换流或者事务流第80页/共87页81 事务型DFD划分例子第81页/共87页82 步骤5.把事务型DFD映射为软件结构第82页/共87页83 步骤6.分解精化事务结构以及每个动作路径第83页/共87页84 步骤7.精化初步软件结构第84页/共87页85 总结:面向数据流设计方法的设计步骤1.精化 DFD 2.确定 DFD 类型 3.把 DFD 映射到系统模块结构,设计模块结构的上层4.基于 DFD逐步分解高层模块,设计下层模块5.根据模块独立性原理,精化模块结构 6.对模块接口进行描述第85页/共87页86 作业:教材 P114 面第 3 题第1小题,(1)储蓄系统(教材 P73 面)软件结构第86页/共87页87 感谢您的观看!第87页/共87页

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

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁