《四章节总体设计SystemDesign》由会员分享,可在线阅读,更多相关《四章节总体设计SystemDesign(34页珍藏版)》请在金锄头文库上搜索。
1、第四章第四章 总体设计总体设计(System Design)开始考虑开始考虑“How”,但但仍属高层设计(确定黑盒关系)仍属高层设计(确定黑盒关系)1. 过程过程1、确定最佳方案:、确定最佳方案: 从从DFD出发进行任务分解,不同的划分方法即对应出发进行任务分解,不同的划分方法即对应不同的方案。每个合理的方案应配备下列不同的方案。每个合理的方案应配备下列4份资料:份资料:系统流程图系统流程图组成系统的物理元素清单组成系统的物理元素清单成本成本/效益分析效益分析进度计划进度计划 选择最佳方案并制定详细的实现计划(主要技术详选择最佳方案并制定详细的实现计划(主要技术详见第十三章)见第十三章)1.
2、过程过程2、结构设计、结构设计 模块化思想:模块化思想: 将将DFD细化,至每个子功能都明白易懂;每个细化,至每个子功能都明白易懂;每个模块完成一个子功能;每层模块合成一个高一级模块完成一个子功能;每层模块合成一个高一级的功能。的功能。 主要工具有主要工具有 System Design Hierarchy及及HIPO图等。图等。3、数据库设计、数据库设计 (略)(略)5、文档、审查、文档、审查4、测试计划、测试计划 (详见第七章)(详见第七章)2.模块化原理模块化原理(Modularization)1、原理:、原理:经验经验1:E(P1+P2)E(P1)+E(P2)经验经验2:P.58 图图4
3、.1成成本本成本成本 / / 模块模块最小成本区最小成本区接口成本接口成本软件总成本软件总成本模块数目模块数目2.模块化原理模块化原理2、抽象、抽象(Abstraction): 忽略细节,分层理解问题,自顶向下层层加细。忽略细节,分层理解问题,自顶向下层层加细。例:例:开发一个开发一个CAD软件,实现一个二维绘图系统的全软件,实现一个二维绘图系统的全部功能,供低级计算机辅助设计使用。部功能,供低级计算机辅助设计使用。 抽象层次抽象层次I I:用问题所处环境的术语来描述这个软件。用问题所处环境的术语来描述这个软件。该软件包括一个计算机绘图界面,向绘图该软件包括一个计算机绘图界面,向绘图员显示图形
4、,以及一个数字化仪界面,用员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个所有的剖面图和辅助视图都可以用这个CADCAD软件实现软件实现。2.模块化原理模块化原理 抽象层次抽象层次IIII:任务需求的描述。列出任务需求的描述。列出“What”而而不是不是“How”。 CAD SOFTWARE TASKS: user interaction task; 2-D drawing creation task; graphics
5、display task; drawing file management task; END2.模块化原理模块化原理 抽抽象象层层次次IIIIII:程程序序过过程程表表示示。以以2 2- -D 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:
6、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. 2.模块化原理模块化原理 3、信息
7、隐蔽信息隐蔽(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) 好好设设计计的的关关键键:每每个个模模块块完完成成一一个个相相对对独独立立的的子功能,并且与其它模块间的接口简单。子功能,并且与其它模块间的接口简单
8、。 在这个抽象层次上,给出了初步的过程表示,在这个抽象层次上,给出了初步的过程表示,所用的术语都已面向软件,而且模块化的工作已所用的术语都已面向软件,而且模块化的工作已经开始显露。经开始显露。2.模块化原理模块化原理 耦合耦合(Coupling)Great deal of dependenceIndependent Highly coupledLoosely coupledUncoupled 独立性的度量:独立性的度量:耦合耦合(Coupling)&内聚内聚(Cohesion) (Yourdon & Constantine,1978)2.模块化原理模块化原理例例1:A访问访问C的内部的内部数据
9、或不通过正数据或不通过正常入口而转入常入口而转入C的内部。的内部。ABCDA:goto C1C:C1: 独立性由弱到强排列为:独立性由弱到强排列为: 内容耦合内容耦合(Content Coupling): One module modifies another.2.模块化原理模块化原理例例2:部分代码重叠:部分代码重叠(常出现在汇编程(常出现在汇编程序中)序中)B A例例3:一个模块有:一个模块有多个入口(功能)多个入口(功能)A:entry 1:entry 2: The least desirable2.模块化原理模块化原理 公共耦合公共耦合 (Common coupling):Data a
10、re accessible from a common data store.Global : V1 V2A:A1=V1+V2B:V1=B1Global : V1 V2A:V1+B:V2=B1+V1问题:问题: 公共部分的改动将影响所有调用它的模块;公共部分的改动将影响所有调用它的模块; 公共部分的数据存取无法控制;公共部分的数据存取无法控制; 复杂程度随耦合模块的个数增加而增加。复杂程度随耦合模块的个数增加而增加。2.模块化原理模块化原理 控制耦合控制耦合(Control coupling):One module passes parameters to control the activi
11、ty of another module.ABFlagF2F1FnFlag接口单一,接口单一,但仍然影响但仍然影响被控模块的被控模块的内部逻辑。内部逻辑。 数据耦合数据耦合(Data coupling): Only data are passed. It is easy to trace data and make changes. The most desirable.原则:原则:尽量使用数据耦合,少用控制耦合,限尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。制公共耦合的范围,完全不用内容耦合。2.模块化原理模块化原理 低内聚:低内聚: 巧巧 合合 内内 聚聚( Co
12、incidental cohesion) : Unrelated functions, processes, or data are found in the same module (for convenience).A:Read inputsfrom diskfrom tapefrom 逻辑内聚逻辑内聚(Logical cohesion):):Logically related functions or data are placed in the same module.例如:例如: 内聚内聚 (Cohesion): The elements of a module are direct
13、ed to perform the same task.Goal: as cohesive as possible.2.模块化原理模块化原理 时间内聚时间内聚(Temporal cohesion):):The functions are related only by the timing involved.例如:系统的初始化例如:系统的初始化问题:不同功能混在一个模块中,有时共用部分问题:不同功能混在一个模块中,有时共用部分编码,使局部功能的修改牵动全局。编码,使局部功能的修改牵动全局。 中内聚:中内聚: 过过程程内内聚聚( Procedural cohesion) : Functions
14、are grouped together in a module to ensure a certain order of performance.例如:例如:enter datacheck datamanipulate data2.模块化原理模块化原理 通通信信内内聚聚(Communicational cohesion):All the functions in a module operate on or produce the same data set.例例如如:从从同同一一磁磁带带上上读读取取不不相相干干的的数数据据 可可能能破破坏独立性。坏独立性。 高内聚:高内聚: 顺序内聚顺序内
15、聚(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.3.启发式规划启发式规划2. 模块规模适中:模块规模适中: 过大不易理解;太小则接口开销过大。注意分过大不易理解;太小则接口开销过大。注意分解后不应降低模块的独立性。解后不应降低模块的独立性。3
16、. 适当控制适当控制 深度深度 = 分层的层数。过大表示分工过细。分层的层数。过大表示分工过细。 宽度宽度 = 同一层上模块数的最大值。过大表示系同一层上模块数的最大值。过大表示系统复杂度大。统复杂度大。1. 争取低耦合、高内聚(增加内聚争取低耦合、高内聚(增加内聚 减少耦合)减少耦合)3.启发式规划启发式规划 扇出扇出 = 一个模块直接调一个模块直接调用用控制的模块数。控制的模块数。 3 fan-out 9AA的扇出的扇出AA的扇入的扇入 扇入扇入 = 直接调用该模直接调用该模块的模块数块的模块数在不破坏独立性的前提在不破坏独立性的前提下,下,fan-in 大大的比较好。的比较好。3.启发式
17、规划启发式规划4、作用域在控制域内、作用域在控制域内 控制域控制域MACBM的控制域为的控制域为 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下面。下面。3.启发式规划启发式规划5、降
18、低接口的复杂程度:接口复杂可能表明模块、降低接口的复杂程度:接口复杂可能表明模块的独立性差。的独立性差。6、单出单入,避免内容耦合。、单出单入,避免内容耦合。7、模块功能可预测、模块功能可预测 相同输入必产生相同输出。相同输入必产生相同输出。反例:模块中使用全局变量或静态变量,则可反例:模块中使用全局变量或静态变量,则可能导致不可预测。能导致不可预测。作业:你自己负责设计的作业:你自己负责设计的HDIS界面中可界面中可能遇到哪些类型的耦合和内聚?对列能遇到哪些类型的耦合和内聚?对列出的每种类型试举一例。出的每种类型试举一例。4.图形工具图形工具1、Hierarchy和和HIPO例:例:P.65
19、 图图4.4例:例:Users InterfaceFind a Room2.0Delete a Room3.0Enter a New Room1.0Establish a House4.0By Type of Floor2.3By Square Footage2.2By Room ID2.1Add a Room4.1Find a Room4.2Delete a Room4.3View House4.4By Room ID4.2.14.图形工具图形工具注意:注意: 这里的这里的hierarchy表现软件的结构,而非数据结构;表现软件的结构,而非数据结构; 每个矩形框代表一个模块,连线表示每个矩形
20、框代表一个模块,连线表示“调用调用”而而非非“组成组成”; 所谓所谓HIPO,即对每个模块附一张即对每个模块附一张IPO图。每个图。每个IPO图中应明确标出对应模块的编号。图中应明确标出对应模块的编号。2、结构图、结构图(Structured Diagram)符号:符号:数据传递;数据传递;控制信息;控制信息;或;或;循环循环. .4.图形工具图形工具例:例:BAMM1M2M3CD注:此图一般注:此图一般不入文档,仅不入文档,仅用于检查设计用于检查设计的正确性和模的正确性和模块独立性。块独立性。须检查;须检查; 每个传递的数据是否每个传递的数据是否必须必须? 完成模块功能所必须的数据是否完成模
21、块功能所必须的数据是否都传递了都传递了? 传输的数据是否只与传输的数据是否只与单一单一的功能有关?是的功能有关?是否目的明确?否目的明确?5.面向数据流的设计方法面向数据流的设计方法(又称为又称为SD:Structural Design)基本思想:基本思想: DFD System Hierarchy1、Data Flow 的分类的分类 变换流变换流(Transform Flow):Internal representationInformationTransform flowOutgoingflowIncomingflowExternal representationTime事实上所事实上所有
22、信息流有信息流都可归结都可归结为变换流为变换流5.面向数据流的设计方法面向数据流的设计方法 事务流事务流(Transaction Flow) TTransactionrequest Action paths T = Call one of the several subroutines depending on the type of the incoming transaction request.当当信信息息流流具具有有明明显显的的“发发射射中中心心”时时,可归结为事务流。可归结为事务流。5.面向数据流的设计方法面向数据流的设计方法2、分析设计、分析设计 变换分析变换分析例:例:P.68
23、- 69 汽车数字仪表板的设计汽车数字仪表板的设计功能:功能: 通过模通过模 - 数转换实现传感器和微处理机接口;数转换实现传感器和微处理机接口; 在发光二极管面板上显示数据;在发光二极管面板上显示数据; 指示每小时英里数指示每小时英里数(mph),行驶的里程,每加仑行驶的里程,每加仑油行驶的英里数油行驶的英里数(mpg)等等;等等; 指示加速或减速;指示加速或减速; 如果车速超过如果车速超过55mph ,则发出警告铃声。则发出警告铃声。5.面向数据流的设计方法面向数据流的设计方法第一步:第一步:DFD的分界,先分出的分界,先分出I、P、O三块三块燃料流燃料流 传感器信号传感器信号SPS旋转信
24、号旋转信号读读旋转旋转信号信号收集收集和求和求平均平均确定确定加加/ /减减速速转换转换成成转转/ /分分计算计算里程里程计算计算mph,超超速值速值产生产生加加/ /减减速显示速显示计算计算燃料燃料消耗消耗计算计算gph读和读和校核校核产生产生mpg显示显示产生产生mph显示显示发出发出铃声铃声产生产生里程里程显示显示SPS SPS箭头指示箭头指示燃烧流燃烧流上箭头上箭头水平线水平线下箭头下箭头rpmrpmgphmphmpgmph超速值超速值英里英里显示显示铃声铃声mph显示显示mpg显示显示5.面向数据流的设计方法面向数据流的设计方法一般问题的一般问题的一级分解方一级分解方法:法:数字仪表
25、板数字仪表板控制控制数据转换数据转换控制控制驱动仪表板驱动仪表板接收传感器接收传感器信号信号MPIO5.面向数据流的设计方法面向数据流的设计方法第二步:映射第二步:映射ADCBMICBDA:每个处理直接对应:每个处理直接对应一个下层模块。一个下层模块。P:由边界向回溯,将:由边界向回溯,将每个遇到的处理器映每个遇到的处理器映成相应的层模块。成相应的层模块。I:由边界向外推,方:由边界向外推,方法与法与 类似类似OI5.面向数据流的设计方法面向数据流的设计方法例:例: (与(与P.70 图图4.12 对照)对照) 数字仪表板数字仪表板控制控制数据转换数据转换控制控制驱动仪表板驱动仪表板接收传感器
26、接收传感器信号信号计算计算gph读燃料流读燃料流转换成转换成rpm收集收集sps读旋转信号读旋转信号确定确定加加/ /减速减速计算计算mph计算计算mpg计算计算里程里程加加/ /减速减速显示显示显示显示mpg显示显示mph显示显示里程里程发出发出铃声铃声发光二极管显示发光二极管显示5.面向数据流的设计方法面向数据流的设计方法第三步:修改第三步:修改 本着高内聚、低耦合的原则。本着高内聚、低耦合的原则。例:例:P.73 图图4.19精精化后的数字仪表板系统的软件结构。化后的数字仪表板系统的软件结构。注:每个模块应附一简要说明描述注:每个模块应附一简要说明描述 进出该模块的信息(接口描述);进出
27、该模块的信息(接口描述); 模块内部的信息;模块内部的信息; 过程陈述,包括主要判定点及任务等;过程陈述,包括主要判定点及任务等; 对约束和特殊特点的简短讨论。对约束和特殊特点的简短讨论。5.面向数据流的设计方法面向数据流的设计方法 事务分析事务分析MIIISABCIIISBAC5.面向数据流的设计方法面向数据流的设计方法3、SD的总体过程:的总体过程:“变换变换”“事物事物”精化数据流图精化数据流图流类型流类型区分事物中心和区分事物中心和数据接收通路数据接收通路区分输入和区分输入和输出分支输出分支映射成事务结构映射成事务结构映射成变换结构映射成变换结构用启发式设计规用启发式设计规则精化软件结
28、构则精化软件结构导出接口描述和导出接口描述和全程数据结构全程数据结构复复 查查详细设计详细设计变换分析变换分析事物分析事物分析优化的前题是优化的前题是:“Get it to work, then make it fast.”Project Part “总体设计报告总体设计报告”分组演讲分组演讲 演讲内容:演讲内容: 分组任务简介;分组任务简介; 精化的精化的DFD讲解;讲解; System Hierarchy 讲解;讲解; 选择有代表性的选择有代表性的3个模块,给出个模块,给出HIPO图并讲解。图并讲解。 演讲时间:下一次课时,每组演讲时间:下一次课时,每组10分钟演讲分钟演讲 + 2分钟听众提问。分钟听众提问。 演讲顺序:抽签决定。演讲顺序:抽签决定。 评分方法:与第一次演讲相同。评分方法:与第一次演讲相同。评评 分分 标标 准准