1、2022-3-271概述概述(P66)(P66) 需求分析解决系统需求分析解决系统“做什么做什么”的问的问题,软件设计解决系统题,软件设计解决系统“怎么做怎么做”的问题,分为总体设计的问题,分为总体设计( (概要设计概要设计) )和详细设计和详细设计. .软件设计是把软件需求软件设计是把软件需求变换成为软件的具体解决方案变换成为软件的具体解决方案. .2022-3-272剩下的阶段剩下的阶段 总体设计总体设计 详细设计详细设计 编码编码 调试调试 维护维护2022-3-273软件设计分为两个阶段:软件设计分为两个阶段:(1)(1)总体设计总体设计( (概要设计概要设计) )确定软件的结构确定软
2、件的结构以以及各组成成分及各组成成分( (子系统或模块子系统或模块) )之间的相互关系。之间的相互关系。(2)(2)详细设计详细设计 确定模块内部的算法和数据结构,产生描确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档。述各模块程序过程的详细文档。2022-3-274总体设计的任务总体设计的任务n将系统划分成模块将系统划分成模块n决定每个模块的功能决定每个模块的功能n决定模块的调用关系决定模块的调用关系n决定模块的界面,即模块间传递的数据决定模块的界面,即模块间传递的数据2022-3-275软件总体设计基础软件总体设计基础(P67P67) 模块模块 模块就是程序对象的有名字的集合
3、或者说是一模块就是程序对象的有名字的集合或者说是一系列过程的总称系列过程的总称. . 软件结构软件结构 软件的结构就是软件内部各模块之间的关系表软件的结构就是软件内部各模块之间的关系表示示. . 总体设计总体设计 总体设计是软件总体结构的设计总体设计是软件总体结构的设计. . 详细设计详细设计 详细设计是软件模块内部的过程设计详细设计是软件模块内部的过程设计. .2022-3-276控制结构控制结构( (程序结构程序结构) )控制结构是软件模块间控制结构是软件模块间关系的表示关系的表示2022-3-277控制结构图示控制结构图示(P68)(P68)2022-3-278控制结构的层次规则控制结构
4、的层次规则v只有一个顶层只有一个顶层(0(0层层) )模块模块v 0 0层外任一模块都会在它的邻层存在一模块与层外任一模块都会在它的邻层存在一模块与它有关它有关v同层模块间不发生联系同层模块间不发生联系2022-3-279软件结构度量术语软件结构度量术语深深度度宽度宽度扇出扇出扇入扇入( (模块的模块的 层数层数) )( (同一层最大模块数同一层最大模块数) )( (一个模块一个模块 直接调用直接调用 的模块数的模块数) )( (调用一个给定模调用一个给定模 块的模块个数块的模块个数) )2022-3-2710结构图结构图(SC Structure Chart)(SC Structure Ch
5、art)结构图主要成分结构图主要成分(page 69page 69)模块模块用方框表示,方框中写有模块的名字,一个模用方框表示,方框中写有模块的名字,一个模块的名字应适当地反映这个模块的功能,这就在某种块的名字应适当地反映这个模块的功能,这就在某种程度上反映了块内联系;程度上反映了块内联系;调用调用从一个模块指向另一个模块的箭头表示前一模从一个模块指向另一个模块的箭头表示前一模块中含有对后一模块的调用;块中含有对后一模块的调用;数据数据调用箭头旁边的小箭头表示调用时从一个模块调用箭头旁边的小箭头表示调用时从一个模块传入送给另一个模块的数据,小箭头也指出了传送的传入送给另一个模块的数据,小箭头也
6、指出了传送的方向。方向。2022-3-2711结构图结构图(SC Structure Chart)(SC Structure Chart)SDSD方法在概要设计中的主要表达工具方法在概要设计中的主要表达工具约定:约定:编辑学生记录编辑学生记录读学生记录读学生记录学生数据学生数据无此学生无此学生学号学号不加区分的数据不加区分的数据数据信息数据信息控制信息控制信息2022-3-2712SC中的四种模块传入模块传入模块(a)(b)AA传出模块传出模块BB变换模块变换模块(c)CD协调模块协调模块E(d)EFF2022-3-2713SC中的选择调用ACBDA根据内根据内部判断决定部判断决定是否调用是否
7、调用B BA按另一判按另一判定结果选择调定结果选择调用用C或或D2022-3-2714SC中的循环调用ABCA根据内在的循环重根据内在的循环重复调用复调用B、C等模块等模块2022-3-2715结构图(SC)举例医院管理系统医院管理系统门诊门诊管理管理药房药房管理管理药库药库管理管理病房病房管理管理财务财务管理管理处处方方挂号挂号处理处理挂挂号号费费总总计计挂挂号号单单挂挂号号费费总总计计出库出库处理处理进药进药管理管理病历病历管理管理处方处方管理管理常规常规处理处理2022-3-2716结构图的优点的优点n结构图具有很高的可读性,容易使人理解,也结构图具有很高的可读性,容易使人理解,也容易和
8、用户讨论容易和用户讨论n结构图是自顶向下逐层扩展,能够表达总体一结构图是自顶向下逐层扩展,能够表达总体一级的软件结构级的软件结构n结构图既有严密性,又有灵活性结构图既有严密性,又有灵活性n结构图易于维护和修改结构图易于维护和修改2022-3-2717模块模块n模块是具有一定功能的可以用名词调用的程序模块是具有一定功能的可以用名词调用的程序语句集合,如:语句集合,如:n独立的汇编程序独立的汇编程序nCOBOL的段和节的段和节nPascal过程过程nFORTRAN的子程序的子程序n汇编的宏汇编的宏2022-3-2718模块化模块化(Modularity)(Modularity)模块化是好的软件设计
9、的一个基本准则模块化是好的软件设计的一个基本准则 高层模块高层模块 从整体上把握从整体上把握 问题问题, ,隐蔽细节隐蔽细节 复杂问题复杂问题 较小问题较小问题 分解分解 可减小解题所需的总的工作可减小解题所需的总的工作分解分解2022-3-2719例例: :将问题将问题(P1+P2)(P1+P2)分解为分解为P1,P2P1,P2设函数设函数C(x)定义问题定义问题 x 的复杂程度的复杂程度函数函数E(x)确定解决问题确定解决问题 x 需要的工作量需要的工作量对问题对问题P1和和P2,如如: C(P1) C(P2)显然显然: E(P1) E(P2)有规律有规律:C(P1+P2) C(P1)+C
10、(P2) E(P1+P2) E(P1)+E(P2) 各个击破各个击破理论理论2022-3-2720模块度模块度成成本本或或工工作作量量模块模块数量数量软件总成本软件总成本集成成本集成成本成本成本/ /模块模块M最小成本区域最小成本区域2022-3-2721模块的特征模块的特征(P72P72) 抽象抽象 抽象是抽出事物的本质特性而暂时不考抽象是抽出事物的本质特性而暂时不考虑他们的细节虑他们的细节. . 信息隐蔽信息隐蔽 模块所包含的信息,不允许其它不需要模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信仅交换为
11、完成系统功能而必须交换的信息息。2022-3-2722模块独立性度量模块独立性度量(P73P73) 模块独立的概念模块独立的概念 模块独立是指该模块能完成一个相对独立的特模块独立是指该模块能完成一个相对独立的特定子功能定子功能, ,并且与其他模块之间的接口很简单并且与其他模块之间的接口很简单. .模块独立是软件设计模块化、抽象和信息隐蔽模块独立是软件设计模块化、抽象和信息隐蔽的直接结果的直接结果. . 独立的优势独立的优势 1.具有独立模块的软件比较容易开发具有独立模块的软件比较容易开发,接口简接口简化,有利于团队合作化,有利于团队合作. 2.独立的模块比较容易测试和维护独立的模块比较容易测试
12、和维护.2022-3-2723衡量独立性标准衡量独立性标准(P73P73) 聚合聚合 聚合是衡量一个模块内部各个元素之间聚合是衡量一个模块内部各个元素之间的彼此结合的紧密程度的彼此结合的紧密程度. . 耦合耦合 耦合是衡量不同模块之间相互依赖的紧耦合是衡量不同模块之间相互依赖的紧密程度密程度. . 2022-3-2724独立性理想目标独立性理想目标理想目标理想目标:低耦合、高聚合低耦合、高聚合2022-3-2725块内联系块内联系(聚合聚合)n偶然聚合偶然聚合n逻辑聚合逻辑聚合n时间聚合时间聚合n通信聚合通信聚合n顺序聚合顺序聚合n功能聚合功能聚合2022-3-2726偶然偶然聚合聚合( (巧
13、合巧合聚合聚合) )P PQ QS ST TMOVE A TO BMOVE A TO BREAD CARD FILEREAD CARD FILEMOVE C TO DMOVE C TO D模块模块T T中的三个语句没有任何联系中的三个语句没有任何联系缺点:缺点:可理解性差可理解性差, 可修改性差可修改性差例例: :2022-3-2727逻辑逻辑聚合聚合n把几种相关功能把几种相关功能(逻辑上相似的功能逻辑上相似的功能)组合在一模块内组合在一模块内,每次调用由传给模块每次调用由传给模块的参数确定执行哪种功能。的参数确定执行哪种功能。2022-3-2728逻辑逻辑聚合聚合模块模块ABCEFGABCE
14、FGA1B1C1EFGEFG模块内部逻辑模块内部逻辑E E、F F、G G逻辑逻辑功能相似,组功能相似,组成新模块成新模块EFGEFG缺点缺点:增强了耦合程度增强了耦合程度( (控制耦合控制耦合) ) 不易修改,效率低不易修改,效率低公用代码段公用代码段公用代码段公用代码段2022-3-2729时间时间聚合聚合( (经典经典聚合聚合) )模块完成的功能必须在同一时间模块完成的功能必须在同一时间内执行,这些功能只因时间因素内执行,这些功能只因时间因素关联在一起。关联在一起。例如例如: :初始化系统模块、初始化系统模块、 系统结束模块、系统结束模块、 紧急故障处理模块等均是时间性聚合紧急故障处理模
15、块等均是时间性聚合 模块模块. .2022-3-2730通信聚合通信聚合一个模块内各个组成部分的处理动作一个模块内各个组成部分的处理动作都使用相同的输入数据或产生相同都使用相同的输入数据或产生相同的输出数据的输出数据. .2022-3-2731通信通信聚合聚合模块例模块例产生工资产生工资报表报表计算平均计算平均工资工资职工工资职工工资记录记录职工工资报职工工资报表表平均工资平均工资产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块2022-3-2732顺序聚合顺序聚合模块内各处理成分相关,模块内各处理成分相关,且必须以特定次序执行且必须以特定次序执行2022-3-2733顺序
16、聚合顺序聚合模块模块读入读入成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩读入并审查成绩读入并审查成绩单单统计并打印成绩统计并打印成绩单单2022-3-2734功能功能聚合聚合n模块仅包括为完成某个功能所必须的所模块仅包括为完成某个功能所必须的所有成分。有成分。n模块所有成分共同完成一个功模块所有成分共同完成一个功 能,缺一不可能,缺一不可聚聚合合性最强性最强2022-3-2735模块间联系模块间联系(耦合耦合)(P73)n非直接耦合非直接耦合n数据耦合数据耦合n特征耦合特征耦合n控制耦合控制耦合n公共耦合公共耦合n内容耦合内容耦合2022-3-2736非非直接耦合直接耦合
17、两个模块没有直接关系两个模块没有直接关系( (模块模块1 1和模和模块块2)2),模块独立性最强。,模块独立性最强。模块模块1 1模块模块2 2模块模块3 3模块模块4 437数据耦合数据耦合 一模块调用另一模块时,被调用模一模块调用另一模块时,被调用模块的输入、输出都是简单的数据块的输入、输出都是简单的数据( (若干若干参数参数) )。 属松散耦合。属松散耦合。38数据耦合举例数据耦合举例开发票开发票计算水费计算水费单价单价数量数量金额金额39特征特征耦合耦合 两个模块与同一个数据结构(包括两个模块与同一个数据结构(包括若干个数据项)有关。若干个数据项)有关。 40控制耦合控制耦合 一模块一
18、模块向下属模块传递的信息向下属模块传递的信息 ( (开开关量、标志等控制关量、标志等控制被调用模块决策的变被调用模块决策的变量量) ) 控制控制了被调用了被调用模块的模块的内部逻辑内部逻辑。41控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信号控制信号) )成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分 计算最高计算最高分分平均平均/ /最高最高? ?B B42控制耦合增加了理解和编程的复杂性,调控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加用模块必须知道被调模块的内部逻辑,增加了相互依赖了相互依赖(1)(
19、1)将被调用模块内的判定上移到调用模块中进将被调用模块内的判定上移到调用模块中进行行(2)(2)被调用模块分解成若干单一功能模块被调用模块分解成若干单一功能模块去除模块间控制耦合的方法去除模块间控制耦合的方法43改控制耦合为数据耦合举例改控制耦合为数据耦合举例A A计算平均分计算平均分B1B1平均成绩平均成绩最高成绩最高成绩计算最高分计算最高分B2B244 公共耦合公共耦合( (公共数据区耦合公共数据区耦合) )一组模块引用同一个公用数据区一组模块引用同一个公用数据区( (也称全也称全局数据区、公共数据环境局数据区、公共数据环境) )。公共数据区公共数据区指:指:n 全局数据结构全局数据结构n
20、 共享通讯区共享通讯区n 内存公共覆盖区等内存公共覆盖区等45公共耦合举例公共耦合举例公共数据区公共数据区C CC CB B模块模块A A、B B、C C间存在错综复杂的间存在错综复杂的联联系系46(1)(1)软件可理解性降低软件可理解性降低(2)(2)诊断错误困难诊断错误困难(3)(3)软件可维护性差软件可维护性差,(4)(4)软件可靠性差软件可靠性差( (公共数据区及全程变量无保护措施公共数据区及全程变量无保护措施) )慎用公共数据区和全程变量慎用公共数据区和全程变量!公共耦合存在的问题公共耦合存在的问题47内容耦合内容耦合一模块直接访问一模块直接访问另一模块的内部另一模块的内部信息信息
21、( (程序代码程序代码或数据或数据)最不好的耦合形式最不好的耦合形式 !ABAB模块模块代码重代码重叠叠Entry1 Entry1 多入口多入口模块模块2022-3-2748无耦合没有依赖关系无耦合没有依赖关系松散耦合有松散耦合有少量依赖关系少量依赖关系紧密耦合有紧密耦合有很多依赖关系很多依赖关系图形表示耦合关系图形表示耦合关系2022-3-2749耦合强度依赖的因素:耦合强度依赖的因素:一模块对另一模块的引用一模块对另一模块的引用一模块向另一模块传递的数据量一模块向另一模块传递的数据量一模块施加到另一模块的控制的数量一模块施加到另一模块的控制的数量模块间接口的复杂程度模块间接口的复杂程度20
22、22-3-2750模块间耦合的类型模块间耦合的类型 低低 无无直接耦合直接耦合耦耦 数据耦合数据耦合合合 标记耦合标记耦合性性 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合 高高 内容耦合内容耦合模模块块独独立立性性弱弱( (低耦合低耦合) )强强( (中耦合中耦合) )( (较强耦合较强耦合) )( (强耦合强耦合) )2022-3-2751耦合、聚耦合、聚合合与模块独立性关系与模块独立性关系n耦合与聚耦合与聚合合都是模块独立性的定性标准,都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合都反映模块独立性的良好程度。但耦合是直接的主导因素,聚是直接的主导因素,聚合合则辅助耦
23、合共则辅助耦合共同对模块独立性进行衡量。同对模块独立性进行衡量。2022-3-2752改进软件结构设计的指导原则改进软件结构设计的指导原则 (软件结构设计的启发式规则)(1)(1)评价软件初始结构评价软件初始结构, ,通过模块的分解与合并减通过模块的分解与合并减少模块之间的耦合度少模块之间的耦合度, ,增加聚合度增加聚合度(2)(2)模块功能的完善化模块功能的完善化(3)(3)将模块的作用限制在模块的将模块的作用限制在模块的控制范围内控制范围内(4)(4)深度、宽度、扇出和扇入适中深度、宽度、扇出和扇入适中(5)(5)模块大小适中模块大小适中(6)(6)降低模块接口的复杂性降低模块接口的复杂性
24、(7)(7)模块功能可预测模块功能可预测(8)(8)避免避免模块模块的病态连接,力争单入口,单出口的病态连接,力争单入口,单出口2022-3-2753(1)模块分解、合并,消除重复功能Q1Q1C CQ2Q2C CQ1Q1Q2Q2C C改进前改进前Q1Q1、Q2Q2功功能相似能相似X XY YQQX XY YX XY Y重复部分重复部分改进方法改进方法1 1:将将Q1Q1、Q2Q2合并为合并为QQ不可取不可取改进方法改进方法2 2:将将Q1Q1、Q2Q2的公共的公共部分分离出来部分分离出来2022-3-2754(2) (2) 模块功能的完善化模块功能的完善化完整的模块应包括三部分:完整的模块应包
25、括三部分:(1)(1)执行规定功能部分执行规定功能部分(2)(2)出错处理部分出错处理部分(3)(3)需返回给调用者数据时,需返回给调用者数据时, 返回是否正确结束标志。返回是否正确结束标志。2022-3-2755(3)(3)系统结构的作用范围和控制范系统结构的作用范围和控制范围围n系统中某一层上模块中的判定或者条件语句系统中某一层上模块中的判定或者条件语句(例如(例如If语句)在系统中会产生多种后果,根语句)在系统中会产生多种后果,根据该判定的结果去执行或不执行其他层的某个据该判定的结果去执行或不执行其他层的某个模块。模块。n该模块就是该模块就是“条件依赖条件依赖”于某个判定于某个判定n判定
26、的判定的“作用范围作用范围”是指包含是指包含“条件依赖条件依赖”于于该判定的处理的全部模块该判定的处理的全部模块n一个模块的一个模块的“控制范围控制范围”是指模块本身和它的是指模块本身和它的全体子模块全体子模块2022-3-2756将模块的作用限制将模块的作用限制 在模块的在模块的控制范围内控制范围内CHDEGXFAILJKB模块模块C C的的控制控制范围范围: : C、D、E、F、G、H如果如果模块模块C C 作出的作出的决策影响决策影响了了模块模块L L,L L超出了超出了C C 的的控制范控制范围围2022-3-2757作用范围和控制范围作用范围和控制范围n作用范围应该是这个判定所在模块
27、的控作用范围应该是这个判定所在模块的控制范围的一个子集制范围的一个子集n但是实际上,在系统中控制范围和作用但是实际上,在系统中控制范围和作用范围的关系常常并非如此。范围的关系常常并非如此。作用范围和控制范围作用范围和控制范围TopAYBB1X作用范围作用范围TopABB1B2XTopYABXAYBB1B2X判定判定图图1.作用范围在控制范围之外作用范围在控制范围之外图图2.作用范围在控制范围之内,但判定位置太高作用范围在控制范围之内,但判定位置太高图图3.作用范围在控制范围之内,正确实现作用范围在控制范围之内,正确实现 图图4.理想的作用范围和控制范围理想的作用范围和控制范围2022-3-27
28、59(4) (4) 减少高扇出争取高扇入减少高扇出争取高扇入编外编外人员人员工资工资取得取得工资工资数据数据 计时计时制工制工资额资额薪金薪金制工制工资额资额编外编外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资避免平铺结构2022-3-2760增加中间层降低扇出增加中间层降低扇出编外编外人员人员工资工资取得工取得工资数据资数据 计时计时制工制工资额资额薪金薪金制工制工资额资额编外编外人员人员税款税款编外编外人员人员扣款扣款常规常规扣款扣款税收税收扣款扣款计算实发工资计算实发工资计时工人计时工人实发工资实发工资计薪工人计薪工人实发工资实发工资编
29、外人员编外人员实发工资实发工资2022-3-2761(5) (5) 模块大小适中模块大小适中模块过大:可理解程度下降模块过大:可理解程度下降模块过小:开销大于有效操作模块过小:开销大于有效操作 系统接口复杂系统接口复杂2022-3-2762(6)(6)降低模块接口的复杂性降低模块接口的复杂性n接口传递信息应简单且和模块功能一致。接口传递信息应简单且和模块功能一致。2022-3-2763(7) (7) 模块功能可预测模块功能可预测模块看成黑盒子,相同输入产生相同模块看成黑盒子,相同输入产生相同输出,其功能为可预测的。输出,其功能为可预测的。模块带有内部状态其功能可能是不可模块带有内部状态其功能可
30、能是不可预测的。难理解、难测试、难维护。预测的。难理解、难测试、难维护。2022-3-2764防止模块功能过分局限防止模块功能过分局限 功能单一的模块具有高内聚。功能单一的模块具有高内聚。 但如任意限制局部数据结构的但如任意限制局部数据结构的大小大小,过分限制控制流中可做的选过分限制控制流中可做的选择或外部接口的模式,模块功能就择或外部接口的模式,模块功能就过分局限,使用范围过分狭窄,缺过分局限,使用范围过分狭窄,缺乏灵活性和可扩充性。乏灵活性和可扩充性。 2022-3-2765(8)(8)避免模块的病态连接避免模块的病态连接,力争单,力争单入口,单出口入口,单出口防止指向模块中间的分支或引用
31、防止指向模块中间的分支或引用(针对内容耦合)(针对内容耦合)2022-3-2766结构化软件设计结构化软件设计2022-3-2767面向数据流的设计方法面向数据流的设计方法nSD以数据流图为基础,它定义了把以数据流图为基础,它定义了把数据数据流图(流图(DFD)变换成变换成软件结构软件结构的不同的不同映映射射方法方法映射映射数据流图数据流图DFD( (问题结构问题结构) )软件系统的结构软件系统的结构( (程序结构程序结构) )2022-3-2768系统结构特征可归纳为两种典型系统结构特征可归纳为两种典型形式形式因为因为数据流图可分为两种类型数据流图可分为两种类型: n变换型数据流变换型数据流
32、n事务型数据流事务型数据流所以所以结构化软件设计分为两种类型:结构化软件设计分为两种类型:n变换型结构变换型结构设计设计( (主要主要) )n事务型结构事务型结构设计设计( (次要次要) )2022-3-2769数据流图数据流图 基本模型(基本模型(DFDDFD)变换型变换型数据流数据流 结构结构事务型事务型数据流数据流 结构结构传入传入变换变换传出传出中心中心变换变换传传入入部分部分传出传出部分部分事务事务分析分析事务事务中心中心动作动作 1 1动作动作 2 2动作动作 3 3接受接受接受接受部分部分2022-3-2770变换型数据流图举例变换型数据流图举例输入输入信息信息物理物理输入输入格
33、式格式检查检查处理处理显示显示正确正确信息信息结果结果物理物理输出输出数据数据中心中心变换变换逻辑逻辑输入输入逻辑逻辑输出输出传传入入部分部分传出部分传出部分特点:特点:具有明确的具有明确的传传入、变换入、变换( (或称主加或称主加 工工) ) 和和传传出界面的出界面的DFD2022-3-2771事务型数据流图举例事务型数据流图举例IMLNOABCDFEGH2022-3-2772大型系统大型系统DFDDFD中中, ,变换型和事务型变换型和事务型结构往往共存结构往往共存: :T T事务中心事务中心传入传入变换变换传出传出中心中心变换变换输入输入输出输出变换型结构软件设计事务事务中心中心接受接受路
34、径路径动动作作路路径径事务型 结构软件设计由输入、中心由输入、中心变换和输出三变换和输出三部分组成部分组成具有在多种事具有在多种事务中选择执行务中选择执行某类事物的能某类事物的能力力结构化软件设计结构化软件设计 基本模型基本模型 特征特征2022-3-2774面向数据流图设计方法的设计步面向数据流图设计方法的设计步骤骤(1)(1)精化精化DFDDFD(2)(2)确定确定DFDDFD类型类型(3)(3)把把DFDDFD映射到系统模块结构映射到系统模块结构,设计设计 出模块结构的上层出模块结构的上层(4)(4)基于基于DFDDFD逐步分解高层模块逐步分解高层模块,设计设计 出下层模块出下层模块(5
35、)(5)根据模块独立性原理,精化模根据模块独立性原理,精化模 块结构块结构(6)(6)模块接口描述模块接口描述面向数据流图方法的设计过程面向数据流图方法的设计过程精化数据流图精化数据流图区分事务中心区分事务中心和数据接收路径和数据接收路径映射成变换结构映射成变换结构流类型流类型区分输入和区分输入和输出分支输出分支映射成事务结构映射成事务结构用启发式设计规则精化软件结构用启发式设计规则精化软件结构导出接口描述和全程数据结构导出接口描述和全程数据结构复查复查详细设计详细设计“事务事务”“变换变换”事务分析事务分析变换分析变换分析2022-3-2776SDSD方法的两种映射过渡方法方法的两种映射过渡
36、方法变换型变换型DFD事务型事务型DFD初始初始SC初始初始SC变换分析变换分析事务分析事务分析2022-3-2777初始的初始的SCSC主模块主模块输入模块输入模块主加工模块主加工模块输出模块输出模块事务控制模块事务控制模块接受模块接受模块动作发送模块动作发送模块动作动作1 1模块模块动作动作2 2模块模块动作动作3 3模块模块由由变换分变换分析析产生产生由事务由事务分分析析产生产生2022-3-2778(1) (1) 变换分析设计方法变换分析设计方法步骤:步骤:(1)(1)区分区分传传入、变换中心、入、变换中心、 传传出部分,在出部分,在 DFD 上上 标明分界线标明分界线BCADEQPR
37、WUVabcedrpuwv变换中心变换中心传传入入部分部分传传出出部分部分2022-3-2780变换分析设计方法变换分析设计方法n步骤:(2)(2)第一级分解第一级分解( (建立初始建立初始SCSC框架框架) ) 设计顶层和第一层模块设计顶层和第一层模块第一级分解的方法第一级分解的方法2022-3-2782第一级分解后的第一级分解后的SCSCMCMTMAME第一层第一层顶层顶层c,ec,eu,wu,w传入模块传入模块传出模块传出模块中心变中心变换模块换模块2022-3-2783变换分析设计方法变换分析设计方法n步骤:(3)(3)第二级分解第二级分解( (分解分解SCSC各分支各分支) ) 自顶
38、向下分解,设计出每个分支的中、下自顶向下分解,设计出每个分支的中、下层模块层模块2022-3-2784传入分支的分解传入分支的分解(1)(1)MACBAbacEDdec,e2022-3-2785传入分支的分解传入分支的分解(2)(2)MAGet C CbacRead Ddec,eB to CbcdeabGet E EGet BD to EA to BRead A2022-3-2786传出分支的分解传出分支的分解MEWWrite Vuuw,uvvvPut UU to VMEUWrite Wwwuw,uV(1)(1)(2)(2)2022-3-2787中心加工分支的分解中心加工分支的分解MTPQRe
39、c,pru,wpr2022-3-2788(2) (2) 事务分析设计方法事务分析设计方法任何情况下都可使用变换分析方法设任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事计软件结构,但如数据流具有明显的事务特点时务特点时 ( (有一个明显的事务中心有一个明显的事务中心),),以以采用事务分析方法为宜。采用事务分析方法为宜。2022-3-2789事务分析设计方法事务分析设计方法n步骤:(1)(1)在在DFDDFD上确定上确定事务中心事务中心、接收部接收部 分分和和发送部分发送部分。(2)(2)画出画出SCSC框架,把框架,把DFDDFD上的三部分上的三部分 分别映射为分别映射为事
40、务控制模块事务控制模块、接收接收 模块模块和和动作发送模块动作发送模块。(3)(3)分解细化接收分支和发送分支,分解细化接收分支和发送分支, 完成初始完成初始SCSC。用户命令交互子系统用户命令交互子系统读用户读用户命令命令密码命令密码命令密码密码显示显示信息信息系统参数系统参数数据数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型开开/ /关关命令命令建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动系非活动系统统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据配置配置命令命令检验
41、信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信息信息A/DA/D信信息息格式化格式化配置配置数据数据格式化格式化配置数据配置数据2022-3-2791初始的初始的SCSC主模块主模块输入模块输入模块主加工模块主加工模块输入模块输入模块事务控制模块事务控制模块接受模块接受模块动作发送模块动作发送模块动作动作1 1模块模块动作动作2 2模块模块动作动作3 3模块模块由由变换分变换分析析产生产生由事务由事务分分析析产生产生2022-3-2792事务分析的映射方法事务分析的映射方法总控调度C路径B路径A路径A路径B路径C C路径路径接收接收路径路径2022-3-2793
42、用户命令交互子系统初始的用户命令交互子系统初始的SCSC用户执行模块用户执行模块读用户命令读用户命令命令处理命令处理密码处理密码处理控制器控制器现用现用/ /非现用非现用系统系统系统设置系统设置控制器控制器用户命令交互子系统用户命令交互子系统读用户读用户命令命令密码命令密码命令密码密码显示显示信息信息系统参数系统参数数据数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型开开/ /关关命令命令建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动系非活动系统统与文件中与文件中密码比较密码比较格式化格式
43、化配置数据配置数据配置配置命令命令检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信息信息A/DA/D信信息息格式化格式化配置配置数据数据格式化格式化配置数据配置数据2022-3-2795用户命令交互子系统的用户命令交互子系统的SC用户执行模块用户执行模块读用户命令读用户命令命令处理命令处理密码处理密码处理控制器控制器现用现用/ /非现用非现用系统系统系统设置系统设置控制器控制器读系统读系统数据数据建立配建立配置文件置文件显示信息显示信息与状态与状态用户命令交互子系统用户命令交互子系统读用户读用户命令命令密码命令密码命令密码密码显示显示信息信息系统参数系统参数数
44、据数据用户用户命令命令读系统读系统数据数据配置信息配置信息显示信息显示信息和状态和状态命令命令分析处理分析处理读读密码密码命令命令类型类型开开/ /关关命令命令建立配建立配置文件置文件原配置原配置数据数据激活激活/ /非活动系非活动系统统与文件中与文件中密码比较密码比较格式化格式化配置数据配置数据配置配置命令命令检验信检验信息过程息过程重试重试信息信息四位四位数字数字检验检验信息信息检验检验信息信息A/DA/D信信息息格式化格式化配置配置数据数据格式化格式化配置数据配置数据2022-3-2797用户命令交互子系统的用户命令交互子系统的SC用户执行模块用户执行模块读用户命令读用户命令命令处理命令
45、处理密码处理密码处理控制器控制器现用现用/ /非现用非现用系统系统系统设置系统设置控制器控制器读系统读系统数据数据建立配建立配置文件置文件显示信息显示信息与状态与状态读读密码密码用文件用文件比较密码比较密码密码输出密码输出控制器控制器产生产生无效信息无效信息2022-3-2798事务流设计举例事务流设计举例IMLNABCDFEG事务中心事务中心2022-3-2799事务流设计举例事务流设计举例 取取 A 总控总控ALMNGDBCFE(主模块)(主模块)事务加工模块事务加工模块2022-3-27100动作分支的典型结构动作分支的典型结构PT 2T 1T iA 2D 2A 1D 1A 3A jD
46、k事务层事务层操作层操作层细节层细节层处理层处理层主模块主模块事务加事务加工模块工模块操作操作模块模块细节细节模块模块2022-3-27101事务流设计举例事务流设计举例 取 A 总控总控ALMNGDBCFE动作动作1 1动作动作n n.细节模块细节模块1 1细节模块细节模块2 2.(操作模块)(操作模块)(细节模块)(细节模块)2022-3-27102事务型数据流图举例事务型数据流图举例IMLNOABCDFEGH2022-3-27103事务流设计举例事务流设计举例 (另一种画法另一种画法) 输入 AXX系统系统变换控制变换控制ALMAGDBCFE 输出 E、F、GE、F、GE、F、G输出输出
47、H HOE、F、GHHN2022-3-27104(3) 混合流设计举例混合流设计举例3412675810911变换中心变换中心传传入入传传出出事务型事务型2022-3-27105混合流设计举例混合流设计举例T事务事务中心中心传入传入变换变换传出传出接收接收部分部分发发送送部部分分2022-3-27106混合流设计举例混合流设计举例ABT1变换中心变换中心传传入入传传出出T2T3abb1b2b3c1c2c3degfjm事务流子系统事务流子系统BCCDDEEHHKFJKLLMhk2022-3-27107混合流设计举例混合流设计举例输入输入DXX系统系统变换控制变换控制输出输出K输入输入Cdc输出输
48、出L LCDDEFJEHHKKLcddkkkLL输出输出MLMmmL事务子系统事务子系统2022-3-27108体系结构体系结构设计优化设计优化2022-3-27109体系结构体系结构设计优化设计优化将初始将初始SC根据模块独立性原则进行精根据模块独立性原则进行精化化, ,对模块进行合并、分解修改、调整,对模块进行合并、分解修改、调整,得到高内聚、低耦合模块,得到易于实得到高内聚、低耦合模块,得到易于实现、易于测试和易于维护的软件结构,现、易于测试和易于维护的软件结构,产生设计文档的最终产生设计文档的最终SC。2022-3-27110小结:结构化设计小结:结构化设计2022-3-27111本章结束本章结束软件设计