收藏 分销(赏)

软件工程导论第五版第五章-PPT.pptx

上传人:1587****927 文档编号:1672176 上传时间:2024-05-07 格式:PPTX 页数:56 大小:980KB
下载 相关 举报
软件工程导论第五版第五章-PPT.pptx_第1页
第1页 / 共56页
软件工程导论第五版第五章-PPT.pptx_第2页
第2页 / 共56页
软件工程导论第五版第五章-PPT.pptx_第3页
第3页 / 共56页
软件工程导论第五版第五章-PPT.pptx_第4页
第4页 / 共56页
软件工程导论第五版第五章-PPT.pptx_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、软件工程导论第五版第五章第5章:总体设计 5、1 设计过程设计过程 1、设想供选择得方案设想供选择得方案 2、选择合理得方案选择合理得方案 对每个合理得方案要提供对每个合理得方案要提供:A、系统流程图系统流程图 B、组成系统得物理元素清单组成系统得物理元素清单 C、成本成本/效益分析效益分析 D、实现这个系统得进度计划实现这个系统得进度计划 3、推荐最佳方案推荐最佳方案4、功能分解功能分解5、设计软件结构设计软件结构6、数据库设计数据库设计 A、模式设计模式设计 B、子模式设计子模式设计 C、完整性与安全性设计完整性与安全性设计 D、优化优化 7、制定测试计划制定测试计划8、书写文档书写文档

2、A、系统说明系统说明 B、用户手册用户手册 C、测试计划测试计划 D、详细得实现计划详细得实现计划 E、数据库设计结果数据库设计结果9、审查与复审审查与复审 5、2 设计原理设计原理 如果一个大型程序仅由一个模块组成如果一个大型程序仅由一个模块组成,很难被人理解。很难被人理解。设设函函数数C(x)定定义义问问题题x得得复复杂杂程程度度,函函数数E(x)定定义义解解决决问问题题x需要得工作量需要得工作量(时间时间)。对于两个问题。对于两个问题P1与与P2,如果如果:C(P1)C(P2)那么那么 E(P1)E(P2)根据解决问题得经验根据解决问题得经验,有一个规律就是有一个规律就是:C(P1+P2

3、)C(P1)+C(P2)于就是有于就是有 E(P1+P2)E(P1)+E(P2)5、2、1 模块化模块化模块数目模块数目接口成本接口成本成本成本/模块模块软件总成本软件总成本M最小成本区最小成本区成本成本图图5.1 模块化与软件成本模块化与软件成本5 5、2 2、2 2 抽象抽象 5、2、3 逐步求精逐步求精模块得独立性很重要模块得独立性很重要,因为因为:1)有效得模块化得软件比较容易开发出来有效得模块化得软件比较容易开发出来;2)独立得模块比较容易测试与维护。独立得模块比较容易测试与维护。5、2、4 信息隐蔽与局部化信息隐蔽与局部化 5、2、5 模块独立模块独立一、耦合一、耦合 耦合耦合:指

4、软件结构内不同模块彼此之间相指软件结构内不同模块彼此之间相互依赖互依赖(连接连接)得紧密程度。得紧密程度。模块独立程度可以由两个定性标准度量模块独立程度可以由两个定性标准度量:耦耦合与内聚。合与内聚。模块得偶合分四类模块得偶合分四类:1)数据耦合数据耦合 两个模块之间只就是通过参数交换信息两个模块之间只就是通过参数交换信息,而且而且交换得信息仅仅就是数据。交换得信息仅仅就是数据。数据耦合就是最低程度得耦合。数据耦合就是最低程度得耦合。AB数据数据(1)数据耦合)数据耦合2)2)控制耦合控制耦合 两个模块之间所交换得信息包含控制信息。两个模块之间所交换得信息包含控制信息。控制耦合就是中等程度得耦

5、合。控制耦合就是中等程度得耦合。图中模块图中模块A得内部处理程序判断就是执行得内部处理程序判断就是执行C还就是执还就是执行行D,要取决于模块要取决于模块B传来得信息状态传来得信息状态(Status)。BACD(2)控制耦合)控制耦合astatus3 3)公用耦合公用耦合 两个或多个模块通过一个公共区相互作用两个或多个模块通过一个公共区相互作用时得耦合。时得耦合。公共区可以就是公共区可以就是:全程数据区、共享通信区、全程数据区、共享通信区、内存公共覆盖区、任何介质上得文件、物理设内存公共覆盖区、任何介质上得文件、物理设备等。备等。软件结构中存在大量得公用耦合时会给诊软件结构中存在大量得公用耦合时

