软件工程ch4软件设计._第1页
软件工程ch4软件设计._第2页
软件工程ch4软件设计._第3页
软件工程ch4软件设计._第4页
软件工程ch4软件设计._第5页
已阅读5页,还剩157页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 结构化软件设计SDLC 设计阶段的活动设计阶段的活动n 网络的设计与集成网络的设计与集成n 应用程序体系结构的设计应用程序体系结构的设计n 用户界面的设计用户界面的设计n 系统接口的设计系统接口的设计n 数据库系统的设计与集成数据库系统的设计与集成n 细节设计原型系统的建立细节设计原型系统的建立n 系统控制的设计与集成系统控制的设计与集成9.1 理解设计要素4.1 软件设计的基本概念与原理o 模块n 相对独立n 组成:数据说明、执行语句n 表现:函数、子程序、过程 类对象n 特征o 输入输出 接口o 功能o 内部数据o 程序代码 逻辑o 状态 运行环境总体设计的概念和原理模块化o 模块

2、化的目的n 模块化:把程序划分成为若干个模块,独立完成若干个功能,在把他们组成一个集体,可以完成指定的功能,满足问题的要求。n “各个击破”原则n 使软件结构清晰;使软件容易测试和调试,从而提高软件的可靠性;提高软件的可修改性n 但不能无限分割总体设计的概念和原理模块化o C(P1) C(P2)o E(P1) E(P2)o C(A+B) C(A) + C(B)o E(A+B) E(A) + E(B)总体设计的概念和原理模块化成成本本或或工工作作量量模块模块数量数量软件总成本软件总成本集成(接口)集成(接口)成本成本成本成本/ /模块模块M最小成本区域最小成本区域o 模块化的程度与软件成本的关系

3、抽象与逐步求精o 抽象与逐步求精:忽略细节,分层理解问题,自顶向下层层加细。n 抽象层次:可使用自然语言,配合使用面向问题的专业术语,概括地描述问题的解法n 抽象层次:任务需求的描述。列出“What”而不是“How”n 抽象层次:程序过程表示。 在这个抽象层次上,给出了初步的过程表示,所用的术语都已面向软件,而且模块化的工作已经开始显露 软件工程的先辈们已将抽象化思想用于软件设计的不同方面用问题所处环境的术语来描述这个软件:该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都

4、可以用这个CAD软件实现。任务需求的描述。CAD SOFTWARE TASKS user interaction task; 2-D drawing creation task; graphics display task; drawing file management task; end. 在这个抽象层次上,未给出“怎样做”的信息,不能直接实现。程序过程表示。以2-D (二维)绘图生成任务为例: PROCEDURE:2-D drawing creation REPEAT UNTIL (drawing creation task terminates) DO WHILE (digitizer

5、 interaction occurs) digitizer interface task; DETERMINE drawing request CASE; line: line drawing task; rectangle:rectangle drawing task; 抽象与逐步求精(续)o 启示:模块化和抽象层次思想相结合,可以使从不同的角度来看系统n 最高层次的模块:反映了整体的解决方案,隐藏了那些可能扰乱视线的细节,能够看到一个系统所要完成的主要功能。n 更低的抽象层次:反映了某部分更多的细节信息隐蔽(Information hiding)o 信息隐蔽:应用模块化原理时,一个重要原

6、则就是将信息尽量隐藏在相应的处理模块中。该项技术最早是由Parnas提出的n 核心内容:一个模块中所包含的信息,不允许其他不需要这些信息的模块使用。n 有效的模块化可以通过定义一组相互独立的模块来实现,这些独立的模块彼此间仅仅交换那些为了完成相应功能必须的信息 抽象帮助定义构成软件的结构,而信息隐蔽则可定义和实施对模块的过程细节和局部数据结构的存取限制信息隐藏的图示说明信息隐蔽o String password;o void setPassword(String pswd)password=pswd;o boolean verifyPassword(String userinputpswd).

7、 模块的独立性o 模块之间的耦合性n 不同模块间的联系紧密程度的度量n 越小越好o 模块的内聚性n 模块内部各元素间相互结合的紧密程度的度量n 越大越好影响耦合的因素o 联系的作用 模块相互之间的影响程度,取决于传送的信息流的类型,通常包括三种:数据型、控制型和混合型n传送的信息流是数据型时耦合度最低n如果一个模块直接转移到另一模块的某点上,就影响了两个模块的控制。通常通过传递参数来传递控制,如传递一个开关量来告诉另一模块做何工作,即控制型的信息流。耦合度很高n当一个模块修改另一个模块的代码时,对修改者,修改的代码是当作数据来处理的,而对被修改的模块,则可能是对控制的改变,这种情况最难处理,耦

