软件的结构化设计_第1页
软件的结构化设计_第2页
软件的结构化设计_第3页
软件的结构化设计_第4页
软件的结构化设计_第5页
已阅读5页,还剩199页未读 继续免费阅读

下载本文档

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

文档简介

1、概要设计 维护维护 产品产品 提交提交 测试测试 编码编码 详细详细 设计设计 概要概要 设计设计 需求需求分析分析概要设计确定:软件系统的结构软件系统的结构各模块功能及模块间联系各模块功能及模块间联系( (接口接口) ) 数据结构数据结构概要设计的方法n面向结构化的设计方法n面向对象的设计方法概要设计的任务与步骤概要设计的任务与步骤概要设计的过程概要设计的过程 : :n功能分解功能分解n设计软件结构设计软件结构n数据库设计数据库设计n制定测试计划制定测试计划n编写文档编写文档n审查与复审审查与复审n面向结构化的设计方法结构图(SC Structure Chart)SDSD方法在概要设计中的主

2、要表达工具方法在概要设计中的主要表达工具约定:约定:编辑学生记录编辑学生记录读学生记录读学生记录学生数据学生数据无此学生无此学生学号学号不加区分的数据不加区分的数据数据信息数据信息控制信息控制信息SC中的四种模块传入模块传入模块(a)(b)AA传出模块传出模块BB变换模块变换模块(c)CD协调模块协调模块E(d)EFFSC中的选择调用ACBDA根据内根据内部判断决部判断决定是否调定是否调用用B BA按另一判按另一判定结果选择定结果选择调用调用C或或DSC中的循环调用ABCA根据内在的循环重根据内在的循环重复调用复调用B、C等模块等模块结构图(SC)举例 医院管理系统医院管理系统门诊门诊管理管理

3、药房药房管理管理药库药库管理管理病房病房管理管理财务财务管理管理处处方方挂号挂号处理处理挂挂号号费费总总计计挂挂号号单单挂挂号号费费总总计计出库出库处理处理进药进药管理管理病历病历管理管理处方处方管理管理常规常规处理处理酒店管理信息系统酒店管理信息系统 层次图层次图 H M I S收银管理子系统收银管理子系统收银管理子系统收银管理子系统收银管理子系统收银管理子系统客客人人登登记记预预定定登登记记客客房房处处理理历历史史记记录录客客房房查查询询预预定定查查询询餐餐桌桌安安排排菜菜单单作作业业营营业业结结帐帐汇汇总总打打印印各各类类查查询询初初始始设设置置客客帐帐处处理理退退房房处处理理夜夜审审处

4、处理理客客帐帐查查询询报报表表打打印印 面向数据流的设计方法 (结构化设计方法SD) 1. 1. 面向数据流设计方法的基本概念 SD以数据流图为基础,它定义了把以数据流图为基础,它定义了把DFD变换成变换成软件结构软件结构的不同的不同映射映射方法方法映射映射DFD( (问题结构问题结构) )软件系统的结构软件系统的结构( (程序结构程序结构) )系统结构特征可归纳为两种典型形式:系统结构特征可归纳为两种典型形式:n 变换型结构变换型结构n 事务型结构事务型结构数据流图可分为两种类型数据流图可分为两种类型: n 变换型数据流变换型数据流n 事务型数据流事务型数据流变换型数据流 结构传入传入变换变

5、换传出传出变换变换中心中心传入传入部分部分传出传出部分部分变换变换中心中心输入输入输出输出变换型结构由输入、变由输入、变换中心和输换中心和输出三部分组出三部分组成成变换型数据流图举例输入输入信息信息物理物理输入输入格式格式检查检查处理处理显示显示正确正确信息信息结果结果物理物理输出输出数据数据变换中心变换中心逻辑逻辑输入输入逻辑逻辑输出输出传入部分传入部分传出部分传出部分特点:具有明确的传入、变换特点:具有明确的传入、变换( (或称主加或称主加 工工) ) 和传出界面的和传出界面的DFD变换型DFD的SC事务型数据流 结构事务事务分析分析事务事务中心中心动作动作 1动作动作 2动作动作 3接受

6、接受接受接受部分部分事务事务中心中心接受接受路径路径动动作作路路径径事务型 结构具有在多种具有在多种事务中选择事务中选择执行某类事执行某类事物的能力物的能力事务型数据流图举例IMLNOABCDFEGH事务型DFD的SC大型系统大型系统DFDDFD中中, ,变换型变换型和事务型和事务型结构往往共存结构往往共存: :T T事务中心事务中心传入传入变换变换传出传出流类型流类型复查复查事务分析事务分析变换分析变换分析SD方法的两种映射过渡方法变换型变换型DFD事务型事务型DFD初始初始SC初始初始SC变换分析变换分析事务分析事务分析由变换分由变换分析产生析产生由事务分由事务分析产生析产生(1) 变换分

7、析设计方法步骤:步骤:(1)(1)区分传入、变换中心、区分传入、变换中心、 传出部分,在传出部分,在 DFD 上上 标明分界线标明分界线BCADEPRWUVabcedruwv变换中心变换中心传入传入部分部分传出传出部分部分Qep变换分析设计方法步骤(2)(2)第一级分解第一级分解( (建立初始建立初始SC框架框架) ) 设计顶层和第一层模块设计顶层和第一层模块BCADEQPRWUVabcedrpuwv变换中心变换中心传入传入部分部分传出传出部分部分第一级分解的方法第一级分解的方法c,ec,e u,wu,w第一级分解后的第一级分解后的SC( (另一种画法另一种画法) )MCMA1ceu,wc,p

