第3章结构化分析与设计.ppt

上传人:李司机 文档编号:7038433 上传时间:2024-05-09 格式:PPT 页数:120 大小:695KB
返回 下载 相关 举报
第3章结构化分析与设计.ppt_第1页
第1页 / 共120页
第3章结构化分析与设计.ppt_第2页
第2页 / 共120页
第3章结构化分析与设计.ppt_第3页
第3页 / 共120页
第3章结构化分析与设计.ppt_第4页
第4页 / 共120页
第3章结构化分析与设计.ppt_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《第3章结构化分析与设计.ppt》由会员分享,可在线阅读,更多相关《第3章结构化分析与设计.ppt(120页珍藏版)》请在三一办公上搜索。

1、第3章 结构化分析与设计,3.1 概述3.1.1 结构化分析与设计的由来 1.瀑布模型的首次实践 结构化分析(SA,Structured Analysis)与结构化设计(SD,Structured Design)是瀑布模型的首次实践。,2.SA 与 SD 的流程结构化分析(工具:DFD、PSPEC)分析模型(分层DFD图)+SRS结构化设计(工具:SC图)初始设计模型(初始SC图)最终设计模型(最终SC图)注:DFD:数据流图(Data Flow Diagram)PSPEC:加工说明(Process SPECification)SRS:软件需求规格说明书(Software Requiremen

2、t Specification)SC:结构图(Structure Chart),3.基本任务与指导思想(1)结构化分析SA有两个主要任务:建立分析模型 通过对问题及其环境的理解、分析和综合,建立分析模型。该模型包括问题所涉及的信息流、功能、性能、用户界面及设计约束等,它是形成需求说明书、进行软件设计的基础。,编写需求规格说明书(SRS)在完全弄清用户对软件系统的确切要求的基础上,用“需求规格说明书”(SRS)把用户的需求表达出来。需求规格说明书为开发人员和用户提供软件开发完成时质量评价的依据。SRS应该具有准确性;SRS应该防止二义性;SRS应该直观、易读、易于修改。,SA的主要指导思想 抽象

3、与分解(Abstraction and decomposition)抽象(Abstraction)是控制复杂性的基本策略之一。在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。在软件需求分析阶段,在最高抽象级别上,用“做什么”来描述问题。然后不断具体化(分解)。抽象的层次愈低,呈现的细节愈多。,(2)结构化设计软件设计分两个阶段完成:软件设计=总体设计+详细设计 总体设计又称概要设计,进行总体结构设计和系统接口设计,把用数据流图(DFD)表示的系统分析模型转换为用结构图(SC)表示的系统结构模型。详细设计用以确定各个软件组件(模块)的操作(算法)和数据

4、结构。,SC 图分两步完成:初始设计模型(初始SC图)最终设计模型(最终SC图)初始SC图 总体设计 最终SC图 软件设计 详细设计:完成模块说明软件设计的指导思想分解与细化 采用“自顶向下、逐步细化(Top-Down Stepwise Refinement)”的开发方法。,3.1.2 SA模型的组成与描述例3.1 教材销售系统第一步:通过对现实环境的调查研究,获取当前系统的具体模型(物理模型)。,学生,图3.1 学生购买教材的当前系统模型(物理模型),购书申请,张秘书,购书发票,王会计,购书证明,李出纳,领书单,赵保管,学生,书,学生,图3.2 学生购买教材的逻辑模型(当前系统),购书单,审

5、查有效性,购书发票,开发票,有效购书单,开领书单,领书单,发书,学生,书,第二步:分析需求,建立系统分析模型(逻辑模型),包括当前系统和目标系统的逻辑模型。,学生,图3.3 目标系统的逻辑模型,购书单,审查并开发票,发票,开领书单,领书单,发书,学生,书,第三步:编写需求规格说明书。第四步:验证需求,完善和补充对目标系统的描述。,学生,图3.4 改进了的目标系统逻辑模型,购书单,审查并开发票,发票,开领书单,领书单,学生,无效书单,软件开发是要实现目标系统的物理模型。需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“做什么”的问题。,目标系统,当前系统,物理模型,

