您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 06第四章(179)
4.3软件设计方法4.3.1面向数据流的设计方法(dataflow-orienteddesignmethod)■什么是面向数据流的设计?Beginningwithafundamentalsystemmodel(requirementanalysis),informationmayberepresentedasacontinuous“flow”thatundergoes(经历)aseriesoftransforms(processes)asitevolvesfrominputtooutput.Thedataflowdiagram(DFD)isusedasagraphicaltooltodepictinformationflow.Dataflow-orienteddesigndefinesanumberofdifferent“mappings”thattransforminformationflowintosoftwarestructure.面向数据流的设计就是根据业务过程,不断地细化数据流图。规划阶段的细化在表达清楚需求后终止;设计阶段的细化在可以表达清楚软件结构(可以编写程序了)时终止。从业务过程(问题域)到数据流图(问题域的数据流表达)到软件结构(问题解)的过程,就称为“映射”的过程。------definesanumberofdifferent“mappings”面向数据流的设计通常又叫做结构化设计(structureddesign)。是目前使用最广泛的软件设计方法之一。■面向数据流设计的步骤(1)确定数据流的类型。(2)绘制并逐步细化数据流图(对于数据密集、关系复杂的应用问题,要建立数据字典,绘制实体-关系图)。(3)根据数据流图,绘制并逐步细化软件结构图,直至程序结构图。(4)将对应于数据流的软件结构进行过程化描述(绘制每个模块的流程图)。■面向数据流设计的应用Adataflow-orientedapproachtodesignisparticularlypowerfulwhennoformaldatastructureexists.Forexample,microprocessorcontrolapplications;complexnumericalanalysisprocedures;processcontrol;andmanyengineeringandscientificsoftwareapplicationsdonotrequiresophisticated(复杂)datastructuresandaredifficulttomodelwithdatastructure-orienteddesign.Adataflowapproachsolvesthisdifficultynicely.4.3.1.1数据流的类型对于一个应用问题,不论系统的数据流如何庞大和复杂,一般都可以分成两种类型,即变换流(transformflow)和事务流(transactionflow)很多情况下,一个大型系统常常既有变换流,又有事务流,称之为混合流。(1)变换流变换流的数据流图是一个线形结构,由输入、变换和输出三部分组成。全部变换过程就是把数据的外部表示逐步变成内部(便于软件处理的)表示,最后再把处理结果还原成外部表示(提供分析和应用)。(2)事务流事务流的数据流图与变换流类似,也包括三个部分,它由输入、事物处理和输出组成。不同的是,它是一个并行或分支结构,根据输入的特性(条件),选择一个或多个事务处理的路径,进而产生处理的结果。(3)混合流示例:输水道(自然河流/人工渠道)中水流调控的变换流和事务流4.3.1.2面向数据流的设计(1)数据字典设计由于数据流图不足以完整地描述软件设计的对象属性和内容,所以,一般情况下数据流图必须与数据字典配套使用。(2)绘制实体-关系图实体-关系图(Entity-RelationshipDiagramE-RD)是表示数据对象及其关系的图形语言。数据对象是现实世界中省略了功能和行为的实体。应用问题中的任何数据对象都不是孤立的,它们之间存在各种形式的关联,称之为关系。关系分为一对一、一对多、多对多等。CASE水利数据实体关系E-RD在实际应用时,会根据应用领域和实际需要作适当的修改和扩充。E-RD只是描绘(depict)实体间的关系,并不显示实体的属性,为了使水利数据实体关系图有更直观的效果,在这个CASE中增加了“属性”项,用表示。“政区”(包括实体及属性)与其它水利实体的关系(3)根据E-RD创建数据库(表)表结构政区数据(表)字段名标识符数据类型及长度可否为空值单位是否主键是否外键代码district_codeC(4)否是名称district_nameC(8)否人口populationN(4)万面积areaN(5)KM2水库数据(表)字段名标识符数据类型及长度可否为空值单位是否主键是否外键代码reservior_codeC(4)否是名称reservior_nameC(8)否所属政区district_codeC(4)是容量volumeN(5)万米3(4)数据流图绘制②《采购子系统》数据流图采购子系统的软件结构图(structurechart)(6)面向数据流的设计过程请参考“采购子系统”的软件结构图,将《大学教材购销系统》数据流图中的销售子系统数据流图转换成软件结构图。当然,也可以思考作为示例的销售子系统数据流图、采购子系统数据流图、采购子系统软件结构图是否合理,并提出修改意见。思考题7绘制软件结构图4.3.2面向数据结构的设计方法(datastructured-orienteddesign)■面向数据结构的设计与面向数据流的设计的不同面向数据流的设计来源于软件的模块化和功能分解概念,即软件结构对应于数据的变换或事务的处理。面向数据结构的设计则是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的软件(或程序)结构。它着重于问题的数据结构,把软件(程序)结构设计成与问题的数据结构对应,不强调模块定义。因此,这种结构容易理解,也容易修改。■面向数据结构设计的步骤(1)确定数据结构的特征。(2)用顺序、选择和重复三种数据结构来描述数据的关系。(3)把问题的数据结构映射为软件的控制结构。(4)细化软件的控制结构(5)将对应于数据结构的软件控制结构进行过程化描述(绘制模块流程图)。请注意这里讨论的数据结构与“数据结构”课程所讨论的数据结构的不同!?■面向数据结构设计的应用Datastructured-orienteddesignmaybesuccessfullyappliedinapplicationsthathaveawell-defined,hierarchicalstructureofinformation.Typicalexamplesinclude:•Businessandfinancialapplications•Systemapplications•CAD/CAM•Inaddition,applicationsfromtheengineering-scientificdomain,computer-aidedinstruction,combinatorialproblemsolving,andmanyotherareasmaybeamenable(更适合)todatastructured-orienteddesign.4.3.2.1Jackson开发方法Jackson把问题的数据结构分成三种类型,图解如下:(1)顺序结构ABCD(2)选择结构ABC(3)重复结构AB*CD示例:磁带文件数据结构的Jackson图解文件文件头文件体表示文件包含两个元素组*表示文件体包含多个组记录*表示组包含多个记录A型记录B型记录表示记录只能是A型或B型4.3.2.2Jackson方法的开发过程4.3.2.2.1步骤(1)研究问题环境,确定要处理问题的数据结构(2)把数据结构转换成软件结构(3)细化软件结构--用基本操作来定义要完成的任务,并把每个基本操作分配到程序结构合适的元素(模块)中去,以获得带有操作的最终程序结构。4.3.2.2.2示例-磁带记录处理软件第一步:确定磁带记录的文件结构文件文件头文件体组*记录*A型记录B型记录第二步:生成软件结构处理文件处理文件头处理文件体处理组*处理记录*处理A型记录处理B型记录第三步:细化并产生最终软件结构处理文件1,2,3,4,123,11处理文件头处理文件体5,6,7处理组*8处理记录*31,2,…,12含义参见教材P1129处理A型记录处理B型记录10•PROC_FILEseqopenfile;•readfile;•PROC_HEADERseqdisplayfileheader;•readfile;•PROC_HEADERend•PROC_BODYseqzeroisegroupcount(GC);•zeroiseAcount(AC);•zeroiseBcount(BC);•PROC_GROUPiterwhilenotEOF•incrementGC;•PROC_RECiterwhilenotEOF•selecttypeA•PROC_TYPEAincrementAC;•ortypeB•PROC_TYPEBincrementBC;•readfile;•PROC_RECend•PROC_GROUPend•PROC_BODYend•closefile;•displaytotals;•stop;•PROC_FILEend第四步:程序流程(伪代码-pseudocode)(1)多个数据结构的处理例如两个磁带记录文件的合并和对一个磁带记录文件处理后输出处理结果就是多个数据结构的处理问题。以后者为例,问题域在输入数据结构的基础上增加了一个输出数据结构。4.3.2.3特殊结构的处理*文件摘要组标识类型总计组数*A总计B总计则程序结构应作出相应的调整:处理文件处理文件头处理文件体生成类型总计处理组*生成生成并给出标识A总计B总计处理记录*“输出”对应的程序结构处理A型记录处理B型记录(2)结构次序冲突的处理如果从一个“卡片文件”上读入一个n*m的矩阵A然后输出一个“打印文件”,该文件是一个m*n的矩阵B,那么这个问题就是结构次序冲突问题。卡片文件:a11a12…a1m…….an1an2…anm打印文件:b11b12…b1n…….bm1bm1…bmn显然,这里,输入结构的次序与输出结构的次序不一致(冲突),就数据处理而言,这是一个矩阵转置(重新排序)问题。为了解决这个问题,除了建立输入和输出两个程序结构与输入,输出数据结构对应外,还要增加一个程序结构用于对输入矩阵的排序。数据结构程序结构读入卡片文件卡片文件排序(从n*m到m*n)打印文件输出打印文件(3)结构边界冲突的处理例如:读入一条纸带上的电报电文信息,经分析后,输出一个分析结果报告。假定:A)纸带上的信息格式(数据结构)为:*…**…*…*…*EOB*…**…*…*…*EOB大于12个字符为超长组结束符ZZZZ*…**…**…**…*…*…*ZZZZ*…*一个电报结束符EOB*…**…*ZZZZEOBEOF纸带文件结束符B)分析报告(数据结构)格式为:TelegramsAnalysis报告头Telegram115wordsofwhole2oversize电报1的分析结果Telegram2106wordsofwhole13oversize电报2的分析结果Telegram342wordsofwhole0oversize电报3的分析结果……EndAnalysis报告尾这个例子中数据结构的边界冲突表现在,输入是以“组”为基本数据结构,输出则以“电报”为基本数据结构。由于“组”与“电报”之间的不对应(一个组并不一定包含整数个电报;一个电报也不一定由整数个组所组成;一个电报不一定从组的起始处开始;组的起始处也不一定是一个电报的开始),因此造成了边界冲突。第一层第二层第三层第四层纸带组字字符(1,s)(1,b)(
本文标题:06第四章(179)
链接地址:https://www.777doc.com/doc-3149412 .html