研究生入学考试软件工程总体设计PPT课件_第1页
研究生入学考试软件工程总体设计PPT课件_第2页
研究生入学考试软件工程总体设计PPT课件_第3页
研究生入学考试软件工程总体设计PPT课件_第4页
研究生入学考试软件工程总体设计PPT课件_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章:总体设计第1页/共61页5.1 5.1 设计过程设计过程5.2 5.2 设计原理设计原理5.3 5.3 启发规则启发规则5.4 5.4 描绘软件结构的图形工具描绘软件结构的图形工具5.5 5.5 面向数据流的设计方法面向数据流的设计方法主要内容第2页/共61页5.1 设计过程设计过程-主要任务主要任务 1.设计方案设计方案(1-3):制定最佳方案的详细实现计划 (可行性研究:草拟开发计划) 2.设计软件体系结构设计软件体系结构(4-5):确定软件系统中的每个程序是由哪些模块组成的,以及这些模块之间的关系。第3页/共61页5.1 设计过程设计过程 1.设想供选择的方案设想供选择的方案 2

2、.选择合理的方案选择合理的方案 对每个合理的方案要提供对每个合理的方案要提供 (详细的实现计划详细的实现计划):): A系统流程图系统流程图 B组成系统的物理元素清单组成系统的物理元素清单 C成本成本/效益分析效益分析 D实现这个系统的进度计划实现这个系统的进度计划 第4页/共61页3. 推荐最佳方案推荐最佳方案4. 功能分解功能分解(组成系统的所有程序和文件(组成系统的所有程序和文件/数据数据库)库)5. 设计软件结构设计软件结构 (1、层次图或结构图、层次图或结构图 5.4节)节) (2、面向数据流的设计方法、面向数据流的设计方法 5.5节)节)6. 数据库设计数据库设计 第5页/共61页

3、7.制定测试计划制定测试计划8.书写文档书写文档 A系统说明 B用户手册 C测试计划 D详细的实现计划 E数据库设计结果9.审查和复审审查和复审 第6页/共61页5.2 设计原设计原理理 把复杂的问题分解成许多容易解决的小问题5.2.1 模块化模块化(模块:(模块:由边界元素限定的相邻程序元素 接口、实现)5.2.2 抽象抽象(听得多,用的多,但意思表达不出来)(听得多,用的多,但意思表达不出来) 5.2.3 逐步求精逐步求精(为了能集中精力解决问题而尽量推迟对(为了能集中精力解决问题而尽量推迟对问题细节的考虑问题细节的考虑) (1)魔法数字 7+-2的存在 (2)把一个时期内必须解决的问题按

4、优先级进行排序 第7页/共61页5.2.4 信息隐藏和局部化信息隐藏和局部化隐藏: 不需要访问我(模块内的各种信息)的就找不到我;局部化:把密切相关的软件元素物理的放的很近。5.2 设计原设计原理理 5.2.5 模块独立模块独立使得每个模块完成一个相对独立的子功能,且和其他模块之间的关系很简单。 (1) 独立的模块易于开发(功能清晰且接口简单) (2) 独立的模块易于测试和维护第8页/共61页一、耦合 耦合耦合:指软件结构内不同模块彼此之间相互依赖的紧密程度。 模块独立程度由两个定性标准度量:模块独立程度由两个定性标准度量:耦合耦合与与内聚内聚 (低耦合高内聚)(低耦合高内聚)第9页/共61页

5、第10页/共61页 耦合的强弱所依赖的因素耦合的强弱所依赖的因素1、一个模块对另一个模块的、一个模块对另一个模块的引用引用2、一个模块向另一个模块传递的、一个模块向另一个模块传递的数据量数据量3、一个模块施加到另一个模块的、一个模块施加到另一个模块的控制的数量控制的数量4、模块之间接口的、模块之间接口的复杂程度复杂程度 第11页/共61页 耦合的类型(由强到弱)耦合的类型(由强到弱)1、内容耦合:内容耦合:一个模块直接修改或操作另一个模块的数据。 2、公共环境耦合公共环境耦合:两个以上的模块共同引用一个全局数据项。 3、控制耦合控制耦合:一个模块向另一模块传递一个控制信号,接受 信号的模块将依

6、据该信号值进行必要的活动。 4、数据耦合数据耦合:模块间通过参数传递基本类型的数据。 第12页/共61页 图中存在公用耦合,假设模块A、C、E都存取全程数据区(如公用一个磁盘文件)中的一个数据项。 如果A模块读取该项数据,然后调用C模块对该项重新计算,并进行数据更新。ABCDE全程数全程数据区据区(3)公用耦合)公用耦合第13页/共61页4)内容耦合 一个模块与另一个模块的内容直接发生联系。 内容耦合对维护会带来严重的困难。 模块模块ALAB:MOVE 1模块模块BGOTO LAB内容耦合内容耦合(4)内容耦合)内容耦合 程序中如果一个模块直接把程序转移到另一个模块中,或一个模块程序中如果一个