6、会给诊断错误带来困难。断错误带来困难。大家学习辛苦了,还就是要坚持继续保持安静继续保持安静 图中存在公用耦合图中存在公用耦合,假设模块假设模块A A、C C、E E都存取全程数据区都存取全程数据区(如公用一个磁盘文件如公用一个磁盘文件)中得一个数据项。中得一个数据项。如果如果A A模块读取该项数据模块读取该项数据,然后调用然后调用C C模块对该项重新计算模块对该项重新计算,并进行数据更新。并进行数据更新。ABCDE全程数全程数据区据区(3)公用耦合)公用耦合 如果此时如果此时C C模块错误地更新了该项数据模块错误地更新了该项数据,在往下得处理在往下得处理中模块中模块E E读该数据项时出现错误。

7、读该数据项时出现错误。表面上瞧表面上瞧,问题由模块问题由模块E E产生产生,实际上由模块实际上由模块C C引起。引起。ABCDE全程数全程数据区据区(3)公用耦合)公用耦合4 4)内容耦合内容耦合 一个模块与另一个模块得内容直接发生联系。一个模块与另一个模块得内容直接发生联系。内容耦合对维护会带来严重得困难。内容耦合对维护会带来严重得困难。模块模块ALAB:MOVE 1模块模块BGOTO LAB内容耦合内容耦合(4)内容耦合)内容耦合 程序中如果一个模块直接把程序转移到另一个模块中程序中如果一个模块直接把程序转移到另一个模块中,或一个模块使或一个模块使用另一个模块内部得数据用另一个模块内部得数

8、据,都会产生内容耦合。内容耦合就是最高程度都会产生内容耦合。内容耦合就是最高程度得耦合得耦合,应该避免采用。应该避免采用。软件设计应追求尽可能松散耦合软件设计应追求尽可能松散耦合,避免强耦避免强耦合合,这样模块间得联系就越小这样模块间得联系就越小,模块得独立性就模块得独立性就越强越强,对模块得测试、维护就越容易。对模块得测试、维护就越容易。因此建议因此建议:尽量使用数据耦合尽量使用数据耦合,少用控制耦少用控制耦合合,限制公用耦合限制公用耦合,完全不用内容偶合。完全不用内容偶合。二、内聚二、内聚 内内聚聚:一一个个模模块块内内部部各各个个元元素素彼彼此此结结合合得得紧密程度。紧密程度。它它就就是

9、是衡衡量量一一个个模模块块内内部部组组成成部部分分间间整整体统一性得度量。体统一性得度量。常见得内聚有七类。常见得内聚有七类。1 1)功能内聚功能内聚(Functional CohesionFunctional Cohesion)如果一个模块内所有处理元素完成一个如果一个模块内所有处理元素完成一个,而而且仅完成一个功能且仅完成一个功能,则称为功能内聚。则称为功能内聚。功能内聚就是最高程度得内聚。但在软件结功能内聚就是最高程度得内聚。但在软件结构中构中,并不就是每个模块都能设计成一个功能并不就是每个模块都能设计成一个功能内聚模块。内聚模块。2)2)顺序内聚顺序内聚(Sequential Cohe

10、sion)Sequential Cohesion)如如果果一一个个模模块块内内处处理理元元素素与与同同一一个个功功能能密密切切相相关关,而而且且这这些些处处理理元元素素必必须须顺顺序序执执行行,则则称称为顺序内聚。为顺序内聚。如图如图,一个求一元二次方程根得模块由三个一个求一元二次方程根得模块由三个处理元素组成处理元素组成,该模块中存在顺序内聚。该模块中存在顺序内聚。通常通常,顺序内聚中一个处理元素得输出就是顺序内聚中一个处理元素得输出就是另一个处理元素得输入。另一个处理元素得输入。求一元二次方求一元二次方程根模块程根模块1 1输入方程系数输入方程系数2 2求解求解3 3打印方程的解打印方程的

11、解顺序内聚示例顺序内聚示例3)3)通信内聚通信内聚(municational Cohesion)municational Cohesion)如如果果一一个个模模块块中中所所有有处处理理元元素素都都使使用用同同一一个个输输入入数数据据与与(或或)产产生生同同一一个个输输出出数数据据,称称为为通通信内聚。信内聚。如图如图,模块模块A得处理单元将根据同一个数据得处理单元将根据同一个数据文件文件FILE得数据产生不同得表格得数据产生不同得表格,因此它存在因此它存在通信内聚。通信内聚。通信内聚有时也称为数据内聚。通信内聚有时也称为数据内聚。A从文件从文件FILE中读出数据中读出数据1.由数据产生报表由数