8、QP PReprrw,uw传入分传入分支模块支模块中心加工中心加工分支模块分支模块传出分传出分支模块支模块MA2ME1ME2变换分析设计方法步骤(3)(3)第二级分解第二级分解( (分解分解SCSC各分支各分支) ) 自顶向下分解,设计出每个分支自顶向下分解,设计出每个分支的中、下层模块的中、下层模块BCADEQPRWUVabcedrpuwv变换中心变换中心传入传入部分部分传出传出部分部分传传入分支的分解(1)MACBAbacEDdec,e传入分支的分解(2)MAGet C CbacRead Ddec,eB to CbcdeabGet E EGet BD to EA to BRead A传出分

9、支的分解MEWWrite Vuuw,uvvvPut UU to VMEUWrite Wwwuw,uV(1)(1)(2)(2)中心加工分支的分解中心加工分支的分解MTPQRec,pru,wpr实例实例我们通过一个汽车数字仪表板的设计来介绍变换分析的过程。假设仪表板的功能如下:(1)通过模数(AD)转换实现传感器和微处理机接口;(2)在发光二极管(LCD)面板上显示数据;(3)指示每小时英里数(mph),行驶的里程,每加仑油行驶的英里数(mpg)等等;(4)指示加速或减速;(5)超速警告:如果车速超过55英里小时,则发出超速警告铃声。SPSmph超速值计算里程产生加速/减速显示读入旋转信号收集并求

10、平均旋转信号信号数/秒(SPS)确定加速/减速箭头指示下箭头水平线上箭头转换成转/分(rpm)计算mph 和超速值计算燃料消耗产生mpg显示读入并核实计算gph燃料流量传感器信号燃料流量gphmphmpgmpg 显示产生里程显示英里显示发出警告铃声警告铃声产生mph显示mph 显示rpmSPSrpm(1)(1)区分区分传入、变传入、变换中心、换中心、 传出部分传出部分,在,在DFD 上标明分上标明分界线界线SPSrpmmpg 显示gphmpgmph(SPS)mph超速值计算里程读入旋转信号收集并求平均旋转信号信号数/秒确定加速/减速箭头指示产生加速/减速显示下箭头水平线上箭头转换成转/分(rp

11、m)计算mph 和超速值计算燃料消耗产生mpg显示读入并核实计算gph燃料流量传感器信号燃料流量产生里程显示英里显示发出警告铃声警告铃声产生mph显示mph 显示SPSrpm(2)(2)第一级第一级分解分解( (建立建立初始初始SC框框架架) )设计顶设计顶层和第一层和第一层模块层模块数字仪表板控制数据转换控制接收传感器信号驱动仪表板输入控制变换控制输出控制(3)(3)第二级分解第二级分解( (分解分解SCSC各分支各分支) )自顶向下自顶向下分解,设计出每个分支的中、下层模块分解,设计出每个分支的中、下层模块接收传感器信号转换成rpm计算gph收集sps读旋转信号读燃料流量接收传感器信号确定

12、加速/减速计算mph计算mpg计算里程驱动仪表板加速/减速显示显示 mpg显示里程发出警告铃声显示 mph发光二极管显示 任何情况下都可使用变换分析方法设计软任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点件结构,但如数据流具有明显的事务特点时时 ( (有一个明显的事务中心有一个明显的事务中心),),以采用事务以采用事务分析方法为宜。分析方法为宜。(2) 事务分析设计方法事务分析设计方法步骤:(1)(1)在在DFDDFD上确定事务中心、接收部上确定事务中心、接收部 分和发送部分。分和发送部分。(2)(2)画出画出SCSC框架,把框架,把DFDDFD上的三部分上的三部分

13、分别映射为事务控制模块、接收分别映射为事务控制模块、接收 模块和动作发送模块。模块和动作发送模块。(3)(3)分解细化接收分支和发送分支,分解细化接收分支和发送分支, 完成初始完成初始SCSC。事务流设计举例IMLNABCDFEG事务中心事务中心事务流设计举例 取 A 总控总控ALMNGDBCFE(主模块)(主模块)事务加工模块事务加工模块动作分支的典型结构PT 2T 1T iA 2D 2A 1D 1A 3A jD k事务层事务层操作层操作层细节层细节层处理层处理层主模块主模块事务加事务加工模块工模块操作操作模块模块细节细节模块模块事务流设计举例 取 A 总控总控ALMNGDBCFE动作动作1

14、 1动作动作n n.细节模块细节模块1 1细节模块细节模块2 2.(操作模块)(操作模块)(细节模块)(细节模块)事务型数据流图举例IMLNOABCDFEGH事务流设计举例 (另一种画法) 输入 AXX系统系统变换控制变换控制ALMAGDBCFE 输出 E、F、GE、F、GE、F、G输出输出H HOE、F、GHHN用户命令交互子系统用户命令交互子系统读用户读用户命令命令密码命令密码命令密码密码显示显示信息信息系统参系统参数数据数数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型开开/ /关关命令命令建立配建立

15、配置文件置文件原配置原配置数据数据激活激活/ /非活动非活动系统系统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据配置配置命令命令检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信息信息A/DA/D信息信息格式化格式化配置配置数据数据格式化格式化配置数据配置数据由事务分由事务分析产生析产生事务分析的映射方法事务分析的映射方法接收模块用户命令交互子系统用户命令交互子系统读用户读用户命令命令密码命令密码命令密码密码显示显示信息信息系统参系统参数数据数数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析

16、处理读读密码密码命令命令类型类型开开/ /关关命令命令建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动非活动系统系统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据配置配置命令命令检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信息信息A/DA/D信息信息格式化格式化配置配置数据数据格式化格式化配置数据配置数据用户命令交互子系统用户命令交互子系统下一步:分解细化接收分支和发送分支下一步:分解细化接收分支和发送分支,完成初始,完成初始SCSC。用户命令交互子系统用户命令交互子系统读用户读用户命令命令密码密码显示显示信息信息系统参系统参数

17、数据数数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动非活动系统系统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信息信息A/DA/D信息信息格式化格式化配置配置数据数据格式化格式化配置数据配置数据密码命令密码命令开开/ /关关命令命令配置配置命令命令用户命令交互子系统用户命令交互子系统用户命令交互子系统用户命令交互子系统读用户读用户命令命令密码密码显

18、示显示信息信息系统参系统参数数据数数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动非活动系统系统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信息信息A/DA/D信息信息配置配置数据数据格式化格式化配置配置数据数据密码命令密码命令开开/ /关关命令命令配置配置命令命令用户命令交互子系统用户命令交互子系统要求类要求类型处型处理理有效图书有效图书管理要求管

19、理要求当前当前日期日期2.12.1新书入库新书入库2.22.2借借入库单入库单罚款单罚款单练习练习借书借书2.32.3注销图书注销图书2.52.5借书借书2.42.4目目录录文文件件借书单借书单书书单单注销单注销单要求类要求类型处型处理理有效图书有效图书管理要求管理要求当前当前日期日期2.12.1新书入库新书入库2.22.2借借入库单入库单罚款单罚款单1 1。在。在DFDDFD上确定事务中心、接收部上确定事务中心、接收部分和发送部分分和发送部分借书借书2.32.3注销图书注销图书2.52.5借书借书2.42.4目目录录文文件件借书单借书单书书单单注销单注销单2 2。画出。画出SCSC框架,把框

20、架,把DFDDFD上的三部分分别映射为事务控制模块、接收模上的三部分分别映射为事务控制模块、接收模块和动作发送模块得到块和动作发送模块得到初始的SC图书管理接收输入调度入库注销图书借书 借书3 3。分解细化接收分支和发送分支,完成初始。分解细化接收分支和发送分支,完成初始SCSC图书管理接收输入调度入库注销图书给出罚款单借书修改目录文件3412675810911变换中心变换中心传传入入传传出出事务型事务型(3) 混合流设计举例混合流设计举例T事务事务中心中心传入传入变换变换传出传出接收接收部分部分发发送送部部分分ABT1变换中心变换中心传入传入传出传出T2T3abb1b2b3c1c2c3deg

21、fjm事务流子系统事务流子系统BCCDDEEHHKFJKLLMh混合流设计举例k混合流设计举例输入输入DXX系统系统变换控制变换控制输出输出K输入输入Cdc输出输出L LCDDE FJEHHKKLcddkkkLL输出输出MLMmmL事务子系统事务子系统软件的总体结构主要回答的问题软件的总体结构主要回答的问题u软件的组成部分软件的组成部分u软件的层次关系软件的层次关系u模块的内部处理逻辑模块的内部处理逻辑u模块之间的界面模块之间的界面软件体系结构软件体系结构 构件、构件之间的交互关系、限制、构件和构件、构件之间的交互关系、限制、构件和连接件构成的拓扑结构、设计原则与指导方针连接件构成的拓扑结构、

22、设计原则与指导方针 软件体系结构包括两部分软件体系结构包括两部分: :(1)(1)过程构件过程构件( (模块模块) )的层次结构的层次结构(2)(2)数据的结构数据的结构控制结构控制结构( (程序结构程序结构) )控制结构是软件模块间控制结构是软件模块间关系的表示关系的表示 结构图结构图 度量术语度量术语深深度度宽度宽度扇出扇出扇入扇入( (模块的模块的 层数层数) )( (同一层最大模块数同一层最大模块数) )( (一个模块一个模块 直接调用直接调用 的模块数的模块数) )( (调用一个给定模调用一个给定模 块的模块个数块的模块个数) ) 软件过程软件过程软件过程用以描述各模软件过程用以描述

23、各模块的处理细节块的处理细节( (算法的详算法的详细描述细描述) ),包括对下层模,包括对下层模块控制的操作细节。块控制的操作细节。软件模块软件模块 (Modularity)模块化是好的软件设计的一个基本准则模块化是好的软件设计的一个基本准则 高层模块高层模块 从整体上把握从整体上把握 问题问题, ,隐蔽细节隐蔽细节 复杂问题复杂问题 较小问题较小问题 分解分解 可减小解题所需的总的工作可减小解题所需的总的工作分解分解例例: :将问题将问题(P1+P2)(P1+P2)分解为分解为P1,P2P1,P2设函数设函数C(x)定义问题定义问题 x 的复杂程度的复杂程度函数函数E(x)确定解决问题确定解

24、决问题 x 需要的工作量需要的工作量对问题对问题P1和和P2,如如: C(P1) C(P2)显然显然: E(P1) E(P2)有规律有规律:C(P1+P2) C(P1)+C(P2) E(P1+P2) E(P1)+E(P2) 各个击破各个击破理论理论模块化和软件成本模块化和软件成本成成本本或或工工作作量量模块数量模块数量软件总成本软件总成本集成成本集成成本成本成本/ /模块模块M最小成本区域最小成本区域 抽象化抽象化( (Abstraction) )抽象原则应用举例抽象原则应用举例Windows NTWindows NT一体化的一体化的I/OI/O系统设计系统设计文件管理文件管理网络管理网络管理

25、设备管理设备管理高速缓冲存储器高速缓冲存储器对虚拟文件对虚拟文件的字节流的字节流, ,虚拟文件可虚拟文件可为任何设备为任何设备和实体和实体抽抽象象 信息隐蔽信息隐蔽(Information Hiding) 模块所包含的信息,不允许其它模块所包含的信息,不允许其它不需要这些信息的模块访问,独不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统立的模块间仅仅交换为完成系统功能而必须交换的信息功能而必须交换的信息。 模块的独立性模块的独立性 模块独立性的概念模块独立性的概念模块独立的含义:模块独立的含义:n模块完成独立的功能模块完成独立的功能n符合信息隐蔽和信息局部化原则符合信息隐蔽和信息局部化

26、原则n模块间关连和依赖程度尽量小模块间关连和依赖程度尽量小 模块独立性的度量模块独立性的度量 模块独立性取决于模块的模块独立性取决于模块的 内部和外部特征。内部和外部特征。 SD方法提出的定性的度量标准:方法提出的定性的度量标准: 模块之间的模块之间的耦合性耦合性 模块自身的模块自身的内聚性内聚性内聚内聚是指度量一个给定的程序内的是指度量一个给定的程序内的多行代码的单一功能性,以确定是多行代码的单一功能性,以确定是否达到该程序所要实现的目的。否达到该程序所要实现的目的。耦合性耦合性用来度量程序之间联系的次用来度量程序之间联系的次数和强度数和强度1.1.模块独立性的度量之一模块独立性的度量之一:

27、 :耦合性耦合性 模块间相对独立性(相互依模块间相对独立性(相互依赖程度)的度量赖程度)的度量 耦合性越高,模块独立性越弱耦合性越高,模块独立性越弱无耦合没有依赖关系无耦合没有依赖关系松散耦合有松散耦合有少量依赖关系少量依赖关系紧密耦合有紧密耦合有很多依赖关系很多依赖关系 一模块对另一模块的引用一模块对另一模块的引用一模块向另一模块传递的数据量一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量一模块施加到另一模块的控制的数量 模块间的联系方式模块间的联系方式 模块间接口的复杂程度模块间接口的复杂程度耦合强度依赖的因素:耦合强度依赖的因素:模块间耦合的类型模块间耦合的类型 低低 无直接

28、耦合无直接耦合耦耦 数据耦合数据耦合合合 标记耦合标记耦合性性 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合 高高 内容耦合内容耦合模模块块独独立立性性弱弱( (低耦合低耦合) )强强( (中耦合中耦合) )( (较强耦合较强耦合) )( (强耦合强耦合) )(1) (1) 非直接耦合非直接耦合 两个模块没有直接关系两个模块没有直接关系( (模块模块1 1和模和模块块2)2),模块独立性最强。,模块独立性最强。模块模块1 1模块模块2 2模块模块3 3模块模块4 4(2) (2) 数据耦合数据耦合 一模块调用另一模块一模块调用另一模块时,被调用模块的输入、时,被调用模块的输入、输出都是

29、简单的数据输出都是简单的数据( (若干若干参数参数) )。 属松散耦合。属松散耦合。数据耦合举例数据耦合举例开发票开发票计算水费计算水费单价单价数量数量金额金额(3) 3) 标记耦合标记耦合( (特征耦合特征耦合) )如两个模块通过传递如两个模块通过传递数据结构数据结构( (不是简单数据,而是记录、数组不是简单数据,而是记录、数组等等) )加以联系,或都与一个加以联系,或都与一个数据数据结构结构有关系有关系, , 则称这两个模块则称这两个模块间存在标记偶合。间存在标记偶合。标记耦合举例标记耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户情况住户情

30、况“住户情况住户情况”是一个是一个数据结构数据结构, ,图中模块都图中模块都与此数据结构有关与此数据结构有关. .“计算水费计算水费”和和“计算电费计算电费”本无关本无关, ,由于由于引用了此数据结构产生依赖关系引用了此数据结构产生依赖关系, ,它们之间它们之间也是标记偶合也是标记偶合. .将标记耦合修改为数据耦合举例将标记耦合修改为数据耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费本月本月用水量用水量本月本月用电量用电量水费水费电费电费(4) (4) 控制耦合控制耦合 一模块向下属模块传递的信一模块向下属模块传递的信息息 ( (开关量、标志等控制被开关量、标志等控制被调用模块决

31、策的变量调用模块决策的变量) ) 控制控制了被调用模块的内部逻辑。了被调用模块的内部逻辑。控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信号控制信号) )成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分计算最高分计算最高分平均平均/ /最高最高? ?B B控制耦合增加了理解和编程的复控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖块的内部逻辑,增加了相互依赖去除模块间控制耦合的方法:去除模块间控制耦合的方法:(1)(1)将被调用模块内的判定上移到调将被调用模块内的判定上移到

32、调 用模块中进行用模块中进行(2)(2)被调用模块分解成若干单一功被调用模块分解成若干单一功 能模块能模块改控制耦合为数据耦合举例改控制耦合为数据耦合举例A A计算平均分计算平均分B1B1平均成绩最高成绩计算最高分计算最高分B2B2(5) (5) 外部耦合外部耦合一组模块均与同一外部环境关联一组模块均与同一外部环境关联( (例如例如,I/O,I/O模块与特定的设备、模块与特定的设备、格式和通信协议相关联格式和通信协议相关联),),它们之它们之间便存在外部耦合。间便存在外部耦合。外部偶合必不可少外部偶合必不可少, ,但这种模块但这种模块数目应尽量少。数目应尽量少。(6) (6) 公共耦合公共耦合

33、( (公共数据区耦合公共数据区耦合) )一组模块引用同一个公用数据区一组模块引用同一个公用数据区( (也称全局数据区、公共数据环境也称全局数据区、公共数据环境) )。公共数据区公共数据区指:指:n 全局数据结构全局数据结构n 共享通讯区共享通讯区n 内存公共覆盖区等内存公共覆盖区等公共耦合举例公共耦合举例公共数据区公共数据区C CB B模块模块A A、B B、C C间存在错综复杂的联系间存在错综复杂的联系(1)(1)软件可理解性降低软件可理解性降低(2)(2)诊断错误困难诊断错误困难(3)(3)软件可维护性差,软件可维护性差,(4)(4)软件可靠性差软件可靠性差( (公共数据区及全程变量无保护

34、措施公共数据区及全程变量无保护措施) )慎用公共数据区和全程变量慎用公共数据区和全程变量!公共耦合存在的问题:公共耦合存在的问题:(7) (7) 内容耦合内容耦合一模块直接访问一模块直接访问另一模块的内部另一模块的内部信息信息 ( (程序代码程序代码或数据)或数据)最不好的耦合形式最不好的耦合形式 !ABAB模块代码重叠模块代码重叠Entry1 Entry1 多入口模块多入口模块模块化设计的原则和目标 耦合是影响软件复杂程度和耦合是影响软件复杂程度和设计质量的重要因素设计质量的重要因素目标目标:建立模块间耦合度尽可能:建立模块间耦合度尽可能松散的系统松散的系统如何降低模块间耦合度如何降低模块间

35、耦合度:(1) (1) 尽量使用数据耦合尽量使用数据耦合少用控制耦合少用控制耦合限制公共耦合的范围限制公共耦合的范围坚决避免使用内容耦合坚决避免使用内容耦合(2) (2) 降低接口的复杂性降低接口的复杂性2. 2. 模块独立性的度量之二:内聚性模块独立性的度量之二:内聚性 一个模块内部元素在功能上相互一个模块内部元素在功能上相互 关联的强度关联的强度 设计目标:高内聚设计目标:高内聚 ( (模块在软件过程中模块在软件过程中 完成单一的任务完成单一的任务) ) 模块的内聚性类型模块的内聚性类型低低 偶然内聚偶然内聚 逻辑内聚逻辑内聚 内内 时间内聚时间内聚 聚聚 过程内聚过程内聚 性性 通信内聚

36、通信内聚 信息内聚信息内聚 高高 功能内聚功能内聚模模块块独独立立性性弱弱( (功能分散功能分散) )强强( (功能单一功能单一) )低内聚模块举例低内聚模块举例 为工程分析包执行错误处理的模块,当计算的为工程分析包执行错误处理的模块,当计算的数据超出预定义的边界时调用该模块,它完成下列数据超出预定义的边界时调用该模块,它完成下列任务:任务: (1 1)根据初始计算的数据计算补充数据;)根据初始计算的数据计算补充数据; (2 2)在用户的工作站上生成错误报告;)在用户的工作站上生成错误报告; (3 3)执行用户要求的跟踪计算;)执行用户要求的跟踪计算; (4 4)更新数据库;)更新数据库; (

37、5 5)使选择后续处理的菜单有效。)使选择后续处理的菜单有效。 (1)(1)偶然内聚偶然内聚( (巧合内聚巧合内聚) ) 模块内各部分间无联系模块内各部分间无联系ABCMMOVE O TO RREAD FILE FMOVE S TO T模块模块M中的三个语句没有任何联系中的三个语句没有任何联系缺点:缺点:可理解性差,可理解性差, 可修改性差可修改性差例例: :(2) (2) 逻辑内聚逻辑内聚 把几种相关功能(逻辑上相似把几种相关功能(逻辑上相似 的功能)组合在一模块内,每的功能)组合在一模块内,每次调用由传给模块的参数确定次调用由传给模块的参数确定执行哪种功能。执行哪种功能。逻辑内聚模块ABC

38、EFGABCEFGA1B1C1EFGEFG模块内部逻辑模块内部逻辑E E、F F、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFG缺点缺点:增强了耦合程度增强了耦合程度( (控制耦合控制耦合) ) 不易修改,效率低不易修改,效率低公用代码段公用代码段公用代码段公用代码段(3) (3) 时间内聚时间内聚( (经典内聚经典内聚) )模块完成的功能必须在同一时间模块完成的功能必须在同一时间内执行,这些功能只因时间因素内执行,这些功能只因时间因素关联在一起。关联在一起。例如例如: :初始化系统模块、初始化系统模块、 系统结束模块、系统结束模块、 紧急故障处理模块等均是时间性聚合紧急故