8、合度最高影响耦合的因素o 耦合的时间 有以下几种情况:n 编写程序时(程序员编写一行语句时)n 模块编译或汇编时n 程序模块连接时n 系统运行时耦合出现的时间越晚,程序就越容易修改,越灵活耦合性:由小到大非直接耦合 两个模块没有直接关系(模块1和模块2),模块独立性最强。模块模块1 1模块模块2 2模块模块3 3模块模块4 420数据耦合(Data Coupling) 一模块调用另一模块时,被调用模块的输入、输出都是简单的数据(若干参数)。 通过模块参数交换信息属松散耦合。开发票开发票计算水费计算水费单价单价数量数量金额金额21标记耦合(复合型耦合)如两个或一组模块通过传递数据结构(不是简单数

9、据,而是记录、数组等)加以联系,或都与一个数据结构有关系, 则称这两个模块间存在标记偶合。22标记耦合举例计算水电费计算水电费计算水费计算水费计算电费计算电费住户情况住户情况水费水费电费电费住户情住户情况况“住户情况住户情况”是一个是一个数据结构数据结构, ,图中模块都与此数据结图中模块都与此数据结构有关。构有关。“计算水费计算水费”和和“计算电费计算电费”本无关本无关, ,由于引用了此数由于引用了此数据结构产生依赖关系据结构产生依赖关系, ,它们之间是标记偶合。它们之间是标记偶合。用户姓名家庭住址用水量用电量住 户 情住 户 情况况23将标记耦合修改为数据耦合举例计算水电费计算水电费计算水费

10、计算水费计算电费计算电费本月本月用水量用水量本月本月用电量用电量水费水费电费电费24控制耦合 一模块向下属模块传递的信息 (开关量、标志等控制被调用模块决策的变量) 控制了被调用模块的内部逻辑。25控制耦合举例A A计算平均分计算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信号控制信号) )成绩成绩读入分数读入分数输出结果输出结果计算平均分计算平均分计算最高分计算最高分平均平均/ /最高最高? ?B B26控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖o 将被调用模块内的判定上移到调用模块 中进行o 被调用模块分解成若干单一功能模块去除模块

11、间控制耦合的方法27改控制耦合为数据耦合举例A A计算平均分计算平均分B1B1平均成绩平均成绩最高成绩最高成绩计算最高分计算最高分B2B228外部耦合o 如果两个模块都访问同一个全局简单变量而不是同一全局数据结构,而且,不是通过参数表传递该全局变量的信息,则这两个变量具有外部耦合。o 例如,模块A和模块B之间的通信不是通过参数,而是通过全局变量,并且两个模块内部都可以修改全局变量。o 设计时,尽量不要使用外部耦合29公共耦合(公共数据区耦合) 一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:o 全局数据结构o 共享通讯区o 内存公共覆盖区等30公共耦合举例31o 软