12、据产生报表A2.由数据产生报表由数据产生报表B通信内聚示例通信内聚示例4)4)过程内聚过程内聚(Procedural Cohesion)Procedural Cohesion)如如果果一一个个模模块块内内得得处处理理元元素素就就是是相相关关得得,而且必须以特定得次序执行而且必须以特定得次序执行,称为过程内聚。称为过程内聚。过程内聚与顺序内聚得区别就是过程内聚与顺序内聚得区别就是:顺序内聚中就是数据流从一个处理单元流顺序内聚中就是数据流从一个处理单元流到另一个处理单元到另一个处理单元,而过程内聚就是控制流从而过程内聚就是控制流从一个动作流向另一个动作。一个动作流向另一个动作。5)时间内聚时间内聚

13、(Temporal Cohesion)如如果果一一个个模模块块包包含含得得任任务务必必须须在在同同一一段段时时间间内执行内执行,称为时间内聚。也称为瞬时内聚。称为时间内聚。也称为瞬时内聚。例例如如,完完成成各各种种初初始始化化工工作作得得模模块块,或或者者处处理理故故障障得得模模块都存在时间内聚。块都存在时间内聚。如如图图,在在“紧紧急急故故障障处处理理模模块块”中中,“关关闭闭文文件件”、“报报警警”、“保留现场保留现场”等任务都必须无中断地同时处理。等任务都必须无中断地同时处理。紧急故障处理紧急故障处理模块模块1关闭文件关闭文件2报警报警3保留现场保留现场时间内聚示例时间内聚示例6)6)逻

14、辑内聚逻辑内聚(Logical Cohesion)Logical Cohesion)如如果果模模块块完完成成得得任任务务在在逻逻辑辑上上属属于于相相同同或相似得一类或相似得一类,称为逻辑内聚。称为逻辑内聚。如如图图,A、B、C模模块块合合并并成成ABC模模块块之之后后,ABC模块就就是逻辑内聚模块。模块就就是逻辑内聚模块。XYZABCXYZABC合并合并逻辑内聚示例逻辑内聚示例 对逻辑内聚模块得调用对逻辑内聚模块得调用,常常需要有一个功能常常需要有一个功能开关开关,由上层调用模块向它发出一个控制信号由上层调用模块向它发出一个控制信号,在在多个关联性功能中选择执行某一个功能。多个关联性功能中选择

15、执行某一个功能。这种内聚较差这种内聚较差,增加了模块之间得联系增加了模块之间得联系,不易修不易修改。改。7)偶然内聚偶然内聚(Coincidental Cohesion)如果一个模块由完成若干毫无关系得功能如果一个模块由完成若干毫无关系得功能处理元素偶然组合在一起得处理元素偶然组合在一起得,就叫偶然内聚。就叫偶然内聚。偶然内聚就是最差得一种内聚。偶然内聚就是最差得一种内聚。常常犯犯这这种种错错误误得得一一种种情情况况就就是是:有有时时在在写写完完程程序序后后,发发现现一一组组语语句句在在多多处处出出现现,于于就就是是为为了了节节省省空空间间而而将将这这些些语语句句作作为为一一个个模模块块设设计

16、计,就出现偶然内聚。就出现偶然内聚。如图如图,模块模块A、B、C出现出现公共代码段公共代码段W,于就是将于就是将W独独立成一个模块立成一个模块,而而W中这些中这些语句并没有任何联系。语句并没有任何联系。如果在测试中发现模块如果在测试中发现模块A不需要做不需要做“X=Y+Z”,而应该而应该做做“X=Y*Z”,此时对此时对W得维得维护就很困难了。护就很困难了。ABCW模块模块X=Y+ZGET CARDIF I=5 THEN E=0偶然内聚示例偶然内聚示例 软件设计中应该软件设计中应该:力求做到高内聚力求做到高内聚,尽量少用中内聚尽量少用中内聚,不用低内聚。不用低内聚。5 5、3 3 启发式规则启发

17、式规则 1、改进软件结构提高模块独立性改进软件结构提高模块独立性2、模块规模应该适中模块规模应该适中 3、深度、宽度、扇出与扇入都应适当深度、宽度、扇出与扇入都应适当 深度深度:软件结构中控制得层数软件结构中控制得层数;宽度宽度:软件结构内同一个层次上得模块总数得最大值软件结构内同一个层次上得模块总数得最大值;扇出扇出:一个模块直接控制一个模块直接控制(调用调用)其它模块得数目其它模块得数目;扇入扇入:一个模块被其它模块调用得数目。一个模块被其它模块调用得数目。正文加工正文加工系统系统输入输入输出输出编辑编辑加标题加标题存储存储检索检索编目录编目录格式化格式化添加添加删除删除插入插入修改修改合

18、并合并列表列表对扇出、扇入过大得改进对扇出、扇入过大得改进:(a)对扇入过大的改进对扇入过大的改进(b)对扇出过大的改进对扇出过大的改进4 4、模块得作用域应该在控制域之内模块得作用域应该在控制域之内 MAGBCEDF图图5.2 模块的作用域和控制域模块的作用域和控制域作用域作用域:受该模块内一个判定影响得所有模块得集合。受该模块内一个判定影响得所有模块得集合。控制域控制域:模块本身以及所有从属于它得模块得集合。模块本身以及所有从属于它得模块得集合。如如:QUAD-ROOT(TBL,X)求求一一元元二二次次方方程程得得根根得得模模块块,其其中中TBL,X都都为数组为数组,分别代表方程得系数与方

19、程得根。分别代表方程得系数与方程得根。应该使接口更简单应该使接口更简单,如如:QUAD-ROOT(A,B,C,ROOT1,ROOT2)A、B、C就就是是方方程程得得系系数数,ROOT1,ROOT2就就是是方程得根。方程得根。5、力争降低模块接口得复杂度力争降低模块接口得复杂度6、设计单入口、单出口得模块设计单入口、单出口得模块 7、模块功能应该可以预测模块功能应该可以预测 5 5、4 4 图形工具图形工具5 5、4 4、1 1 层次图与层次图与HIPOHIPO图图 正文加工正文加工系统系统输入输入输出输出编辑编辑加标题加标题存储存储检索检索编目录编目录格式化格式化添加添加删除删除插入插入修改修

20、改合并合并列表列表图图5.3 正文加工系统的层次图正文加工系统的层次图正文加工正文加工系统系统输入输入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图就是图就是:“层次图输入层次图输入/处理处理/输出图输出图”5、4、2 结构图结构图 产生最佳解产生最佳解得到好输入得到好输入计算最佳解计算最佳解输出结果输出结果读输入读输入编辑输入编辑输入结果格式化结果格式化显示结果显示结果图图4.

21、5 结构图的例子结构图的例子产生最佳解的一般结构产生最佳解的一般结构MAB图图5.6 判定为真时调用判定为真时调用A,为假时调用为假时调用BMABC图图5.7 模块模块M循环调循环调用模块用模块A、B、C5、5 面向数据流得设计方法面向数据流得设计方法 面向数据流设计面向数据流设计(Data Flow-Oriented Data Flow-Oriented DesignDesign,DFODDFOD)就是与数据流分析就是与数据流分析(DFADFA)对应得结对应得结构化软件设计技术。构化软件设计技术。面向数据流得设计将得到以数据流图为基础面向数据流得设计将得到以数据流图为基础得软件模块结构图。得

22、软件模块结构图。数据流可以分为两种类型数据流可以分为两种类型:1 1)变换型数据流变换型数据流 2 2)事务型数据流事务型数据流 5、5、1 变换流与事变换流与事务流务流一、变换流一、变换流 具有较明确得输入、变换具有较明确得输入、变换(或称主加工或称主加工)与输出与输出界面得数据流图称为变换型数据流图。界面得数据流图称为变换型数据流图。如图所示如图所示,该变换中心可以理解为数据得加工该变换中心可以理解为数据得加工与处理程序。与处理程序。读入原读入原始数据始数据校验原校验原始数据始数据计算最计算最优结果优结果编辑打印编辑打印最优结果最优结果输入输入变换中心变换中心输出输出 事事务务型型数数据据

23、流流图图中中存存在在一一个个事事务务中中心心(也也就就就就是是数数据据处处理理、加加工工中中心心),),它它将将输输入入分分离离成成若若干干个个发发散散得得数数据据流流,形形成许多活动路径成许多活动路径,并根据输入值选择其中一条路径。并根据输入值选择其中一条路径。要求类要求类别处理别处理分房处理分房处理调房处理调房处理退房处理退房处理住房要求住房要求事务中心事务中心活动路径活动路径 二、事务流二、事务流 通常通常,一个实际系统得数据流图就是变换型与事务型一个实际系统得数据流图就是变换型与事务型两种类型得混合体。两种类型得混合体。如图所示如图所示,中间得子块属事务型数据流中间得子块属事务型数据流