6、逻辑模型,模型化,抽象化,物理模型,逻辑模型,具体化,实例化,导出,怎么做,做什么,图3.5 SA模型的组成,实体联系图(E-R图),状态变换图(STD),数据流图(DFD),数据对象说明,加工说明,数据字典 DD,控制说明,1.SA模型的组成,早期的(传统的)结构化分析模型是面向数据流的,采用“自顶向下、逐层分解”的分析策略,以数据字典(DD,Data Dictionary)、数据流图(DFD,Data Flow Diagram)、和加工说明(PSPEC,Process SPECification)为主要工具,建立系统的逻辑模型(功能建模)。,扩充后的结构化分析模型,将建模技术扩展到数据建模

7、和行为建模,以数据字典(DD,Data Dictionary)、实体-联系图(Entity-Relation Diagram,E-R图)、状态-迁移图(State Transform Diagram,STD)等为工具,从不同视点建立系统的分析模型。本课程主要讲述传统的结构化分析模型,2.SA模型的描述工具传统的结构化分析采用3种描述工具:数据流图(DFD)、数据字典(DD)和 加工规格说明(PSPEC)。,(1)数据流图(DFD)组成符号(数据流图中的 4 种图形元素),加工(Prosess):对数据流进行操作或变换。,数据源点或终点(又称外部实体:系统外的人员或组织),数据流(Data Fl

8、ow):数据在系统内传播的路径。,数据文件(Data File 或Data Store):文件与加工之间的数据流可以不命名;从文件流出的数据流表示读文件或查询文件;流向文件的数据流表示写文件或修改文件。,审查并开发票1,开领书单2,学生,学生,教材存量表,购书单,无效书单,发票,领书单,各班学生用书表,图3.7 教材销售系统的数据流图,DFD的性质 DFD 不能表示控制结构,如选择结构或循环结构。在需求分析中,常常用一组DFD图由粗到细地表示不同级别上的功能模型,称之为分层数据流图。,(2)数据字典(DD)数据字典的作用:对软件系统中的每个数据规定一个定义条目,以保持数据在系统中的一致性。数据

9、字典中主要包括以下三类条目:数据流、数据文件 和 数据项。,数据字典定义式中的符号,符 号 含 义 举 例 定义为 与 x=ab.|.或 x=a|b.或 m.n 重复 x=a,x=3a8(.)可选 x=(a).连结符 x=1.9*注释 综合的例:x=a|b+c+(d),数据流(条目):给出DFD中数据流的定义,列出数据流的各组成数据项,通常写成公式的形状。例3.3 发票学号+姓名+书号+单价+数量+总价+书费合计 对较长和较复杂的数据流,可分层次描述,使条目更清楚。如上述数据流“发票”可表示为:发票(学号)姓名发票行书费合计发票行书号+单价+数量+总价,数据文件(条目):对数据文件的定义。例3

10、.4文件名:各班学生用书表组成:系编号专业和班编号年级+书号 也可写成公式的形状,如:各班学生用书表=系编号专业和班编号年级+书号,数据项(条目):包含在数据流或数据文件中的数据项,一般都应在字典中设置相应的条目。例如:系编号=2数字2*二位数字,如01,12*年级=F/M/J/S*F:一年级(Freshman);M:二年级(sophoMore);J:三年级(Junior);S:四年级(Senior)*,(3)加工规格说明:(Process SPECification,PSPEC)对数据流图的每一个基本加工,必须有一个加工说明,其主要内容如下所示:(1)加工名;(2)加工编号;(3)输入数据流

11、;(4)输出数据流;(5)加工逻辑;(6)执行频率。其中最重要的是加工逻辑。,加工逻辑描述基本加工如何把输入数据流变换为输出数据流的加工策略,而不需描述实现加工的细节。加工逻辑通常采用结构化语言(Structured Langauge)、判定表(Decision Table)、或 判定树(Decision Tree)作为描述工具。,结构化语言(Structured Language)是一种介于自然语言和形式化语言之间的语言。结构化语言可使用顺序、选择、循环等控制结构,其中选择和循环结构可分为内外二层,外层有严格的语法,内层语法比较灵活,可以用自然语言来表示。结构化语言的三种基本控制结构:顺序结

12、构选择结构:if_then_else 或 switch_do;循环结构:while_do 或 for_do 或 do_while。,例3.6 售书系统中“审查并开发票”的加工逻辑,对购书单上的的每一个书号if(学生用书表中无此书号)then 把书号写到出错通知上else 按书号检索“教材存量表”,获得该书的单价和库存量 if(库存量购书单上的数量)then 进行缺书登记 else 将书号、单价、数量、总价等写入发票;更新“教材存量表”。,判定表或判定树判定表(Decision Table):如果某个加工需要依赖于多个逻辑条件的取值,使用判定表来描述比较合适。例3.7 某公司对推销员的奖励办法:

