资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,结构化方法,一种面向数据流的传统软件开发方法,以数据流为中心构建软件的分析模型和设计模型,分为:,结构化分析,(Structured Analysis,简称,SA),结构化设计,(Structuresd Design,简称,SD),结构化程序设计,(Structured Programmin,简称,SP),内容摘要,结构化分析方法概述,数据流图,分层数据流图的审查,数据字典,描述基本加工的小说明,结构化设计概述,数据流图到软件体系结构的映射,初始结构图的改进,小结,内容摘要,5.1,结构化分析方法概述,5.2,数据流图,5.3,分层数据流图的审查,5.4,数据字典,5.5,描述基本加工的小说明,5.6,结构化设计概述,5.7,数据流图到软件体系结构的映射,5.8,初始结构图的改进,小结,5.1,结构化分析方法,发展历史,提出:,20,世纪,60,年代末到,70,年代初,成熟:,20,世纪,70,年代末到,80,年代中期,主要思想:,抽象,与自顶向下的逐层,分解,(,控制复杂性的两个基本手段,),抽象:在每个抽象层次上忽略问题的内部复杂性,只关注整个问题与外界的联系,分解:将问题不断分解为较小的问题,直到每个最底层的问题都足够简单为止,5.1.1,结构化分析方法中的抽象与分解,抽象:从作为整体的软件系统开始,(,第一层,),每一抽象层次上只关注于系统的输入输出,分解:将系统不断分解为子系统、模块,随着分解层次的增加,抽象的级别越来越低,也越接近问题的解,(,算法和数据结构,),2.4,2.3,2.2,2.1,2,1,4,3,1.3,1.2,1.1,X,5.1.2,结构化分析过程,理解当前的现实环境,获得当前系统的具体模型,(,物理模型,),从当前系统的具体模型抽象出当前系统的逻辑模型,分析目标系统与当前系统逻辑上的差别,建立目标系统的逻辑模型,为目标系统的逻辑模型作补充,5.1.3,结构化分析模型的描述,数据字典是模型的核心,它包含了软件使用和产生所有数据的描述,数据流图:用于功能建模,描述系统的输入数据流如何经过一系列的加工变换逐步变换成系统的输出数据流,实体,关系图:用于数据建模,描述数据字典中数据之间的关系,实体,-,关系图,数据流图,状态转换图,控 制 规 约,数据字典,加 工 规 约,数 据 对 象 描 述,状态转换图:用于行为建模,描述系统接收哪些外部事件,以及在外部事件的作用下的状态迁移情况,内容摘要,5.1,结构化分析方法概述,5.2,数据流图,5.3,分层数据流图的审查,5.4,数据字典,5.5,描述基本加工的小说明,5.6,结构化设计概述,5.7,数据流图到软件体系结构的映射,5.8,初始结构图的改进,小结,5.2,数据流图,Data Flow Diagram(,简称,DFD),:描述输入数据流到输出数据流的变换,(,即加工,),过程,用于对系统的功能建模。,5.2,数据流图,Data Flow Diagram(,简称,DFD),:描述输入数据流到输出数据流的变换,(,即加工,),过程,用于对系统的功能建模。,数据流,(data flow),:由一组固定成分的数据组成,代表数据的流动方向,加工,(process),:描述了输入数据流到输出数据流的变换,即将输入数据流加工成输出数据流,文件,(file),:使用文件、数据库等保存某些数据结果供以后使用,源或宿,(source or sink),:由一组固定成分的数据组成,代表数据的流动方向,源或宿,存在于软件系统之外的人员或组织,表示软件系统输入数据的来源和输出数据的去向,因此也称为源点和终点,例如,对一个考务处理系统而言,考生向系统提供报名单,(,输入数据流,),,所以考生是考试系统,(,软件,),的一个源,考务处理系统要将考试成绩的统计分析表,(,输出数据流,),传递给考试中心,所以考试中心是该系统的一个宿,源或宿用相同的图形符号表示,当数据流从该符号流出时表示是源,当数据流流向该符号时表示是宿,当两者皆有时表示既是源又是宿,加工和文件,加工:描述输入数据流到输出数据流的变换,每个加工用一个定义明确的名字标识,至少有一个输入数据流和一个输出流,可以有多个输入数据流和多个输出数据流,文件:保存数据信息的外部单元,每个文件用一个定义明确的名字标识,由加工进行读写,DFD中称为文件,但在具体实现时可以用文件系统实现也可以用数据库系统等实现,数据流,每个数据流用由一组固定成分的数据组成并拥有一个定义明确的名字标识,如:运动会管理系统中,报名单,(,数据流,),由队名、姓名、性别、参赛项目等数据组成,数据流的流向,从一个加工流向另一个加工,从加工流向文件,(,写文件,),从文件流向加工,(,读文件,),从源流向加工,从加工流向宿,示例:图书订购系统,DFD,图书库存,入库单,图书代理商,书库,管理,收费,制作,财务报表,财务报表,经理,帐务数据库,制作,发书单,图书,订购,核准的订购单,发书单,订购单,顾客,顾客,收费数据,帐单,数据流图的扩充符号,描述一个加工的多个数据流之间的关系,星号,(,),:表示数据流之间存在,“,与,”,关系,所有输入数据流同时存在时,才能进行加工处理,或加工处理的结果是同时产生所有输出数据流,加号,(,),:表示数据流之间存在,“,或,”,关系,至少存在一个输入数据流时才能进行加工处理,或加工处理的结果是至少产生一个输出数据流,异或,(),:表示数据流之间存在,“,异或,”,(,互斥,),关系,必须存在且仅存在一个输入数据流时,才能进行加工处理,或加工处理的结果是产生且仅产生一个输出数据流,数据流图的扩充符号,T,A,B,*,C,T,A,B,*,C,T,A,B,+,C,T,A,B,+,C,T,A,B,C,+,T,A,B,C,+,对数据流图进行分层,George Miller,在著名的论文,“,神奇的数字,7,加减,2,:我们处理信息的能力的某种限制,”,中指出:人们在一段时间内的短期记忆似乎限制在,5,9,件事情之内,根据自顶向下逐层分解的思想将数据流图画成层次结构,每个层次画在独立的数据流图中,加工个数可,大致,控制在,“,7,加减,2,”,的范围中,数据流图的各个层次,顶层图只有代表整个软件系统的,1,个加工,描述了软件系统与外界,(,源或宿,),之间的数据流,顶层图中的加工经分解后的图称为,0,层图,(,只有,1,张,),中间层图中至少有一个加工,(,也可以有多个,),在下层图中分解成一张子图,处于最底层的图称为底层图,其中所有的加工不再分解成新的子图,图和加工的编号,顶层图只有一个代表整个软件系统的加工,该加工不必编号。,0,层图中的加工编号分别为,1,,,2,,,3,,,子图号:若父图中的加工号,x,分解成某一子图,则该子图号记为,“,图,x,”,子图中加工的编号:若父图中的加工号为,x,的加工分解成某一子图,则该子图中的加工编号分别为,x.1,、,x.2,、,x.3,图和加工的编号,X,1,3,2,1.1,1.2,1.4,1.3,2.1,2.2,1.1.1,1.1.2,2.1.3,2.1.2,2.1.1,2.2.2,2.2.3,2.2.1,顶层,中 间 层,底 层,0,图,1,图,2,图,画分层数据流图的步骤,1,画系统顶层图,2,画系统内部,3,画加工内部,4,重复第,3,步,直至每个尚未分解的加工都足够简单,(,即不必再分解,),分层数据流图示例,资格和水平考试的考务处理系统,简化的资格和水平考试的考务处理系统,分成多个级别,如初级程序员、程序员、高级程序员、系统分析员等,凡满足一定条件的考生都可参加某一级别的考试,考试的合格标准将根据每年的考试成绩由考试中心确定,考试的阅卷由阅卷站进行,因此,阅卷工作不包含在软件系统中,资格和水平考试的考务处理系统,功能需求,1,对考生送来的报名单进行检查,2,对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站,3,对阅卷站送来的成绩清单进行检查,并根据考试中心制订的合格标准审定合格者,4,制作考生通知单送给考生,5,进行成绩分类统计,(,按地区、年龄、文化程度、职业、考试级别等分类,),和试题难度分析,产生统计分析表,资格和水平考试的考务处理系统,部分数据流的组成,报名单地区序号姓名文化程度职业考试级别通信地址,正式报名单准考证号报名单,准考证地区序号姓名准考证号考试级别考场,考生名单准考证号考试级别其中,w,表示,w,重复多次,考生名册正式报名单,统计分析表分类统计表难度分析表,考生通知单准考证号姓名通信地址考试级别考试成绩合格标志,系统的输入输出,(,顶层图,),确定源或宿:考生、阅卷站和考试中心,它们都既是源又是宿,顶层图唯一的加工:,软件系统,(,考务处理系统,),确定数据流:系统的输入,/,输出信息,输入数据流:报名单,(,来自考生,),、成绩清单,(,来自阅卷站,),、合格标准,(,来自考试中心,),输出数据流:准考证,(,送往考生,),、考生名单,(,送往阅卷站,),、考生通知书,(,送往考生,),、统计分析表,(,送往考试中心,),额外的输出流,(,考虑系统的健壮性,),:不合格报名单,(,返回给考生,),,错误成绩清单,(,返回给阅卷站,),顶层图通常没有文件,Step1,:考务处理系统顶层图,考务,处理系统,考试中心,考生,不合格报名单,阅卷站,错误成绩清单,成绩清单,考生名单,合格标准,报名单,准考证,考生通知单,统计分析表,Step2,:系统内部,(0,层图,)-1,以下确定加工、数据流、文件、源或宿的一般方法适用于,0,层图及其各层子图,确定加工:将父图中某加工分解而成的子加工,根据功能分解来确定加工:将一个复杂的功能分解成若干个较小的功能,较多应用于高层,DFD,中的分解,根据业务处理流程确定加工:分析父图中待分解加工的业务处理流程,业务流程中的每一步都可能是一个子加工,特别要注意在业务流程中数据流发生变化或数据流的值发生变化的地方,应该存在一个加工,例如:,编制准考证号,正式报名单,合格报名单,系统内部,(0,层图,)-2,确定数据流,在父图中某加工分解而成的子图中,父图中相应加工的输入,/,输出数据流都,是且仅是,子图,边界,上的输入,/,输出数据流,分解后的子加工之间应增添相应的新数据流表示加工过程中的中间数据,如果某些中间数据需要保存以备后用,那么可以成为流向文件的数据流,同一个源或加工可以有多个数据流流向一个加工,如果它们不是一起到达和一起加工的,那么可以将它们分成若干个数据流,例如:,读取,银行卡信息,客户,银行卡数据,密码,系统内部,(0,层图,)-3,确定文件,如果父图中该加工存在读写文件的数据流,则相应的文件和数据流都应画在子图中,在分解子图中,如果需要保存某些中间数据以备后用,则可以将这些数据组成一个新的文件,新文件,(,首次出现的文件,),至少应有一个加工为其写入记录,同时至少存在另一个加工来读该文件的记录,注意:从父图中继承下来的文件在子图中可能只对其进行读,或只进行写,系统内部,(0,层图,)-4,确定源和宿,0,层图和其它子图中通常不必画出源和宿,有时为了提高可读性,可以将顶层图中的源和宿画在,0,层图中,最终得到考务处理系统,0,层图,根据功能分解方法识别出两个加工:考试报名、统计成绩,数据流,继承顶层图中的输入数据流和输出数据流,定义二个加工之间的数据流:由于这二个加工分别在考试前后进行,因此登记报名单所产生的结果,“,考生名册,”,应作为文件保存以便考试后由统计成绩加工引用,考务处理系统,0,层图,考生名册,1,考试,报名,报名单,考生名单,不合格报名单,准考证,2,统计,成绩,统计分析表,合格标准,考生通知单,错误成绩清单,成绩清单,Step3,:加工内部,(1,n,层图,),复杂的加工可以继续分解成,1,张,DFD,子图,分解方法,将该加工看作一个小系统,该加工的输入,/,输出数据流就是这个假设的小系统的输入,/,输出数据流,然后采用画,0,层图的方法,画出该加工的子图,以,0,层图中加工,1(,考试报名,),为例,根据业务处理流程来确定由加工,1,的分解,与加工,1,相关的业务流程:首先检查考生送来的报名单,然后编准考证号,并产生准考证,最后产生考生名单和考生名册,(,文件,),考务处理系统加工,1,子图,3,个子加工:检查报名单、编准考证号、登记考生,“,合格报名单,”,和,“,正式报名单,”,是新增加的数据流,其它数据流都是加工,1,原有的,在加工,1,的分解中没有新的文件产生,1.3,登记,考生,考生名单,1.2,编准考证号,准考证,正式报名单,1.1,检查,报名单,合格报名单,报名单,不合格报名单,考生名册,Step4,:考务处理系统加工,2,子图,2.5,分析,试题难度,难度分析表,2.4,分类,统计成绩,分类统计表,考生名册,2.3,制作,通知单,考生通知单,2.2,审定,合格者,正式成绩清单,合格标准,试题得分清单,2.1,检查,成绩清单,成绩清单,正确成绩清单,错误成绩清单,内容摘要,结构化分析方法概述,数据流图,分层数据流图的审查,数据字典,描述基本加工的小说明,结构化设计概述,数据流图到软件体系结构的映射,初始结构图的改进,小结,分层数据流图的审查,检查图中是否存在错误或不合理,(,不理想,),的部分,一致性:分层,DFD,中不存在矛盾和冲突,完整性:分层,DFD,本身的完整性,即是否有遗漏的数据流、加工等元素,本节将从分层,DFD,的一致性和完整性、构造分层,DFD,时需注意的问题以及分解程度等几个方面来说明如何审查分层,DFD,的合理性,分层数据流图的一致性,父图与子图平衡,任何一张,DFD,子图边界上的输入,/,输出数据流必须与其父图中对应的加工的输入,/,输出数据流保持一致,数据守恒,一个加工所有输出数据流中的数据,必须能从该加工的输入数据流中直接获得,或者能通过该加工的处理而产生,多余的数据流:加工未使用其输入数据流中的某些数据项,局部文件,一个加工的输出数据流不能与该加工的输入数据流同名,父图与子图不平衡的实例,加工,2,的输入数据流有,M,和,N,,输出数据流是,T,而子图,(,右图,),边界上的输入数据流是,N,,输出数据流是,S,和,T,1,2,3,A,B,C,M,N,T,2.1,2.2,2.3,N,P,S,T,Q,父图与子图平衡的实例,注意:如果父图某加工的一个数据流,对应于子图中几个数据流,而子图中组成这些数据流的数据项全体正好等于父图中的这个数据流,那么它们仍算是平衡的,e,2.5,2.4,2.3,2.2,2.1,b2,b1,a,c,d,b,2,1,a,c,d,e,(a),父图,(b),子图,a,:考生通知单;,b,:统计分析表;,b1,:分类统计表;,b2,:难度分析表;,c,:错误成绩清单;,d,成绩清单;,e,合格标准。,数据不守恒的实例,由于,“,正式成绩清单,”,中缺少,“,考生通知单,”,中的姓名、通信地址等数据,这些数据也无法由加工,2.3,自己产生,因此,加工,2.3,不满足数据守恒的条件,考生名册,2.5,分析,试题难度,难度分析表,2.4,分类,统计成绩,分类统计表,2.3,制作,通知单,考生通知单,2.2,审定,合格者,正式成绩清单,合格标准,试题得分清单,2.1,检查,成绩清单,成绩清单,正确成绩清单,错误成绩清单,由此可见:,1.,数据流的组成对,DFD,是有影响的,2.,构建,DFD,与建立数据字典应交替进行,以便于对分层,DFD,的校验,局部文件,考虑分层数据流中一个文件应画在哪些,DFD,中,而不该画在哪些,DFD,中,任何一个文件都应同时包含读和写该文件的数据流,除非该文件是当前系统与另一个软件系统所共享,(,应在需求说明中指明,),在一张,DFD,中当一个文件作为若干个加工之间的交界面,(,一个写另一个读,),时该文件应画出,在一张,DFD,中当一个文件仅与一个加工进行读写操作,并且在该,DFD,的父,(,祖先,),图中未出现过该文件则该文件是相应加工的内部文件,在当前,DFD,中不应画出,一个文件一旦在某张,DFD,中画出,那么在它的子孙图中应根据父图与子图平衡的原则画出该文件,在子孙图中,这个文件可能只有读或写文件中的一种数据流,局部文件示例,“,试题得分清单,”,文件是加工,2,的局部文件,根据抽象原则不应该将这类表示加工细节的局部文件画在其父图,(,如图,c),中,正确的画法是图,a,和,b,2,1,(a),父图,考生名册,(b),子图,2.5,2.4,2.3,2.2,2.1,试题得分清单,考生名册,(c),含局部文件的父图,2,1,试题得分清单,考生名册,加工的输出数据流不能与该加工的输入数据流同名,同一个加工的输出数据流和输入数据流即使组成成份相同,仍应对它们取不同的名字,以表示它们是不同数据流,例如,,“,报名单,”,和,“,合格报名单,”,允许一个加工有二个相同的数据流分别流向二个不同的加工,分层数据流图的完整性,每个加工至少有一个输入数据流和一个输出数据流,在整套分层数据流中,每个文件应至少有一个加工读该文件,有另一个加工写该文件,分层数据流图中的每个数据流和文件都必须命名,(,除了流入或流出文件的数据流,),,并保持与数据字典的一致,分层,DFD,中的每个基本加工,(,即不再分解子图的加工,),都应有一个加工规约,其它需注意的问题,-1,适当命名:每个数据流、加工、文件、源和宿都应被适应地命名,名字应符合被命名对象的实际含义,名字应反映整个对象,(,如数据流、加工,),,而不是仅反映它的某一部分,避免使用空洞的、含义不清的名字,如数据、信息、处理、统计等,如果发现某个数据流或加工难以命名时,往往是,DFD,分解不当的征兆,此时应考虑重新分解,画数据流而不是画控制流,判断准则:这条线上是否有数据流过,其它需注意的问题,-2,避免一个加工有过多的数据流,当一个加工存在许多数据流时往往意味着分解不合理,解决办法:重新分解,1),把需要重新分解的某张图,(,含有该复杂加工的图,),的所有子图连接成一张图,2),把连接后的图重新划分成几个部分,使各部分之间的联系最小,3),重新定义父图,即第,2),步中的每个部分作为父图中的一个加工,4),重新建立各子图,即第,2),步中的每个部分都是一张子图,5),为所有的加工重新命名和编号,数据流图重新分解示例,( b ),原加工,2,子图,2,2,2.1,2.3,2.4,2.5,H,J,I,C,K,L,E,M,N,( d ),重新分解后的父图,4,5,2,3,2,1,A,B,H,G,J,I,C,K,L,D,E,M,F,P,N,( a ),原父图,3,4,5,1,2,H,A,B,J,I,C,K,L,D,E,M,F,P,N,G,( c ),合并,4,5,3,2.4,2.5,2.2,2.1,2.3,1,F,A,B,H,J,I,C,K,L,D,E,M,P,N,G,其它需注意的问题,-3,分解尽可能均匀,理想目标:任何两个加工的分解层数之差不超过,1,应尽可能使分解均匀,对于分解不均匀的情况应重新分解,先考虑稳定状态,忽略琐碎的枝节,先考虑稳定状态下的各种问题,暂时不考虑系统如何启动、如何结束、出错处理以及性能等问题,随时准备重画,对于一个复杂的软件系统,往往要经过反复多次的重画和修改才能构造出完整、合理、满足用户需求的分层,DFD,分析阶段遗漏下来的一个错误,到开发后期要化费几百倍代价来纠正这个错误,分解的程度,可参照以下几条与分解有关的原则:,7,加减,2,分解应自然,概念上合理、清晰,只要不影响,DFD,的易理解性,可适当多分解几个加工,以减少层数,一般说来,上层分解得快些,(,即多分解几个加工,),,下层分解得慢些,(,即少分解几个加工,),分解要均匀,1,问题描述:,1,)顾客将订票单交给预订系统,(,1,)如是不合法订票单,则输出无效订票信息;,(,2,)对合法的订票以及预交款要登录到一个记账文件中;,(,3,)系统有航班目录文件,根据填写的施行时间和目的地为顾客安排航班;,(,4,)在获得正确航班信息和确认已交了部分预付款时发出取票单,并记录到票单文件中;,2,)在指定日期内顾客用取票单换取机票,(,1,)系统根据票单文件对取票单进行有效性检查,无效的输出无效取票信息;,(,2,)持有有效取票单的顾客在补交了剩余款后将获得机票;,(,3,)记账文件将被更新,机票以及顾客信息将被登录到机票文件。,试根据要求画出分层的数据流图。,2,某培训中心要研制一个计算机管理系统。它的业务是:,将学员发来的信件收集分类后,按几种不同的情况处理。,1),如果是报名的,则将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查该课程是否额满,然后在学生文件、课程文件上登记,并开出报告单交财务部门,财务人员开出发票给学生。,2),如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件和帐目文件上做相应的修改,并给学生注销单。,3),如果是付款的,则由财务人员在帐目文件上登记,也给学生一张收费收据。,要求:,对以上问题画出数据流程图。,3,高孝录取统分子系统有如下功能:,(,1,)计算标准分:根据考生原始分计算,得到标准分,存入考生分数文件;,(,2,)计算录取线分:根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。,试根据要求画出该系统的数据流程图,4,某网站发帖子系统有如下功能:,(1),记录发帖内容:访客在表单中输入文字,系统进行检查,无误后将内容存入文件。,(2),显示帖子内容:读出文件,按一定格式显示在屏幕上。,请根据要求画出该系统的数据流程图,5A,校的考务系统具有下述功能:输入报名单,自动编制准考证号,输出准考证号,输入成绩清单,输出成绩通知单,输出成绩分布单,输入合格标准、输出录取通知单,进行试题难度分析、输出难度分析表。,6,某校教务系统具备以下功能,输入用户,ID,号及口令后,经验证进入教务管理系统,可进行如下功能的处理:,查询成绩:查询成绩以及从名次表中得到名次信息。,学籍管理:根据学生总成绩排出名次信息。,成绩处理:处理单科成绩并输入成绩表中。,就以上系统功能画出,0,层,,1,层的,DFD,图。,7,某高校学分制学生选课系统,有如下要求:学生根据学期开学开课清单填写选课单;学生选课系统对每个学生选课单进行处理,根据教学计划检查该学生是否有尚未取得学分的必修课,如果有则要求重修;计算各门课程上课时间冲突,如果不发生冲突或冲突小于,20%,,则可以选修,否则根据重修必修限选必选的优先级,删除已选课程。最后产生每个学生的个人课表和每门课程选课学生名单。,该系统用,SA,方法画出的分层,DFD,8,某企业销售管理系统的功能为:,(1),接受顾客的订单,检验订单,若库存有货,进行供货处理,即修改库存,给仓库开备货单,并且将订单留底;若库存量不足,将缺货订单登入缺货记录。,(2),根据缺货记录进行缺货统计,将缺货通知单发给采购部门,以便采购。,(3),根据采购部门发来的进货通知单处理进货,即修改库存,并从缺货记录中取出缺货订单进行供货处理。,(4),根据留底的订单进行销售统计,打印统计表给经理。,根据上述的功能描述,画出数据流程图。,内容摘要,结构化分析方法概述,数据流图,分层数据流图的审查,数据字典,描述基本加工的小说明,结构化设计概述,数据流图到软件体系结构的映射,初始结构图的改进,小结,数据字典,数据流图与数据字典是密不可分的,两者结合起来构成软件的逻辑模型,(,分析模型,),数据字典由字典条目组成,每个条目描述,DFD,中的一个元素,数据字典条目包括:数据流、文件、数据项,(,组成数据流和文件的数据,),、加工、源或宿,加工逻辑的详细说明可以用,“,小说明,”,来描述,(5.5,节,),数据字典的描述符号,符 号,名 称,举 例,定义为,x,表示,x,由,组成,与,a,b,表示,a,和,b,,,或,a,,,b,表示,a,或,b,或,ab,表示,a,或,b,重复,a, 表示,a,重复,0,或多次,重复,a, 表示,a,重复,3,到,8,次,(),可选,(a),表示,a,重复,0,或,1,次,基本数据元素,a,表,a,是基本数据,字典条目,不同的开发组织或团队可以根据项目的需要定义字典条目的描述内容,字典条目中的描述内容主要包括,DFD,元素的基本信息,(,名称、别名、简述、注解,),定义,(,数据类型、数据组成,),使用特点,(,取值范围、使用频率、激发条件,),控制信息,(,来源、去向、访问权限,),等,数据流条目的描述内容,名称:数据流名,(,可以是中文名或英文名,),别名:名称的另一个名字,简述:对数据流的简单说明,数据流组成,:描述数据流由哪些数据项组成,数据流来源:描述数据流从哪个加工或源流出,数据流去向:描述数据流流入哪个加工或宿,数据量:系统中该数据流的总量,如考务处理系统中,“,报名单,”,的总量是,100000,张,或者单位时间处理的数据流数量,如,80000,张,/,天,峰值:某时段处理的最大数量,如每天上午,9,:,00,至,11,:,00,处理,60000,张表单,注解:对该数据流的其它补充说明,数据流组成,数据流组成是数据流条目的核心,它列出组成该数据流的各数据项,例如:,培训报名单姓名单位课程,运动员报名单队名姓名性别参赛项目,当一个数据流的组成比较复杂时,可以将其分解成几个数据流,例如:,课程课程名任课教师教材时间地点,时间地点星期几第几节教室,31,数据流组成示例,(,发票,),发票单位名称商品名数量单价金额 总金额日期,(,营业员,),单位名称,商品名,数量,单价,金额,总金额,日期营业员,51,文件条目的描述内容,名称:文件名,别名:同数据流条目,简述:对文件的简单说明,文件组成,:描述文件的记录由哪些数据项组成,(,与数据流条目中的文件组成描述方法相同,),写文件的加工:描述哪些加工写文件,读文件的加工:描述哪些加工读文件,文件组织:描述文件的存储方式,(,顺序、索引,),,排序的关键字,使用权限:描述各类用户对文件读、写、修改的使用权限,数据量:文件的最大记录个数,存取频率:描述对该文件的读写频率,注解:对该文件的其它补充说明,数据项条目的描述内容,名称:数据项名,别名:同数据流条目,简述:对数据项的简单描述,数据类型:描述数据项的类型,如整型、实型、字符串等,计量单位:指明数据项值的计量单位,如公斤、吨等,取值范围:描述数据项允许的值域,如,1,100,编辑方式:描述该数据项外部表示的编辑方式,如,23,345.67,与其它数据项的关系:描述该数据项与数据字典中其它数据项的关系,注解:对数据项的其它补充说明,加工条目的描述内容,名称:加工名,别名:同数据流条目,加工号,:,加工在,DFD,中的编号,简述:对加工的功能的简要说明,输入数据流:描述加工的输入数据流,包括读哪些文件名,输出数据流:描述加工的输出数据流,包括写哪些文件名,加工逻辑,:简要描述加工逻辑,或者对加工规约的索引,基本加工的加工逻辑用小说明描述,在加工条目中可填写对加工规约的索引,非基本加工分解而成的,DFD,子图已反映了它的加工逻辑,不必书写小说明,异常处理:描述加工处理过程中可能出现的异常情况,及其处理方式,加工激发条件:描述执行加工的条件,如,,“,身份认证正确,”,,,“,收到报名单,”,执行频率:描述加工的执行频率,如,每月执行一次,每天,0,点执行,注解:对加工的其它补充说明,源或宿条目的描述内容,名称:源或宿的名,(,外部实体名,),别名:同数据流条目,简要描述:对源或宿的简要描述,(,包括指明该外部实体在,DFD,中是用作,“,源,”,,还是,“,宿,”,,还是,“,既是源又是宿,”,),输入数据流:描述源向系统提供哪些输入数据流,输出数据流:描述系统向宿提供哪些输出数据流,注解:对源或宿的其它补充说明,别名条目的描述内容,只有那些有必要补充说明的别名才给出相应的别名条目,别名:别名的名字,类型:指出别名属于那个种类,(,数据流、文件、数据、加工、源或宿,),基本名:别名的正式名称,(,原名,),简述:同正式名称的简述,说明:对别名的补充说明,示例,原始的数据项条目如下:,数据项名称:开户日期,别名:开设日期,简述:客户建立帐户的日期,类型:日期,注解:年,1949,其别名条目如下:,别名:开设日期,类型:数据项,基本名:开户日期,简述:客户建立帐户的日期,说明:,1986,年以后不再使用此别名,数据字典的实现,提倡采用专用的软件工具或者常用的实用程序,(,如,正文编辑程序、电子表格,),来建立数据字典的电子文档,其好处是便于字典条目的检索,字典的管理和维护,如果数据字典由辅助绘制,DFD,的工具自动产生的话,那么可以利用数据字典来检查,DFD,的一致性和完整性,并保持数据字典与,DFD,的一致,如果数据字典是由人工制作的,我们可以为每个字典条目制作一张卡片,所有卡片按字典条目的种类,(,数据流、文件、加工等,),分类成册,每类卡片按某种约定排序,数据字典实例练习,某旅馆的电话服务如下:可以拨分机号和外线号码。分机号是从,7201,至,7299,。外线号码先拨,9,,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从,100,到,300,中任意的数字串。市话号码是以局号和分局号组成。局号可以是,455,,,466,,,888,,,552,中任意一个号码。分局号是任意长度为,4,的数字串。要求:写出在数据字典中,电话号码的数据条目的定义,(,即组成,),。,参考答案,电话号码,=,分机号外线号码,分机号,=7201.7299,外线号码,=9+,市话号码长话号码,长话号码,=,区号,+,市话号码,区号,=100.300,市话号码,=,局号,+,分局号,局号,=,455,466,888,552,分局号,=4,数字,4,数据文件,“,存折,”,的格式如下图所示,它在数据词典中的定义格式为:存折户名所号帐号开户日性质(印密),1,存取行,50,户名,2,字母,24,所号,001.999 ,注:储蓄所编码,规定三位数字帐号,00000001.99999999,注:帐号规定由八位数字组成开户日年月日性质,1.6,注:,1,表示普通户,,5,表示工资户等印密,0,注:印密在存折上不显示存取行日期(摘要)支出存入余额操作复核日期年月日,字母,a.z|A.Z,内容摘要,结构化分析方法概述,数据流图,分层数据流图的审查,数据字典,描述基本加工的小说明,结构化设计概述,数据流图到软件体系结构的映射,初始结构图的改进,小结,基本加工的小说明,小说明是基本加工的规约说明,应精确地描述用户要求一个加工,“,做什么,”,包括加工的激发条件、加工逻辑、优先级、执行频率、出错处理等,最基本的部分是加工逻辑,即该加工的输出数据流与输入数据流之间的逻辑关系,加工逻辑不是对加工的设计,不涉及数据结构、算法实现、编程语言等与设计和实现有关的细节,加工逻辑的描述方法,结构化语言:介于自然语言和形式语言之间的一种半形式语言,判定表:适用于加工逻辑包含多个条件,而不同的条件组合需做不同的动作,判定树:判定表的变种,它本质上与判定表是相同的,只是表示形式不同,结构化语言,没有严格的语法,加工规约分为若干个段落,每个段落可分为内外两层:,外层有严格的语法来描述它的控制结构,如结构化英语中可使用,if_then_else,、,while_do,、,repeat_until,、,for_do,、,case,等结构,内层可以用自然语言来描述,允许使用嵌套结构,“,计算信用度,”,的结构化英语描述,Case 1,(,No Bounced,Checks in Customer Record,),:,Write Exemplary,Customer,Citation to Annual,Summary.,Case 2,(,One Bounced,check,),:,If Yearly,Average,Balance exceeds $ 1000.,Remove Bounced,Check from Customer,Record.,Otherwise.,Recuce Credit,Limit by 10%.,Case 3,(,Multiple Bounced,Checks,),:,For each Bounced,Check.,Recuce Credit,Limit by 15%.,Set Credit,Rating to Deadbeat.,Write Scathing,Comment to Annual,Summary.,Write Customer,Name,and,Address to IRS,Enemies,List.,下面是商店业务处理系统中,检查发货单,的例子。,IF,发货单金额超过,$500 THEN,IF,欠款超过,60,天,THEN,在偿还欠款前不予批准,ELSE,(欠款未超期)发批准书及发货单,ENDIF,ELSE,(发货单金额未超过,$500,),IF,欠款超过,60,天,THEN,发批准书,发货单及催款通知,ELSE,(欠款未超期)发批准书及发货单,ENDIF,ENDIF,结构化语言书写加工规约注意事项,语句力求精炼,语句必须易读、易理解、无二义,主要使用祈使句,祈使句中的动词要明确表达要执行的动作,所有名字必须是数据字典中有定义的名字,不使用形容词、副词等修饰语,不使用含义相同的动词,如,“,修改,”,、,“,修正,”,等,可以使用常用的算术和关系运算符,总之要尽可能精确、无二义、简明扼要、易理解,判定表由四个部分组成,如下图所示。双线分割开的四部分是:,判定表,判定表,判定表的组成元素,条件桩,(Condition Stub),:列出各种条件的对象,如发货单金额,赊欠天数等,每行写一个条件对象,条件条目,(Conditien entry),:列出各条件对象的取值,条件条目的每一列表示了一个可能的条件组合,动作桩,(action stub),:列出所有可能采取的动作,如发出发货单等,每行写一个动作,动作条目,(action eutry),:列出各种条件组合下应采取的动作,“,审批发货单”加工的判定表,发货单金额,500,500,500,500,赊欠天数,60,60,60,60,发不批准通知,发出批准书,发出发货单,发出赊欠报告,判定表的其它形式,发货单金额,500,500,赊欠天数,60,60,60,发不批准通知,发出批准书,发出发货单,发出赊欠报告,发货单金额,500,0,0,1,1,发货单金额,500,1,1,0,0,赊欠天数,60,0,1,0,1,赊欠天数,60,1,0,1,0,发不批准通知,发出批准单,发出发货单,发出赊欠报告,“,审批发货单,”,加工的简化判定表,“,审批发货单,”,加工的另一种判定表,构建判断表的步骤,(,1,)给出判定条件可能取值表,(,2,)计算组合数,(,3,)形成初步判定表,(,4,)简化判定表,判定表实例,某公司为本科以上学历的人重新分配工作,分配原则如下:,1.,如果年龄不满,18,岁,学历是本科,男性要求报考研究生,女性则担任行政工作;,2.,如果年龄满,18,岁不满,50,岁,学历本科,不分男女,任中层领导职务,学历是硕士不分男女,任课题组组长;,3.,如果年龄满,50,岁,学历本科,男性任科研人员,女性则担任资料员,学历是硕士不分男女,任课题组组长。,步骤,(,1,)判定条件可能取值表,条件名称,取值,符号,取值数,性别,男,M,M1=2,女,F,年龄,不满,18,岁,C,M2=3,满,18,岁小于,50,岁,Y,超过,50,岁,L,文化程度,硕士,G,M3=2,本科,U,步骤,(,2,)计算组合数,232,12,(,3,)初步判定表,1,2,3,4,5,6,7,8,9,10,11,12,性别,M,M,M,M,M,M,F,F,F,F,F,F,文化程度,G,G,G,U,U,U,G,G,G,U,U,U,年龄,L,Y,C,L,Y,C,L,Y,C,L,Y,C,组长,领导,科研,行政,资料员,考研,步骤,(,4,)简化后的判定表,1,、,2,、,3,7,、,8,、,9,4,5,、,11,6,10,12,性别,M,M,F,F,文化程度,G,U,U,U,U,U,年龄,L,Y,C,L,C,组长,领导,科研,行政,资料员,考研,判定树,本质上与判定表是相同的,只是表示形式不同,例如,“,审批发货单,”,加工逻辑的判定树描述入下:,三者关系,在表达一个基本加工逻辑时,结构化语言、判定表和判定树常常被交叉使用,互相补充。因为这三种手段各有优缺点。,从易学易懂的角度看,判定树最易学,易懂;结构化语言次之,判定表较难懂。,判定表最易进行逻辑验证,因它考虑了全部可能的情况,逻辑清晰,能够澄清疑问。结构化语言次之,判定树较难验证。,判定树的表达是直观的图形表示,一目了然,易于同用户讨论。结构化语言次之,判定表则不够直观。,作为文档,结构化语言较好表达,判定表次之,判定树居后。从可修改的角度看,结构化语言较易修改,判定树次之,判定表较难修改。,加工逻辑实例,1,乘客可以免费携带,50,公斤的行李,超过,50,公斤,国内乘客,坐头等舱,超重部分按每千克,8,元收费;乘坐经济舱,超重部分按每千克,12,元收费;对国外乘客,坐头等舱,超重部分按每千克,16,元收费;乘经济舱,超重部分按每千克,24,元收费;残疾乘客费用减半。,请用结构化语言、判定树、判定表进行描述。,结构化语言:,/*,行李记费*,/,if(,行李重量,W=50),免费;,else if (,国内乘客,), if (,坐头等舱,),收费,=(W-50)*8,if(,残疾乘客,),收费,=(W-50)*4,else(,其他舱,),收费,=(W-50)*12,if(,残疾乘客,),收费,=(W-50)*6,else(,国外乘客,), if (,坐头等舱,),收费,=(W-50)*16,if(,残疾乘客,),收费,=(W-50)*8,else(,其他舱,),收费,=(W-50)*24,if(,残疾乘客,),收费,=(W-50)*12,行李记费,1,2,3,4,5,6,7,8,9,国内乘客,T,T,T,T,F,F,F,F,头等舱,T,T,F,F,T,T,F,F,残疾乘客,T,F,T,F,T,F,T,F,W=50Kg,T,F,F,F,F,F,F,F,F,免费,*,(W-50)*4,*,(W-50)*6,*,(W-50)*8,*,*,(W-50)*12,*,*,(W-50)*16,*,(W-50)*24,*,加工逻辑实例,2,某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴费一律是,50,元;而对于一般的授课,则根据教师的职称来决定每课时津贴费:教授,30,元,副教授,25,元,讲师,20,元,助教,15,元。,试用结构化语言、判断表、判定树描述,1,2,3,4,5,教授,T,F,F,F,副教授,F,T,F,F,讲师,F,F,T,F,助教,F,F,F,T,讲座,T,F,F,F,F,50,30,25,20,15,内容摘要,结构化分析方法概述,数据流图,分层数据流图的审查,数据字典,描述基本加工的小说明,结构化设计概述,数据流图到软件体系结构的映射,初始结构图的改进,小结,结构化设计,结构化设计,(Structured Design,,简称,SD),是将结构化分析得到的数据流图映射成软件体系结构的一种设计方法,强调模块化、自顶向下逐步求精、信息隐蔽、高内聚低耦合等设计准则,分为概要设计和详细设计两大步骤,概要设计是对软件系统的总体设计,采用结构化设计方法,其任务是:将系统分解成模块,确定每个模块的功能、接口,(,模块间传递的数据,),及其调用关系,并用模块及其对模块的调用来构建软件的体系结构,详细设计是对模块实现细节的设计,采用结构化程序设计,(Structured Programming,,简称,SP),方法,SA,、,SD,和,SP,构成完整的结构化方法体系,结构图,用结构图,(Structure Chert),来描述软件系统的体系结构,描述一个软件系统由哪些模块组成,以及模块之间的调用关系,结构图的基本成分有:模块、调用和数据,O,Q,N,R,U,V,a,a,c,b,c,c,d,a,d,a,d,MS,f,f,j,P,T,S,W,g,h,i,模块,(module),模块是指具有一定功能的可以用模块名调用的一组程序语句,如函数、子程序等,它们是组成程序的基本单元,一个模块具有其外部特征和内部特征,外部特征包括:模块的接口,(,模块名、输入,/,输出参数、返回值等,),和模块的功能,内部特征包括:模块的内部数据和完成其功能的程序代码,在,SD,中,我们只关注模块的外部特征,而忽略其内部特征,1,、传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块。,2,、传出模块:从上级模块获得数据,进行某些处理,再将其传送给下属模块。,3,、变换模块:即加工模块。它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。大多数计算模块(原子模块)属于这一类。,4,、协调模块:对所有下属模块进行协调和管理的模块。 在系统的输入输出部分或数据加工部分可以找到这样的模块。在一个好的系统结构图中,协调模块应在较高层出现,。,调用和数据,调用,(call),:用从一个模块指向另一个模块的箭头来表示,其含义是前者调用了后者,为了方便,有时常用直线替代箭头,此时,表示位于上方的模块调用位于下方的模块,数据,(data),:模块调用时需传递的参数可通过在调用箭头旁附加一个小箭头和数据名来表示,结构图中的辅助符号,D,B,C,A,图,5.20,条件调用,D,B,C,A,图,5.21,循环调用,图,5.22,递归调用,结构图的几个概念,深度:程序结构图中控制的层数,例如图中所示的结构图的深度是,5,宽度:程序结构图中同一层次上模块总数的最大值,例如图中所示的结构图的宽度为,7,扇出,(fan out),:该模块直接调用的模块数目。例如,例如图中模块,M,的扇出是,3,,模块,A,的是,2,,模块,B,的扇出是,1,扇入,(fan in),:能直接调用该模块的模块数目。例如图中模块,G,的扇入是,1,,模块,I,的扇入是,2,,模块,R,的扇入是,4,W,B,K,A,E,H,J,D,G,F,I,L,C,M,N,O,P,Q,R,深度,宽度,扇入,扇出,相关指标的含义,深度和宽度在一定程序上反映了程序的规模和复杂程度,相对而言,如果程序结构图的深度和宽度较大,则说明程序的规模和复杂程度都较大。,模块的扇入扇出会影响结构图的深度和宽度,例如减少模块的扇出,可能导致宽度变小而深度增加,一个模块的扇出过大通常意味着该模块比较复杂,然而扇出太少,可能导致深度的增加,一般情况,一个模块的扇出以,3,9,为宜,一个模块的扇入表示有多少模块可直接调用它,它反映了该模块的复用,(reuse),程度,因此模块的扇入越大越好,一个好的软件结构的形态准则是:顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。,启发式设计策略,-1,按照模块化设计原则,相应的启发式设计策略如下:,改造程序结构图,降低耦合度,提高内聚度,避免高扇出,并随着深度的增加,力求高扇入,避免如图,a,那样的,“,平铺,”,形态,较好的结构图形态是如图,b,那样的,“,椭圆,”,型,(a),平铺形态,(b),椭圆形态,启发式设计策略,-2,模块的影响范围应限制在该模块的控制范围内。,一个模块的作用范围指受该模块内一个判定影响的所有模块的集合。,一个模块的控制范围指模块本身以及其所有下属模块,(,直接或间接从属于它的模块,),的集合。,一个模块的作用范围应在其控制范围之内,且条件判定所在的模块应与受其影响的模块在层次上尽量靠近。,TOP,X,T,B,A,B1,B2,图,(b),中模块,TOP,的控制范围是:模块,TOP,、,X,、,T,、,B,、,A
展开阅读全文