7、模块直接把程序转移到另一个模块中,或一个模块使用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程使用另一个模块内部的数据,都会产生内容耦合。内容耦合是最高程度的耦合,应该避免采用。度的耦合,应该避免采用。 第14页/共61页建议:尽量使用数据耦合,少用控制耦合,限制公用耦合,完全不用内容偶合。 第15页/共61页二、内聚 内聚内聚:一个模块内部各个元素彼此结合的紧密程度。:一个模块内部各个元素彼此结合的紧密程度。 常见的内聚有七类。常见的内聚有七类。 第16页/共61页内聚分类 (由低到高)1 1、偶然内聚:偶然内聚:一个模块之内各成分之间没有任何关系。 2 2、逻辑内聚:、逻辑内聚:

8、几个逻辑上相关的功能放在同一模块中。 3 3、时间内聚:、时间内聚:一个模块完成的功能必须在同一时间内完成,而这些功能只是因 为时间因素关联在一起。 4 4、过程内聚:、过程内聚:处理成分必须以特定的次序执行。 5 5、通信内聚:、通信内聚:各成分都操作在同一数据集或生成同一数据集。 6 6、顺序内聚:、顺序内聚:各成分与一个功能相关,且一个成分的输出作为另一成分的输入。 7 7、功能内聚:、功能内聚:模块的所有成分对完成单一功能是最基本的,且该模块对完成这一功能而言是充分必要的。第17页/共61页第18页/共61页第19页/共61页模块A的处理单元将根据同一个数据文件FILE的数据产生不同的

9、表格,因此它存在通信内聚。 A从文件从文件FILE中读出数据中读出数据1.由数据产生报表由数据产生报表A2.由数据产生报表由数据产生报表B通信内聚示例通信内聚示例第20页/共61页完成各种初始化工作的模块,或者处理故障的模块都存在时间内聚。 如图,在“紧急故障处理模块”中,“关闭文件”、“报警”、“保留现场”等任务都必须无中断地同时处理。紧急故障处理紧急故障处理模块模块1关闭文件关闭文件2报警报警3保留现场保留现场时间内聚示例时间内聚示例第21页/共61页 如图,A、B、C模块合并成ABC模块之后,ABC模块就是逻辑内聚模块。 XYZABCXYZABC合并合并逻辑内聚示例逻辑内聚示例第22页/

10、共61页 对逻辑内聚模块的调用,常常需要有一个功能对逻辑内聚模块的调用,常常需要有一个功能开关,由上层调用模块向它发出一个控制信号,开关,由上层调用模块向它发出一个控制信号,在多个关联性功能中选择执行某一个功能。在多个关联性功能中选择执行某一个功能。 这种内聚较差,增加了模块之间的联系,不易这种内聚较差,增加了模块之间的联系,不易修改。修改。 第23页/共61页 偶然内聚是最差的一种内聚。 常犯这种错误的一种情况是:有时在写完程序后,发现一组语句在多处出现,于是为了节省空间而将这些语句作为一个模块设计,就出现偶然内聚。第24页/共61页 如图,模块A、B、C出现公共代码段W,于是将W独立成一个

