软件工程 第5章 传统软件设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ComputerSchoolofWuhanUniversity软件工程SoftwareEngineering计算机学院软件工程课程组SoftwareEngineering软件生存期维护软件计划需求分析测试软件设计实现(编码)定义时期开发时期使用和维护时期退役SoftwareEngineering第5章传统软件设计方法概要设计和详细设计阶段的任务是什么?什么是结构化设计方法?结构化设计与结构化分析的关系?什么是面向数据结构的设计方法?什么是结构化程序设计?常用的过程设计工具?SoftwareEngineering一、软件设计的任务和作用两个阶段概要设计详细设计SE核心过程SoftwareEngineering数据词典数据流图实体关系图状态转换图加工控制规规格格说说明明数据对象描述过程设计接口设计体系结构设计数据设计SoftwareEngineering二、设计的启发规则1、提高模块独立性松耦合,高内聚增加内聚减少耦合SoftwareEngineering软件结构的划分方式水平划分垂直划分SoftwareEngineering水平划分(HorizontalPartitioning)按主要功能定义模块结构的各分支顶层控制模块,下层输入、处理、输出三个分支优点:功能分离,易修改扩充缺点:模块接口传递数据多,信息流的整体控制复杂化function1function3function2SoftwareEngineering垂直划分(VerticalPartitioning:Factoring)自顶向下逐层分布工作顶层模块控制,低层模块实际处理优点:对低层模块的修改不易引起副作用便于将来的维护SoftwareEngineering设计的启发规则2、模块规模适中过大不易理解,分解不充分太小则接口开销过大注意分解后不应降低模块的独立性optimalnumberofmodulescostofsoftwarenumberofmodulesmoduleintegrationcostmoduledevelopmentcostSoftwareEngineering设计的启发规则3、深度、宽度、扇入、扇出适当深度=层数过大表示分工过细管理模块过分简单,适当合并宽度=跨度数的最大值过大表示系统复杂SoftwareEngineering设计的启发规则扇出=模块直接调用/控制的模块数fan-out5扇入=直接调用该模块的上级模块数fan-in≤5AA的扇出AA的扇入SoftwareEngineering设计的启发规则4、作用域在控制域内控制域模块本身以及所有直接或间接从属于它的模块的集合作用域受该模块内一个判定影响的所有模块的集合MACBABCIfflagThenBElseCM的控制域={M,A,B,C}A的作用域={B,C}SoftwareEngineering作用域在控制域内修改软件结构判断点上移把A中的if移到M中受影响块下移把C移到A下面A:…………if……thengotoB1……………………B:……………………B1:……………………A作用域在控制域内MACBA的控制域={A,B}A:…………if……thengotoM……………………M:……………………M1:gotoC……………………A作用域超出了控制域C:…………………………………………SoftwareEngineering设计的启发规则5、降低接口的复杂程度接口复杂可能表明模块的独立性差接口复杂或不一致(看起来传递的数据间无联系),是紧耦合或低内聚的征兆SoftwareEngineering【例】求一元二次方程的根解法1……Vara,b,c,x1,x2:real;Beginread(a,b,c);P;write(x1,x2)End.ProcedureP;beginend;,bbacxa21242解法2……TypeTA=array[1..3]ofreal;TB=array[1..2]ofreal;VarA:TA;B:TB;Beginread(A[1],A[2],A[3]);P(A,B);write(B[1],B[2])End.ProcedureA(A:TA;varB:TB);beginend;AAAABA2[2][2]4[1][3][1,2]2[1]解法3……Vara,b,c,x1,x2:real;Beginread(a,b,c);P(a,b,c,x1,x2);write(x1,x2)End.ProcedureP(a,b,c:real;varx1,x2:real);beginend;bbacxa21,242全局变量,紧耦合!可读性差!局部变量,可读性好!SoftwareEngineering设计的启发规则6、单出单入,避免内容耦合7、模块功能可预测相同输入必产生相同输出模块中使用全局变量可能导致不可预测A:………………………………entry1:………………………………entry2:………………………………SoftwareEngineering三、表示软件结构的图形工具层次图和HIPO图结构图SoftwareEngineering1.层次图和HIPO图层次图(HierarchyDiagram)正文加工系统编辑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.0SoftwareEngineering层次图描述软件结构,而非数据结构矩形框:模块连线:调用关系,而非组成关系模块a模块bSoftwareEngineeringHIPO图H图+IPO图(Input-process-outputDiagram)对每个模块附一张IPO图每个IPO图中应明确标出对应模块的编号SoftwareEngineeringIPO图旧的主文件事务文件1.校验主记录2.校验事务记录3.更新主记录有效的主记录有效的事务记录更新后的主文件InputProcessOutputSoftwareEngineeringIPO表被调用:调用:输入:输出:处理:局部数据元素:注释:系统:作者:模块:日期:编号:IPO表SoftwareEngineering2.结构图(StructuredDiagram)数据传递控制信息或循环BAMM1M2M3CDSoftwareEngineering【例】结构图产生最佳解得到输入计算最佳解输出结果读输入编辑输入结果格式化显示结果解解解SoftwareEngineering四、软件系统设计技术面向数据流(DFD)的设计方法面向数据结构的设计方法原型法SoftwareEngineering结构化设计(StructuredDesign,SD)基于模块化、自顶向下求精、结构化程序设计技术基础上发展起来面向数据流的设计方法数据流图映射到软件结构用启发式规则对结构进行细化SoftwareEngineering1.面向数据流(DFD)的设计方法ProgramArchitectureDataFlowDiagramSoftwareEngineering(1)DFD的类型DFD的类型决定了映射的方法变换流事务流混合型SoftwareEngineering①变换流(TransformFlow)所有信息流都可归结为变换流InternalrepresentationInformationTransformflowOutgoingflowIncomingflowExternalrepresentationTimeSoftwareEngineering变换型的软件结构图SoftwareEngineering②事务流(TransactionFlow)当信息流具有明显的“事务中心”时,可归结为事务流……TTransactionrequest…Actionpaths……T=Calloneoftheseveralsubroutinesdependingonthetypeoftheincomingtransactionrequest.SoftwareEngineering事务型的软件结构图SoftwareEngineering③混合型两种DFD的混合体SoftwareEngineering(2)面向数据流方法的设计过程“变换”“事务”精化数据流图流类型区分事务中心和数据接收通路区分输入和输出分支映射成事务结构映射成变换结构用启发式设计规则精化软件结构导出接口描述和全程数据结构复查详细设计变换设计事务设计“Getittowork,thenmakeitfast.”SoftwareEngineeringDFDSystemHierarchy(3)从DFD导出软件结构图变换设计事务设计综合设计法SoftwareEngineering①变换设计MPIOInternalrepresentationInformationTransformflowOutgoingflowIncomingflowExternalrepresentationTimeSoftwareEngineering【例】汽车数字仪表板的设计功能:①通过模-数转换实现传感器和微处理机接口;②在发光二极管面板上显示数据;③指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;④指示加速或减速;⑤如果车速超过55mph,则发出警告铃声。SoftwareEngineering确定输入流和输出流的边界燃料流传感器信号SPS旋转信号读旋转信号收集和求平均确定加/减速转换成转/分计算里程计算mph,超速值产生加/减速显示计算燃料消耗计算gph读和校核产生mpg显示产生mph显示发出铃声产生里程显示SPSSPS箭头指示燃烧流上箭头水平线下箭头rpmrpmgphmphmpgmph超速值英里显示铃声mph显示mpg显示SoftwareEngineering第一级分解方法MPIOSoftwareEngineering第一级分解燃料流传感器信号SPS旋转信号读旋转信号收集和求平均确定加/减速转换成转/分计算里程计算mph,超速值产生加/减速显示计算燃料消耗计算gph读和校核产生mpg显示产生mph显示发出铃声产生里程显示SPSSPS箭头指示燃烧流上箭头水平线下箭头rpmrpmgphmphmpgmph超速值英里显示铃声mph显示mpg显示SoftwareEngineering第一级分解数字仪表板控制数据转换控制驱动仪表板接收传感器信号输入控制变换控制输出控制SoftwareEngineering第二级分解ADCBMI每个加工映射成受P控制的一个下层模块P由边界向外移动,将每个遇到的加工映射成I控制下的一个低层模块I沿输出通路向外移动,将每个加工映射成直接或间接受O控制的低层模块OCBDASoftwareEngineering系统软件结构数字仪表板控制数据转换控制驱动仪表板接收传感器信号计算gph转换成rpm读燃料流收集sps读旋转信号确定加/减速计算mph计算mpg计算里程加/减速显示显示mph显示mpg显示里程发出铃声发光二极管显示转换成rpm求精:高内聚、低耦合!SoftwareEngineering求精系统软件结构数字仪表板控制数据转换控制驱动仪表板接收传感器信号计算gph读燃料流读旋转信号确定加/减速计算mph计算mpg计算里程加/减速显示显示mph显示mpg显示里程发出铃声发光二极管显示转换成rpmSoftwareEngineering模块说明为每个模块附一个简要说明/IPO表进出该模块的信息(接口描述)模块内部的信息过程陈述,包括主要判定点及任务等对约束和特殊特点的简短讨论SoftwareEngineeringT②事务设计……TTransactionrequest…Actionpaths……IIIBAC………SoftwareEngineering事务设计的映射方法MIIITAB

1 / 78
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功