资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软 件 工 程,第,6,章 面向数据的分析方法,面向数据的需求分析方法的共同特点是:,1,以信息对象及其操作为核心进行需求分析,这一点与面向对象分析有相似之处。,2,认为复合信息对象具有层次结构,并且可按顺序、选择、重复三种结构分解为成员信息对象。,3,提供将层次信息结构映射为程序结构的机制,从而为软件设计奠定较好的基础。,6.1,面向数据结构的系统开发方法,6.2,Jackson,系统开发方法,第,6,章 面向数据的分析方法,6.1,面向数据结构的系统开发方法,DSSD,也叫,Warnier-Orr,方法。,1974,年,法国人,J.D.Warnier,提出了一种,LCP,(,Logical Construction of Programs,,逻辑构造程序)。他利用顺序、选择、重复三种结构表示信息的层次分解,并指出可以从信息层次结构推导出程序结构。,1981,年,Ken Orr,对,Warnier,的工作进行了扩充,使其不仅包含了,Warnier,的信息层次结构,还引进了数据流和处理功能,从而发展成为一种需求分析方法。,本节首先介绍,Warnier,图,然后以此为基础阐述,DSSD,方法,其主要内容包括:如何创建实体图、信息过程图及,WarnierOrr,原型图。,Warnier,图,Warnier,图又称为,Warnier-Orr,图,可以表示数据结构和程序结构。考虑一个典型的报纸自动组版系统。报纸作为其中重要的信息对象,具有以下内容:,1,首版,1,)标题新闻,2,)国内新闻,3,)本地新闻,2,商业金融版,1,)股市行情,2,)商业新闻,3,)广告,3,文化体育版,1,)文化、体育新闻,2,)散文,3,)新书评论,该信息结构用,Warnier,图如图,611,所示。,Warnier,图,图,611 Warnier,图示例,标题新闻,国内新闻,本地新闻,股市行情,(0,1),商业新闻,广告,(1,5),文化、体育新闻,散文,新书评论,文化体育版,首 版,商业金融版,报 纸,Warnier,图,花括号内的信息条目构成顺序关系;,花括号从左至右排列表示树型层次结构;,符号“”表示不可兼具的选择关系;,“”表示“非”。,圆括号内的数字表示重复次数:,(,1,n,)表示重复结构,,(,1,)或不标次数表示顺序结构,,(,0,1,)表示选择结构。,6.1.2 DSSD,方法,基于,DSSD,需求分析方法的主要步骤是:,1,)标识与应用问题有关的实体。,2,)创建一种类似于数据流图的信息,过程图。,3,)创建,WarnierOrr,原型图。,在详细介绍,DSSD,的具体步骤之前,首先用数据流图描述一个,基于计算机的软件专卖店管理系统,,见图,612,。(该数据流图并非,DSSD,的组成部分,仅用于说明后面将要用到的应用问题实例。),图,612,软件专卖店管理系统的数据流图,结算系统,管理系统,客户,订单处理员接收并登录订单,邮寄员提取、包装软件产品,订单,订单编号,订单文件,订单编号,客户姓名、地址,预定日期,支票编号,软件名称、编号,作者,数量,单价,总价,软件编号,数量,预定日期,客户姓名、地址,邮局,邮寄品,订单编号,1,标识实体图,在,DSSD,中,与应用问题有关的实体及它们之间的信息流用实体图表示。,具体地,分析人员可以通过对下述问题的回答来生成实体图:,1,)软件系统必须处理哪些信息项?,2,)信息项的生产者和消费者分别是哪些实体?,在上述应用问题中,有关的实体是:客户、订单处理员、邮寄员、银行、结算员、管理员和邮局,如图,613,(,a,)所示。,订单处理员的实体图如图,613,(,b,)所示。,注:实体图中的结点表示实体、有向边表示实体之间的信息流。,(,a,)信息的生产者和消费者 (,b,)实体图示例,图,613,客户,邮寄员,订单,处理员,银行,结算员,管理员,邮局,软件名称、,编号,地 址,订单编号,支票编号,客户姓名,客户,邮寄员,结算员,订单处理员,订单,编号,订单编号,图,614,组合实体图示例,当所有实体的实体图都构造完成后,将它们综合起来便形成整个目标软件系统的实体图。,客户,邮寄员,软件产品库,结算员,管理员,银行,订单信息,=,客户姓名,+,地址,+,软件名称与编码,+,支票编号,邮寄品,支付,催款,软件 产品,月报表,收据,存款,订单编号,订单编号,订单信息,订单编号,订单,处理员,2,创建信息,过程图,DSSD,中的信息,过程图与数据流图的作用类似,都是用来表示信息流及其处理功能的。但是,信息,过程图从每个实体的,输出信息流,开始,,逆向,寻找用于生成该输出信息的,输入信息流,及,相应的处理功能,。,2,创建信息,过程图,图,615,信息,过程图示例,邮寄品,是由订单编号和软件产品经过邮寄品包装过程生成的,订单编号又是由客户订购信息和订单编号过程生成的。,邮寄品,订单编号,软件产品,+,邮寄品包装,订购信息,+,订单编号过程,3,创建,WarnierOrr,原型图,DSSD,方法要求分析人员在最后以表格形式给出主要的输出信息的组成元素(见图,616,(,a,),然后将其精确地表示为,WarnierOrr,图(见图,616,(,b,),邮寄品,客户姓名,地 址,电 话,总 价,发件人姓名,地址,电话,定单编号,软件编号,单 价,数 量,总 价,(,a,)输出信息的表格表示 (,b,),WarnierOrr,图,图,616,姓名,客户信息 地址,电话,软件编号,(1n),邮寄品 单价,(1n),总价,姓名,客户信息 地址,电话,软件产品,信息,6.2 Jackson,系统开发方法,1975,年,英国人,M.A.Jackson,提出了软件工程领域中著名的,Jackson,方法,当时它只用于软件设计。,1983,年,,Jackson,又对它进行了多方面的扩充和完善,最终发展成为一种需求分析方法。,其核心思想是:根据作用于数据的行为序列的结构(顺序、选择、重复),建立目标软件系统的模型,然后在软件设计阶段将模型转换为相应的程序结构。,Jackson,方法在需求分析阶段的主要步骤是:,(,1,)标识实体与行为。,(,2,)生成实体结构图。,(,3,)创建软件系统模型。,6.2.1,标识实体与行为,类似于面向对象分析中对象及其行为的识别,,Jackson,方法针对初步需求分析形成的用户需求描述进行语法分析:,名词及名词短语,潜在的实体,,相关的动词,构成实体的潜在行为。,分析人员根据应用问题的边界及自己的理解,决定对潜在实体和行为的取舍。,6.2.1,标识实体与行为,【,例,6.1】,某大学决定将分处两地的校园用直达交通车连接起来。在每个校园设一个站,站内配置一个按钮。学生通过按钮请求交通车搭载。交通车应尽快满足学生的请求。空闲时,交通车停在任意站等候。,分析人员可从“大学”、“校园”、“交通车”、“车站”、“学生”、“按钮”等名词中选取与应用问题相关的实体:,“交通车”、“车站”、“按钮”,。与它们有关的行为是:,“到站”、“离站”、“按键”,。,“等候”和“运行”,可以作为“交通车”的状态。,6.2.2,生成实体结构图,在,Jackson,方法中,实体结构是指实体在时间坐标系中的行为序列。这种序列以,顺序,、,选择,和,重复,三种结构进行复合。,Jackson,给出的实体结构图的表示机制如图,621,所示。其中的子结点既可以是行为,也可以是子实体。在后一种情况下,子实体应该继续分解,不能作为实体结构图的叶结点。,顺序结构,*,重复结构,选择结构,图,621,实体结构图的图形记号,图,622,实体结构图示例,例,6.1,的实体结构图如图,622,所示。在图中,,i,只能取值,1,或,2,。并且,在“站(,i,)”的重复序列中,,i,首先取,2,,然后交替变化。交通车首先停在站,1,,然后在两站之间反复往返运行,最后停靠在站,1,。为了刻画交通车在两站之间的往返穿梭,引入了虚拟的概念实体“,Shuttle body”,。,Shuttle,Shuttle*body,Station(i),Arrive(i),Leave(i),Arrive(1),Button,Push,*,Leave(1),6.2.3,创建软件系统模型,创建目标软件系统模型的第一步,,Jackson,方法要求分析人员首先用图,623,所示的图形记号建立系统规格说明图(,System Specification Diagram,)。,“,数据流,”(,Data Stream,)记号,表示现实世界中的过程或装置不断地向目标软件系统中的相应过程发送数据,后者以先进先出方式消费数据。两者之间的缓冲区容量是无限的。,“,状态向量,”(,State Vector,)记号,表示在两者之间存在状态向量,发送方设置状态向量,接收方读取状态向量。,约定:,0,表示现实世界中的过程或装置,,1,表示目标软件系统中的过程,图,623,系统规格说明图的图形记号,过程,1,DS,过程,0,过程,1,SV,数据流(,Data Stream,),过程,0,状态向量(,State Vector,),图,624,系统规格说明图示例,在前述应用问题中,站内按钮和目标软件中的按钮处理过程之间以“数据流”方式连接,交通车和交通车控制过程之间则应以“状态向量”方式连接。见图,624,。,Button1,DS,数据流联系,Button0,Shuttle0,Shuttle1,SV,状态向量联系,创建模型的第二步是利用,Jackson,给出的“结构正文”(,Structure Text,)将实体结构图和系统规格说明图综合起来,并针对目标软件系统中的每一过程用正文方式给出更为精确、更为详尽的描述。,BUUTTON_1,Read ButtonDown,信号,PUSH_BODY itr while ButtonDown /*,循环结构*,/,PUSH /*,按键处理*,/,Read ButtonDown,信号,PUSH_BODY end,BOTTON_1 end,SHUTTLE_1 seq /*,顺序结构*,/,Read,状态向量,WAIT_BODY1 itr while Wait(1)/*,如果状态向量,中等待标志置位,则循环等待*,/,Read,状态向量,WAIT_BODY1 end,Leave(1)/*,控制交通车离开站,1*/,TRANSIT_BODY1 itr while Transit(1)/*,如果状态向,量中运行标志置位,则一直运行*,/,Read,状态向量,TRANSIT_BODY1 end,SHUTTLE_BODY itr /*,往返重复运行*,/,STATION seq,Arrive(i)/*,控制交通车减速,准备停靠站,i*/,WAIT_BODY itr while Wait(i)/*,如果状态向量,中在站,i,的等待标志置位,则循环等待*,/,Read,状态向量,WAIT_BODY end,Leave(i),TRANSIT_BODY itr while Wait(i),Read,状态向量,TRANSIT_BODY end,STATION end,SHUTTLE_BODY end,Arrive(1),SHUTTLE_1 end,图,625,对应于结构正文的结构图,Shuttle 1,Station(i)*,Arrive(1),Leave(1),Shuttle,body1,TRANSit body1,wait body1,Transit(i)*,Transit(1)*,Arrive(i),Leave(i),Wait(1)*,TRANSit body,wait body,Wait(i)*,
展开阅读全文