13、(1)每周推销金额10000元,按预收货款是否超过50%,分别奖励推销额的6%或4%;(2)每周推销金额10000元,按预收货款是否超过50%,分别奖励推销额的8%或5%;(3)对于月薪1000元的推销员,分别另发鼓励奖300、200 和 500、300元。,判定表,(1)列出所有的条件,填写判定表的左上限。(2)列出所有的操作,填写判定表的左下限。(3)列出所有的条件组合,填写判定表右上限。(4)将每一组合指定的操作,添入右下限相应的位置上。,图3.9 判定表的示例,判定表的构造步骤:(1)列出所有基本条件,填写判定表的左上限。在本例中,奖金的发放依据 3 个条件:推销金额、预收货款、月薪。

14、,(详细补充:)判定表,(2)列出所有的基本操作,填写判定表的左下限。在本例中,奖金的发放操作有奖金率和鼓励奖。(3)列出所有的条件组合,确定组合的个数,填写判定表右上限。在本例中,3个条件均有2种取值,组合个数应该是:222=8。(4)将每一组合指定的操作,添入右下限相应的位置。,图3.9 判定表的示例,判定树(Decision Tree)判定树也是用来表达加工逻辑的一种工具。有时它比判定表更直观。,推销金额 预收货款 推销员工资 奖金率 1000 8%+500 50%1000 8%10000 1000 5%+300 50%1000 5%推销奖金策略 1000 6%+300 50%1000

15、6%10000 1000 4%+200 50%1000 4%图3.10 判定树的示例,(思考题)下面是货运收费策略:计算铁路运费时,若收件地点在本省以内,快件每公斤1.5元,慢件每公斤1元。若收件地点在外省,快件每公斤2元,慢件每公斤1.5元。请分别用判定表和判定树表示。,(1)判定表(货运收费策略),(2)判定树,货运收费策略,本省,快件,每公斤1.5元,外省,货运类型,收件地点,运费,慢件,每公斤1 元,快件,每公斤2 元,慢件,每公斤1.5元,3.1.3 SD模型的组成与描述 1.SD模型的组成,过程设计,接口设计,体系结构设计(SC图),数据设计,图3.11 SD模型的组成,2.SD模

16、型的描述工具体系结构设计是用来确定软件结构的,其描述工具为结构图(Structure Chart),简称SC图。(1)SC图的组成符号:SD方法约定:(1)用矩形框表示模块;(2)用箭头或直线表示模块间的调用关系;(3)在调用线的两旁用短箭头表示传入和传出模块的数据流。,A,B,C,X,Y,Z,Z,传入模块,X,Y,传出模块,Y,X,变换模块,X,Y,控制模块,X,X,Y,Y,SC图中允许使用的6种模块,源模块,X,漏模块,X,(a),(b),(c),(d),(e),(f),(a)传入模块 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入流。(b)传出模块 从

17、上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出流。(c)变换模块 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。,(d)源模块 处于传入部分的始端,它不调用其它模块。它传送的数据流叫做物理输入流。(e)漏(终)模块 处于传出部分的末端,它不调用其它模块。它传送的数据流叫做物理输出流。(f)控制模块 对所有下属模块进行协调和管理的模块。它只调用其它模块,不受其它模块调用。,(2)SC图中的模块调用(a)简单调用,A,B,C,X,Y,Z,Z,(b)选择调用:用菱型符号表示。(c)循环调用:用叠加在调用线始端的环形表示。,A,B,C,A,B

18、,C,D,(a)选择调用示意图,(b)循环调用示意图,画SC图的注意事项(1)同名的模块在SC图中仅出现一次;(2)模块之间的调用关系只能从上而下,因而模块间的调用关系可以用直线表示;(3)同一层模块的调用次序,习惯上自左到右。,3.2 结构化系统分析(SA,Structured Analysis)结构化分析就是使用 DFD、DD、结构化语言、判定表和判定树等工具,来建立一种称为结构化说明书(即需求规格说明书)的目标文档。结构化分析的基本步骤是:(1)自顶向下对系统进行功能分解,画出分层的DFD图;(2)编制 DD 和 PSPEC;(3)写出SRS(需求规格说明书)。,3.2.1 画分层数据流