24、,如果把中间子如果把中间子块视为一个处理整体得话块视为一个处理整体得话,整个程序属变换型程序。整个程序属变换型程序。A(事务型,(事务型,A为事务中心)为事务中心)变换中心变换中心输入输入输出输出混合型数据流图混合型数据流图面向数据流设计软件结构得基本步骤有七步面向数据流设计软件结构得基本步骤有七步:1)1)复审并精化数据流图复审并精化数据流图;2)2)确定数据处理流图得类型确定数据处理流图得类型;3)3)确定变换中心或事务中心确定变换中心或事务中心;5、5、2 面向数据流设计得步骤面向数据流设计得步骤4)4)将将数数据据流流图图映映射射成成软软件件模模块块结结构构图图,设设计计出出该数据流图

25、对应得第一层模块结构该数据流图对应得第一层模块结构;5)5)基于数据流图逐步分解基于数据流图逐步分解,设计下层模块设计下层模块;6)6)运用模块设计与优化准则优化软件结构运用模块设计与优化准则优化软件结构;7 7)描述模块得接口。描述模块得接口。复查、精化数据流图复查、精化数据流图类型类型找出事务中心找出事务中心找出变换中心找出变换中心映射成事务结构映射成事务结构映射成变换结构映射成变换结构优化软件模块结构优化软件模块结构导出模块结构导出模块结构复查复查不满意不满意变换变换事务事务变换设计变换设计事务设计事务设计面向数据流的设计步骤面向数据流的设计步骤 变变换换设设计计就就就就是是从从变变换换

26、型型数数据据流流图图映映射射出出软软件件模模块块结结构得过程构得过程,也称以变换为中心得设计。也称以变换为中心得设计。5、5、3 变换设计变换设计变换设计得基本方法有两步变换设计得基本方法有两步:1)分解第一层模块结构分解第一层模块结构 就就是把整个变换分解成输入控制模块就就是把整个变换分解成输入控制模块Ci、输输出控制模块出控制模块Co与变换中心控制模块与变换中心控制模块Ct,由主控模由主控模块控制。块控制。主控模块主控模块输出控制模块输出控制模块Co变换中心控制模块变换中心控制模块Ct输入控制模块输入控制模块Ci2)分别设计输入、输出与处理得下层模块结构分别设计输入、输出与处理得下层模块结

27、构 方法就是方法就是:从变换中心边界向两侧移动从变换中心边界向两侧移动,分别把输入通路分别把输入通路与输出通路得每个处理映射成输入控制模块与输出通路得每个处理映射成输入控制模块Ci与与输出控制模块输出控制模块Co得下属模块。得下属模块。变换中心得下层模块变换中心得下层模块,就是把每个处理映射成就是把每个处理映射成变换中心控制模块变换中心控制模块Ct得一个直接下属模块。得一个直接下属模块。ABCDFEGHIJK变换中心变换中心输入输入输出输出主控模块主控模块输出控制模块输出控制模块Co变换中心控制模块变换中心控制模块Ct输入控制模块输入控制模块CiDCBAEFGIHJK 事事务务设设计计就就就就

28、是是从从事事务务型型数数据据流流图图映映射射出出软软件件模模块结构得过程块结构得过程,也称为以事务为中心得设计。也称为以事务为中心得设计。5、5、4 事务设计事务设计事务设计得基本方法有两步事务设计得基本方法有两步:1 1)建立主控模块、接收输入类型分析模块与事建立主控模块、接收输入类型分析模块与事务调度模块务调度模块;主模块主模块调度调度输入类型分析输入类型分析2 2)分别设计输入类型分析模块与调度模块得分别设计输入类型分析模块与调度模块得下层模块结构。下层模块结构。方法就是方法就是:将输出得每条通路作为调度模块将输出得每条通路作为调度模块得一个判断分支得一个判断分支,而输入类型分析模块得下层而输入类型分析模块得下层模块与变换设计类似。模块与变换设计类似。

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 软件工程

移动网页_全站_页脚广告1

关于我们      联系我们       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号  |  icp.png浙ICP备2021020529号-1 浙B2-2024(办理中)  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服