【教学课件】第三章软件设计.ppt
《【教学课件】第三章软件设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三章软件设计.ppt(101页珍藏版)》请在三一办公上搜索。
1、第三章 软件设计,3.1 软件设计的基本任务3.总体设计(SD)3.3 详细设计(SD)3.4 面向对象的设计3.5 用户界面设计3.6 设计质量的度量 3.7 软件设计CASE工具,3.1 软件设计的基本任务总体设计,总体设计的基本任务概要地回答系统应该如何实现总体设计的两项任务:划分出组成系统的物理元素-程序、文件、数据库、人工过程和文档设计软件的结构-确定每个程序的模块组成及模块之间的相互关系。总体设计的过程:系统设计:确定系统的具体实现方案。结构设计:确定软件结构。,3.1 软件设计的基本任务总体设计(续),3.1 软件设计的基本任务(续),详细设计的基本任务详细设计是总体设计的进一步
2、具体化,主要确定每个模块的具体执行过程具体任务如下:1)为每个模块进行详细的算法设计2)为模块内的数据结构进行设计3)对数据库进行物理设计4)界面设计5)其他设计6)编写文档7)评审,3.总体设计(SD),在软件设计中,要遵循一些基本的软件设计原理。1 模块化把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的求解。模块是由边界元素限定的相邻程序元素(例如数据说明,可执行的语句)的序列,而且有个总体标识符代表它。,C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2),3.总体设计(SD),2 模块独立性每个模块完
3、成一个相对独立的子 功能,并且和其他模块之间的关 系很简单耦合和内聚两个定性标准度量 耦合:一个软件结构内不同模块之间互连程度的度量。数据耦合:模块之间通过参数交换数据信息。控制耦合:模块之间传递的参数含有控制信息。公共环境耦合:两个或多个模块通过一个公共数据环境相互作用。内容耦合:。,设计原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合,完全不用内容耦合。,数据耦合,控制耦合,公共环境耦合,内容耦合,低,高,耦合,非直接耦合数据耦合特征耦合控制耦合5。公共环境耦合6。内容耦合,弱耦合,中耦合,较强耦合,强耦合,模块1,模块2,模块3,模块4,数据耦合通过简单变量交换数据,特征耦合通过数
4、据结构交换数据,非直接耦合模块之间没有信息传递,模块A,模块B,模块C,模块D,模块L,模块N,Flag=1?,S1,S2,模块1,控制耦合模块之间传递的是控制信息,T,F,模块A,模块B,内容耦合 访问其它模块的内部数据 直接跳到其他模块内部执行,公共环境耦合通过公共数据环境相互作用,内聚:一个模块内各个元素彼此结合的紧密程度。偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。逻辑内聚:若干个逻辑功能类似的任务组成一个模块。时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。,低内聚,中内聚,高内聚,过程内聚:模块内的处理元素是相关的,且必须以特定次序执行。通信内聚:模块
5、中所有元素都使用同一个输入数据,和/或产生同一个 输出数据。,顺序内聚:模块中所有处理元素和同一个功能密切相关,且这些处理必 须顺序执行,通常上一个任务的输出是下一个任务的输入。功能内聚:所有处理元素属于一个整体,完成一个单一的功能。,3.总体设计(SD),3 抽象与细化在抽象的最高层次使用问题环境语言,以概括的方式叙述问题的解法在较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现的 术语结合起来叙述问题的解法在最低的抽象层次用可以直接实现的方式叙述问题的解法细化与抽象是紧密相关的,在软件过程的每一步都是对软件解法的抽象层次的一次细化,3.总体设计(SD),3 信息隐蔽在设计和确定模块
6、时,使一个模块包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。在面向对象方法中,对象的封装性很自然地支持了信息隐蔽地思想。在结构化方法中,要求模块内地信息要局部化4可重用性同一事物不做修改或稍加修改就能够多次重复使用重用(再生 复用)软件复用:数据复用、模块复用、结构复用、设计复用和规格说明书复用,3.总体设计(SD),启发式规则人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得出了一些启发式规则。这些启发式规则虽然不像上一节讲述的基本原理和概念那样普遍适用,但是在许多场合仍然能给软件工程师以有益的启示,往往能帮助他们找到改进软件设计提高软件质量的途径。下面介
7、绍几条启发式规则 改进软件结构提高模块独立性 模块规模应该适中 深度、宽度、扇入、扇出都应适当 模块的作用域应该在控制域之内 力争降低模块接口的复杂程度 设计单入口单出口的模块 模块的功能应该可以预测,3.总体设计(SD),1.改进软件结构提高模块独立性设计出软件的初步结构以后,应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚。例如,多个模块公有的一个子功能可以独立成一个模块,由这些模块调用;有时可以通过分解或合并模块以减少控制信息的传递及对全程数据的引用,并且降低接口的复杂程度。2.模块规模应该适中经验表明,一个模块的规模不应过大,最好能写在一页纸内(通常不超过60行语句)。有
8、人从心理学角度研究得知,当一个模块包含的语句数超过30以后,模块的可理解程度迅速下降。过大的模块往往是由于分解不充分,但是进一步分解必须符合问题结构,一般说来,分解后不应该降低模块独立性。过小的模块开销大于有效操作,而且模块数目过多将使系统接口复杂。因此过小的模块有时不值得单独存在,特别是只有一个模块调用它时,通常可以把它合并到上级模块中去而不必单独存在。,3.总体设计(SD),3.深度、宽度、扇出和扇入都应适当深度:表示软件结构中控制的层数。它往往能粗略地标志一个系统的大小和复杂程度。深度和程序长度之间应该有粗略的对应关系,当然这个对应关系是在一定范围内变化的。如果层数过多则应该考虑是否有许
9、多管理模块过分简单了,能否适当合并。宽度:软件结构内同一个层次上的模块总数的最大值。一般说来,宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出。,3.总体设计(SD),扇出:一个模块直接控制(调用)的模块数目,扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块;扇出过小(例如总是1)也不好。经验表明,一个设计得好的典型系统的平均扇出通常是3或4(扇出的上限通常是59)。扇出太大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块。扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。当然分解模块或合并模块必须符合问题结构,不能违背模块独立原理。扇入:表示
10、被多少个上级模块调用它扇入越大则共享该模块地上级模块数目越多,这是有好处的,但不能违背模块独立性原理。,3.总体设计(SD),4.模块的作用域应该在控制域之内模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。例如,在图中模块A的控制域是A、B、C、D、E、F等模块的集合。在一个设计得很好的系统中,所有受判定影响的模块应该都从属于做出判定的那个模块,最好局限于做出判定的那个模块本身及它的直属下级模块,3.总体设计(SD),5.力争降低模块接口的复杂程度模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息
11、传递简单并且和模块的功能一致。接口复杂或不一致(即看起来传递的数据之间没有联系),是紧耦合或低内聚的征兆,应该重新分析这个模块的独立性。6.设计单入口单出口的模块这条启发式规则警告软件工程师不要使模块间出现内容耦合。当从顶部进入模块并且从底部退出来时,软件是比较容易理解的,因此也是比较容易维护的。,3.总体设计(SD),7.模块功能应该可以预测模块的功能应该能够预测,但也要防止模块功能过分局限。如果一个模块可以当做一个黑盒子,也就是说,只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。带有内部“存储器”的模块的功能可能是不可预测的,因为它的输出可能取决于内部存储器(例如某个标记
12、)的状态。由于内部存储器对于上级模块而言是不可见的,所以这样的模块既不易理解又难于测试和维护。,3.总体设计(SD),描绘软件结构的图形工具层次图和HIPO图层次图用来描绘软件的层次结构。层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系。层次图很适于在自顶向下设计软件的过程中使用。,3.总体设计(SD),HIPO图是美国IBM公司发明的“层次图加输入/处理/输出图”的英文缩写。为了能使HIPO图具有可追踪性,在H图(层次图)里除了最顶层的方框之外,每个方框都加了编号。和H图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模块的处理过程。HIPO图中的每张IPO图内都应该明显地标
13、出它所描绘的模块在H图中的编号,以便追踪了解这个模块在软件结构中的位置。,3.总体设计(SD),结构图Yourdon提出的结构图是进行软件结构设计的另一个有力工具。结构图和层次图类似,也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。因为按照惯例总是图中位于上方的方框代表的模块调用下方的模块,即使不用箭头也不会产生二义性,为了简单起见,可以只用直线而不用箭头表示模块间的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状
14、来区分:尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。,3.总体设计(SD),以上介绍的是结构图的基本符号,也就是最经常使用的符号。此外还有一些附加的符号,可以表示模块的选择调用或循环调用。图5.6表示当模块M中某个判定为真时调用模块A,为假时调用模块B。,3.总体设计(SD),判定为真时调用A,为假时调用B,模块M循环调用模块A、B、C,3.总体设计(SD),注意,层次图和结构图并不严格表示模块的调用次序。虽然多数人习惯于按调用次序从左到右画模块,但并没有这种规定,出于其他方面的考虑(例如为了减少交叉线),也完全可以不按这种次序画。此外,层次图和结构图并不指明什么时候调用下层模块
15、。通常上层模块中除了调用下层模块的语句之外还有其他语句,究竟是先执行调用下层模块的语句还是先执行其他语句,在图中丝毫没有指明。事实上,层次图和结构图只表明一个模块调用那些模块,至于模块内还有没有其他成分则完全没有表示。,3.总体设计(SD),通常用层次图作为描绘软件结构的文档。结构图作为文档并不很合适,因为图上包含的信息太多有时反而降低了清晰程度。但是,利用IPO图或数据字典中的信息得到模块调用时传递的信息,从而由层次图导出结构图的过程,却可以作为检查设计正确性和评价模块独立性的好方法。传送的每个数据元素都是完成模块功能所必须的吗?反之,完成模块功能必须的每个数据元素都传送来了吗?所有数据元素
16、都只和单一的功能有关吗?如果发现结构图上模块间的联系不容易解释,则应该考虑是否设计上有问题。,面向数据流的设计方法面向数据流的设计方法的目标是给出设计软件结构的一个系统化的途径在软件工程的需求分析阶段,信息流是一个关键考虑,通常用数据流图描绘信息在系统中加工和流动的情况。面向数据流的设计方法定义了一些不同的“映射”,利用这些映射可以把数据流图变换成软件结构。因为任何软件系统都可以用数据流图表示,所以面向数据流的设计方法理论上可以设计任何软件的结构。通常所说的结构化设计方法(简称SD方法),也就是基于数据流的设计方法。,3.总体设计(SD),相关概念面向数据流的设计方法把信息流映射成软件结构,信
17、息流的类型决定了映射的方法。信息流有下述两种类型。1.变换流参看图,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流图具有这些特征时,这种信息流就叫作变换流。,3.总体设计(SD),2.事务流基本系统模型意味着变换流,因此,原则上所有信息流都可以归结为这一类。但是,当数据流图具有和下图类似的形状时,这种数据流是“以事务为中心的”,也就是说,数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流。图5.9中的处理T称为事
18、务中心,它完成下述任务:(1)接收输入数据(输入数据又称为事务);(2)分析每个事务以确定它的类型;(3)根据事务类型选取一条活动通路。,3.总体设计(SD),面向数据流的设计方法,时间,输入流,输出流,变换流,事务,外部表示,内部表示,信息,T,事务中心,活动通路,事务中心 T 完成下述任务:接受输入数据(事务)分析每个事务以确定它的类型根据事务类型选取一条活动通路,精化数据流图,事务分析,变换分析,变换分析:汽车数字仪表板功能:1)通过A/D 转换实现传感器和微处理器接口,2)在发光二极管面板上显示数据,3)指示每小时英里数(mph),行驶的里程,每加伦油行驶的英里数(mpg)等等。4)指
19、示加速或减速;5)超速警告:如果车速超过55英里/小时,则发出超速警告铃声。,A/D,转数计数器,流量传感器,微处理机,里程表,车速表,油效表,油管系统,加速/减速指示,超速报警,设计步骤:,1复查基本系统模型,4 确定输入流 和输出流 的 边界,划分 变换或 事务 中心,5完成“第一级分解”,设计步骤:,复查基本系统模型,复查并精化数据流图,确定数据流图具有变换特性还是事务特性,确定输入流和输出流的边界,划分变换或事务中心,完成“第一级分解”,Cm,Ca,Ct,Ce,第一级分解的方法,A,D,B,C,Cm,Ca,C,B,D,A,接受传感器 信 号,转换成rpm,收集SPS,读旋转信号,计算g
20、ph,读燃料流,数字仪表板 控 制,确 定加/减速,计算mph,计算gpg,计算里程,驱动仪表板,加速/减速显示,显示mpg,显示mph,显示里程,发出铃声,发光二极管显示,6进行“第二级”分解,数字仪表板 控 制,接受传感器 信 号,转换成rpm,读旋转信号,计算gph,读燃料流,数字仪表板 控 制,确 定加/减速,计算mph,计算gpg,计算里程,驱动仪表板,加速/减速显示,显示mpg,显示mph,显示里程,发出铃声,发光二极管显示,数字仪表板软件系统经过调整后的结构图,注意:红色模块的位置有所调整,7对软件结构进一步精化,事务分析,4,3,2,总 控,接收通路,C通路,B通路,A通路,调
21、 度,A_CTL,1,4,2+1,3,2,1,B_CTL,C_CTL,设计优化先使系统工作起来,然后使它快起来。,数据流图,软件结构,3.3 详细设计(SD),目标:确定应该怎样具体地实现所要求的系统。作用:在总体设计阶段采用自顶向下逐步求精的方法,可以把一个复杂问题的解法分解和细化成一个由多个模块组成的层次结构的软件系统。而在详细设计或编码阶段可采用自顶向下逐步求精的方法,可以把一个模块的功能逐步分解、细化为一系列的具体处理描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序,3.3 详细设计(SD),结构程序设计 E.W.Dijstra与Goto语句,1966,Bohm
22、 和 Jacobini 证明了只要顺序、选择、循环这三种基本结构就能实现任何单入口单出口的程序。,结构程序设计:一种程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。并且尽可能少用GO TO语句的程序设计方法。,使用结构化程序设计技术的好处:1可以显著提高软件开发工程的成功率和生产率2层次结构清晰,容易阅读和理解3容易保证程序的正确性和纠正错误(单入口、单出口)4源程序代码精晰流畅,易读易懂易测试5可重用代码量大(在修改或重新设计时)6程序的逻辑结构清晰,有利于程序正确性证明7不足之处:存储容量和运行时间有所增加(增10%20%),1、程序流程图(程序框图),开始或停止,
23、准备,选择,多分支选择,注释,预先定义的处理,子程序,循环下界,循环上界,处理,控制流,3.3 详细设计(SD),3.3 详细设计(SD),1、程序流程图(程序框图),循环的标准符号 注解的使用,2 盒图(N_S图),S1,S2,S3,条件,F,T,Else部分,Then部分,Case 条件,值1,值2,。,值n,Case 1部分,Case 2部分,Case n部分,循环条件,Do-While 部分,循环条件,Do-Until 部分,A,特点:1)功能域(既一个特定控制结构的作用域)明确 2)不可能任意转移控制 3)很容易确定局部和全程数据的作用域 4)很容易表现嵌套关系,也可以表示模块的层次
24、结构,3 PAD 图,P1,P2,P1,P2,条件C,Pn,P2,P1,WHILE C,P,UNTIL C,P,def,顺序,选择,Case 型多分支选择,当型循环,直到型循环,语句标号,定义,3 PAD 图,P1,P2,P3,P4,C,P5,P2,def,P6,P3,P8,C,Until C3,UNTIL C2,P9,P10,PAD图的主要优点:使用PAD符号设计的程序必然是结构化的程序.PAD图所描绘的程序结构十分清晰.用PAD图表现程序逻辑,易读,易记,易懂.容易将PAD图 转换成高级语言源程序.可用软件工具实现自动转换.即可以表示程序逻辑,也可以描绘数据结构.支持自顶向下,逐步求精方法
25、的使用.,例:N-S图与PAD的转换,4、判定表,程序流程图、N-S图、PAD图或过程设计语言(PDL)都不易清楚的描述含有多重嵌套的条件选择。判定表可以清晰的表示复杂的条件组合与其对应的处理之间的关系。,例子 假设某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量 超过30公斤时,对头等舱的国内乘客超重部分每公斤收费 4 元,对其它舱的国内 乘客超重部分每公斤收费 6 元,对外国乘客超重部分每公斤收费比国内乘客多一 倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表来表示与上述 每种条件组合相对应的动作。,所有条件,条件组合矩阵,与每种条件组合所对应的动作表,所有可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第三 软件设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5679264.html