资源描述
单击以编辑母版标题样式,单击以编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章 总体设计,(System Design),开始考虑“,How”,,但仍属高层设计(确定黑盒关系),1. 过程,1、确定最佳方案:,从,DFD,出发进行任务分解,不同的划分方法即对应不同的方案。每个合理的方案应配备下列4份资料:,系统流程图,组成系统的物理元素清单,成本/效益分析,进度计划,选择最佳方案并制定详细的实现计划(主要技术详见第十三章),1,1. 过程,2、结构设计 模块化思想:,将,DFD,细化,至每个子功能都明白易懂;每个模块完成一个子功能;每层模块合成一个高一级的功能。,主要工具有,System Design Hierarchy,及,HIPO图等。,3、数据库设计 (略),5、文档、审查,4、测试计划 (详见第七章),2,2.模块化原理,(Modularization),1、原理:,经验1:,E(P,1,+P,2,)E(P,1,)+E(P,2,),经验2:,P.58,图,4.1,成本,成本 / 模块,最小成本区,接口成本,软件总成本,模块数目,3,2.模块化原理,2、抽象,(Abstraction),:,忽略细节,分层理解问题,自顶向下层层加细。,例:,开发一个,CAD,软件,实现一个二维绘图系统的全部功能,供低级计算机辅助设计使用。,抽象层次I:用问题所处环境的术语来描述这个软件。,该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个CAD软件实现。,4,2.模块化原理,抽象层次II:任务需求的描述。列出“,What,”而不是“,How,”。,CAD SOFTWARE TASKS:,user interaction task;,2-D drawing creation task;,graphics display task;,drawing task;,END,5,2.模块化原理,抽象层次III:程序过程表示。以2-D绘图生成任务为例,:,PROCEDURE 2-D drawing creation,REPEAT UNTILE (drawing creation task terminates),DO WHILE (digitizer interaction occurs),Digitizer interface task;,DETERMINE drawing request CASE,Line: line drawing task;,Rectangle: rectangle drawing task;,Circle: circle drawing task;,END;,DO WHILE (keyboard interaction occurs),keyboard interaction task;,PROCESS analysis/computation CASE,View: auxiliary view task;,Section: cross sectioning task;,END;,END REPETITION;,END PROCEDURE.,6,2.模块化原理,3、,信息隐蔽,(Information hiding),The clients of a module know about its services only through its interface; the implementation is hidden from them (hence may change without affecting the clients).,4、模块独立性,(Module independence),好设计的关键:每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。,在这个抽象层次上,给出了初步的过程表示,所用的术语都已面向软件,而且模块化的工作已经开始显露。,7,2.模块化原理, 耦合,(Coupling),Great deal of dependence,Independent,Highly coupled,Loosely coupled,Uncoupled,独立性的度量:耦合(Coupling)&,内聚(Cohesion),(Yourdon & Constantine,1978),8,2.模块化原理,例1:A访问C的内部数据或不通过正常入口而转入C的内部。,A,B,C,D,A:,goto C1,C:,C1:,独立性由弱到强排列为:,内容耦合,(Content Coupling): One module modifies another.,9,2.模块化原理,例2:部分代码重叠(常出现在汇编程序中),B,A,例3:一个模块有多个入口(功能),A:,entry 1:,entry 2:,The least desirable,10,2.模块化原理,公共耦合,(Common coupling):Data are accessible from a common data store.,Global : V1,V2,A:,A1=V1+V2,B:,V1=B1,Global : V1,V2,A:,V1+,B:,V2=B1+V1,问题:,公共部分的改动将影响所有调用它的模块;,公共部分的数据存取无法控制;,复杂程度随耦合模块的个数增加而增加。,11,2.模块化原理,控制耦合,(Control coupling):One module passes parameters to control the activity of another module.,A,B,Flag,F2,F1,Fn,Flag,接口单一,但仍然影响被控模块的内部逻辑。,数据耦合,(Data coupling): Only data are passed. It is easy to trace data and make changes.,The most desirable,.,原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。,12,2.模块化原理,低内聚:,巧合内聚,(Coincidental cohesion):Unrelated functions, processes, or data are found in the same module (for convenience).,A:,Read inputs,from disk,from tape,from ,逻辑内聚,(Logical cohesion):Logically related functions or data are placed in the same module.,例如:, 内聚,(Cohesion):,The elements of a module are directed to perform the same task.,Goal: as cohesive as possible,.,13,2.模块化原理,时间内聚,(Temporal cohesion):The functions are related only by the timing involved.,例如:系统的初始化,问题:不同功能混在一个模块中,有时共用部分编码,使局部功能的修改牵动全局。,中内聚:,过程内聚,(Procedural cohesion):Functions are grouped together in a module to ensure a certain order of performance.,例如:,enter data,check data,manipulate data,14,2.模块化原理,通信内聚,(Communicational cohesion):All the functions in a module operate on or produce the same data set.,例如:从同一磁带上读取不相干的数据 可能破坏独立性。,高内聚:,顺序内聚,(Sequential cohesion):The output from one part of a module is the input to the next part.,功能内聚,(Functional cohesion):Every processing element is essential to the performance of a single function.,15,3.启发式规划,2. 模块规模适中: 过大不易理解;太小则接口开销过大。注意分解后不应降低模块的独立性。,3. 适当控制 ,深度 = 分层的层数。过大表示分工过细。,宽度 = 同一层上模块数的最大值。过大表示系统复杂度大。,1.,争取低耦合、高内聚(增加内聚 减少耦合),16,3.启发式规划,扇出 = 一个模块直接调用控制的模块数。,3, fan-out 9,A,A,的扇出,A,A,的扇入,扇入 = 直接调用该模块的模块数,在不破坏独立性的前提下,,fan-in,大的比较好。,17,3.启发式规划,4、作用域在控制域内,控制域,M,A,C,B,M,的控制域为,M,A,B,C,作用域:,M,中的一个判定所影响的模块。,例如:,A:,if ,then goto B1,B:,B1:,作用域在控制域内,A:,if ,then goto M1,M:,M1: goto C1,作用域超出了控制域,上例中,A,的作用超出了控制域。改进方法之一,可以把,A中的 if,移到,M,中;方法之二,可以把,C,移到,A,下面。,18,3.启发式规划,5、降低接口的复杂程度:接口复杂可能表明模块的独立性差。,6、单出单入,避免内容耦合。,7、模块功能可预测 相同输入必产生相同输出。反例:模块中使用全局变量或静态变量,则可能导致不可预测。,作业:你自己负责设计的,HDIS,界面中可能遇到哪些类型的耦合和内聚?对列出的每种类型试举一例。,19,4.图形工具,1、,Hierarchy,和,HIPO,例:,P.65,图,4.4,例:,Users Interface,Find a Room,2.0,Delete a Room,3.0,Enter a New Room,1.0,Establish a House,4.0,By Type of Floor,2.3,By Square Footage,2.2,By Room ID,2.1,Add a Room,4.1,Find a Room,4.2,Delete a Room,4.3,View House,4.4,By Room ID,4.2.1,20,4.图形工具,注意:,这里的,hierarchy,表现软件的结构,而非数据结构;,每个矩形框代表一个模块,连线表示“调用”而非“组成”;,所谓,HIPO,,即对每个模块附一张,IPO,图。每个,IPO,图中应明确标出对应模块的编号。,2、结构图,(Structured Diagram),符号:,数据传递;,控制信息;,或;,循环.,21,4.图形工具,例:,B,A,M,M1,M2,M3,C,D,注:此图一般不入文档,仅用于检查设计的正确性和模块独立性。,须检查;,每个传递的数据是否,必须,?,完成模块功能所必须的数据是否都传递了?,传输的数据是否只与单一的功能有关?是否目的明确?,22,5.面向数据流的设计方法,(,又称为,SD:Structural Design),基本思想:,DFD, System Hierarchy,1、,Data Flow,的分类, 变换流,(Transform Flow):,Internal representation,Information,Transform flow,Outgoing,flow,Incoming,flow,External representation,Time,事实上所有信息流都可归结为变换流,23,5.面向数据流的设计方法, 事务流,(Transaction Flow),T,Transaction,request,Action paths,T = Call one of the several subroutines depending on the type of the incoming transaction request.,当信息流具有明显的“发射中心”时,可归结为事务流。,24,5.面向数据流的设计方法,2、分析设计, 变换分析,例:P.68 - 69,汽车数字仪表板的设计,功能: 通过模 - 数转换实现传感器和微处理机接口;, 在发光二极管面板上显示数据;, 指示每小时英里数,(mph),行驶的里程,每加仑油行驶的英里数,(mpg),等等;, 指示加速或减速;, 如果车速超过55mph ,则发出警告铃声。,25,5.面向数据流的设计方法,第一步:,DFD,的分界,先分出,I、P、O,三块,燃料流,传感器信号,SPS,旋转信号,读,旋转信号,收集和求平均,确定加/减速,转换成,转/分,计算里程,计算,mph,超速值,产生,加/减速显示,计算燃料消耗,计算,gph,读和校核,产生,mpg,显示,产生,mph,显示,发出铃声,产生里程显示,SPS,SPS,箭头指示,燃烧流,上箭头,水平线,下箭头,rpm,rpm,gph,mph,mpg,mph,超速值,英里,显示,铃声,mph,显示,mpg,显示,26,5.面向数据流的设计方法,一般问题的一级分解方法:,数字仪表板,控制,数据转换,控制,驱动仪表板,接收传感器,信号,M,P,I,O,27,5.面向数据流的设计方法,第二步:映射,A,D,C,B,M,I,C,B,D,A,:每个处理直接对应一个下层模块。,P,:由边界向回溯,将每个遇到的处理器映成相应的层模块。,I,:由边界向外推,方法与 类似,O,I,28,5.面向数据流的设计方法,例: (与,P.70,图,4.12,对照),数字仪表板,控制,数据转换,控制,驱动仪表板,接收传感器,信号,计算,gph,读燃料流,转换成,rpm,收集,sps,读旋转信号,确定加/减速,计算,mph,计算,mpg,计算里程,加/减速,显示,显示,mpg,显示,mph,显示里程,发出铃声,发光二极管显示,29,5.面向数据流的设计方法,第三步:修改 本着高内聚、低耦合的原则。,例:,P.73,图,4.19,精化后的数字仪表板系统的软件结构。,注:每个模块应附一简要说明描述, 进出该模块的信息(接口描述);, 模块内部的信息;, 过程陈述,包括主要判定点及任务等;, 对约束和特殊特点的简短讨论。,30,5.面向数据流的设计方法, 事务分析,M,II,I,S,A,B,C,I,II,S,B,A,C,31,5.面向数据流的设计方法,3、,SD,的总体过程:,“变换”,“事物”,精化数据流图,流类型,区分事物中心和数据接收通路,区分输入和,输出分支,映射成事务结构,映射成变换结构,用启发式设计规则精化软件结构,导出接口描述和,全程数据结构,复 查,详细设计,变换分析,事物分析,优化的前题是,:“Get it to work, then make it fast.”,32,Project Part “,总体设计报告”分组演讲,演讲内容:, 分组任务简介;, 精化的,DFD,讲解;,System Hierarchy,讲解;, 选择有代表性的3个模块,给出,HIPO,图并讲解。,演讲时间:下一次课时,每组10分钟演讲 + 2分钟听众提问。,演讲顺序:抽签决定。,评分方法:与第一次演讲相同。,33,评 分 标 准,34,
展开阅读全文