12、件可理解性降低o 诊断错误困难o 软件可维护性差o 软件可靠性差(公共数据区及全程变量无保护措施)慎用公共数据区和全程变量! 只有在模块之间共享的数据很多,并且通过参数表传递不方便时,才使用公共耦合公共耦合存在的问题内容耦合33内容耦合举例一模块直接访问一模块直接访问另一模块的内部另一模块的内部信息信息 ( (程序代码程序代码或数据或数据)最不好的耦合形式最不好的耦合形式 !ABAB模块模块代码重叠代码重叠Entry1 Entry1 多入口多入口模块模块模块内聚内聚性:由小到大o 偶然内聚(低)n 为节省空间将不同功能相互无联系的语句组合在一起偶然内聚(巧合内聚)模块模块MM中的三个语句没有任

13、何联系,只因为中的三个语句没有任何联系,只因为 A A、B B、C C三个模块都要用到这些语句三个模块都要用到这些语句缺点:缺点:可理解性差可理解性差, 可修改性差可修改性差A AB BC CM MMOVE O TO RMOVE O TO RREAD FILE FREAD FILE FMOVE S TO TMOVE S TO T逻辑内聚 把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。n 实现多个逻辑上相同或相似的功能逻辑内聚举例ABCEFGABCEFGA1B1C1EFGEFG模块内部逻辑模块内部逻辑 E E、F F、G G逻辑逻辑 功能相似,组功能

14、相似,组 成新模块成新模块EFGEFG 缺点缺点:增强了耦合程度增强了耦合程度( (控制耦合控制耦合) ) 不易修改,效率低不易修改,效率低公用代码段公用代码段公用代码段公用代码段逻辑内聚举例时间内聚(经典内聚) 模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。例如:o 初始化系统模块o 系统结束模块o 紧急故障处理模块等均是时间性聚合模块 这种模块在20世纪80年代的应用程序中使用较多,没有任何复用价值,并且一旦其他模块需要修改时,对该模块的影响较大,所以现在主张将变量的初始化操作都归入到相关的模块中过程内聚(顺序性组合) 模块内各处理成分相关,且必须以特定次序执行,如把

15、流程图中的某一部分划出组成模块,得到的就是过程内聚模块n 过程内聚模块可能包含一个完整功能的一部分n 或者包含一个或几个功能再加上其它功能的一部分,会导致模块的高度可变性 如果选择不当,就不能使这种模块完成独立的任务,也无法在新的系统中独立使用。所以它的内聚程度仍然比较低,模块间的耦合度还比较高。过程内聚(顺序性组合)举例计算模块循环处理模块判断处理模块通信内聚 模块内各部分使用相同的输入数据,或产生相同的输出结果产生职工工资报表并计算平均工资模块产生职工工资报表并计算平均工资模块产生工资报表产生工资报表计算平均工资计算平均工资工资记录工资记录 工资报表工资报表平均工资平均工资信息内聚 模块完

16、成多个功能,各功能都在同一数据结构上操作,每一功能有唯一入口,实现时,一般采用选择结构来实现功能。 学生记录数据学生记录数据查找查找登录登录删除删除修改修改 几个加工同时引用一个共同的数据几个加工同时引用一个共同的数据功能内聚o 模块仅包括为完成某个功能所必须的所有成分。o 模块所有成分共同完成一个功能,缺一不可 内聚性最强函数函数A-处理处理1函数函数B-处理处理2函数函数C-处理处理34.2 4.2 体系结构设计概述体系结构设计概述4.2.1软件设计的任务总体设计的任务及目标o 开发阶段的信息流总体设计任务总体设计任务总体设计任务总体设计任务5、编写总体设计文档 国标GB8576-88的“

17、计算机软件产品开发文件编制指南”规定,软件设计文档可分为:n 概要设计说明书:集中于软件结构描述,如系统目标和软件的总体设计、在系统中的作用、与硬件、软件和人员的接口、软件的主要功能、模块的划分、模块功能及数据设计 n 数据库设计说明书:主要给出DBMS系统的选择、所使用的DBMS简介、数据库的概念模型、逻辑设计结果以及模式、子模式、完整性、安全性和优化方法等n 用户手册:对需求分析阶段编写的用户手册进行补充n 测试计划:修订需求分析阶段编写测试计划,对测试策略、方法、步骤提出明确要求 总体设计任务6、设计审查和复审o 最后应该对总体设计的结果进行严格的技术审查o 在技术审查通过之后再由使用部

18、门的负责人从管理角度进行复审o 通过审查,对设计部分是否完整地实现了需求中规定的功能、性能等要求、设计方案的可行性、关键的处理及内外部接口定义的正确性、有效性以及各部分之间的一致性等进行验证总体设计任务4.2.2 体系结构设计中可采用的工具1.HIPO图o HIPO图(层次图输入/处理/输出图)nH图:描述总体模块结构的层次nIPO图:描述每个模块输入/输出和处理功能工资计算系统的H图计算出勤奖计算业绩奖计算工资档案各基本数据项之和1.1.1计算奖金1.1.2计算应发工资1.1计算水电扣款1.2.1计算缺勤扣款1.2.2计算所得税扣款1.2.3计算扣款1.2计算实发

19、工资1.3计算工资1查询职工账号2.1生成工资存款清单2.2工资转存2打印工资清单3工资计算系统计算工资模块的IPO图业绩表出勤表工资档案文件奖惩条例水电扣款表计算奖金计算应发工资计算扣款计算实发工资奖金发放表应发工资表扣款表工资清单实发工资表4.2.2 体系结构设计中可采用的工具2.结构图结构图主要成分o 模块:用方框表示,方框中写有模块的名字,一个模块的名字应适当地反映这个模块的功能,这就在某种程度上反映了块内联系o 调用:从一个模块指向另一个模块的箭头(或直线)表示模块间的调用o 模块间的信息传递:模块问还经常用带注释的短箭头表示模块调用过程中来回传递的信息。有时箭头尾部带空心圆的表示传

20、递的是数据,带实心圆的表示传递的是控制信息 o SD方法在总体设计中的主要表达工具结构图中的基本符号结构图中的基本符号ABCABC符 号含 义用于表示模块,方框中标明模块的名称用于描述模块之间的调用关系用于表示模块调用过程中传递的信息,箭头上标明信息的名称;箭头尾部为空心圆表示传递的信息是数据,若为实心圆则表示传递的是控制信息 表示模块A选择调用模块B或模块C表示模块A循环调用模块B和模块C结构图(Structure Chart)结构图SC中的四种模块传入模块传入模块(a)(b)AA传出模块传出模块BB变换模块变换模块(c)CD协调模块协调模块E(d)EFF结构图(Structure Char

21、t)o 同名字的模块在结构图中仅出现一次。o 调用关系只能从上到下。o 不严格表示模块的调用次序,习惯上从左到右。有时为了减少连线的交叉,适当地调整同一层模块左右位置,以保持结构图的清晰性。4.2.3 体系结构设计的原则o 1.降低模块的耦合性、提高模块的内聚性n 耦合性:模块与模块之间的关系尽量使用数据耦合n 内聚性:模块内各部分之间的关系最好实现功能内聚o 2.保持适中的模块规模n 模块规模过大:o 模块实现功能过多o 降低程序可读性n 规模过小o 模块数过多o 不利于上层模块控制n 10100句/模块n 合并小模块、拆分大模块o 3.模块的扇入与扇出n扇入:o 上级模块调用下级模块o 该

22、模块的上级模块数称为该模块的扇入o 右图中模块S的扇入数为no 模块的扇入数越大n则调用该模块的上级模块越多n该模块复用性越高o 将多个模块的重复功能编写独立的模块,以提高程序的重用性,SM1M2M3Mno 3.模块的扇入与扇出n扇出:o 上级模块调用下级模块o 该模块可调用的下级模块数o 右图中模块S的扇出数为mo 模块的扇出数越大n使模块的调用控制过于复杂n原因:模块分解过快所致n解决方法:填加中间层,降低分解速度o 模块扇出数过小n扇出为1n将下级模块合并到上级模块SG1G2G3Gm会员信息管理管理员增加新会员管理员修改会员信息管理员删除会员销售部修改会员信息销售部删除会员销售部增加新会

23、员领导查询会员信息销售部查询会员信息会员信息管理管理员增加新会员管理员修改会员信息管理员删除会员销售部修改会员信息销售部删除会员销售部增加新会员销售部查询会员信息领导查询会员信息管理员管理会员销售管理会员领导查询会员o 4.模块的深度和宽度两者相互对立n深度o 模块层次数o 反应系统规模o 程序中的表现:嵌套调用o 深度过大解决方案:将简单模块与上级模块合并n宽度o 同一层次上模块数最大值o 反应系统复杂性o 程序中表现:子模块o 与扇出有关o 宽度过大如何解决?增加中间层模块设计准则o 深度 = 分层的层数。过大表示分工过细。o 宽度 = 结构图中模块数最多的那层的模块个数。过大表示系统复杂

24、度大。o 扇出 = 一个模块直接调用控制的模块数。 3 fan-out 9o 扇入 = 直接调用该模块的模块数。多扇入的模块通常是用公用模块 在不破坏独立性的前提下,fan-in 大的比较好。3.模块高扇入与适当扇出o5.模块作用域 控制域n作用域o受该模块内一个判定条件影响的所有模块n控制域o该模块本身及其下属模块n实例:o模块C的控制域包括:C E F G Ho由于模块C中存在一个判定条件影响模块C D E F G H D,所以模块C的作用域包括C D E F G H Do作用域不属于控制域o导致:n模块C对模块D的控制必须通过B来执行n模块间耦合性增大o解决方案一:判定位置上移o解决方案

25、二:将超出模块控制域部分的模块下移MABCDEFHG模块设计准则TopAYBB1XTopABB1B2XTopYABXAYBB1B2X图图1.作用域作用域在控制域之外在控制域之外图图2.作用域作用域在控制域之内,但判定位置太高在控制域之内,但判定位置太高图图3.作用域作用域在控制域之内,正确实现在控制域之内,正确实现 图图4.理想的理想的作用域作用域和控制域和控制域 作用域作用域判定判定o 6.降低模块接口的复杂程度n 即:降低模块间耦合性n 接口应简单清晰n 减少接口间传递信息的个数,降低信息的复杂性o 尽量保证是简单数据o 减少:数据结构、对象等数据类型作为接口传递数据4.2.4 体系结构设

26、计说明书o引言:n编写说明书的目的、背景、定义术语和缩略语、参考资料n说明现行系统问题n系统前景o总体设计n软件需求规定、运行环境、处理流程和总体结构n不涉及具体模块的实现细节o运行设计n模块组合、运行控制方式o模块设计n各模块性能n模块间接口o数据设计n逻辑数据结构(建立在E-R图至上)o出错处理设计n各种错误及所采取处理错误的措施nJava中Exception4.3 面向数据流的体系结构设计方法o 设计将信息需求转换成数据结构、程序结构和过程性表示的多步骤过程。o 系统设计的角度不同,分三类:n 面向数据流的设计,过程驱动设计n 面向数据结构的设计,数据驱动设计n 面向对象的设计一.面向数

27、据流的设计o 基于模块化、自顶向下、结构化程序设计的基础实现,实施要点:n 研究分析数据流图n 根据数据流图决定问题类型n 由数据流图推导出系统初始结构图n 利用启发式原则改进系统初始结构图n 修改补充数据字典n 制定测试计划1.典型的系统结构形式o 结构化设计:数据流图表示的信息 程序结构设计描述o 1)系统结构中的模块n原子模块系统结构图中底层不能再被分解的模块。n完全因子分解系统一个软件系统的全部实际加工(数据处理或计算)都有底层原子模块完成,非原子模块仅仅执行控制或协调功能。n完全因子分解系统是最理想的,也是我们在软件设计中希望达到的目标。转换为n系统结构图中的四种类型的模块:o 传入

28、模块逻辑输入数据流n从下属模块取得数据n处理数据n结果上传给上级模块o 传出模块逻辑输出数据流n从上级模块获得数据n处理数据n结果传送给下属模块o 变换模块(加工模块)计算模块n从上级模块取得数据n特定处理,转换数据形式n传送回上级模块o 协调模块对下属模块进行协调和管理n在较高层出现,协调和管理下属模块n出现在输入/输出部分或数据加工部分传入模块传出模块变换模块协调模块SD方法数据流图的类型o 变换型:变换型DFD是一个线性结构,由输入、变换和输出三部分组成SD方法数据流图的类型o 事务型:事务型DFD中,数据沿输入通路到达一个处理,这个处理将输入分为许多相互平行的加工路径,并根据输入数据的

29、类型,选择某一加工路径SD方法数据流图的类型o 变换/事务混合型:SD方法设计过程精化数据流图精化数据流图区分事务中心区分事务中心和数据接收路径和数据接收路径映射成变换结构映射成变换结构 类型类型区分输入和区分输入和输出分支输出分支映射成事务结构映射成事务结构 用设计准则精化软件结构用设计准则精化软件结构导出接口描述和全程数据结构导出接口描述和全程数据结构复查复查详细设计详细设计“事务事务”“变换变换”事务分析事务分析变换分析变换分析SD方法的两种映射方法变换型变换型DFDDFD初始初始SCSC变换分析变换分析事务型事务型DFDDFD初始初始SCSC事务分析事务分析初始的SC主模块主模块输入模