19、图 大型复杂的软件系统,其DFD可能含有数百乃至数千个加工,不可能一次将它们画完整。正确的做法是:从系统的基本模型(把整个系统看成一个加工)开始,逐层地对系统进行分解。每分解一次,系统的加工数量就增多一些,加工的功能也更具体一些。继续重复这种分解,直到所有的加工都足够简单为止。不需再分解的加工称为“基本加工”。上述分解方法称为“自顶向下、逐步细化”(Top-Down Stepwise Refinement)。,分层的数据流图,数据流图绘制步骤(1)画系统的顶层图:顶层图表示系统与外部实体之间的数据交换关系。顶层图只包含一个加工(加工名即为系统名);顶层图描述系统与外部实体之间的数据流;顶层图只

20、有一张。,(2)画系统的内部:第二层DFD图(有些教科书上称为层图):分解顶层图为若干个加工,系统有几个功能,就分解为几个加工;描述加工与外部实体之间、加工与数据文件之间、加工与加工之间的数据流。第二层图只有一张,图中的加工号为“,,n”。,画更下层数据流图(第3层图、第4层图、.)时,则分解上层图中的加工,直到图中尚未分解的加工都足够简单为止。子图号就是父图中被分解的加工号;子图中加工号由图号、小数点和序号组成。,例3.8 教材购销系统,功能如下:(1)根据教学计划,向学生供应所需的教材。系统接受学生的购书单,检验购书单。若教材库存量充足,进行售书处理,即修改教材存量表,给学生开发票和领书单

21、,学生凭单到书库领书;若教材库存量不足,对脱销的教材进行缺书登记。(2)根据缺书登记表采购所缺的教材,通知学生补购。按缺书登记表进行汇总,并按出版社统计缺书,将缺书单发给书库保管员,以便采购。待购教材到货后,根据书库保管员发来的进书通知单进行缺书销售,即修改教材存量表,并从缺书登记表中取出缺书单进行售书处理。,例3.8 教材购销系统,功能如下:(1)根据教学计划,向学生供应所需的教材。系统接受学生的购书单,检验购书单。若教材库存量充足,进行售书处理,即修改教材存量表,给学生开发票和领书单,学生凭单到书库领书;若教材库存量不足,对脱销的教材进行缺书登记。(2)根据缺书登记表采购所缺的教材,通知学

22、生补购。按缺书登记表进行汇总,并按出版社统计缺书,将缺书单发给书库保管员,以便采购。待购教材到货后,根据书库保管员发来的进书通知单进行缺书销售,即修改教材存量表,并从缺书登记表中取出缺书单进行售书处理。,教材购销系统,书库保管员,学生,购书单,领书单,缺书单,进书通知,图3.14 顶层图,(p52),(p52),1销售,2采购,学生,书库保管员,进书通知,教材存量表,缺书登记表,购书单,领书单,缺书单,进书通知,图3.15 第二层图,1.1审查有效性,1.2购书数量审核,进书通知,F1教材存量表,F2 缺书登记表,购书单,领书单,F3 学生用书表,暂缺书单,图3.16 第三层图:图1 销售子系

23、统,1.6产生补售书单,1.5登记缺书,1.4登记售书和打印领书单,F4 售书登记表,发票,有效购书单,补售书单,图3.17 第三层DFD采购子系统,.修改教材库存和待购量,.按书号汇总缺书,.按出版社统计缺书,缺书登记表,教材存量表,待购教材表,教材一览表,进书通知,进书通知,缺书单,3.2.2 编写数据定义(数据字典)与加工说明最底层的DFD图包含了系统的全部数据和加工。在底层图中,从数据的终点开始,沿着DFD图一步步向数据源点回溯,较易看清数据流中每一个数据项的来龙去脉,也易于搞清每个数据文件的组成以及各个加工的加工策略。,例如,图3.16中,“领书单”是主要输出数据流,按:领书单 发票

24、 有效购书单 购书单的次序回溯,可以得到各数据流、数据文件以及加工说明的定义,如:领书单 学号+姓名+书号+数量发票学号+姓名+书号+单价+数量+总价+书费合计有效购书单学号+姓名+书号+数量教材存量表书号+单价+数量,3.2.3 需求分析的复审(Requirement Review)需求分析的文档完成后,应由用户、系统分析员、设计人员等组成的复审小组进行复审。复审的重点是文档的完整性、易改性和易读性,尽可能多地发现文档中存在的矛盾、冗余和遗漏。以下是几个注意点:,(1)注意DFD图的加工编号:在数据流图中,需按层给加工编号。编号表明该加工所处的层次及上下层的父子关系。顶层图中的加工不编号。第

25、二层图中的加工编号为:,n。第三层图中的加工编号为:1.1,1.2,;2.1,2.2,;n.1,n.2,等,以此类推。,(2)不论加工、数据文件和数据流,都应该命名(文件与加工之间的数据流可以不命名)。(3)每个加工必须既有输入流,又有输出流。一个加工的输出流不应与输入流同名。,(4)父图和子图的平衡:父图(中某个加工)和(相应的)子图的输入流和输出流(在数量和名称上)应分别保持一致,称为父图和子图的平衡。(若父图的一个数据流对应子图中的几个数据流,而组成这些数据流的数据项全体正好是父图中的这个数据流,也算是平衡的。),1.3,1.3.1,1.3.2,1.3.3,发票,领书单,学生姓名,书费总

26、价,领书单,(a)父图,父图和子图平衡的示意图,(b)子图,(发票=学生姓名+书费总价),(5)分解的速度宜均匀:同一图中的各个加工,分解的步子应大致均匀,保持同步扩展。每一加工每次可分为24个加工,最多不超过7个。,(第3章 补充习题)17.某银行储蓄系统功能是:将储户填写的存款单或取款单输入系统。如果是存款,系统将储户的存款信息(姓名、住址、存款日期、存款类型、存款金额、利率等)记录在帐户文件中,并打印存款清单给储户;如果是取款,系统先查询帐户文件,并打印取款清单给储户。(1)画出该问题数据流图的顶层图 和 第二层图。(2)以公式的形式建立数据流条目“存款单”。,(第3章补充习题)17.某

27、银行储蓄系统功能是:将储户填写的存款单或取款单输入系统。如果是存款,系统将储户的存款信息(姓名、住址、存款日期、存款类型、存款金额、利率等)记录在帐户文件中,并打印存款清单给储户;如果是取款,系统先查询帐户文件,并打印取款清单给储户。(1)画出该问题数据流图的顶层图 和 第二层图。(2)以公式的形式建立数据流条目“存款单”。,3.3 结构化系统设计(SD,Structured Design)3.3.1 SD概述 1.面向数据流的设计和面向数据结构的设计 按照出发点的不同,传统的软件设计又可分为面向数据流的设计和面向数据结构的设计两大类。前者以结构化设计(Structured Design,SD

28、)为主要代表,后者以Jackson方法为主要代表。,在面向数据流的方法中,数据流是考虑一切问题的出发点。在分析阶段,用数据流图来表示系统的逻辑模型;在设计阶段,按照数据流图的不同类型(变换型或事务型)将它们转换为相应的软件结构图。,Jackson方法以数据结构作为分析与设计的基础,认为算法的结构在很大程度上依赖于它要处理的问题的数据结构,因此可以由该问题的数据结构导出它的程序结构。面向数据结构的设计方法主要用于小型数据处理系统的开发,一般情况下也适合于在详细设计阶段使用.,2.从分析模型导出设计模型,数据字典,状态迁移图,过程设计,接口设计,体系结构设计(SC),数据设计,3.3.2 SD的步

29、骤:从DFD图到SC图1.数据流图的类型:有两种形式,即:变换型(Transform Flow)和 事务型(Transaction Flow)。,(1)变换型结构(Transform Flow)变换型结构由三部分组成:传入路径(Afferent Path)、变换中心(Transform Center)和传出路径(Efferent Path)。流经这3个部分的数据流分别称为:传入流、变换流和传出流。变换中心的任务是:通过计算或处理,把系统的传入流变换为传出流。,传入流,变换流,传出流,A,B,C,a,P,R,W,Q,U,V,D,E,b,c,r,w,d,e,v,u,p,传入部分,变换中心,传出部分

30、,图3.23 变换型结构的模型,(2)事务型结构(Transaction Flow)事务型结构由至少一条接收路径(Receive Path)、一个事务中心(Transaction Center)和若干条动作路径(Action Path)组成。当外部信息沿着接收路径进入系统后,经过事务中心处理,获得某一个特定值,并据此启动某一动作路径的操作。示意图如下:,事务中心,接收路径,动作路径,图3.21 事务型结构的基本模型,2.SD方法的步骤,SD方法规定了下列4个步骤:(1)重审数据流图,必要时可再次进行修改或细化;(2)鉴别数据流图的结构特征,确定它是属于变换型还是事务型;(3)按照SD方法规定的

