需求分析(传统结构化方法)_第1页
需求分析(传统结构化方法)_第2页
需求分析(传统结构化方法)_第3页
需求分析(传统结构化方法)_第4页
需求分析(传统结构化方法)_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

2.2需求分析 需求分析是通过开发人员的分析概括,抽象为完整的需求定义,再形成一系列文档的过程。2.2.1需求分析的目的与意义需求分析是一个非常重要的过程,它完成的好坏直接影响后续软件开发的质量。有效的需求分析通常都具有一定的难度。需求分析不仅仅是属于软件开发生命周期早期的一项工作,而且还应该贯穿于整个生命周期中,它应该随着项目的深入而不断地变化。此外,为了方便后续的评审和测试等工作,需求的描述应该尽量做到:具体、详细、可以测量和可以实现,并且基于时间。2.2.2需求分析的步骤遵循科学的需求分析步骤可以使需求分析工作更高效。需求分析的一般步骤如图2-3所示。图2-3需求分析的步骤需求涉及的方面:在功能方面,需求包括系统要做什么,相对于原系统目标系统需要进行哪些修改,目标用户有哪些,以及不同用户需要通过系统完成何种操作等。在性能方面,需求包括用户对于系统执行速度、响应时间、吞吐量和并发度等指标的要求。在运行环境方面,需求包括目标系统对于网络设置、硬件设备、温度和湿度等周围环境的要求,以及对操作系统、数据库和浏览器等软件配置的要求。在界面方面,需求涉及数据的输入/输出格式的限制及方式、数据的存储介质和显示器的分辨率要求等问题。1. 获取需求,识别问题开发人员从功能、性能、界面和运行环境等多个方面识别目标系统要解决哪些问题,要满足哪些限制条件,这个过程就是对需求的获取。开发人员通过调查研究,要理解当前系统的工作模型和用户对新系统的设想与要求。遗漏需求是最难修订的需求错误。获取需求是需求分析的基础。为了能有效地获取需求,开发人员应该采取科学的需求获取方法。在实践中,获取需求的方法有很多种,比如,问卷调查、访谈、实地操作、建立原型和研究资料等。问卷调查法是采用调查问卷的形式来进行需求分析的一种方法。通过对用户填写的调查问卷进行汇总、统计和分析,开发人员便可以得到一些有用的信息。采用这种方法时,调查问卷的设计很重要。一般在设计调查问卷时,要合理地控制开放式问题和封闭式问题的比例。开放式问题的回答不受限制,自由灵活,能够激发用户的思维,使他们能尽可能地阐述自己的真实想法。但是,对开放式问题进行汇总和分析的工作会比较复杂。封闭式问题的答案是预先设定的,用户从若干答案中进行选择。封闭式问题便于对问卷信息进行归纳与整理,但是会限制用户的思维。访谈通过开发人员与特定的用户代表进行座谈,进而了解到用户的意见,是最直接的需求获取方法。为了使访谈有效,在进行访谈之前,开发人员要首先确定访谈的目的,进而准备一个问题列表,预先准备好希望通过访谈解决的问题。在访谈的过程中,开发人员要注意态度诚恳,并保持虚心求教的姿态,同时还要对重点问题进行深入的讨论。由于被访谈的用户身份可能多种多样,开发人员要根据用户的身份特点,进行提问,给予启发。当然,进行详细的记录也是访谈过程中必不可少的工作。访谈完成后,开发人员要对访谈的收获进行总结,澄清已解决的和有待进一步解决的问题。关注用户的行为而不是他们的言语。为了深入地了解用户需求,有时候开发人员还会以用户的身份直接参与到现有系统的使用过程中,在亲身实践的基础上,更直接地体会现有系统的弊端以及新系统应该解决的问题,这种需求获取方法就是实地操作。通过实地操作得到的信息会更加准确和真实,但是这种方法会比较费时间。当用户本身对需求的了解不太清晰的时候,开发人员通常采用建立原型系统的方法对用户需求进行挖掘。原型系统就是目标系统的一个可操作的模型。在初步获取需求后,开发人员会快速地开发一个原型系统。通过对原型系统进行模拟操作,开发人员能及时获得用户的意见,从而对需求进行明确。利用原型系统获取需求的方法的示意图如图2-4所示。(点击查看大图)图2-4利用原型系统获取需求2. 分析需求,建立目标系统的逻辑模型在获得需求后,开发人员应该对问题进行分析抽象,并在此基础上从高层建立目标系统的逻辑模型。模型是对事物高层次的抽象,通常由一组符号和组织这些符号的规则组成。常用的模型图有数据流图、E-R图、用例图和状态转换图等,不同的模型从不同的角度或不同的侧重点描述目标系统。绘制模型图的过程,既是开发人员进行逻辑思考的过程,也是开发人员更进一步认识目标系统的过程。3. 将需求文档化获得需求后要将其描述出来,即将需求文档化。对于大型的软件系统,需求阶段一般会输出三个文档:系统定义文档(用户需求报告);系统需求文档(系统需求规格说明书);软件需求文档(软件需求规格说明书)。对于简单的软件系统而言,需求阶段只需要输出软件需求文档(即软件需求规格说明书)就可以了。软件需求规格说明书主要描述软件的需求,从开发人员的角度对目标系统的业务模型、功能模型和数据模型等内容进行描述。作为后续的软件设计和测试的重要依据,需求阶段的输出文档应该具有清晰性、无二义性和准确性,并且能够全面和确切地描述用户需求。4. 需求验证需求验证是对需求分析的成果进行评估和验证的过程。为了确保需求分析的正确性、一致性、完整性和有效性,提高软件开发的效率,为后续的软件开发做好准备,需求验证的工作非常必要。在需求验证的过程中,可以对需求阶段的输出文档进行多种检查,比如,一致性检查、完整性检查和有效性检查等。同时,需求评审也是在这个阶段进行的。2.3 结构化需求分析的方法 结构化需求分析是20世纪70年代由Yourdon、Constaintine及DeMarco提出的一种面向数据流的需求分析方法。它基于分解和抽象的基本思想,逐步建立目标系统的逻辑模型,进而描绘出满足用户要求的软件系统。分解是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解为若干个小问题,然后再分别解决。图2-5演示了对目标系统X进行自顶向下逐层分解的示意图。(点击查看大图)图2-5自顶向下逐层分解最顶层描述了整个目标系统,中间层将目标系统划分为若干个模块,每个模块完成一定的功能,而最底层是对每个模块实现方法的细节性描述。可见,在逐层分解的过程中,起初并不考虑细节性的问题,而是先关注问题最本质的属性,随着分解自顶向下进行,才逐渐考虑越来越具体的细节。这种用最本质的属性表示一个软件系统的方法就是抽象。抽象是一种人类处理复杂问题的基本方法。分解和抽象是结构化需求分析的基本指导思想。在结构化需求分析的过程中,通常还需要借助数据流程图、数据字典、E-R图、结构化语言、判定表、判定树等工具。接下来我们介绍数据流图、数据字典和E-R图的相关知识。2.4结构化需求分析的工具2.4.1数据流图数据流图(Data Flow Diagram,DFD)是描述系统中数据流的图形工具,是一种用来表示信息流和信息变换过程的图解方法,可以标识一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。数据流图把软件系统看成是由数据流联系的各种功能的组合,在需求分析的过程中,可以用来建立目标系统的逻辑模型。结构化需求分析采用的是自顶向下,由外到内,逐层分解的思想,开发人员要先画出系统顶层的数据流图,然后再逐层画出低层的数据流图。顶层的数据流图要定义系统范围,并描述系统与外界的数据联系,它是对系统架构的高度概括和抽象。底层的数据流图是对系统某个部分的精细描述。数据流图的目的是在用户和系统开发人员之间提供语义的桥梁。-Kenneth Kozar按照Gane-Sarson法,在绘制数据流图的过程中,主要用到了4个基本符号,如表2-1所示。表2-1数据流图的基本符号1 SA 法概述SA 法也是一种建模的活动,主要是根据软件内部的数据传递、变换关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。1SA 法的基本思想结构化分析(Structured Analysis,简称SA 法)是面向数据流的需求分析方法,是70年代由Yourdon,Constaintine 及DeMarco 等人提出和发展,并得到广泛的应用。结构化分析方法的基本思想是“分解”和“抽象”。分解:是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解成若干小问题,然后分别解决。图4 是自顶向下逐层分解的示意图。顶层抽象地描述了整个系统,底层具体地画出了系统的每一个细节,而中间层是从抽象到具体的逐层过渡。抽象:分解可以分层进行,即先考虑问题最本质的属性,暂把细节略去,以后再逐层添加细节,直至涉及到最详细的内容,这种用最本质的属性表示一个自系统的方法就是“抽象”。2SA 法的步骤建立当前系统的“具体模型”;系统的“具体模型”就是现实环境的忠实写照,即将当前系统用DFD 图描述出来。这样的表达与当前系统完全对应,因此用户容易理解。抽象出当前系统的逻辑模型;分析系统的“具体模型”,抽象出其本质的因素,排除次要因素,获得用DFD 图描述的当前系统的“逻辑模型”。建立目标系统的逻辑模型;分析目标系统与当前系统逻辑上的差别,从而进一步明确目标系统“做什么”,建立目标系统的“逻辑模型”(修改后的DFD 图)。为了对目标系统作完整的描述,还需要考虑人机界面和其它一些问题。3SA 法的描述工具 分层的数据流图 数据词典 描述加工逻辑的结构化语言、判定表或判定树。2 数据流图 数据流图(Data Flow Diagram,简称DFD)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。1数据流图的图符数据流图有以下4 种基本图形符号:箭头表示数据流,圆或椭圆表示加工。双杠或者单杠表示数据存储,矩形框表示数据的源点或终点,即外部实体。 数据流 是数据在系统内传播的路径,由一组成固定的数据项组成。除了与数据存储(文件)之间的数据流不用命名外,其余数据流都应该用名词或名词短语命名。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,也可以从源点流向加工或从加工流向终点。 加工 也称为数据处理,它对数据流进行某些操作或变换。每个加工也要有名字,通常是动词短语,简明地描述完成什么加工。在分层的数据流图中,加工还应有编号。 数据存储 指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。流向数据存储的数据流可理解为写入文件,或查询文件,从数据存储流出的数据可理解为从文件读数据或得到查询结果。 数据源点和终点 是软件系统外部环境中的实体(包括人员、组织或其他软件系统),统称为外部实体。一般只出现在数据流图的顶层图中。还有一些辅助的图例:例1:画出图书预定系统的DFD 图。现有一图书预定系统,接收由顾客发来的订单,并对订单进行验证,验证过程是根据图书目录检查订单的正确性,同时根据顾客档案确定是新顾客还是老顾客,是否有信誉。经过验证的正确订单,暂存放在待处理的订单文件中。对订单进行成批处理,根据出版社档案,将订单按照出版社进行分类汇总,并保存订单存根,然后将汇总订单发往各出版社。画图步骤是: 首先确定外部实体(顾客、出版社)及输入、输出数据流(订单、出版社订单)。 再分解顶层的加工(验证订单、汇总订单)。 确定所使用的文件(图书目录文件、顾客档案等5 个文件)。 用数据流将各部分连接起来,形成数据封闭。特别要注意的是:数据流图不是传统的流程图或框图,数据流也不是控制流。数据流图是从数据的角度来描述一个系统,而框图则是从对数据进行加工的工作人员的角度来描述系统。数据流图中的箭头是数据流,而框图中的箭头则是控制流,控制流表达的是程序执行的次序。下图是培训中心管理系统的数据流图,由于只有一层,因此分解的加工较多不易理解,而且如果其中某个加工较复杂,例如编号为3 的加工“付款”和编号为7 的加工“复审”仍很复杂,一时难以理解,如果不继续分解下去,直到每个加工都足够简单易于理解为止,则会影响需求分析结果的可读性。1画分层DFD 图的方法如图2.8 所示,如果系统规模较大,仅用一个DFD 图难以描述,会使得系统变得复杂,且难以理解。为了降低系统的复杂性,采取“逐层分解”的技术,画分层的DFD 图。画分层DFD 图的一般原则是:“先全局后局部,先整体后细节,先抽象后具体”。通常将这种分层的DFD 图,分为顶层、中间层、底层。顶层图说明了系统的边界,即系统的输入和输出数据流,顶层图只有一张。底层图由一些不能再分解的加工组成,这些加工都已足够简单,称为基本加工。在顶层和底层之间的是中间层。中间层的数据流图描述了某个加工的分解,而它的组成部分又要进一步分解。 画各层DFD 图时,应“由外向内”。画分层DFD 图的具体步骤: 先确定系统范围,画出顶层的DFD 图。 逐层分解顶层DFD 图,获得若干中间层DFD 图。 画出底层的DFD 图。在画分层数据流图时,首先遇到的问题就是应该如何分解?不能够一下子把一个加工分解成它所有的基本加工,一张图中画出过多的加工是使人难以理解的,但是如果每次只是将一个加工分解成两个或三个加工,又可能需要分解过多的层次,也会影响系统的可理解性。一个加工每次分解成多少个子加工才合适呢?根据经验“最多不要超过7 个”。统计结果证明,人们能有效地同时处理7 个或7 个以下的问题,但当问题多于7 个时,处理效果就会下降。当然也不能机械地应用,关键是要使数据流图易于理解。同时还有几条原则可供参考:分解应自然,概念上要合理、清晰。 只要不影响数据流图的“易理解性”,可以适当地多分解成几部分,这样分层图的层数就可少些。 一般来说,在上层可以分解得快些,而在中、下层则应分解得慢些,因为上层是一些综合性的描述,“易理解性”相对地说不太重要。下节我们以一个实例来说明画分层DFD 图的方法。2 分层DFD 图的改进分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描绘了系统的总貌,底层画出了系统所有的细部,而中间层则给出了从抽象到具体的逐步过渡。1画分层DFD 图的基本原则数据守恒与数据封闭原则所谓数据守恒是指加工的输入输出数据流是否匹配,即每一个加工既有输入数据流又有输出数据流。或者说一个加工至少有一个输入数据流,一个输出数据流。加工分解的原则自然性:概念上合理、清晰;均匀性:理想的分解是将一个问题分解成大小均匀的几个部分;分解度:一般每一个加工每次分解最多不要超过个子加工,应分解到基本加工为止。子图与父图的“平衡”父图中某个加工的输入输出数据流应该同相应的子图的输入输出相同(相对应),分层数据流图的这种特点称为子图与父图“平衡”。例1 考察下图中子父图的平衡显然,图2.13 中子图与父图不平衡。子图是父图中加工2 的分解,加工2 有输入数据流R 和M,输出数据流T,而子图则只有一个输入数据流N,却有两个输出数据流T 与S。图2.14 中,子图是父图中加工4 的分解,虽然表面上加工4 只有一个输入数据流“订货单”,而子图却有三个输入数据流,但是如果“订货单”是由“客户”、“帐号”和“数量”三部分组成,即有如下数据条目:订货单 =客户+帐号+数量(2.2.5 数据词典),则子、父图平衡。合理使用文件当文件作为某些加工之间的交界面时,文件必须画出来,一旦文件作为数据流图中的一个独立成份画出来了为了对数据流图有更直观的认识,我们以一个考试成绩管理系统为例,介绍它的数据流图。某单位进行招聘考试,应聘者报名后,单位的招聘委员会将每位应聘者的基本情况输入系统。招聘考试结束后,招聘委员会需要将应聘者的成绩输入系统,并按照成绩对应聘者进行排序,将成绩单发放给每位应聘者,并发放录用通知书。该考试成绩管理系统顶层和底层的数据流图分别如图2-6和图2-7所示。 (点击查看大图)图2-6考试成绩管理系统顶层数据流图(点击查看大图)图2-7考试成绩管理系统底层数据流图在绘制数据流图的过程中,要注意以下几点。(1) 数据的处理不一定是一个程序或一个模块,也可以是一个连贯的处理过程。(2) 数据存储是指输入或输出文件,但它不仅仅可以是文件,还可以是数据项或用来组织数据的中间数据。(3) 数据流和数据存储是不同状态的数据。数据流是流动状态的数据,而数据存储是指处于静止状态的数据。(4) 当目标系统的规模较大时,为了描述的清晰和易于理解,通常采用逐层分解的方法,画出分层的数据流图。在分解时,要考虑到自然性、均匀性和分解度几个概念。自然性是指概念上要合理和清晰。均匀性是指尽量将一个大问题分解为规模均匀的若干部分。分解度是指分解的维度,一般每一个加工每次分解最多不宜超过7个子加工,应分解到基本的加工为止。(5) 数据流图分层细化时必须保持信息的连续性,即细化前后对应功能的输入和输出数据必须相同。关于数据流图的详细绘制方法,本章的实践部分会详细介绍。2.4.2数据字典用数据流图来表示系统的逻辑模型直观且形象,但是缺乏细节描述,也就是说它没有准确和完整地定义各个图元。可以用数据字典(data dictionary,DD)来对数据流图做出补充和完善。数据字典用于定义数据流图中各个图元的具体内容,为数据流图中出现的图形元素做出确切的解释。数据字典包含4类条目:数据流、数据存储、数据项和数据加工。这些条目按照一定的规则组织起来便构成了数据字典。定义规则时,常用的符号如表2-2所示。表2-2数据字典符号符号含义示例=被定义为+与X=a+b表示X由a和b组成|或X=a | b表示X由a或b组成mn或重复X= 2a6或表示重复26次a重复X=a表示X由0个或多个a组成()可选X=(a)表示a在X中可能出现,也可能不出现“”基本数据元素X=“a”表示X是取值为字符a的数据元素.连接符X=1.9表示X可取1到9中的任意一个值例如,数据流应聘者名单由若干应聘者姓名、性别、年龄、专业和联系电话等信息组成,那么应聘者名单可以表示为:应聘者名单=应聘者姓名+性别+年龄+专业+联系电话。数据项考试成绩可以表示为:考试成绩 =0.100。再如,某教务系统的学生成绩库文件的数据字典描述可以表示为以下形式。文件名:学生成绩库记录定义:学生成绩 = 学号+姓名+课程代码+成绩+必修|选修学号:由6位数字组成姓名:24个汉字课程代码:8位字符串成绩:13位十进制整数文件组织:以学号为关键字递增排列2.4.3E-R图E-R图用于描述应用系统的概念结构数据模型,它是进行需求分析,并归纳、整理、表达和优化现实世界中数据及其联系的重要工具。在建模的过程中,E-R图以实体、联系和属性三个基本概念概括数据的基本结构。实体就是现实世界中的事物,多用矩形框来表示,框内含有相应的实体名称。比如,在一个教务系统中,学生就是一个实体,如图2-8所示。图2-8学生实体属性多用椭圆形表示,并用无向边与相应的实体联系起来,表示该属性归某实体所有。可以说,实体是由若干个属性组成的,每个属性都代表了实体的某些特征。学生实体的属性如图2-9所示。(点击查看大图)图2-9学生实体的属性联系用菱形表示,并用无向边分别与有关实体连接起来,以此描述实体之间的关系。实体之间存在着三种联系类型,分别是一对一、一对多、多对多,它们反映到E-R图中就为相应的联系类型,即1:1、1:n和m:n。(1) 一对一联系是指甲实体的任何一个实例只能对应到乙实体的一个实例,并且乙实体的任何一个实例只能对应到甲实体的一个实例。比如,在一个座位分配系统中,学生实体和座位实体之间的关系就是一对一的,如图2-10所示。(2) 一对多联系是指甲实体的任何一个实例能够对应到乙实体的多个实例,而乙实体的任何一个实例只能对应到甲实体的一个实例。比如,在一个住宿管理系统中,一个学生只能分配到一间宿舍,而一间宿舍可以容纳多个学生,如图2-11所示。(点击查看大图)图2-10一对一联系(点击查看大图)图2-11一对多联系(3) 多对多联系是指甲实体的任何一个实例能够对应到乙实体的若干个实例,而乙实体的任何一个实例也可以对应到甲实体的若干个实例。比如,在一个选课系统中,一个学生可以选修若干门课程,同时一门课程也可以被若干个学生选修,如图2-12所示。(点击查看大图)图2-12多对多联系需要指出的是,同一个系统的E-R图不具有唯一性,即不同的软件开发人员所设计出来的E-R图可能不同。2.5 利用Visio绘制网上书店系统的数据流图(1) 网上书店是一种新型的书店模式,它不仅是传统销售渠道的发展和补充,也是未来图书销售的发展方向。目前,我国运作和销售较好的大型网上书店有很多,如当当、卓越亚马逊等,其中当当网上书店在价格和品种方面的优势众所周知;卓越亚马逊网上书店创造流行的能力比较强。国外影响较大的网上书店有美国的亚马逊、德国的贝塔斯曼等,其中亚马逊网上书店在1998年拥有450万名顾客,而到2002年就有将近32亿人网上购书,销售额达到了78亿美元。网上售书将成为图书销售的主要渠道。下面我们将以一个小型的网上书店系统为例,对软件工程开发实践方法和相关工具的使用进行介绍。该网上书店系统旨在实现图书销售的电子商务模式并满足经销商和用户进行电子交易的需求,从而充分发挥网上交易的优势。它的目标是保证经销商和用户之间快速的信息交流。本节主要是实践利用Visio 2007来绘制网上书店系统的数据流图。利用Visio 2007创建Gane- Sarson数据流图,可以选择软件和数据库模板,然后再选择数据流模型图,创建之后可以看到Gane-Sarson有4种基本符号,如表2-1所示。在绘制系统数据流图的过程中,结构化需求分析方法通常强调自顶向下,逐层分析的思想。对于大规模的软件系统而言,需要采用多层的数据流图才能将问题描述清楚,而对于中等规模或小型的软件系统而言,采用三层的数据流图就可以了。在三层的数据流图中,顶层数据流图主要描述目标系

温馨提示

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

评论

0/150

提交评论