11、模块,而W中这些语句并没有任何联系。 如果在测试中发现模块A不需要做“X=Y+Z”,而应该做“X=Y*Z”,此时对W的维护就很困难了。ABCW模块模块X=Y+ZGET CARDIF I=5 THEN E=0偶然内聚示例偶然内聚示例第25页/共61页 软件设计中应该:力求做到高内聚,尽量少用中内聚,不用低内聚。 第26页/共61页5.3 启发式规则 1. 改进软件结构提高模块独立性2.模块规模应该适中 3. 深度、宽度、扇出和扇入都应适当深度、宽度、扇出和扇入都应适当 深度深度:软件结构中控制的层数;:软件结构中控制的层数; 宽度宽度:软件结构内同一个层次上的模块总数的最大值;:软件结构内同一个

12、层次上的模块总数的最大值; 扇出扇出:一个模块直接控制(调用)其它模块的数目;:一个模块直接控制(调用)其它模块的数目; 扇入扇入:一个模块被其它模块调用的数目。:一个模块被其它模块调用的数目。 第27页/共61页对扇出、扇入过大的改进: (a)对扇入过大的改进对扇入过大的改进(b)对扇出过大的改进对扇出过大的改进第28页/共61页4. . 模块的作用域应该在控制域之内 MAGBCEDF图图5.2 模块的作用域和控制域模块的作用域和控制域作用域:受该模块内一个判定影响的所有模块的集合。作用域:受该模块内一个判定影响的所有模块的集合。控制域:模块本身以及所有从属于它的模块的集合。控制域:模块本身

13、以及所有从属于它的模块的集合。第29页/共61页 如:QUAD-ROOT(TBL,X) 求一元二次方程的根的模块,其中TBL,X都为数组,分别代表方程的系数和方程的根。 应该使接口更简单,如: QUAD-ROOT(A,B,C,ROOT1,ROOT2) A、B、C是方程的系数,ROOT1,ROOT2是方程的根。 5. 力争降低模块接口的复杂度力争降低模块接口的复杂度第30页/共61页6. 设计单入口、单出口的模块 7. 模块功能应该可以预测模块功能应该可以预测 第31页/共61页 5.4 图形工具5.4.1 层次图和HIPO图 正文加工正文加工系统系统输入输入输出输出编辑编辑加标题加标题存储存储

14、检索检索编目录编目录格式化格式化添加添加删除删除插入插入修改修改合并合并列表列表图图5.3 正文加工系统的层次图正文加工系统的层次图第32页/共61页正文加工正文加工系统系统输入输入1.0输出输出2.0编辑编辑3.0加标题加标题4.0存储存储5.0检索检索6.0编目录编目录7.0格式化格式化8.0添加添加3.1删除删除3.2插入插入3.3修改修改3.4合并合并3.5列表列表3.6图图5.4 带编号的层次图(带编号的层次图(H图)图)HIPO图是:图是:“层次图输入层次图输入/处理处理/输出图输出图”第33页/共61页5.4.2 结构图 产生最佳解产生最佳解得到好输入得到好输入计算最佳解计算最佳

15、解输出结果输出结果读输入读输入编辑输入编辑输入结果格式化结果格式化显示结果显示结果图图4.5 结构图的例子结构图的例子产生最佳解的一般结构产生最佳解的一般结构第34页/共61页MAB图图5.6 判定为真时调用判定为真时调用A,为假时调用为假时调用BMABC图图5.7 模块模块M循环调循环调用模块用模块A、B、C第35页/共61页5.5 面向数据流的设计方法 面向数据流设计(DFOD)是与数据流分析(DFA)对应的结构化软件设计技术。 面向数据流的设计将得到以数据流图为基础的软件模块结构图。 第36页/共61页数据流可以分为两种类型: 1)变换型数据流 2)事务型数据流 5.5.1 变换流与事务