31、一组规则(变换映射或事务映射),把DFD图转换为初始的SC图;,变换型DFD图,初始SC图,变换映射,事务型DFD图,初始SC图,事务映射,(4)优化初始的SC图,获得最终的SC图。,3.3.3 变换映射(Transform Mapping),变换映射的3个主要步骤:(1)划分DFD图的边界:区分传入部分、传出部分和变换中心;(2)建立初始SC图的框架:进行第一级分解,设计上层模块顶层和第一层;(3)分解SC图的各个分支:进行第二级分解,设计传入分支、传出分支和变换中心的中、下层模块。,A,B,C,a,P,R,W,Q,U,V,D,E,b,c,r,w,d,e,v,u,p,例 3.9 第一步:划分

32、DFD图的边界:区分传入部分、传出部分和变换中心。,图 3.23 划分传入部分、传出部分和变换中心,传入部分,变换中心,传出部分,第二步:完成第一级分解,设计上层模块顶层和第一层。(1)顶层只包含一个用于控制的主模块。(2)第一层包括传入、传出和中心变换3个模块,分别代表系统的3个相应分支。,MT(变换模块),MC(主模块),MA(传入模块),ME(传出模块),c,e,c,e,u,w,u,w,顶层,第一层,图3.24(a)第一级分解后的SC图,第三步:完成第二级分解,细化SC图的各个分支(1)传入分支的模块分解:模块的调用顺序与加工顺序相反(逆向移动)。,MA(传入模块),C,c,e,图3.2

33、5(a)传 入分支的分解,B,A,E,D,c,b,a,e,d,(2)传出分支的模块分解:模块的调用顺序与加工顺序相同(正向移动)。,ME(传出模块),w,u,图3.26 传出分支的分解,W,V,U,w,v,u,(3)变换中心分支的模块分解:模块的调用顺序按加工顺序自左向右排列。,MT(变换模块),w,u,图3.27 变换中心分支的分解,Q,P,R,r,c,e,e,p,r,c,p,w,u,MT,MC,MA,ME,c,e,c,e,u,w,u,w,顶层,第一层,图3.28 从图3.23导出的初始的变换型SC图,C,E,Q,P,R,W,U,c,p,e,p,r,r,u,w,w,u,B,A,D,V,b,a

34、,d,e,c,v,A,B,C,a,P,R,W,Q,U,V,D,E,b,c,r,w,d,e,v,u,p,传入部分,变换中心,传出部分,f1,f2,f3,f4,图3.23(a)改进的变换型DFD图,物理输入,物理输出,逻辑输入,逻辑输出,MT,MC,MA,ME,c,e,c,e,u,w,u,w,顶层,第一层,图3.28(a)从图3.23(a)导出的初始的变换型SC图,C,E,Q,P,R,W,U,c,p,e,p,r,r,u,w,w,u,B,A,D,V,b,a,d,e,c,v,Get f1,f1,Get f2,f2,Put f3,f3,f4,Put f4,3.3.4 事务映射(Transaction m

35、apping),事务映射的3个主要步骤:(1)划分DFD图的边界:区分事务中心、接收部分(接收路径)和发送部分(发送路径);(2)建立初始SC图的框架,设计上层模块顶层和第一层;(3)分解和细化接收分支和发送分支,完成初始的SC图。,A,T,B,a,C,D,a1,例 3.10 第一步:划分DFD图的边界:区分事务中心、接收部分和发送部分。,图 3.29 事务型DFD图的划分,a2,a3,接收部分(输入流),事务中心,动作路径部分(活动流),第二步:设计上层模块顶层和第一层。(1)顶层只包含一个用于控制的主模块。(2)第一层包括接收和发送2个模块,分别代表系统的2个分支。,MC(主模块),A(接

36、收模块),T(发送模块),a,a,顶层,第一层,图3.30 事务型SC图的上层结构,第三步:分解和细化接收分支和发送分支。(1)接收分支负责接收数据,通常只有一个接收模块。(2)发送分支的发送模块是一个调度模块,它控制下层的所有动作模块。,MC(主模块),A(接收模块),T(发送模块),a,a,顶层,第一层,从图3.29导出的初始的事务型SC图,B,C,D,a1,a2,a3,3.3.5 优化初始SC图的指导规则,1.对模块划分的原则模块的行数应控制在 10100 行的范围。,2.高扇入/低扇出的原则扇入(fan-in):一个模块直接上级模块的个数。扇入高则上级模块多,能够增加模块利用率。扇出(

37、fan-out):一个模块直接下级模块的个数。扇出低则下级模块少,可以减少模块调用和控制的复杂度。通常扇出数以34为宜,不要超过7个。,M,M,(a)模块M的扇入,(b)模块M的扇出,图3.32 模块的扇入和扇出,如果一个模块的扇出数过大(煎饼形结构),就意味着该模块过分复杂,需要协调和控制过多的下属模块,应当适当增加中间层使扇出减少(塔形结构)。,(a)煎饼形结构,(b)塔形结构,图3.33 增加中间层可减少扇出,M,A,图3.34 瓮形结构,总的考虑是:顶层扇出数低一些,中间层扇出数高一些,底层扇入数高一些,形成瓮形结构。,B,J,K,N,L,3.3.6 教材购销系统的总体结构,例3.11