30、块输入模块主加工模块主加工模块输入模块输入模块由由变换分析变换分析产生产生接收模块接收模块调度模块调度模块动作动作1 1模块模块动作动作2 2模块模块动作动作3 3模块模块由事务由事务分析分析产生产生事务控制模块事务控制模块SD方法变换分析o 第一步:确定DFD中的变换中心、逻辑输入、逻辑输出n 通常几股数据流的汇合处就是系统的变换中心n 或从物理输入(出)端开始,沿(逆)数据流方向向系统中心寻找,直到有这样的DF,它不能再看做是系统的输入(出)时,则它的前一数据流就是系统的逻辑输入(出),介于逻辑输入和逻辑输出间的加工就是变换中心n 从输入设备获得的物理输入一般要经过编辑、数制转换、格式变换

31、、合法性检查等一系列预处理变成逻辑输入;同样,逻辑输出一般也要经过格式转换等处理后再进行物理输出SD方法变换分析BCADEQPRWUVabcedrpuwv变换中心变换中心输输入部分入部分输输出部分出部分SD方法变换分析o 第二步:一级分解,设计软件结构的顶层和一层模块建立初始结构图 变换中心变换中心 SD方法变换分析o 初始结构图MC CMT TMA AME E第一层第一层顶层顶层c,ec,ec,ec,eu,wu,wu,wu,w 输入模块输入模块 输出模块输出模块主加工模块主加工模块SD方法变换分析o 第三步:第二级分解(分解SC各分支) 自顶向下分解,设计输入分支、输出分支、中心变换分支的中

32、、下层模块SD方法变换分析:输入分支o输入模块的功能是向调用它的上级模块提供数据,所以它必须要有一个数据来源,因此它需要两个下属模块:n 一个接收数据n 另一个把这些数据变换成它的上级模块所需要的数据格式SD方法变换分析BCADEQPRWUVabcedrpuwv变换中心变换中心输输入部分入部分输输出部分出部分SD方法变换分析o 输入分支的分解MACBAbacEDdec,eMAGet CGet Cb ba ac cRead Read Dd de ec,ec,eB to CB to Cb bc cd de ea ab bGet EGet EGet BGet BD to to EA to to BR

33、ead ARead ASD方法变换分析BCADEQPRWUVabcedrpuwv变换中心变换中心输输入部分入部分输输出部分出部分SD方法变换分析o 输出分支的分解MEWWrite Vuuw,uvvvPut UU to VMEUWrite Wwwuw,uV(1)(1)(2)(2)SD方法变换分析BCADEQPRWUVabcedrpuwv变换中心变换中心输输入部分入部分输输出部分出部分SD方法变换分析o 中心加工模块的分解MTPQRec,pru,wprSD方法成绩管理系统模块图SD方法成绩管理系统模块图成绩管理系统成绩管理系统成绩统计成绩统计成绩登记成绩登记成绩打印成绩打印成绩档案成绩档案综合评分

34、综合评分补考通知补考通知成绩通知单成绩通知单成绩通知单成绩通知单补考通知补考通知综合评分综合评分成绩档案成绩档案成绩录入成绩录入 成绩验证成绩验证成绩档案成绩档案单科成绩单科成绩单科成绩单科成绩SD方法事务分析 任何情况下都可使用变换分析方法设计软件结构,但如数据流具有明显的事务特点时(有一个明显的事务中心),以采用事务分析方法为宜。o 步骤:n 第一步:在DFD上确定事务中心、接收和发送部分n 第二步:画出SC框架,把DFD上的三部分分别映射为事务控制模块、接收模块和调度模块。n 第三步:分解细化接收分支和发送分支,完成初始SCSD方法事务分析o 事务分析的映射方法总控总控调度调度C C路径

