【文档说明】软件工程导论05课件.ppt,共(76)页,785.012 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44988.html
以下为本文档部分文字说明:
主讲教师:丁月华Email:ding_mickey@sina.com总体设计5-2WHPU5.1设计过程5.2设计原理5.3启发规则5.4描绘软件结构的图形工具5.5面向数据流的设计方法5.6小结习题5-3WHPU5.1设计过程设想供选择的方案选取合理的方案
推荐最佳方案功能分解设计软件结构设计数据库制定测试计划书写文档5-4WHPU个人成果,妥善保存,请勿传播分析模型和设计模型的转换将分析模型转换为软件设计5-5WHPU个人成果,妥善保存,请勿传播软件设计是后续开发步骤及软件维护工作基础如果没有设计,只能建
立一个不稳定的系统结构5-6WHPU个人成果,妥善保存,请勿传播软件设计的任务从工程管理的角度来看,软件设计分两步完成总体设计(概要设计),将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对结构表示进行细化,得到软件详细
的数据结构和算法。5-7WHPU5.1设计过程设想供选择的方案提出各种可能的实现方案以需求分析阶段的数据流图为出发点,画自动化边界,形成不同的实现系统方案设想把数据流图中的处理分组的各种可能方法,抛弃在技术
上行不通的分组方法余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统5-8WHPU5.1设计过程选取合理的方案从前一步得到的一系列供选择的方案中选取若干个合理的方案①通常至少选取低成本、中等成本和高成本的三种方案①系统流程图②③成本/④实现这个系统的进度计划5
-9WHPU5.1设计过程推荐最佳方案综合分析对比各种合理方案的利弊,从中选出一种自己认为是最理想的方案推荐用户和技术专家应认真审查所推荐的最佳系统如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批在使用部门的负
责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段结构设计5-10WHPU功能分解首先是进行结构设计,确定系统是由哪些模块组成的,以及这些模块之间的关系①确定软件体系结构、数据结构其次是过程设计,
确定每个模块的处理过程①确定详细的数据结构、算法为确定软件结构①首先需要从实现角度把复杂的功能进一步分解②用算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单
的功能③应该使每个功能对大多数程序员而言都是明显易懂的④工具:系统层次图SystemDesignHierarchy及(输入/输出图)HIPO5-11WHPU设计软件结构任务:确定模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块
,从而完成程序的一个子功能,最下层的模块完成最具体的功能:方法:①层次图②结构图③面向数据流的设计方法5-12WHPU设计数据库任务:在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库①模式设计:确定数据库的逻辑结构,常见的数据库形式有关系、层次或网状等②子模式设
计:为系统中各用户设计出各自的数据视图③存储模式设计:确定数据库的空间需求、存储格式、索引组成等5-13WHPU制定测试计划优点:早期阶段考虑测试问题促使软件设计人员在设计时注意提高软件的可测试性5-1
4WHPU书写文档系统说明主要内容①系统流程图:描绘系统构成方案、组成系统的物理元素②成本/效益分析③对最佳方案的概括描述、精化的数据流图④用层次图或结构图描绘的软件结构⑤用IPO图或其它工具简要描述各个模块的算法⑥模块间接口关系、建立需
求、功能和模块三者之间的交叉参照关系用户手册根据总体设计阶段的结果,修改更正在需求分析阶段产生的初步的用户手册。测试计划包括测试策略,测试方案,预期的测试结果,测试进度计划等等。详细的实现计划数据库设计结果5-1
5WHPU审查和复审技术审查管理复审:部门的负责人从事5-16WHPU5.2设计原理5.2.1模块化5.2.2抽象5.2.3逐步求精5.2.4信息隐藏和局部化5.2.5模块独立5-17WHPU5.2.1模块化模块:由边
界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它模块化:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。5-18WHPU模块化依据:设函
数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。对于两个问题P1和P2如果C(P1)>C(P2),显然E(P1)>E(P2)C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P
1)+E(P2)结论:如果一个问题由P1和P2两个问题组合而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度之和,即把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了5-19WHPU模块化和软件成本关系说明当模块数目增加时每个模块的规模
将减小,开发单个模块需要的成本(工作量)确实减少了但是,随着模块数目增加,设计模块间接口所需要的工作量也将增加5-20WHPU模块化优点软件结构清晰使软件容易测试和调试,提高软件的可靠性模块化能够提高软件的可修改性5-21WHPU5.2.2抽象定义:抽出事物的
本质特性而暂时不考虑它们的细节,忽略细节,分层理解问题,自顶向下层层加细。例:开发一个CAD软件,实现一个二维绘图系统的全部功能,供低级计算机辅助设计使用。5-22WHPU抽象层次I:用问题所处环境的术语来描述这个软件。该软件
包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个CAD软件实现……。5-23WHPU抽象层次II:
任务需求的描述。列出“What”而不是“How”。CADSOFTWARETASKS:userinteractiontask;2-Ddrawingcreationtask;graphicsdisplay
task;drawingfilemanagementtask;END5-24WHPU抽象层次III:程序过程表示。以2-D绘图生成任务为例:PROCEDURE2-DdrawingcreationREPEATUNTILE(drawingcr
eationtaskterminates)DOWHILE(digitizerinteractionoccurs)Digitizerinterfacetask;DETERMINEdrawingrequestCASELine:linedrawingtask;Re
ctangle:rectangledrawingtask;Circle:circledrawingtask;……END;DOWHILE(keyboardinteractionoccurs)keyboardint
eractiontask;PROCESSanalysis/computationCASEView:auxiliaryviewtask;Section:crosssectioningtask;……END;……ENDREPETITION;ENDPROCEDURE.5-25WHPU5.2.3
逐步求精定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。依据:Miller法则----一个人在任何时候都只能把注意力集中在(7±2)个知识块上原则:把精力集中在与当前开发阶段最相关的那些方面上,而忽略那些对整体解决方案来说虽然是必要的,然
而目前还不需要考虑的细节,这些细节将留到以后再考虑5-26WHPU5.2.3逐步求精实质:把一个时期内必须解决的种种问题按优先级排序的技术,确保每个问题都将被解决,而且每个问题都将在适当的时候被解决,一个细化的过程抽象与求精是互补的过程抽象过程,数据,忽略底层细
节求精设计中揭示出低层细节5-27WHPU5.2.4信息隐藏和局部化信息隐藏原理:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的隐藏模块的实现细节,“细节隐藏”独立的模块彼此间仅仅交换那些为了完成系
统功能而必须交换的信息局部化:把一些关系密切的软件元素物理地放得彼此靠近优点:易于软件的修改,错误传播大大减少5-28WHPU5.2.5模块独立独立性的重要性有效的模块化的软件比较容易开发出来独立的模块比较容易测
试和维护定性标准度量内聚Cohesion:衡量一个模块内部各个元素彼此结合的紧密程度耦合Coupling:衡量不同模块彼此间互相依赖(连接)的紧密程度GreatdealofdependenceIndependentHighlycoupledLoos
elycoupledUncoupled5-29WHPU5.2.5模块独立耦合数据耦合Datacoupling:两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据控制耦合Controlcoupling:传递的信息中
有控制信息(尽管有时这种控制信息以数据的形式出现)特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素公共环境耦合Commoncoupling:当两个或多个模块通过一个公共数据环
境相互作用时,公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等等内容耦合Contentcoupling:5-30WHPU5.2.5模块独立耦合控制耦合Controlcoupling:传递的信息中有控制信息(尽管有
时这种控制信息以数据的形式出现)5-31WHPUABFlagF2F1Fn…………Flag接口单一,但仍然影响被控模块的内部逻辑。5-32WHPU耦合公共环境耦合Commoncoupling:当两个或多个模块通过一个公共数据环境相互作用时
,公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等等5-33WHPUGlobal:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………
………V1++……………………B:……………………V2=B1+V1……………………一个模块往公共环境送数据,另一个模块从公共环境取数据。这是数据耦合的一种形式,是比较松散的耦合。两个模块都既往公共环境送数据又从里面取数据,这种耦合比较紧密,介于
数据耦合和控制耦合之间。5-34WHPU5.2.5模块独立耦合内容耦合ContentCoupling①一个模块访问另一个模块的内部数据;②一个模块不通过正常入口而转到另一个模块的内部;③两个模块有一部分程序代码重叠(只可能出现在汇编程序中);④
一个模块有多个入口(这意味着一个模块有几种功能)。5-35WHPU例1:A访问C的内部数据或不通过正常入口而转入C的内部。……ABCDA:……………………gotoC1……………………C:……………………C1:…………例2:部分代码重叠(常出现在汇编程序中)BA例3:一个模
块有多个入口(功能)A:………………………………entry1:………………………………entry2:………………………………5-36WHPU原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内
容耦合。5-37WHPU5.2设计原理内聚低内聚①偶然内聚②逻辑内聚③时间内聚中内聚①过程内聚②通信内聚高内聚①顺序内聚②功能内聚5-38WHPU低内聚偶然内聚Coincidentalcohesion:如果
一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的逻辑内聚Logicalcohesion:如果一个模块完成的任务在逻辑上属于相同或相似的一类时间内聚Temporalcohesion:如果一个模块包含的任务必须在同一段时间内执
行,例如:系统的初始化A:Readinputsfromdiskfromtapefrom……5-39WHPU中内聚过程内聚Proceduralcohesion:如果一个模块内的处理元素是相关的,而且必须以特定次序执行通信内聚Communication
alcohesion:如果模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据,例如:从同一磁带上读取不相干的数据——可能破坏独立性。enterdatacheckdatamanipulatedata5-40WHP
U高内聚顺序内聚Sequentialcohesion:如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据)功能内聚Functionalcohesion:如果模块内所有处理元素属于一个整体,完成一个单一的功能5-
41WHPU5.3启发规则改进软件结构提高模块独立性模块规模应该适中深度、宽度、扇出和扇入都应适当模块的作用域应该在控制域之内力争降低模块接口的复杂程度设计单入口单出口的模块模块功能应该可以预测5-42WHPU5.3启发规则改进软件结构提高模块独立性设计出软件的初步结构以后,
应该审查分析这个结构,通过模块分解或合并,力求降低耦合提高内聚5-43WHPU5.3启发规则模块规模应该适中过大不易理解(<60行)太小则接口开销过大注意分解后不应降低模块的独立性5-44WHPU5.3启发规则深度、宽度、扇出和扇入都应适当深度:软件结构中控制的
层数,它往往能粗略地标志一个系统的大小和复杂程度宽度:软件结构内同一个层次上的模块总数的最大值扇出:一个模块直接控制(调用)的模块数目①扇出过大意味着模块过分复杂,需要控制和协调过多的下级模块②扇出过小(例如总是1)
也不好③3或4(扇出的上限通常是5~9)扇入:直接调用它的上级模块个数①不能违背模块独立原理单纯追求高扇入5-45WHPU5.3启发规则深度、宽度、扇出和扇入都应适当原则:顶层扇出比较高,中层扇出较少,底层扇入到公共的实用模块中去(底层模块有高
扇入。AA的扇出AA的扇入CB5-46WHPU5.3启发规则模块的作用域应该在控制域之内模块的作用域定义为受该模块内一个判定影响的所有模块的集合。模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合例:在图5.2中模块A的控制域是A、B、C、D、E、F等
模块的集合5-47WHPU5.3启发规则力争降低模块接口的复杂程度应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致设计单入口单出口的模块不要使模块间出现内容耦合容易理解,维护模块功能应该可以预测只要输入的数据相同就产生同样的输出5-48WHPU5.4
描绘软件结构的图形工具5.4.1层次图和HIPO图5.4.2结构图5-49WHPU5.4.1层次图和HIPO图层次图功能:用来描绘软件的层次结构层次图符号说明:矩形框代表模块方框间的连线表示调用关系(而不像层次方框图那样表示组成关系
)适用范围:自顶向下设计5-50WHPU5.4描绘软件结构的图形工具图5.3正文加工系统的层次图5-51WHPU5.4描绘软件结构的图形工具HIPO(层次图加输入/处理/输出)图功能:用来描绘软件的层次结构
符号描述:矩形框代表模块方框间的连线表示调用关系(而不像层次方框图那样表示组成关系)在H图(层次图)里除了最顶层的方框之外,每个方框都加了编号和H图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模
块的处理过程。HIPO图中的每张IPO图内都应该明显地标出它所描绘的模块在H图中的编号,以便追踪了解这个模块在软件结构中的位置5-52WHPU图5.3正文加工系统的层次图5-53WHPU5.4.2结构图功能:描绘软件结构
的图形工具符号描述:方框代表模块,框内注明模块的名字或主要功能箭头(或直线)表示模块的调用关系①带注释的箭头表示模块调用过程中来回传递的信息②尾部是空心圆表示传递的是数据③尾部是实心圆表示传递的是控制信息5-54WHPU图5.5结
构图的例子——产生最佳解的一般结构5-55WHPU附加符号图5.7模块M循环调用模块A、B、C图5.6判定为真时调用A,为假时调用B5-56WHPU小结层次图和结构图并不严格表示模块的调用次序层次图和结构图并不指明什么时候调用下层模块层次图作为描绘软件结构的文档,结构图并不合适5-5
7WHPU5.5面向数据流的设计方法基本思路:数据流图变换成软件结构5-58WHPU5.5.1概念变换流信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。当数据流图具有这
些特征时,这种信息流称为信息流变换流:取得数据、变换数据、给出数据;相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成5-59WHPU5.5.1概念事务流数据沿输入通路到达一个处理T,这个处理根据输入
数据的类型在若干个动作序列中选出一个来执行。这类数据流应该划为一类特殊的数据流,称为事务流事务中心的任务①接收输入数据(输入数据又称为事务);②分析每个事务以确定它的类型;③根据事务类型选取一条活动
通路。5-60WHPU5.5.1概念事务事务流5-61WHPU5.5.1概念设计过程“变换”“事物”精化数据流图流类型区分事物中心和数据接收通路区分输入和输出分支映射成事务结构映射成变换结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计变换分析事物分析5
-62WHPU5.5.2变换分析[实例]汽车仪表板,假设功能如下所示:通过模数转换实现传感器和微处理机接口;在发光二极管面板上显示数据;指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;指示加速或
减速;超速警告:如果车速超过55英里/小时,则发出超速警告铃声。5-63WHPU5.5.2变换分析设计步骤第1步复查基本系统模型第2步复查并精化数据流图第3步确定数据流图具有变换特性还是事务特
性第4步确定输入流和输出流的边界,从而孤立出变换中心第5步完成“第一级分解”第6步完成“第二级分解”第7步使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化5-64WHPU§5.面向数据流的设计方法第一步:DFD的分界,先分出I、P、O三块燃料流传感器信号SPS旋转信号读旋转信号
收集和求平均确定加/减速转换成转/分计算里程计算mph,超速值产生加/减速显示计算燃料消耗计算gph读和校核产生mpg显示产生mph显示发出铃声产生里程显示SPSSPS箭头指示燃烧流上箭头水平线下箭头rpmr
pmgphmphmpgmph超速值英里显示铃声mph显示mpg显示第1~4步5-65WHPU§5.面向数据流的设计方法一般位于软件结构最顶层的控制模块Cm协调下述从属的控制功能o输入信息处理控制模块C
a,协调对所有输入数据的接收;o变换中心控制模块Ct,管理对内部形式的数据的所有操作;o输出信息处理控制模块Ce,协调输出信息的产生过程。数字仪表板控制数据转换控制驱动仪表板接收传感器信号CmCtCaCe第5步5-6
6WHPU第6步ADCBCmCaCBDA每个处理直接对应一个下层模块。Ct由边界向回溯,将每个遇到的处理器映成相应的层模块。Ca由边界向外推,方法与类似CeCa模块简要说明:①进出该模块的信息(接口描述);②模块内部的信息;③过程陈述,包括
主要判定点及任务等;④对约束和特殊特点的简短讨论。5-67WHPU§5.面向数据流的设计方法例:(与P.70图4.12对照)数字仪表板控制数据转换控制驱动仪表板接收传感器信号计算gph读燃料流转换成rpm收集sps读旋转信号确定加/
减速计算mph计算mpg计算里程加/减速显示显示mpg显示mph显示里程发出铃声发光二极管显示5-68WHPU§5.面向数据流的设计方法第7步:本着高内聚、低耦合的原则。输入结构中的模块“转换成rpm”和“收集sps”可以合并;模块“确定加速/减速”可以放在模块
“计算mph”下面,以减少耦合;模块“加速/减速显示”可以相应地放在模块“显示mph”的下面5-69WHPU5.5.3事务分析软件结构接收分支:从事务中心的边界开始,把沿着接收流通路的处理映射成模块发送分支:包含一个调度模块,它控制下层的所有活动模块;然后把数据流图中的每个活动
流通路映射成与它的流特征相对应的结构5-70WHPU5.5.4设计优化优化做到设计的早期阶段尽量对软件结构进行精化结构简单通常既表示设计风格优雅,又表明效率高做到在有效的模块化的前提下使用最少量的
模块,以及在能够满足信息要求的前提下使用最简单的数据结构时间起决定性作用的软件优化原则在不考虑时间因素的前提下开发并精化软件结构;在详细设计阶段选出最耗费时间的那些模块,仔细地设计它们的处理过程
(算法),以求提高效率;使用高级程序设计语言编写程序;在软件中孤立出那些大量占用处理机资源的模块;必要时重新设计或用依赖于机器的语言重写上述大量占用资源的模块的代码,以求提高效率。5-71WHPU5-72WHPU§5.面
向数据流的设计方法⑵事务分析MIIISABC………IIISBAC………5-73WHPU§5.面向数据流的设计方法3、SD的总体过程:“变换”“事物”精化数据流图流类型区分事物中心和数据接收通路区分输入和输出分支映射成事务结构映射成变换结构用启发式设计规则精化软件结构导出
接口描述和全程数据结构复查详细设计变换分析事物分析优化的前题是:“Getittowork,thenmakeitfast.”5-74WHPU5-75WHPUProjectPartⅢ“总体设计报告”分组演讲演
讲内容:⑴分组任务简介;⑵精化的DFD讲解;⑶SystemHierarchy讲解;⑷选择有代表性的3个模块,给出HIPO图并讲解。演讲时间:下一次课时,每组10分钟演讲+2分钟听众提问。演讲顺序:抽签决定。评分方法:与第一次演讲相同。5-76WHPU评分标
准组名:任务简介(5)数据流图(25)系统层次图(30)HIPO(30)演讲风格(10)总分(100)评语优点:缺点: