您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 北京大学研究生软件工程课程第四章-结构化设计-29页
要回答如何解决问题-即给出软件解决方案1〕总体设计的任务:如何将DFD转化为MSD分二步实现:第一步:如何将DFD转化为初始的MSD分类:变换型数据流图事务型数据流图变换设计事务设计第四章结构化设计数据流图分类变换型:事务型12345678abcdefhgyxz123546abcdefgy变换设计XX系统变换模块geteputhputggetcgetdc,d-ee-ff-g,hh-yputyg-xputxx-zputzgetagetbb-da-ceeg,hhgzzxxgyyhdbcacdeefg,hfxab事务设计事务中心输入模块路径1路径2输出模块aycgbfc-ecee-gegb-dbdd-fdf34682579A2cbdefgihmkn110A1x一个系统的DFD,通常是变换型数据流图和事务型数据流图的组合。如下所示:第二步:如何将初始的MSD转化为最终可供详细设计使用的MSD概念:模块模块化模块化度量:内聚耦合设计规则-经验规则精化初始的MSD-体现设计人员的创造1)耦合:不同模块之间相互依赖程度的度量。耦合类型:(1)内容耦合:(2)公共耦合:两个以上的模块共同引用一个全局数据项。(3)控制耦合:一个模块向另一模块传递一个控制信号,接受信号的模块将依据该信号值进行必要的活动。(4)标记耦合:两个模块至少有一个通过界面传递的公共有结构的参数。(5)数据耦合:模块间通过参数传递基本类型的数据。2)内聚:一个模块之内各成分之间相互依赖程度的度量。内聚类型:(1)偶然内聚:一个模块之内各成分之间没有任何关系。(2)逻辑内聚:几个逻辑上相关的功能放在同一模块中。(3)时间内聚:一个模块完成的功能必须在同一时间内完成,而这些功能只是因为时间因素关联在一起。(4)过程内聚:处理成分必须以特定的次序执行。(5)通信内聚:各成分都操作在同一数据集或生成同一数据集。(6)顺序内聚:各成分与一个功能相关,且一个成分的输出作为另一成分的输入。(7)功能内聚:模块的所有成分对完成单一功能是最基本的,且该模块对完成这一功能而言是充分必要的。启发性规则-经验的总结(1)改进软件结构,提高模块独立性;(2)模块规模适中-每页60行语句;(3)深度、宽度、扇入和扇出适中;(4)模块的作用域力争在控制域之内;(5)降低模块接口的复杂性;(6)模块功能应该可以预测。示例:数字仪表板系统的精化读旋转信号收集并求平均转换成转/分计算gph读并校核确定加速/减速计算里程计算mph和超速值计算燃料消耗产生加速/减速显示产生里程显示发出铃声产生mph显示产生mpg显示旋转信号信号/秒(sps)sps燃烧流传感器信号燃烧流gphspsrpmrpm箭头指示上箭头下箭头水平线英里超速值mphmpgmpg显示mph显示铃声里程显示输入部分GetgphGetrpmGetspsGet燃料流变换燃料流为ghpGet燃转信号变换燃转信号为燃料流变换sps为rpmGetspsGetsps转换为spsGet转速信号变换为sps变换为sps1、数字仪表板系统输入部分的精化输入部分的初始模块结构图转速信号燃料流燃料流燃料流gphspsspsrpmspsrpmgphspsspsspsspsspsspssps转速信号转速信号输入部分计算gph计算rpm计算sps读燃转信号采集sps读转速信号使用启发式规则1,并考虑其它规则,可以将输入部分的模块结构图精化为:其中:sps为转速的每秒信号量;sps为sps的平均值;sps为sps的瞬时变化值;rpm为每分钟转速;mph为每小时英里数;gph为每小时燃烧的燃料加仑数;rpm为行进里程。输出部分PUTmpgPUTmphPUT里程PUT加/减速PUT超速量显示显示显示2、数字仪表板系统输出部分的精化输出部分的初始模块结构图显示显示变换变换变换变换变换对于这一初始的模块结构图,一般情况下应:把相同或类似的物理输出合并为一个模块,以减少模块之间的关联。就本例而言:左边前三个“显示”,基本上属于相似的物理输出,因此可以把它们合并为一个显示模块。而将“PUTmpg”模块和相关的“生成显示‘的模块合并为一个模块;同样地,应把“PUTmph”模块、“PUT里程”各自与相关的生成显示的模块合并为一个模块,参见下图。其它求精的规则,与输入部分类同。例如,可以将“PUT加/减速”模块与其下属的两个模块合并为一个模块,将“PUT超速量”模块与其下属的两个模块合并为一个模块。输出模块生成mpg显示生成mph显示生成里程显示生成加/减速显示生成蜂鸣显示通过以上求精之后,可得如下的模块结构图变换模块计算mpg计算mph计算里程计算加/减速3、变换部分的精化1)首先,应该了解:对于变换部分的求精,是一项具有挑战性的工作。其中主要是根据设计准则,并要通过实践,不断地总结经验,才能设计出合理的模块结构。2)就给定的数字仪表板系统而言,如果把“确定加/减速”的模块放在“计算速度mph”模块下面,则可以减少模块之间的关联,提高模块的独立性。通过这一求精,可以得到如下的模块结构图:通过以上讨论,可以看出:在总体设计中(1)将一个给定的DFD转换为初始的模块结构图基本上是一个“机械”的过程,一般体现不了设计人员的创造力;(2)优化设计-将一个初始的模块结构图转换为最终的模块结构图,对设计人员将是一种挑战,其结果将直接影响软件系统开发的质量。总体设计小结:1、总体设计的目标和任务;2、总体设计的表示:层次图,HIPO图,模块结构图;3、基本概念:模块,以及由此产生的“鸿沟”;4、总体设计的基本思想与步骤:通过:变换设计和事务设计DFD----》初始的MSD(几乎可“机械”地进行)使用:启发式规则初始的MSD---》MSD(体现设计人员的创造)2〕详细设计的任务:定义每一模块结构化程序设计三种控制结构:顺序begins1;s2;…snend;选择if条件表达式thens1elses2;循环while条件表达式dos;几种表示工具流程图、PAD、N-S图、伪码等1)框图s1s2s1s2...s2)伪码伪码是一种混合语言。外部采用形式语言的控制结构,内部使用自然语言。Begin输入一元二次方程的系数a,b,c;ifb2-4acothen计算两实根else输出无实根;end.3)PAD图S1S2S3S1S2X5X5S顺序:选择:循环:注:支持逐步求精设计3)N-S图支持逐步求精设计举例顺序:选择:循环:条件FTS1S2循环条件循环体N:=1..10X5TFFTS1S2S3S4S5S6S8S7S9S10X10&Y31、结构化方法是一种比较系统的软件开发方法学。包括:结构化分析和结构化设计2、紧紧围绕“过程抽象”和“数据抽象”,给出了完备的符号体系---概念与表示可操作的过程---步骤与准则易理解的表示工具提供了控制信息组织复杂性的机制,例如逐层分解,数据打包等结构化方法小结3、问题:捕获的“过程”和“数据”恰恰是客观事物的易变性质,解的结构也不保持原系统的结构,从而:造成维护,验证上的困难。AB1B2B3B4C2C3C4C5C1DnDm…数据结构1数据结构2●概念软件方法学-以软件方法为研究对象的学科。主要涉及指导软件设计的原理和原则,以及基于这些原理、原则的方法和技术。狭义的也指某种特定的软件设计指导原则和方法体系。●从构造的角度,软件开发方法学主要由三部分组成·NOTATION·PROCESS·TOOLS●从能力的角度,软件开发方法学应能表达:·系统的说明性信息·系统的行为信息·系统的功能信息,并要给出以下机制:·控制信息组织复杂性·控制文档组织复杂性5、学习、掌握、运用系统建模技术的基本“技巧”:1)知识知识=概念+关系+条件/过程2)建模建模=(实际事物概念)+表示(形式化或半形式化符号)抽象:关注一个事物的重要的或主要方面,而忽略或去掉不重要的或没意义的细节。其中,就软件开发而言,●根据当前情况和需要,应以细节的不同层次来观察问题;●控制复杂性,并考虑正确性、可维护性、可复用性和可理解性等。模型:anyabstractionthatincludesallessentialcapabilities,properties,oraspectsofwhatisbeingmodeledwithoutanyextraneousdetails.[Firesmith,Henderson-Sellers]3)实践29谢谢!
本文标题:北京大学研究生软件工程课程第四章-结构化设计-29页
链接地址:https://www.777doc.com/doc-4422046 .html