35、路径B B路径路径A A路径路径A A路径路径B B路径路径C C路径路径接收接收路径路径SD方法事务分析举例IMLNOabcdfeghSD方法事务分析举例o 初始结构图 输入输入 aXX系统系统变换控制变换控制aLMagdbcfe 输出输出he、f、ge、f、gNo 结构图细化SD方法事务分析举例P PT 2T 2T 1T 1T iT iA 2A 2D 2D 2A 1A 1D 1D 1A 3A 3A jA jD kD k事务层事务层操作层操作层细节层细节层处理层处理层主模块主模块事务加事务加工模块工模块操作操作模块模块细节细节模块模块SD方法事务分析举例 输入输入 aXX系统系统变换控制变换

36、控制aLMagdbcfe 输出输出e、f、ge、f、ge、f、g输出输出h hOe、f、ghhNo 判定上移的结构图SD方法事务分析举例 输入输入 aXX系统系统a 输出输出e、f、ge、f、g输出输出h hOe、f、ghhLMgdbcfeNSD方法事务分析举例o 事务型DFDIMLNABCDFEG事务中心事务中心o 初始结构图SD方法事务分析举例 取取 a 总控总控aLMNgdbcfe(主模块)(主模块)输出输出e、f、ge、f、gSD方法混合型DFDSD方法混合型DFD3.软件模块结构的改进o 1)模块功能的完善化n 一个完整的功能模块,o 不仅能完成指定的功能o 还应该能够告诉使用者完成

37、任务的状态,任务不能完成的原因执行规定的功能出错处理部分o2)消除重复功能,改善软件结构n审查系统的初始结构图n模块改进o模块完全相似n结构上完全一致,只是数据类型上下不一致n采用完全合并的方法o局部相似n完全合并:需要设置多个开关n处理步骤:将模块R1和R2的相同部分找出从R1和R2中分离出来重新定义成独立的下一层模块,供R1和R2调用R1和R2的剩余部分可根据情况与上级合并,减少控制的传递、全局数据的引用和接口的复杂性n模块作用域在控制域范围之内n减少高扇出,随深度增大扇入n模块大小适中XYR1R2XYR1+R2COMMONCOMMONCOMMONn 3)设计功能可预测的模块,避免过分限制

38、模块o 一个功能可预测的模块可看作一个黑盒:无论内部处理细节如何,对相同的输入数据,产生同样的结构o 模块内存在特殊的鲜为人知的功能,则该模块为不可预测的。(逻辑炸弹)o 4)对模块的n 数据结构大小n 控制流的选择n 与外界(人或硬件)的接口模式被限制过死,很难适应客户的新要求和环境的变更,维护困难。为适应变更,1)模块中数据结构的大小应当是可控制的,可通过模块接口的参数表来改变数据结构2)与外界的接口应该是灵活的,可通过参数来调整。o 系统设计的第一阶段体系结构设计o 系统设计的第二阶段详细设计n目的:在体系结构设计的基础上,为软件的每个模块确定相应的:o 算法o 内部数据结构n获得目标系

39、统具体实现的精确描述n为编码工作做好准备n决定了程序代码的质量4.4 详细设计概述4.4.1 详细设计的任务o 确定每个模块的具体算法o 数据结构及数据库的物理结构o 模块接口细节o 测试用例(模拟)o 编写文档详细设计说明书详细设计的原则o 将保证程序的清晰度放在首位o 采用逐步细化的实现方法 o 选择适当的表达工具 4.4.2 详细设计采用的工具o 程序流程图o N-S图o PAD图o PDL语言一、程序流程图(a) 一般处理框(b) 输入/输出框(c) 判断框(d) 流程线(e) 起止框流程图基本符号一、程序流程图o 五种基本的控制结构组成复杂多变的程序流程图AB顺序型PAB选择型PSF

40、T先判定型循环WHILEPSFT后判定型循环DO-UTILLP1P2PnA1TA2TA3T多情况选择型CASE模块详细设计描述工具接受单科成绩从课程管理系统中查出课程的学分IF 普通考试成绩DO WHILE 对于成绩单中每个学生IF 学生的成绩大于合格成绩记录学生的成绩,学分ELSE记录学生的成绩,学分为0ENDIFENDDOELSEDO WHILE 对于成绩单中每个学生 IF 学生的补考成绩大于合格成绩记录学生的补考成绩,学分ELSE记录学生的补考成绩,学分为0ENDIFENDDOENDIF模块详细设计描述工具o 流程图优点n 对程序的控制流程描述直观、清晰n 使用灵活n 便于阅读和掌握o