39、障处理模块等均是时间性聚合 模块模块. .(4) 过程内聚(顺序性组合)模块内各处理成分相关,模块内各处理成分相关,且必须以特定次序执行且必须以特定次序执行过程内聚模块读入读入成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩读入并审查读入并审查成绩单成绩单统计并打印统计并打印成绩单成绩单(5) 通信内聚 模块内各部分使用相同的模块内各部分使用相同的输入数据,或产生相同的输出输入数据,或产生相同的输出结果结果通信内聚模块例产生工产生工资报表资报表计算平计算平均工资均工资职工工职工工资记录资记录职工工职工工资报表资报表平均平均工资工资产生职工工资报表并计算平均工资模块产生职工工资报

40、表并计算平均工资模块(6) (6) 信息内聚信息内聚 模块完成多个功能,各模块完成多个功能,各功能都在同一数据结构上操功能都在同一数据结构上操作,每一功能有唯一入口。作,每一功能有唯一入口。信息内聚模块符符 号号 表表查找查找 登录登录 删除删除修改修改几个加工同时引用一个共同的数据几个加工同时引用一个共同的数据(7) (7) 功能内聚功能内聚 模块仅包括为完成某个功能所必模块仅包括为完成某个功能所必须的所有成分。须的所有成分。 ( (模块所有成分共同完成一个功模块所有成分共同完成一个功 能,缺一不可能,缺一不可 ) ) 内聚性最强内聚性最强 内聚与耦合密切相关,同内聚与耦合密切相关,同其它模

41、块强耦合的模块意味其它模块强耦合的模块意味着弱内聚,强内聚模块意味着弱内聚,强内聚模块意味着与其它模块间松散耦合着与其它模块间松散耦合. .设计目标:设计目标:力争高内聚、低耦合力争高内聚、低耦合3.3.耦合、内聚与模块独立性关系耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的耦合与内聚都是模块独立性的定性标准,都反映模块独立性定性标准,都反映模块独立性的良好程度。但耦合是直接的的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共主导因素,内聚则辅助耦合共同对模块独立性进行衡量。同对模块独立性进行衡量。体系结构设计优化 将初始将初始SC根据模块独立性原根据模块独立性原则进行精化则进行精化,

42、 ,对模块进行合并、分对模块进行合并、分解修改、调整,得到高内聚、低解修改、调整,得到高内聚、低耦合模块,得到易于实现、易于耦合模块,得到易于实现、易于测试和易于维护的软件结构,产测试和易于维护的软件结构,产生设计文档的最终生设计文档的最终SC。模块间耦合的类型模块间耦合的类型 低低 无直接耦合无直接耦合耦耦 数据耦合数据耦合合合 标记耦合标记耦合性性 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合 高高 内容耦合内容耦合模模块块独独立立性性弱弱( (低耦合低耦合) )强强( (中耦合中耦合) )( (较强耦合较强耦合) )( (强耦合强耦合) )模块的内聚性类型模块的内聚性类型低低 偶

43、然内聚偶然内聚 逻辑内聚逻辑内聚 内内 时间内聚时间内聚 聚聚 过程内聚过程内聚 性性 通信内聚通信内聚 信息内聚信息内聚 高高 功能内聚功能内聚模模块块独独立立性性弱弱( (功能分散功能分散) )强强( (功能单一功能单一) )改进软件结构设计的指导原则 (软件结构设计的启发式规则)(1)(1)模块功能的完善化模块功能的完善化(2)(2)消除重复功能消除重复功能(3)(3)将模块的影响限制在模块的控制范围将模块的影响限制在模块的控制范围内内(4)(4)深度、宽度、扇出和扇入适中深度、宽度、扇出和扇入适中(5)(5)模块大小适中模块大小适中(6)(6)降低模块接口的复杂性降低模块接口的复杂性(

44、7)(7)模块功能可预测模块功能可预测(8)(8)避免模块的病态连接避免模块的病态连接(1) 模块功能的完善化完整的模块应包括三部分:完整的模块应包括三部分:(1)(1)执行规定功能部分执行规定功能部分(2)(2)出错处理部分出错处理部分(3)(3)需返回给调用者数据时,需返回给调用者数据时, 返回是否正确结束标志。返回是否正确结束标志。(2)消除重复功能Q1Q1C CQ2Q2C CQ1Q1Q2Q2C C改进前改进前Q1Q1、Q2Q2功功能相似能相似X XY YQQX XY YX XY Y重复部分重复部分改进方法改进方法1 1:将将Q1Q1、Q2Q2合并为合并为QQ不可取不可取改进方法改进方法

45、2 2:将将Q1Q1、Q2Q2的公共的公共部分分离出来部分分离出来CHDEGXF(3)(3)将模块的影响限制将模块的影响限制 在模块的控制范围内在模块的控制范围内AILJKB(4) 减少高扇出争取高扇入高扇出的模块结构举例:高扇出的模块结构举例:编外编外人员人员工资工资取得取得工资工资数据数据 计时计时制工制工资额资额薪金薪金制工制工资额资额编外编外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资避免平铺结构增加中间层降低扇出增加中间层降低扇出编外编外人员人员工资工资取得工取得工资数据资数据 计时计时制工制工资额资额薪金薪金制工制工资额资额编外编