16、流第37页/共61页一、一、变换流变换流 具有较明确的输入、变换(或称主加工)和输具有较明确的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图。出界面的数据流图称为变换型数据流图。 如图所示,该变换中心可以理解为数据的加工如图所示,该变换中心可以理解为数据的加工和处理程序。和处理程序。 读入原读入原始数据始数据校验原校验原始数据始数据计算最计算最优结果优结果编辑打印编辑打印最优结果最优结果输入输入变换中心变换中心输出输出第38页/共61页 事务型数据流图中存在一个事务中心(也就是数据处理、加工中心),它将输入分离成若干个发散的数据流,形成许多活动路径,并根据输入值选择其中一条路径

17、。要求类要求类别处理别处理分房处理分房处理调房处理调房处理退房处理退房处理住房要求住房要求事务中心事务中心活动路径活动路径 二、事务流第39页/共61页 通常,一个实际系统的数据流图是变换型和事务型两种类型的混合体。 如图所示,中间的子块属事务型数据流,如果把中间子块视为一个处理整体的话,整个程序属变换型程序。 A(事务型,(事务型,A为事务中心)为事务中心)变换中心变换中心输入输入输出输出混合型数据流图混合型数据流图第40页/共61页面向数据流设计软件结构的基本步骤有七步: 1)复审并精化数据流图; 2)确定数据处理流图的类型; 3)确定变换中心或事务中心; 5.5.2 面向数据流设计的步骤

18、第41页/共61页4)将数据流图映射成软件模块结构图,设计出该数据流图对应的第一层模块结构;5)基于数据流图逐步分解,设计下层模块;6)运用模块设计和优化准则优化软件结构;7)描述模块的接口。第42页/共61页复查、精化数据流图复查、精化数据流图类型类型找出事务中心找出事务中心找出变换中心找出变换中心映射成事务结构映射成事务结构映射成变换结构映射成变换结构优化软件模块结构优化软件模块结构导出模块结构导出模块结构复查复查不满意不满意变换变换事务事务变换设计变换设计事务设计事务设计面向数据流的设计步骤面向数据流的设计步骤第43页/共61页 变换设计就是从变换型数据流图映射出软件模块结构的过程,也称

19、以变换为中心的设计。 5.5.3 变换设计变换设计第44页/共61页变换设计的基本方法有两步:变换设计的基本方法有两步:1)分解第一层模块结构)分解第一层模块结构 就是把整个变换分解成输入控制模块就是把整个变换分解成输入控制模块Ci、输出输出控制模块控制模块Co和变换中心控制模块和变换中心控制模块Ct,由主控模由主控模块控制。块控制。 主控模块主控模块输出控制模块输出控制模块Co变换中心控制模块变换中心控制模块Ct输入控制模块输入控制模块Ci第45页/共61页2)分别设计输入、输出和处理的下层模块结构 方法是: 从变换中心边界向两侧移动,分别把输入通路和输出通路的每个处理映射成输入控制模块Ci

20、和输出控制模块Co的下属模块。 变换中心的下层模块,是把每个处理映射成变换中心控制模块Ct的一个直接下属模块。 第46页/共61页ABCDFEGHIJK变换中心变换中心输入输入输出输出主控模块主控模块输出控制模块输出控制模块Co变换中心控制模块变换中心控制模块Ct输入控制模块输入控制模块CiDCBAEFGIHJK第47页/共61页 事务设计就是从事务型数据流图映射出软件模块结构的过程,也称为以事务为中心的设计。 5.5.4 事务设计第48页/共61页事务设计的基本方法有两步: 1)建立主控模块、接收输入类型分析模块和事务调度模块;主模块主模块调度调度输入类型分析输入类型分析第49页/共61页2)分别设计输入类型分析模块和调度模块的下层模块结构。 方法是:将输出的每条通路作为调度模块的一个判断分支,而输入类型分析模块的下层模块与变换设计类似。 第50页/共61页I2I3I1TCA1B1C1A2B2C2事务中心事务中心主模块主模块调度调度输入类型分析输入类型分析I1I3I2A1A2B1B2C1C2第51页/共61页第5章小结 概要设计说明书概要设计说明书 该说明书是概要实际阶段的工作成果,它应说该说明书是概要实际阶段的工作成果,它应说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论