41、缺点n 箭头使用灵活性大,容易造成程序控制结构的混乱n 难以描述逐步求精的过程,导致程序员过早注重细节而忽略了程序全局结构的设计n 难以表示系统中的数据结构二、N-S图o可清晰的表达结构中的嵌套及模块的层次关系o没有流程线,避免随意转移模块详细设计描述工具ajbX1fX2X4ighde=1=2 =3cDo-while X6TFTFDo-while X5while -doX3ghm1X7TFm3m4m2Do-while X8g:X9TFn1Do-while X10h:2n23n31o N-S图特点n 每个矩形框都明确定义了功能域,清晰可见n 控制转移不能随意n 容易确定局部或全部数据的作用域n

42、很容易表现嵌套关系,也可以表示模块的层次结构三、PAD(problem analysis diagram)问题分析图模块详细设计描述工具三、PAD(problem analysis diagram)问题分析图o PAD特点n 层次清晰n 为多种语言提供相应图形符号,易于转换n 支持自顶向下逐步求精n 既能描述程序逻辑结构,又能描述数据结构四、PDL语言(过程设计语言)o 是一种伪代码n 外语法:符合一般程序设计语言常用语句的语法规则n 内语法:自然语言n 有数据说明机制n 有子程序定义与调用机制过程设计语言(过程设计语言(Process Design LanguageProcess Desig

43、n Language) PDLPDLoPDLPDL语言的主要特点:语言的主要特点: (1 1)各种定义语句及控制结构的表达都具有严格的语法形式,使程序)各种定义语句及控制结构的表达都具有严格的语法形式,使程序 结构、数据说明等更加清晰。结构、数据说明等更加清晰。 (2 2)提供了数据说明机制,可用于定义简单及复杂的数据结构。)提供了数据说明机制,可用于定义简单及复杂的数据结构。 (3 3)提供了模块的定义和调用机制,方便了程序模块化的表达。)提供了模块的定义和调用机制,方便了程序模块化的表达。 o 语法规则n 注释行语句:-*n 数据说明o DECLARE 数据类型 变量名n 模块定义o PR

44、OCEDURE 模块名(参数)RETURNENDn控制结构n1)顺序结构语句按先后顺序执行o语句序列1语句序列2.语句序列nn2)选择型结构IFELSEIFELSEENDIFnCASE表达式OFCASE 取值1:语句序列S1CASE 取值2:语句序列S2 DEFAULT:语句序列Sn ENDCASEn控制结构n3)循环结构oFOR结构例“For x=1 to nsum=sum*xEndforoWHILE结构例:while x= nsum=sum*xEndwhileoUNTIL结构例:REPEATsum=sum*xUTILL x=nn4)输入输出o输入:GET(输入变量表)o输出:PUT(输出变

45、量表)n5)模块调用语句oCALL模块名(参数)4.5 面向数据流的详细设计方法面向数据流的详细设计方法面向数据流的详细设计方法 o面向数据流的详细设计方法,主要指结构化程序设计方法,首要思面向数据流的详细设计方法,主要指结构化程序设计方法,首要思想是,从改善每个模块的控制结构入手来提高程序的清晰度、易读想是,从改善每个模块的控制结构入手来提高程序的清晰度、易读性、可测试性和可维护性性、可测试性和可维护性 。o自顶向下,逐步细分的方法自顶向下,逐步细分的方法 ,符合人类思维的一般方式,有效地,符合人类思维的一般方式,有效地控制复杂度和难度,大大减少了设计过程中出现错误的可能,能够控制复杂度和难

46、度,大大减少了设计过程中出现错误的可能,能够显著提高软件开发的可靠性及缩短软件开发的周期显著提高软件开发的可靠性及缩短软件开发的周期 o为了保证程序结构的清晰度,通常限制只能采用顺序结构、选择结为了保证程序结构的清晰度,通常限制只能采用顺序结构、选择结构(构(IF-THEN-ELSEIF-THEN-ELSE型)和循环结构(型)和循环结构(DO-WHILEDO-WHILE型)三种基本控制结型)三种基本控制结构来构造程序,称为经典的结构程序设计,其共同特点是所有模块构来构造程序,称为经典的结构程序设计,其共同特点是所有模块均只有一个入口和一个出口。均只有一个入口和一个出口。o加入了(加入了(DO-

47、UNTILDO-UNTIL)和多分支选择结构()和多分支选择结构(DO-CASEDO-CASE)两种补充结构)两种补充结构的详细设计则被称为扩展的结构程序设计的详细设计则被称为扩展的结构程序设计 。o允许使用允许使用BREAKBREAK、EXITEXIT这类语句的程序设计被称为修正的结构程序这类语句的程序设计被称为修正的结构程序设计。设计。 面向数据流的详细设计方法o 结构化程序设计方法o 目的:GOTO带来的问题n 1963,ALGOL,Peter Naur:取消GOTOn 1965,E.W.Dijkstra:GOTO与程序质量成反比n 1966,Bohm与Jacopini:经典结构程序设计

