




免费预览已结束,剩余42页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章 总体设计 (system design),开始考虑“how”,但仍属高层设计(确定黑盒关系) 1. 过程 1、确定最佳方案: 从dfd出发进行任务分解,不同的划分方法即对应 不同的方案。每个合理的方案应配备下列4份资料: 系统流程图 组成系统的物理元素清单 成本/效益分析 进度计划 选择最佳方案并制定详细的实现计划(主要技术详见第十三章),1. 过程,2、结构设计 模块化思想: 将dfd细化,至每个子功能都明白易懂;每个模块完成一个子功能;每层模块合成一个高一 级的功能。 主要工具有 system design hierarchy及hipo图等。,3、数据库设计 模式设计:确定物理数据库结构 子模式设计:用户使用的数据视图 完整性、安全性设计 优化,5、书写文档 系统说明 用户手册 测试计划 详细实现计划 数据库设计结果 6、审查、复审,4、测试计划 (详见第七章),1. 过程,2.模块化原理(modularization),模块化就是把程序划分成独立命名而且可独立访问的模块,每个模块完成一个子功能。 把这些模块集成起来构成一个整体,可以完成指定的功能,满足用户的需求。 模块化是解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。它是软件解决复杂问题所具备的手段,不但可以降低问题复杂性,还可以减少开发工作量,从而降低开发成本,提高软件生产率。,2.模块化原理,模块的概念: 在软件的体系结构中,模块是可组合、分解和更换的单元,具有以下几种基本属性: 接口:指模块的输入输出。 功能:模块实现的功能。 逻辑:内部如何实现及所需数据。 状态:模块的运行环境,调用与被调用关系。 逻辑属性反映内部特性,其它属性反映模块的外部特性。,1、模块化原理根据: 问题p的复杂度c(p),工作量e(p) 如果c(p1)c(p2),则e(p1)e(p2) 经验1:c(p1+p2)c(p1)+c(p2) e(p1+p2)e(p1)+e(p2),2.模块化原理,经验2:,2.模块化原理,2.模块化原理,2、抽象(abstraction): 忽略细节,分层理解问题,自顶向下层层加细。 抽象与逐步求精、模块化密切相关,可提高软件的可理解性。,例:开发一个cad软件,实现一个二维绘图系统的全部功能,供低级计算机辅助设计使用。,2.模块化原理,抽象层次i:用问题所处环境的术语来描述这个软件。 该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个cad软件实现。,2.模块化原理,抽象层次ii:任务需求的描述。列出“what”而不是“how”。 cad software tasks: user interaction task; 2-d drawing creation task; graphics display task; drawing file management task; end,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.,2.模块化原理,3、信息隐蔽(information hiding) 局部化(一个模块内的信息对于不需要这些信息的模块,不能访问), 它为软件系统的修改、测试及以后的维护都带来好处。,在这个抽象层次上,给出了初步的过程表示,所用的术语都已面向软件,而且模块化的工作已经开始显露。,2.模块化原理,4、模块独立性(module independence) 模块独立模块化、抽象、信息隐蔽、局部化 好设计的关键:每个模块完成一个相对独立的子功能,并且与其它模块间的接口简单。 容易开发、测试、维护。,2.模块化原理, 耦合(coupling) 不同模块间的互联程度的度量。 模块间耦合高低取决于接口的复杂性、调用的方式及传递的信息。,独立性的度量:耦合(coupling)&内聚(cohesion) (yourdon & constantine,1978),2.模块化原理,例1:a访问c的内部数据或不通过正常入口而转入c的内部。,独立性由弱到强排列为: 内容耦合(content coupling): one module modifies another.,2.模块化原理,例2:部分代码重叠(常出现在汇编程序中),例3:一个模块有多个入口(多个功能),2.模块化原理, 公共耦合 (common coupling):公共数据环境 data are accessible from a common data store.,问题: 公共部分的改动将影响所有调用它的模块; 公共部分的数据存取无法控制; 复杂程度随耦合模块的个数增加而增加。,2.模块化原理,控制耦合(control coupling): 模块之间传递有控制信息(可能为数据),被调用函数通过控制信息有选择地执行块内某一功能。 one module passes parameters to control the activity of another module.,接口单一,但仍然影响被控模块的内部逻辑。,数据耦合(data coupling): 模块之间通过参数(数据)交换信息。 模块之间至少存在数据耦合。 only data are passed. it is easy to trace data and make changes.,原则:尽量使用数据耦合; 少用控制耦合; 限制公共耦合的范围; 完全不用内容耦合。,2.模块化原理,2.模块化原理,低内聚: 巧合内聚、逻辑内聚、时间内聚 巧合内聚(偶然内聚,coincidental cohesion): 一个模块完成一组任务,关系松散。 一个模块内的各处理元素之间没有任何联系。 unrelated functions, processes, or data are found in the same module (for convenience)., 内聚 (cohesion): the elements of a module are directed to perform the same task. 模块内部各个元素彼此结合的紧密程度。.,2.模块化原理,逻辑内聚(logical cohesion): 一个模块完成的任务在逻辑上相同/相似 logically related functions or data are placed in the same module. 例如把编辑各种输入数据的功能放在一个模块中,通过参数确定该模块完成哪一个功能。,例如:,2.模块化原理,时间内聚(temporal cohesion): 一个模块内所有任务必须在同一时间完成。 the functions are related only by the timing involved. 例如:系统的初始化 问题:不同功能混在一个模块中,有时共用部分 编码,使局部功能的修改牵动全局。,2.模块化原理, 中内聚:过程内聚、通信内聚 过程内聚(procedural cohesion): 模块内各元素相关,必须以特定次序执行。 (程序流程图划分模块) functions are grouped together in a module to ensure a certain order of performance. 例如:,2.模块化原理,通信内聚(communicational cohesion): 模块中所有元素使用同一个i/o。 all the functions in a module operate on or produce the same data set. 例如:从同一磁带上读取不相干的数据 可能破坏独立性。,2.模块化原理, 高内聚:顺序内聚、功能内聚 顺序内聚(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.启发式规则,模块规模适中: 过大不易理解;太小则接口开销过大。 注意分解后不应降低模块的独立性。 模块的大小准则:最好在50150条语句左右,便于理解。,争取低耦合、高内聚(增加内聚 减少耦合) 提高模块独立性。,3. 适当控制 深度 = 分层的层数。过大表示分工过细。 宽度 = 同一层上模块数的最大值。 过大表示系统复杂度大。(扇出 ),3.启发式规划,3.启发式规划, 扇出 = 一个模块直接调用控制的模块数。 3 fan-out 9, 扇入 = 直接调用该模块的模块数 在不破坏独立性的前提下,fan-in 大的比较好。,3.启发式规划,深度、宽度、扇入、扇出。,t,d,m,a,b,c,扇入,扇出,深 度,宽度,较好的软件结构:顶层扇出多,中层扇出比较少,底层高扇入。,3.启发式规划,3.启发式规划,4、作用域在控制域内 控制域,直接/间接从属于它的集合 m的控制域为 m,a,b,c, 作用域:m中的一个判定所影响的模块。 例如:,上例中a的作用超出了控制域。 改进方法之一,可以把a中的 if 移到m中; 方法之二,可以把c移到a下面。,3.启发式规划,5、降低接口的复杂程度 模块的结构准则:接口要简单、清晰及含义明确,便于理解,易于实现、测试与维护。 接口复杂/不一致,可能表明紧耦合,低内聚,模块的独立性差。 6、单出单入,避免内容耦合。 7、模块功能可预测 相同输入必产生相同输出。 反例:模块中使用全局变量或静态变量, 则可 能导致不可预测。 作业:你自己负责设计的mis界面中可能遇到哪些类型的耦合和内聚? 对列出的每种类型试举一例。,4.图形工具,1、hierarchy和hipo 描绘软件层次 结构。 例:,4.图形工具,注意: 这里的hierarchy表现软件的结构,而非数据结构; 每个矩形框代表一个模块,框内名字体现该模块的功能。 连线表示“调用”而非“组成”。模块间的控制关系:统率、从属; 所谓hipo,即对每个模块附一张ipo图。每个ipo图中应明确标出对应模块的编号。,4.图形工具,2、结构图(structured diagram) 描绘软件结构 符号:,例:,注:此图一般不入文档,仅用于检查设计的正确性和模块独立性。,4.图形工具,须检查; 每个传递的数据是否必须? 完成模块功能所必须的数据是否都传递了? 传输的数据是否只与单一的功能有关? 是否目的明确?,5.面向数据流的设计方法 (结构化方法sd:structural design),基本思想: dfd system hierarchy 1、data flow 的分类 变换流(transform flow): (信息)外部内部 外部,事实上所有信息流都可归结为变换流,5.面向数据流的设计方法, 事务流(transaction flow),t = call one of the several subroutines depending on the type of the incoming transaction request. 当信息流具有明显的“发射中心”时(“以事务为中心”),可归结为事务流。,2. 设计过程: p.68,5.面向数据流的设计方法,3、分析设计 变换分析,例:p.96 汽车数字仪表板的设计,功能: 通过模 - 数转换实现传感器和微处理机接口; 在发光二极管面板上显示数据; 指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等; 指示加速或减速; 如果车速超过55mph, 则发出警告铃声。,5.面向数据流的设计方法,第一步:dfd分界,先分出i、p、o三块,注:sps 信号/秒 rpm转/分 gph加仑油/时,5.面向数据流的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业灌溉智能化升级路径:2025年行业深度剖析报告
- 东兴市艺佳种苗进出口贸易有限公司年产1万吨矿粉加工项目环境影响报告表
- 安全教育训练培训总结课件
- 扶贫搬迁工程方案范文(3篇)
- 安全教育活动培训课件
- 狂欢节的最后一天课件
- 牧歌电气安全培训班课件
- 安全教育平台应用培训课件
- 江苏省常州市2025年初中化学学业水平考试试卷附真题答案
- 安全教育培训资料台账课件
- 2024年绍兴职业技术学院军训动员大会校长发言稿9000字
- 2025年宪法知识竞赛试题库(含答案)
- 银联基金快赎管理办法
- 学校食堂内控管理制度
- 滑板项目选材指标与标准
- 智慧养猪解决方案演示课件
- 最新中医骨伤科学考试题库及答案
- 产品形态设计课件完整
- 德国巴斯夫抗氧剂和紫外线吸收剂
- SG-A088接地装置安装工程工检验批质量验收记录
- 《芯片原理与技术》课件微流控芯片
评论
0/150
提交评论