38、 从高校教材销售子系统的DFD图导出SC图。第一步:细化并修改DFD图。(1)在图3.15(p52)中,加工1(销售)和加工2(采购)之间的数据流“进书通知”替换为:增加一个“进书登记表”文件,供销售子系统和采购子系统之间交换信息。(2)把图3.16中加工1.4(登记售书和打印领书单)分解为两个加工(加工1.4登记售书、加工1.7打印领书单)。(3)把图3.16中加工1.6的输入流“进书通知”改为从数据文件“进书登记表”读入的数据流。,1销售,2采购,学生,书库保管员,进书登记表,教材存量表,缺书登记表,购书单,领书单,无效书单,发票,缺书单,进书通知,修改后的第二层DFD图,1.1审查有效性

39、,1.2购书数量审核,进书登记表,F1教材存量表,F2 缺书登记表,购书单,领书单,无效书单,F3 学生用书表,暂缺书单,第三层图:图1 修改后的销售子系统,1.6产生补售书单,1.5登记缺书,1.7打印领书单,F4 售书登记表,发票,有效购书单,补售书单,1.4登记售书,第二步:鉴别DFD图的类型。1.分析该系统的第二层图,它有2个功能:销售和采购,这2个处理可并行工作,因此从整体上可按事务型数据流图来设计。2.分析该系统的第三层图的销售子系统,初看起来它具有变换型结构。它的传入部分含有2个加工:1个(加工1.1)用于初次出售,1个(加工1.6)用于补售。一次售书只能执行一种功能,要么是初售

40、,要么是补售。因此,图中加工1.2的左方应添加一个 号,表示“选择”。由此可见,销售子系统实际上属于事务型结构。2.类似地,分析采购子系统,它也是具有2个动作分支的事务型结构。一个动作分支是“统计缺书”,另一个动作分支是“登记进书”。,第三步:画出SC图的上层框架。,教材购销系统,读用户选择,销售,采购,初售,补售,统计缺书,登记进书,图3.35 教材购销系统SC图的上层框架,初售命令,补售命令,统计命令,登记命令,用户命令,销售命令,采购命令,第四步:分解初售、补售、统计缺书和登记进书4个动作分支,补充动作层与细节层。销售子系统和采购子系统的初始SC图见图3.36和图3.37。第五步:改进S

41、C图,获得最终的SC图。,采购子系统,统计缺书,登记进书,按书号汇总,图3.37 采购子系统的SC图,按出版社汇总,打印缺书单,审查取款单,打印取款清单,3.4.1 目的与任务 1.过程设计的目的:为SC图中的每一个模块确定采用的算法和模块内的数据结构,用选定的表达工具给出清晰的描述。2.过程设计的主要任务:(1)为每个模块确定采用的算法;(2)确定每个模块使用的数据结构;(3)确定模块接口的细节(模块接口通常指模块的输入数据和输出数据)。,3.4 模块设计(详细设计,过程设计),3.4.2 模块设计的原则与方法 1.清晰第一的设计风格 结构化程序设计应遵循“清晰第一、效率第二(Clarity

42、 the first,Efficiency the next)”的原则。,2.结构化的控制结构 每个模块只使用单入口、单出口的3种基本控制结构,即:顺序、选择和循环结构。,A,B,T,F,(a)顺序,(b)选择,(C)循环(DO-WHILE),A,B,C,图3.40 3种基本控制结构的流程图,T,F,补充说明 允许补充使用DO-UNTIL 和 DO-CASE控制结构。,(a)循环(DO-UNTIL),CASE1,C,=1,CASE2,=2,CASEn,=n,(b)多分支选择(DO-CASE),两种常用的扩充结构,在PDL语言中允许使用UNDO语句提前退出循环。(UNDO语句相当于C语言的bre

43、ak语句)DO WHILE C1 IF C2 UNDO;ENDDO GOTO语句的转移范围应限制在同一个控制结构的内部,不让它从一个控制结构转移到另一个控制结构。,3.逐步细化的实现方法把给定的模块功能转换成详细过程性描述,采用逐步细化的策略。例3.12 在一组数中找出最大数。第一步:1.输入一组数;2.找出其中的最大数;3.输出最大数.第二步:细化上面的第2条。2.1 任取一个数,假定它就是最大数;2.2 将该数与其余各数逐一比较;2.3 若发现有任何数大于最大数,则取而代之.第三步:继续细化,最后可得:1.输入一个数组;2.1 令 最大数数组中的第一个元数;2.2 从第二个元素至最末一个元