48、n 1968,争论结果:GOTO可适当存在o 首要思想:改善每个模块的控制结构提高程序清晰度o 关键技术:n 自顶向下,逐步细分o 只采用单入口单出口的三种基本控制结构经典的结构程序设计o 保证每个程序模块的清晰的逻辑结构AB顺序型PAB选择型PSFT先判定型循环WHILEn 增加DO-UNTILL和DO-CASE的两种补充结构o 除以上三种结构外增加了DO-UNTILL和DO-CASE的详细设计扩充的结构程序设计o 限制GOTO语句的使用o 面向数据流的详细设计n 为保证程序的清晰性n 以存储容量和运行效率的降低为代价PSFT后判定型循环DO-UTILLP1P2PnA1TA2TA3T多情况选

49、择型CASEo 结构化程序设计的原则n 使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑n 选用的控制结构只许有一个入口和一个出口n 程序语句组成容易识别的块,每块只有一个入口和一个出口n 复杂结构用基本控制结构嵌套组合而成n 严格控制GOTO语句4.6 面向数据结构的详细设计方法面向数据结构的设计方法面向数据结构的设计方法 o面向数据结构的设计方法根据软件所要处理的信息的数据结构来设计软件,面向数据结构的设计方法根据软件所要处理的信息的数据结构来设计软件,它同样遵循结构程序设计和自顶向下、逐步细分的设计原则它同样遵循结构程序设计和自顶向下、逐步细分的设计原则 。o面向数据结构的设

50、计方法的设计步骤面向数据结构的设计方法的设计步骤 1 1:画出系统中输入、输出数据对应的数据结构图;:画出系统中输入、输出数据对应的数据结构图; 2 2:根据数据结构图,映射得到相应的程序结构图:根据数据结构图,映射得到相应的程序结构图 3 3:按照程序结构图,分析得到程序的详细过程性描述:按照程序结构图,分析得到程序的详细过程性描述 o面向数据结构的设计方法的典型代表是面向数据结构的设计方法的典型代表是JacksonJackson方法和方法和WarnierWarnier方法方法 oJacksonJackson方法是由英国的方法是由英国的M.A.JacksonM.A.Jackson在在1975

51、1975年首先提出的,同时还提出了与年首先提出的,同时还提出了与这种方法配套使用的、用于描述系统数据结构和程序结构的图形工具,被称这种方法配套使用的、用于描述系统数据结构和程序结构的图形工具,被称为为JacksonJackson图。图。JacksonJackson方法从目标系统的输入、输出数据结构入手,导出程方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,就可得到完整的程序结构图,并采用序框架结构,再补充其它细节,就可得到完整的程序结构图,并采用PDLPDL进行进行程序的详细过程型描述。程序的详细过程型描述。o对于输入、输出数据结构之间对应关系清晰的小规模数据处理问题

52、,采用对于输入、输出数据结构之间对应关系清晰的小规模数据处理问题,采用JacksonJackson方法可以很方便地得到系统的处理过程描述方法可以很方便地得到系统的处理过程描述。(。(o 以系统中数据结构作为设计的出发点o 目标:得到详细设计o 适合:详细设计阶段o 算法数据结构o 算法依赖于数据结构:n 重复出现的数据结构采用循环结构n 选择性的数据结构采用选择结构n 分层的数据结构常采用对应的分层调用程序结构o 遵循自顶向下,逐步求精o 面向数据结构的设计方法数据结构图程序结构图映射程序的详细过程性描述Jackson图o 由方框、连线、特殊含义的字符构成ABCDAB。C 。D 。AB*AB*

53、F*DC*E*顺序结构选择结构重复结构数据结构的组合表示Jackson方法o 面向数据结构的的结构程序设计方法o 目标:分析系统的数据结构Jackson伪代码o 实现步骤:nSTEP1 分析问题,确定输入、输出数据的逻辑结构工号姓名职称工龄XXXXX*YYYYY*ZZZZZ*工号工资津贴XXXXX*YYYYY*ZZZZZ*工号姓名职称工龄工资津贴XXXXX*YYYYY*ZZZZZ*档案文件工资文件职工工资档案文件工号姓名职称工龄XXXXX*YYYYY*ZZZZZ*档案文件档案文件职工记录*工号姓名职称工龄工号工资津贴XXXXX*YYYYY*ZZZZZ*工资文件工资文件职工记录*工号工资津贴工号姓名职称工龄工资津贴XXXXX*YYYYY*ZZZZZ*职工工资档案文件档案文件职工记录*工号姓名职称工龄工资津贴n STEP2 找出输入数据结构和输出数据结构中有对应关系的单元o 对应单元:在程序中具有因果关系,可同时处理的单元o 为每对有对应关系的数据单元,在程序结构图的相应层次画一个处理框o 为输入数据结构中每个数据单元,若它在输出数据结构中没有对应的数据单元,则在程序结构图的相应层次画一个处理框o 为输出数据结构中每个数据单元,若它在输入数据结构中没有对应的数据单元,则在程序结构图的相应层次画一个处理框o 即:n 对输入数据结构与输出数据结构中的数据单元,每对有对应关系的数据单元合画

温馨提示

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

评论

0/150

提交评论