1、Topic:Software Design Principle软件工程模型与方法第1页,共70页。2软件设计原理第2页,共70页。31 软件设计任务第3页,共70页。41 软件设计任务第4页,共70页。51 软件设计任务解决方案解决方案1实际问题实际问题逻辑模型逻辑模型解决方案解决方案2解决方案解决方案3第5页,共70页。6 设设 计计 编编 码码 信息描述信息描述 功能描述功能描述 行为描述行为描述 其它需求其它需求 数据设计数据设计 过程设计过程设计 总体结构设计总体结构设计 软件需求规格说明书软件需求规格说明书 软件设计规格说明书软件设计规格说明书 界面设计界面设计第6页,共70页。72
2、 软件设计的步骤第7页,共70页。82 软件设计的步骤第8页,共70页。92 软件设计的步骤第9页,共70页。102 软件设计的步骤第10页,共70页。112 软件设计的步骤第11页,共70页。12 模模块块1 模模块块2 2 模模块块3 模模 块块 4 4 模模块块5 5 模模块块6 6 结构化结构化模块模块:过程、函数关系关系:函数调用面向对象面向对象模块:对象类模块:对象类关系:继承、聚集、消息传递关系:继承、聚集、消息传递2 软件设计的步骤第12页,共70页。132 软件设计的步骤第13页,共70页。14 内内部部算算法法和和数数据据结结构构 I In nt t n nL Le en
3、n i if f (s st tr r 为为空空字字符符串串)t th he en n n nL Le en n =0 0;e el ls se e 返返回回n nL Le en n;模模块块1 模模块块2 2 模模块块3 3 模模块块4 4 模模块块5 5 模模块块6 6 数数据据库库 数数据据结结构构 数数据据文文件件 通通讯讯协协议议 概概要要设设计计 2 软件设计的过程第14页,共70页。152 软件设计的步骤第15页,共70页。162 软件设计的步骤第16页,共70页。17 模模块块1 模模块块2 2 模模块块3 3 模模块块4 4 模模块块5 5 模模块块6 6 数数据据库库 数数
4、据据结结构构 数数据据文文件件 通通讯讯协协议议 概概要要设设计计 2 软件设计的步骤第17页,共70页。182 软件设计的步骤第18页,共70页。192 软件设计的步骤第19页,共70页。20软件设计原理第20页,共70页。21软件设计原理 模模块块1 模模块块2 2 模模块块3 模模块块4 4 模模块块5 5 模模块块6 6 第21页,共70页。22 进行功能分解,把复杂的大的功能划分成进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。简单的小的子功能,尽量降低每个模块的成本。尽量使每个模块间的接口不能太多,太多尽量使每个模块间的接口不能太多,太多会使接口成本增
5、加。兼顾二者可取得最佳的划会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低。分状态,确保软件总成本最低。软件设计原理第22页,共70页。23 模模块块总总数数 最最小小成成本本区区区区 软软件件总总成成本本费费 接接口口成成本本 成成本本/模模块块 成成本本(工工作作量量)3 软件设计的模块化思想第23页,共70页。243 软件设计的模块化思想第24页,共70页。253 软件设计的模块化思想第25页,共70页。263 软件设计的模块化思想第26页,共70页。273 软件设计的模块化思想第27页,共70页。283 软件设计的模块化思想第28页,共70页。293 软件设计的模块化
6、思想第29页,共70页。303 软件设计的模块化思想第30页,共70页。313 软件设计的模块化思想第31页,共70页。323 软件设计的模块化思想第32页,共70页。333 软件设计的模块化思想开发票开发票计算水费计算水费单价单价数量数量金额金额第33页,共70页。34计算水电费计算水电费计算水费计算水费计算电费计算电费住户住户情况情况水费水费电费电费住户住户情况情况“住户情况住户情况”是一个数据是一个数据结构结构,图中模块都与此数据图中模块都与此数据结构有关结构有关.“计算水费计算水费”和和“计算电计算电费费”本无关本无关,由于引用了此由于引用了此数据结构产生依赖关系数据结构产生依赖关系,
7、它它们之间也是标记偶合们之间也是标记偶合.第34页,共70页。35计算水电费计算水电费计算水费计算水费计算电费计算电费住户住户情况情况水费水费电费电费住户住户情况情况计算水电费计算水电费计算水费计算水费计算电费计算电费本月用本月用水量水量水费水费电费电费本月用本月用水量水量第35页,共70页。363 软件设计的模块化思想调用逻辑性模块调用逻辑性模块 B B时,须先传递控制时,须先传递控制信号信号(平均分平均分/最高最高分分),以选择所需,以选择所需的操作。控制模块的操作。控制模块必须知道被控模块必须知道被控模块的内部逻辑,增强的内部逻辑,增强了相互依赖了相互依赖.读入分数读入分数输出结果输出结
8、果计算平均分计算平均分计算最高分计算最高分平均平均/最高最高?BA A计算平计算平均分或均分或最高分最高分B B平均平均/最高最高成成绩绩第36页,共70页。37第37页,共70页。38A A计算平均分计算平均分B1B1平均成绩平均成绩最高成绩最高成绩计算最高分计算最高分B2B2第38页,共70页。393 软件设计的模块化思想第39页,共70页。403 软件设计的模块化思想第40页,共70页。413 软件设计的模块化思想第41页,共70页。42 c 3 软件设计的模块化思想(c)多入口模块多入口模块第42页,共70页。434.34.3 模块独立性模块独立性第43页,共70页。444.34.3
9、模块独立性模块独立性第44页,共70页。453 软件设计的模块化思想第45页,共70页。463 软件设计的模块化思想第46页,共70页。473 软件设计的模块化思想读读 入入存存 贮贮打打 印印累累 加加读读 数数模块模块1 1模块模块2 2第47页,共70页。483 软件设计的模块化思想第48页,共70页。493 软件设计的模块化思想第49页,共70页。503 软件设计的模块化思想 建立方程组系数矩阵建立方程组系数矩阵全部任务纳入一个全部任务纳入一个模块,得到一过程模块,得到一过程性模块性模块 高斯消去法高斯消去法 回回 代代 高斯消去法解题流程高斯消去法解题流程第50页,共70页。51读入
10、读入成绩单成绩单读入并审查读入并审查成绩单成绩单审查审查成绩单成绩单统计统计成绩成绩打印打印成绩成绩统计并打印统计并打印成绩成绩第51页,共70页。523 软件设计的模块化思想第52页,共70页。533 软件设计的模块化思想第53页,共70页。543 软件设计的模块化思想A AB BC CM MMOVE O TO RMOVE O TO RREAD FILE FREAD FILE FMOVE S TO TMOVE S TO T模块模块M M中的三个语句没有任何联系中的三个语句没有任何联系缺点:可理解性差,可修改性差缺点:可理解性差,可修改性差第54页,共70页。553 软件设计的模块化思想该模该
11、模块执块执行一行一个功个功能吗?能吗?功能内聚功能内聚是是不是不是模块内模块内各组成各组成部分关部分关系如何系如何数据流数据流控制流控制流两者两者皆非皆非次序重次序重要吗?要吗?次序重次序重要吗?要吗?逻辑相逻辑相似吗?似吗?是是是是是是不是不是不是不是不是不是顺序内聚顺序内聚通讯内聚通讯内聚过程内聚过程内聚时间内聚时间内聚逻辑内聚逻辑内聚偶然内聚偶然内聚第55页,共70页。564 软件设计的原则第56页,共70页。574 软件设计的原则第57页,共70页。58不可以将两者合为一个,势必设置许多查询开关,如(f)4 软件设计的原则第58页,共70页。594 软件设计的原则第59页,共70页。6
12、0深度深度扇出扇出扇入扇入4 软件设计的原则宽度宽度第60页,共70页。614 软件设计的原则第61页,共70页。624 软件设计的原则第62页,共70页。634 软件设计的原则第63页,共70页。64清真寺型清真寺型不够好不够好,底层模块复用度低底层模块复用度低金字塔型金字塔型第64页,共70页。654 软件设计的原则第65页,共70页。661.1.判定位置违反作用范围判定位置违反作用范围/控制范围原则控制范围原则TOPTOPA AB BC CD DG GE E条件条件判定判定G D B C第66页,共70页。672.2.TOPTOPA AB BC CD DG GE E条件判定条件判定TOP B CTOP B D G第67页,共70页。683.3.B C B D GTOPTOPA AG GC CD DB BE E判定条件判定条件第68页,共70页。694.4.D E D G TOPTOPA AG GC CD DB BE E判定条件判定条件第69页,共70页。704 软件设计的原则第70页,共70页。