46、外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资计时工人计时工人实发工资实发工资计薪工人计薪工人实发工资实发工资编外人员编外人员实发工资实发工资深度、宽度、扇出和扇入要适当 一个设计的好的软件模块一个设计的好的软件模块结构,通常上层扇出比较高,结构,通常上层扇出比较高,中层扇出比较少,底层扇入到中层扇出比较少,底层扇入到有高扇入的公用模块。有高扇入的公用模块。(5) 模块大小适中模块过大:可理解程度下降模块过大:可理解程度下降模块过小:开销大于有效操作模块过小:开销大于有效操作 系统接口复杂系统接口复杂(6)降低模块接口的复杂性 接口传递信息应

47、简单且和模块功能接口传递信息应简单且和模块功能一致。一致。(7) 模块功能可预测模块看成黑盒子,相同输入产生模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。相同输出,其功能为可预测的。模块带有内部状态其功能可能是模块带有内部状态其功能可能是不可预测的。不可预测的模块难不可预测的。不可预测的模块难理解、难测试、难维护。理解、难测试、难维护。防止模块功能过分局限 功能单一的模块具有高内聚。功能单一的模块具有高内聚。 但如任意限制局部数据结构的但如任意限制局部数据结构的大小,过分限制控制流中可做的选大小,过分限制控制流中可做的选择或外部接口的模式,模块功能就择或外部接口的模式,模块功能就过分

48、局限,使用范围过分狭窄,缺过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。乏灵活性和可扩充性。 (8)(8)避免模块的病态连接避免模块的病态连接 防止指向模块中间的分支或引防止指向模块中间的分支或引用(针对内容耦合)用(针对内容耦合) ABABEntry1 Entry1 设计的后处理设计的后处理在确定系统的软件结构以后,还必须在确定系统的软件结构以后,还必须做好下述工作:做好下述工作:为每个模块开发一份功能说明;为每个模块开发一份功能说明;为每个模块提供一份接口说明;为每个模块提供一份接口说明;定义局部的和全程的数据结构;定义局部的和全程的数据结构;给出所有的设计限制或约束;给出所有的设计限

49、制或约束;进行总体设计评审;进行总体设计评审; 过程设计 (详细设计、模块设计) P223主要任务:主要任务:编写详细设计说明书编写详细设计说明书为此,设计人员应:为此,设计人员应:(1)(1)确定每个模块的算法,用工具确定每个模块的算法,用工具 表达算法的过程,写出模块的表达算法的过程,写出模块的 详细过程性描述。详细过程性描述。(2)(2)确定每一模块的数据结构。确定每一模块的数据结构。(3)(3)确定模块接口细节。确定模块接口细节。详细设计是编码的先导。详细设计是编码的先导。 结构化程序设计(SP)方法基本的设计思想和风格基本的设计思想和风格: :o清晰第一清晰第一o使用标准的、规范的控

50、制结构使用标准的、规范的控制结构o逐步细化逐步细化 详细设计的描述方法详细设计工具:详细设计工具:(1) (1) 图形工具图形工具(2) (2) 表格工具表格工具(3) (3) 语言工具语言工具1. 1. 程序流程图程序流程图2. 2. 盒图盒图(N-S(N-S图图) )3. 3. 问题分析图问题分析图(PAD)(PAD)4. 4. 过程设计语言过程设计语言(PDL)(PDL)( (伪码伪码) )5. 5. 判定表判定表1、程序流程图-符号 起止端点 数据处理准备或预处理预先定义的处理 条件判断 循环上界限 循环下界限 文档流线虚线 省略符 并行方式 注释 流程图的基本控制结构面向数据流设计方

51、法的设计步骤面向数据流设计方法的设计步骤(1)(1)精化精化DFDDFD(2)(2)确定确定DFDDFD类型类型(3)(3)把把DFDDFD映射到系统模块结构设计映射到系统模块结构设计 出模块结构的上层出模块结构的上层(4)(4)基于基于DFDDFD逐步分解高层模块设计逐步分解高层模块设计 出下层模块出下层模块(5)(5)根据模块独立性原理,精化模根据模块独立性原理,精化模 块结构块结构(6)(6)模块接口描述模块接口描述流类型流类型复查复查程序流程图虽然比较直观,灵活,并且比较容易程序流程图虽然比较直观,灵活,并且比较容易掌握,但是它的随意性和灵活性却使它不可避免地存掌握,但是它的随意性和灵

52、活性却使它不可避免地存在着一些缺点:在着一些缺点:(1)由于程序流程图的特点,它本身并不是逐步)由于程序流程图的特点,它本身并不是逐步求精的好工具。因为它使程序员容易过早地考虑程序求精的好工具。因为它使程序员容易过早地考虑程序的具体控制流程,而忽略了程序的全局结构;的具体控制流程,而忽略了程序的全局结构;(2)程序流程图中用箭头代表控制流,这样使得)程序流程图中用箭头代表控制流,这样使得程序员不受任何约束,可以完全不顾结构程序设计的程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制;精神,随意转移控制;(3)程序流程图在表示数据结构方面存在不足。)程序流程图在表示数据结构方面存在

