软件工程 第5章 传统软件设计.pptx
《软件工程 第5章 传统软件设计.pptx》由会员分享,可在线阅读,更多相关《软件工程 第5章 传统软件设计.pptx(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Computer School of Wuhan UniversityComputer School of Wuhan University软件工程软件工程Software Engineering计算机学院计算机学院 软件工程课程组软件工程课程组Software EngineeringSoftware Engineering软件生存期软件生存期维护维护维护维护软件计划软件计划软件计划软件计划需求分析需求分析需求分析需求分析测试测试测试测试软件设计软件设计软件设计软件设计实现实现实现实现(编码编码编码编码)定义时期定义时期定义时期定义时期 开发时期开发时期开发时期开发时期 使用和维护时期使用和维
2、护时期使用和维护时期使用和维护时期退退退退役役役役Software EngineeringSoftware Engineering第第5章章传统软件设计方法传统软件设计方法n 概要设计和详细设计阶段的任务是什么?概要设计和详细设计阶段的任务是什么?n 什么是结构化设计方法?什么是结构化设计方法?n 结构化设计与结构化分析的关系?结构化设计与结构化分析的关系?n 什么是面向数据结构的设计方法?什么是面向数据结构的设计方法?n 什么是结构化程序设计?什么是结构化程序设计?n 常用的过程设计工具?常用的过程设计工具?Software EngineeringSoftware Engineering一、
3、软件设计的任务和作用一、软件设计的任务和作用n 两个阶段两个阶段q 概要设计概要设计q 详细设计详细设计n SE核心过程核心过程Software EngineeringSoftware EngineeringSoftware EngineeringSoftware Engineering二、设计的启发规则二、设计的启发规则1、提高模块独立性、提高模块独立性q 松耦合,高内聚松耦合,高内聚q 增加内聚增加内聚 减少耦合减少耦合Software EngineeringSoftware Engineering软件结构的划分方式软件结构的划分方式n 水平划分水平划分n 垂直划分垂直划分Software
4、 EngineeringSoftware Engineering水平划分(水平划分(Horizontal Partitioning)n 按主要功能定义模块结构的各分支按主要功能定义模块结构的各分支n 顶层控制模块,下层输入、处理、输出三个分支顶层控制模块,下层输入、处理、输出三个分支n 优点:功能分离,易修改扩充优点:功能分离,易修改扩充n 缺点:模块接口传递数据多,信息流的整体控制复杂化缺点:模块接口传递数据多,信息流的整体控制复杂化function 1function 1function 3function 3function 2function 2Software Engineering
5、Software Engineering垂直划分垂直划分(Vertical Partitioning:FactoringVertical Partitioning:Factoring)n 自顶向下逐层分布工作自顶向下逐层分布工作n 顶层模块控制,低层模块实际处理顶层模块控制,低层模块实际处理n 优点:对低层模块的修改不易引起副作用优点:对低层模块的修改不易引起副作用n 便于将来的维护便于将来的维护Software EngineeringSoftware Engineering设计的启发规则设计的启发规则2、模块规模适中、模块规模适中q 过大不易理解,分解不充分过大不易理解,分解不充分q 太小则
6、接口开销过大太小则接口开销过大q 注意分解后不应降低模块的独立性注意分解后不应降低模块的独立性optimal number of modules cost of softwarenumber of modulesmoduleintegrationcostmodule development cost Software EngineeringSoftware Engineering设计的启发规则设计的启发规则3、深度、宽度、扇入、扇出适当、深度、宽度、扇入、扇出适当q 深度深度=层数层数n 过大表示分工过细过大表示分工过细n 管理模块过分简单,适当管理模块过分简单,适当合并合并q 宽度宽度=跨度
7、数的最大值跨度数的最大值n 过大表示系统复杂过大表示系统复杂Software EngineeringSoftware Engineering设计的启发规则设计的启发规则q扇出扇出=模块直接调用模块直接调用/控制的模块数控制的模块数n fan-out 5q扇入扇入=直接调用该模直接调用该模块的上级模块数块的上级模块数nfan-in 5AA的扇出的扇出AA的扇入的扇入Software EngineeringSoftware Engineering设计的启发规则设计的启发规则4、作用域在控制域内、作用域在控制域内q 控制域控制域q 模块本身以及所有直接或间接从属于它的模块模块本身以及所有直接或间接从
8、属于它的模块的集合的集合 q 作用域作用域q 受该模块内一个判定影响的所有模块的集合受该模块内一个判定影响的所有模块的集合MACBABCIf flagThen BElse CM的控制域的控制域=M,A,B,CA的作用域的作用域=B,CSoftware EngineeringSoftware Engineering作用域在控制域内作用域在控制域内n修改软件结构修改软件结构q判断点上移判断点上移把把A中的中的 if 移到移到M中中q受影响块下移受影响块下移把把C移到移到A下面下面A:if then goto B1 B:B1:A作用域在控制域内作用域在控制域内MACBA的控制域的控制域=A,BA:i
9、f then goto M M:M1:goto C A作用域超出了控制域作用域超出了控制域C:Software EngineeringSoftware Engineering设计的启发规则设计的启发规则5、降低接口的复杂程度、降低接口的复杂程度q 接口复杂可能表明模块的独立性差接口复杂可能表明模块的独立性差q 接口复杂或不一致(看起来传递的数据接口复杂或不一致(看起来传递的数据间无联系),是紧耦合或低内聚的征兆间无联系),是紧耦合或低内聚的征兆Software EngineeringSoftware Engineering【例】【例】求一元二次方程的根求一元二次方程的根解法解法1Var a,b
10、,c,x1,x2:real;Begin read(a,b,c);P P;write(x1,x2)End.Procedure P;Procedure P;beginbeginend;end;解法解法2Type TA=array1.3 of real;TB=array1.2 of real;Var A:TA;B:TB;Begin read(A1,A2,A3);P(A,B)P(A,B);write(B1,B2)End.Procedure A(A:TA;var B:TB);Procedure A(A:TA;var B:TB);begin begin end;end;解法解法3Var a,b,c,x1,
11、x2:real;Begin read(a,b,c);P(a,b,c,x1,x2)P(a,b,c,x1,x2);write(x1,x2)End.ProcedureProcedure P(a,b,c:real;var x1,x2:real);P(a,b,c:real;var x1,x2:real);begin begin end;end;D D 全局变量,紧耦合!全局变量,紧耦合!全局变量,紧耦合!全局变量,紧耦合!D D 可读性差!可读性差!可读性差!可读性差!C C 局部变量,可读性好!局部变量,可读性好!局部变量,可读性好!局部变量,可读性好!Software EngineeringSoft
12、ware Engineering设计的启发规则设计的启发规则6、单出单入,避免内容耦合、单出单入,避免内容耦合7、模块功能可预测、模块功能可预测q 相同输入必产生相同输出相同输入必产生相同输出q 模块中使用全局变量可能导致不可预测模块中使用全局变量可能导致不可预测A:entry 1:entry 2:Software EngineeringSoftware Engineering三、表示软件结构的图形工具三、表示软件结构的图形工具n 层次图和层次图和HIPO图图n 结构图结构图Software EngineeringSoftware Engineering1.层次图和层次图和HIPO图图n层次图
13、(层次图(Hierarchy Diagram)正文加工系统正文加工系统编辑编辑3.0加标题加标题4.0输出输出2.0存储存储5.0插入插入3.3删除删除3.2追加追加3.1修改修改3.4合并合并3.5列表列表3.6改写改写3.4.1输入输入1.0检索检索6.0编目录编目录7.0格式化格式化8.0Software EngineeringSoftware Engineering层次图层次图n 描述软件结构,而非数据结构描述软件结构,而非数据结构n 矩形框:模块矩形框:模块n 连线:调用关系,而非组成关系连线:调用关系,而非组成关系模块模块a模块模块bSoftware EngineeringSoft
14、ware EngineeringHIPO图图n H图图+IPO图图(Input-process-output Diagram)n 对每个模块附一张对每个模块附一张IPO图图n 每个每个IPO图中应明确标出对应模块的编号图中应明确标出对应模块的编号Software EngineeringSoftware EngineeringIPO图图旧的主文件旧的主文件事务文件事务文件1.校验主记录校验主记录2.校验校验事务记录事务记录3.更新更新主记录主记录有效的主记录有效的主记录有效的有效的事务记录事务记录更新后的更新后的主文件主文件InputInputProcessProcessOutputOutput
15、Software EngineeringSoftware EngineeringIPO表表被调用:被调用:调用:调用:输入:输入:输出:输出:处理:处理:局部数据元素:局部数据元素:注释:注释:系统:系统:作者:作者:模块:模块:日期:日期:编号:编号:IPOIPO表表表表Software EngineeringSoftware Engineering2.结构图(结构图(Structured Diagram)数据传递数据传递控制信息控制信息或或循环循环BAMM1M2M3CDSoftware EngineeringSoftware Engineering【例】【例】结构图结构图产生最佳解产生最佳
16、解得到输入得到输入计算最佳解计算最佳解输出结果输出结果读输入读输入编辑输入编辑输入结果格式化结果格式化显示结果显示结果输入输入原始输入原始输入原始输入原始输入编辑结果编辑结果解解输输入入解解解解格式化的解格式化的解格式化的解格式化的解Software EngineeringSoftware Engineering四、软件系统设计技术四、软件系统设计技术n 面向数据流面向数据流(DFD)的设计方法的设计方法n 面向数据结构的设计方法面向数据结构的设计方法n 原型法原型法Software EngineeringSoftware Engineering结构化设计(结构化设计(Structured D
17、esign,SD)n基于模块化、自顶向下求精、结构化程序基于模块化、自顶向下求精、结构化程序设计技术基础上发展起来设计技术基础上发展起来n面向数据流的设计方法面向数据流的设计方法n数据流图映射到软件结构数据流图映射到软件结构n用启发式规则对结构进行细化用启发式规则对结构进行细化Software EngineeringSoftware Engineering1.面向数据流面向数据流(DFD)的设计方法的设计方法ProgramProgramArchitectureArchitectureData Flow Data Flow DiagramDiagramSoftware EngineeringSo
18、ftware Engineering(1)DFD的类型的类型n DFD的类型决定了映射的方法的类型决定了映射的方法q 变换流变换流q 事务流事务流q 混合型混合型Software EngineeringSoftware Engineering变换流(变换流(Transform Flow)n 所有信息流都可归结为变换流所有信息流都可归结为变换流Internal representationInformationTransform flowOutgoingflowIncomingflowExternal representationTimeSoftware EngineeringSoftware
19、Engineering变换型的软件结构图变换型的软件结构图Software EngineeringSoftware Engineering事务流(事务流(Transaction Flow)n当信息流具有明显当信息流具有明显的的“事务中心事务中心”时,时,可归结为事务流可归结为事务流 TTransactionrequest Action paths T=Call one of the several subroutines depending on the type of the incoming transaction request.Software EngineeringSoftware
20、Engineering事务型的软件结构图事务型的软件结构图Software EngineeringSoftware Engineering混合型混合型n 两种两种DFD的混合体的混合体Software EngineeringSoftware Engineering(2)面向数据流方法的设计过程)面向数据流方法的设计过程“变换变换”“事务事务”精化数据流图精化数据流图流类型流类型区分事务中心和区分事务中心和数据接收通路数据接收通路区分输入和区分输入和输出分支输出分支映射成事务结构映射成事务结构映射成变换结构映射成变换结构用启发式设计规用启发式设计规则精化软件结构则精化软件结构导出接口描述和导出接
21、口描述和全程数据结构全程数据结构复查复查详细设计详细设计变换设计变换设计变换设计变换设计事务设计事务设计事务设计事务设计“Get it to work,then make it fast.”“Get it to work,then make it fast.”Software EngineeringSoftware EngineeringDFD DFD System Hierarchy System Hierarchy(3)从)从DFD导出软件结构图导出软件结构图n 变换设计变换设计n 事务设计事务设计n 综合设计法综合设计法Software EngineeringSoftware Engin
22、eering变换设计变换设计MPIOInternal representationInformationTransform flowOutgoingflowIncomingflowExternal representationTimeSoftware EngineeringSoftware Engineering【例例】汽车数字仪表板的设计汽车数字仪表板的设计功能:功能:通过模通过模-数转换实现传感器和微处理机接口;数转换实现传感器和微处理机接口;在发光二极管面板上显示数据;在发光二极管面板上显示数据;指示每小时英里数指示每小时英里数(mph),行驶的里程,每加仑油行驶的里程,每加仑油行驶的英
23、里数行驶的英里数(mpg)等等;等等;指示加速或减速;指示加速或减速;如果车速超过如果车速超过55mph,则发出警告铃声。则发出警告铃声。Software EngineeringSoftware Engineering确定输入流和输出流的边界确定输入流和输出流的边界燃料流燃料流 传感器信号传感器信号SPS旋转信号旋转信号读读旋转旋转信号信号收集收集和求和求平均平均确定确定加加/减减速速转换转换成成转转/分分计算计算里程里程计算计算mph,超超速值速值产生产生加加/减减速显示速显示计算计算燃料燃料消耗消耗计算计算gph读和读和校核校核产生产生mpg显示显示产生产生mph显示显示发出发出铃声铃声产
24、生产生里程里程显示显示SPS SPS箭头指示箭头指示燃烧流燃烧流上箭头上箭头水平线水平线下箭头下箭头rpmrpmgphmphmpgmph超速值超速值英里英里显示显示铃声铃声mph显示显示mpg显示显示Software EngineeringSoftware Engineering第一级分解方法第一级分解方法MP PIOSoftware EngineeringSoftware Engineering第一级分解第一级分解燃料流燃料流 传感器信号传感器信号SPS旋转信号旋转信号读读旋转旋转信号信号收集收集和求和求平均平均确定确定加加/减减速速转换转换成成转转/分分计算计算里程里程计算计算mph,超超
25、速值速值产生产生加加/减减速显示速显示计算计算燃料燃料消耗消耗计算计算gph读和读和校核校核产生产生mpg显示显示产生产生mph显示显示发出发出铃声铃声产生产生里程里程显示显示SPS SPS箭头指示箭头指示燃烧流燃烧流上箭头上箭头水平线水平线下箭头下箭头rpmrpmgphmphmpgmph超速值超速值英里英里显示显示铃声铃声mph显示显示mpg显示显示Software EngineeringSoftware Engineering第一级分解第一级分解数字仪表板数字仪表板控制控制数据转换数据转换控制控制驱动仪表板驱动仪表板接收传感器接收传感器信号信号输入控输入控制制变换控变换控变换控变换控制制制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 第5章 传统软件设计 传统 软件设计
限制150内