44、素依次做:2.3 若 新元素最大数,则 最大数新元素.3.输出最大数.,逐步细化的步骤归结为:(1)由粗到细对程序进行逐步的细化,每步可选择其中的一条至数条进行分解;(2)在细化程序的过程时,同时对数据的描述进行细化;(3)每一步细化均使用相同的结构化语言,最后一步用伪代码来描述.逐步细化的优点为:(1)每一步只优先处理当前最需要细化的部分,先后有序,主次分明,避免全面开花,顾此失彼;(2)易于验证程序正确性,比较实用.,3.4.3 常用的表达工具1.程序流程图和N-S(盒)图(1)程序流程图(Flow Diagram)又称为程序框图,是最古老的设计表达工具之一。其顺序、选择、重复3种基本控制

45、结构的图形表示如图3.40所示。由于在程序流程图中可以随心所欲地画控制流线,容易造成非结构化的程序结构,因此科学家又提出一种N-S盒图的表达工具。,(2)N-S图,N-S图也叫做盒图。其顺序、选择、重复3种基本控制结构的图形表示如下:,S1S2,C,T,F,S2,S1,C,F,T,S,WHILE C,S,UNTIL C,S,C,=1=2=n,S1 S2 Sn,顺序结构,选择结构(1),选择结构(2),先判断重复结构,后判断重复结构,多分支选择结构,MAX=A(1),FOR I=2 TO N,MAX=A(I),MAXA(I),T,F,MAX=A(1),I=2,MAX=A(I),I=I+1,IN,

46、MAXA(I),F,F,T,T,图3.42(a)例3.12的N-S图,图3.42(b)例3.12的流程图,2.伪代码和 PDL语言,伪代码(Pseudo-code,简称伪码)属于文字形式的表达工具。它并非真正的代码,也不能在计算机上执行,但形式上与代码相似。在第3章中,描述加工逻辑的结构化语言也属于伪代码。PDL(Process Design Language)是一种用于描述功能模块的算法设计和加工细节的语言,又称为过程设计语言。它也是一种伪代码(伪码)。伪代码的语法规则可分为“外语法”和“内语法”。PDL具有严格的关键字外语法,用于定义控制结构和数据结构;它表示实际操作和条件的内语法是灵活的

47、,可使用自然语言。,结构化语言和PDL语言的不同点:(1)结构化语言是描述加工“做什么”的。外语法比较简单,内层自然语言描述较抽象、概括。(2)PDL语言是描述处理过程“怎么做”的细节,外语法更严格,且可定义控制结构和数据结构,内层自然语言描述实际操作更具体、详细。,IF THEN ELSEIF ELSEIF ELSE ENDIF,图3.43 PDL描述的IF结构,(1)先判断型 DO WHILE ENDDO(2)后判断型 DO UNTIL ENDDO(3)固定循环次数型 DO FOR ENDDO,图3.45 PDL的循环结构,INPUT ARRAY A MAX=A(1)DO FOR I=2 TO N IF MAX A(I)MAX=A(I)ENDIF ENDDO PRINT MAX,图3.47 用PDL描述的例3.12 的程序过程,PDL的特点(1)有数据说明机制,包括简单的(如简单变量)与复杂的(如数组等)的数据结构。(2)有子程序定义与调用机制。(3)为了区别关键字,规定关键字一律大写。(4)内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。,A,B,f1,C,E,F,D,G,H,f2,f3,f6,f4,f7,f5,(第3章补充习题)18.请把下面的DFD图转换为SC图:,f8,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号