53、不足。2. 盒图(N-S图)用方框图代替传统的流程图用方框图代替传统的流程图描述五种基本控制结构的图形构件描述五种基本控制结构的图形构件(1) (1) 顺序型顺序型ABC(2) 选择型(If then else)If then else If thenABF条件条件TAFT条件条件then 部分部分then 部分部分else部分部分(3)多分支选择型(CASE型)A1值值1 1A2An.条件条件值值2 2值值n n(4) WHILE(4) WHILE重复型重复型 (5) UNTIL(5) UNTIL重复型重复型S(循环体)(循环体)DO-WHILE PS(循环体)(循环体)REPEAT UNT

54、IL P( (先测试循环先测试循环) )( (后测试循环后测试循环) )循环条件循环条件(6) 并行结构A1A2An.(7) 移出标记ACBFX6TA:D( (调用结构调用结构) )流类型流类型复查复查精化数据流图精化数据流图事务型事务型 判断流类型判断流类型 变换型变换型区分事务中心和数据接区分事务中心和数据接收路径收路径Do- untilx6abx1TTFFx2x4f=1=2=3gido-until x5hdec while-do x6j3. 问题分析图(PAD) (Problem Analysis Diagram)基本控制结构基本控制结构: :(1)(1)顺序结构顺序结构 (2)(2)选

55、择结构选择结构 ABCABTF条条件件(3)重复结构 WHILE CSUNTIL CS(先测试循环)(后测试循环)等价的等价的PASCALPASCAL语言:语言:REPEAT C UNTIL S等价的等价的PASCALPASCAL语言:语言:WHILE C DO S(4) 多分支选择型(CASE型) A1A1值值1 1值值2 2值值n n A2A2AnAn. . . . . . .条件条件流类型流类型复查复查while x3bfgx1aUntil x6jx4Until x5hicdex2=1=2=3o 表示复杂的条件组合与应做动作之间的对应关系o 判定表与判定树并不适用于作为一种通用的设计工具

56、,通常将之用于辅助测试o 例: 航空行李托运费的算法o 按规定:重量不超过30公斤的行李可免费托运。重量超过30公斤时,对超运部分,头等舱国内乘客收4元/公斤;其它舱位国内乘客收6元/公斤;外国乘客收费为国内乘客的2倍;残疾乘客的收费为正常乘客的1/2。 判定表与判定树判定表与判定树判定表n规则规则n规则数规则数 n条件条件n动作动作无多分支判断结构无多分支判断结构1234567891011121314x1TTTTTFFFFFFFFFx2TTTFFFFFFx3TTFFFFx4TTFFx5TFFx6TTTFFx7TFFx8TFTFTFTFTFTFaYYYYYYYYYYYYYYbYYYYYYYYY

57、YYYYYcYdYYeYYfYYYYYgYYhYYiYYYjYYYYYY判定表判定表12345678条件顾客订额1000顾客信誉好顾客是老顾客处理订单设“优先”标志订单设“正常”标志判定树n行李费行李费算法算法n行李重行李重量量W 30W 30n行李重行李重量量W W 30 30n免费免费国内乘客国内乘客外国乘客外国乘客n头等舱头等舱n其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客n( (W-30) W-30) 2 2n( (W-30) W-30) 4 4残疾乘客残疾乘客正常乘客正常乘客n( (W-30) W-30) 3 3n( (W-30) W-30) 6 6n头等舱头等舱n其他舱其他舱残疾乘

58、客残疾乘客正常乘客正常乘客n( (W-30) W-30) 4 4n( (W-30) W-30) 8 8残疾乘客残疾乘客正常乘客正常乘客n( (W-30) W-30) 6 6( (W-30) W-30) 12 12n用判定树表示计算行李费的算法用判定树表示计算行李费的算法PDLProgram Design LanguagePDL语言示例IF 顾客订额1000IF 顾客信誉好订单设“优先”标志ELSEIF 顾客是老顾客订单设“优先”标志ELSE订单设“正常”标志ENDIFENDIFELSE订单设“正常”标志ENDIFIPO图o IPO图为层次图中每一功能框详细地指明图为层次图中每一功能框详细地指明

59、输入输入(I)、处理处理(P)及输出及输出(O)。o 通常,通常,IPO图有固定格式,处理操作部分图有固定格式,处理操作部分总是列在中间,输入和输出部分分别在其总是列在中间,输入和输出部分分别在其左边和右边。左边和右边。o 由于某些细节很难在一张由于某些细节很难在一张IPO图中表达清图中表达清楚,常常把楚,常常把IPO图又分为两部分:图又分为两部分:n 概括的称为概括的称为概要图概要图(overview diagram)n 具体的称为具体的称为详细图详细图(detail diagram)。)。o 概要概要IPO图图用于表达对一个系统,或对其用于表达对一个系统,或对其中某一子系统功能的概略表达,

60、指明完成中某一子系统功能的概略表达,指明完成某一功能框规定的功能时需要某一功能框规定的功能时需要哪些输入,哪些输入,哪些操作和哪些输出。哪些操作和哪些输出。o 详细详细IPO 图图详细表明输入、处理、输出三详细表明输入、处理、输出三者之间的关系。者之间的关系。输入和输出应是确定的文输入和输出应是确定的文件和记录,或是文件和记录中的字段,以件和记录,或是文件和记录中的字段,以及具体介质和设备类型,处理框中的操作及具体介质和设备类型,处理框中的操作也应是具体的而不是含糊的,调用子程序也应是具体的而不是含糊的,调用子程序时应标明子程序名。时应标明子程序名。 对应H图上1.1.0框的概要IPO图 销售

温馨提示

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

评论

0/150

提交评论