资源描述
第3章软件需求分析,3.1软件需求分析的任务3.2软件需求分析的步骤3.3需求分析的原则3.4需求分析的方法3.5加工逻辑说明3.6软件需求分析文件与复审,3.1软件需求分析的任务,3.1.1软件需求分析的目标利用软件范围作为指南,软件需求分析试图实现如下几个目标:1)揭示系统信息的流程与结构,为软件的开发打下基础。2)确定接口细节、深入描述软件功能、确定设计的约束、规定软件的检验需求,以此来说明该软件。3)建立并保持与用户以及软件需求者的联系,以便实现上述两项目标。,3.1软件需求分析的任务,3.1.2需求分析阶段的任务1.确定对系统的综合需求对系统的综合需求主要包括系统功能需求、系统性能需求、运行需求及将来可能提出的需求。(1)系统功能需求就是划分出系统必须完成的所有功能。(2)系统性能需求包括响应时间、精确度指标需求、安全性等。(3)运行需求集中表现为对系统运行时所处环境需求,如软硬件运行环境限定需求等。(4)将来可能会提出的需求应该明确列出哪些需求虽然不属于当前系统开发范畴,但是根据分析将来很可能会提出来。这样的目的是在设计过程中对系统将来可能的扩充和修改做准备,以便需要时能比较容易进行这种扩充和修改,更有利于系统维护。,3.1软件需求分析的任务,3.1.2需求分析阶段的任务2.分析系统的数据需求任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远影响。分析系统的数据需求,是通过系统的信息流归纳抽象出数据元素组成、数据逻辑关系、数据字典格式和数据类型,并以输入处理输出的结构方式表示。因此,必须分析系统的数据需求,这是软件需求分析的一个重要任务。,3.1软件需求分析的任务,3.1.2需求分析阶段的任务3.获得系统的逻辑模型综合上述两项分析的结果,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型。在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质。在物理模型中有许多物理因素,但随着分析工作的深入有些非本质因素就显得不必要了,因而需要对物理模型进行分析,区分本质因素和非本质因素,去掉那些非本质因素,获得反映系统本质的逻辑模型。具体做法是:(1)确定目标系统与当前系统的逻辑差别;(2)将变化部分看作新的处理步骤,对功能图(一般是数据流图)及对象图进行调整;(3)由外及里,对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型。,3.1软件需求分析的任务,3.1.2需求分析阶段的任务4修正系统开发计划经过需求分析阶段的工作,分析员对目标系统有了更深入、更具体的认识,因此可以对系统的成本和进度做出更准确的估计,在此基础上对开发计划进行修正。,3.1软件需求分析的任务,3.1.2需求分析阶段的任务5开发原型系统使用原型系统的主要目的,是使用户通过实践获得关于未来的系统将怎样为他们工作的概念,检验关键设计方案的正确性和检验系统是否真正满足用户的需要,从而可以更准确地提出和确定他们的要求。用户试用了原型系统以后,能够指出系统的哪些特性是他们喜欢的,哪些是他们感到不能接受的,以及他们还需要哪些新的功能。根据经过实践检验的用户需求而开发出来的系统,更可能真正满足用户的需要。特别是当所开发的系统是全新的,用户没有使用类似系统的经验时,更应该认真考虑开发原型系统的必要性和可能性。,3.2软件需求分析的步骤,3.2.1问题的分析首先,系统分析员应该仔细研究可行性分析报告和软件项目实施计划,确定软件的需求,并提出这些需求的实现条件及应该达到的标准。其次,问题分析是建立分析所需要的通信途径,以保证顺利地分析问题。再次,在问题分析过程中还必须充分重视和使用数据流图、数据字典和算法描述工具。,3.2软件需求分析的步骤,3.2.2问题评估和方案综合分析员必须定义所有外部可观察到的数据对象(数据流和数据结构),评估信息流和内容,定义并详细阐述所有软件功能,建立系统界面特征,揭示其他设计约束。这些任务中的每一项均用于描述问题,以便综合获得全面的解决方案。贯穿整个评估和综合过程,分析员的主要焦点是“干什么”,而不是“怎么做”。1)系统会产生和使用什么数据?2)系统必须完成什么功能?3)将定义什么界面?4)会应用什么约束等。在问题评估和综合解决方案的活动中,分析员创建系统模型,以便可以更好地理解数据流和控制流、处理功能、操作行为及信息内容。系统模型是设计软件的基础。,3.2软件需求分析的步骤,3.2.3拟订软件需求分析文件软件需求分析完成后,这一阶段应交付的文件有:1.软件需求说明书2.初步的用户手册3.确认测试计划4.数据要求说明书,3.2软件需求分析的步骤,3.2.4软件需求分析的复审1几个必须回答的问题(1)所规定的软件目标和任务与系统的目标和任务相符合吗?(2)与所有系统成分的重要接口都已经被描述了吗?(3)研制项目的信息流和信息结构充分确定吗?(4)图表都清楚吗?每一个图表在不加补充说明的情况下能理解吗?(5)主要功能在规定范围内吗?每一功能都已充分地加以说明了吗?(6)设计的限制条件是现实的吗?(7)开发的技术风险是什么?(8)考虑过软件需求的其他方案吗?(9)检验标准详细制定了吗?他们能否确认系统是成功的?(10)有没有遗漏、重复或者不一致的地方?(11)与用户或需求者的联系充分吗?(12)用户复审了初步的用户手册吗?(13)软件计划中的估算如何受到影响?,3.2软件需求分析的步骤,3.2.4软件需求分析的复审2复审的层次规则(1)着重于说服性的连接词(如当然、因此、明确的、显然的等),并问“为什么”。(2)观察含糊的术语(如一些、有时、经常、通常、一般、大多数等),并进行澄清。(3)当给出了不完整的列表时,确定已理解了所有项,关键是查找“等、如此这样”。(4)查找蕴含了确定性的语句(如“总是”、“每次”、“所有”、“无”、“永不”等),然后要求证明它们。(5)当某术语被明确地定义在某处时,力图用该定义去替换其他地方出现的该术语。(6)当用语句描述某结构时,画图以帮助理解。(7)当描述计算时,至少试验一个例子。,3.3需求分析的原则,3.3.1指导性原则1.理解问题2.开发原型3.记录每个需求的起源4.使用多个需求视图5.给需求赋予优先级6.努力删除含糊性,3.3需求分析的原则,3.3.2操作性原则1.必须能够表达和理解问题的信息域2.要自顶向下逐层分解问题3.要给出系统的逻辑模型和物理模型,3.4需求分析的方法,3.4.1需求分析方法概述基本概念:(1)实体实体就是我们通常所说的数据对象,是能够被系统所理解的具有若干属性的信息的表示,是对客观世界存在且可以互相区分的事物的描述。它可以是外部实体,如学生、职工、课程等:也可以是抽象的概念,如单击鼠标左键、呼叫一个电话号码等。实体一般用矩形框表示。(2)关系实体之间往往是有关系的,实体的关系有三种:一对一(1:1)。例如,一个部门有一个经理,它们之间的关系是一对一的。一对多(1:m)。例如,学校中一位教师带多个学生,它们之间的关系就是一对多的关系。多对多(n:m)。例如,在选课中,一个学生可以选多门课,一门课可以被多个学生选,所以学生与课程之间是多对多的关系。,3.4需求分析的方法,3.4.1需求分析方法概述基本概念:(3)属性属性是实体或联系所具有的性质,定义了数据对象的特征。实体、联系及属性能够帮助人们客观地理解客观世界的现实问题,分析员可以用简单的符号来表示对问题的理解,符合人们的思维习惯,因此是用户与系统分析员进行交流的有效工具。,3.4需求分析的方法,3.4.1需求分析方法概述2基于数据域的需求分析方法需求分析方法是由软件的数据域和功能域的系统分析过程及其表示方法组成。它定义了表示系统的逻辑视图和物理视图的方式。大多数的需求分析方式是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其他特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型。数据域具有3种属性:数据流、数据内容和数据结构。,3.4需求分析的方法,3.4.1需求分析方法概述2基于数据域的需求分析方法通常,一种需求分析方法总要利用数据域的一种或几种属性。(1)支持数据域分析的机制(2)功能的表示方法(3)接口的定义(4)问题分解的机制及对抽象的支持(5)逻辑视图和物理视图(6)系统抽象模型,3.4需求分析的方法,3.4.2结构化分析方法1基本概念结构化分析方法(StructuredAnalysis,SA方法)适合于开发数据处理类型软件的需求分析,特别是企业事业单位中有关数据管理类型的应用软件的开发。近年来,软件开发的结构化分析方法得到了广泛的应用。这一方法除了比较简明、易于掌握的优点之外,在进入设计阶段以后还能和结构化设计方法(SD)相衔接,从而取得良好的设计效果。,3.4需求分析的方法,3.4.2结构化分析方法1基本概念结构化分析方法的基本手段是“分解”和“抽象”,这是系统开发技术中控制复杂性的两种通用手段。对于一个复杂的系统,结构化分析方法使用了“自顶向下,逐层分解”的方法。结构化分析方法采用了介于形式语言和自然语言之间的描述方式来写软件文件,并在描述方式上尽量采用图形表示,比较形象、直观、易于理解,避免了冗长、重复、难于阅读和修改等缺点,从而得到具有明显优越性的结构化软件需求说明书。,3.4需求分析的方法,3.4.2结构化分析方法1基本概念用结构化分析方法获得的软件文件资料主要包括:(1)数据流程图(DataFlowDiagram,DFD)用以描述系统的分解,即描述系统的组成及各部分之间的联系。(2)数据字典对数据流程图中所有的数据元素、数据结构、数据文件、数据流等的名字进行定义。(3)一组基本加工(处理逻辑)说明加工的表达方法,包括结构化语言,判定表和判定树等,用以描述系统中每一个基本处理,即处理的基本条件、数据来源及处理逻辑、优先级、执行频率、出错处理等所有细节。,3.4需求分析的方法,3.4.2结构化分析方法2结构化分析方法的具体步骤:(1)获得现行系统的具体模型(2)抽象现行系统的逻辑模型(3)建立目标系统的逻辑模型这是分析工作中实质性的一步。它通过分析目标系统与现行系统逻辑的差别,明确目标系统“做什么”,在现行系统的逻辑模型上建立目标系统的逻辑模型。,3.4需求分析的方法,3.4.2结构化分析方法2结构化分析方法的具体步骤:具体可按如下方式进行:1)决定变化的范围,即决定目标系统与现行系统逻辑上的差别。2)将变化的部分看成是一个新的处理步骤,对数据流程图进行调整。3)由外向里对变化的部分进行分析,凭经验推断其结构,获得目标系统的逻辑模型。4)补充目标系统的逻辑模型,3.4需求分析的方法,3.4.3数据流图数据流图是一种最常用的结构化分析工具,它从数据传递和加工的角度,以图形的方式刻画系统内数据的运动情况。数据流图描述数据在系统中如何被传送或变换,并描述对数据流进行变换的功能。因此,数据流图既表示了系统内部信息的流向,又表示了系统逻辑处理的功能。,3.4.3数据流图1.数据流图的基本元素数据流图有四种基本的图形符号,分别代表不同的数据元素,如图3-3所示。,3.4需求分析的方法,图3-3数据流图基本符号定义,3.4需求分析的方法,3.4.3数据流图1.数据流图的基本元素1)数据流数据流是一组数据,是描绘数据流图中各成分的接口,反映了处理的对象。数据流的方向可以从加工到加工,从加工到数据的存储,从存储文件到加工。我们在定义数据流时,应有良好的命名习惯,这有利于更深化地理解整个系统。2)加工加工表示对数据执行某种操作或变换,是对数据进行的处理,是把输入数据流转换成输出数据流的一种变换。每个加工都应有一个能标识其操作的合适的名字。它的名字应能简明扼要地表明所完成的是什么加工。数据流图是描述数据处理过程的工具。当信息在软件中流动时,将会产生一系列变化和修改。数据流图是描述信息流,以及数据从输入到输出和应用的变换的图形化表示技术。它表示了系统内部信息流向和系统的逻辑处理功能。,3.4需求分析的方法,3.4.3数据流图1.数据流图的基本元素3)数据存储数据存储在数据流图中起着保存数据的作用,指向数据存储的数据流可以理解为写数据,从数据存储引出的数据流可以理解为读数据,双向数据流可以理解为修改数据。文件是存储的数据,可以存储在磁盘等存储介质上。同样,我们也要对数据存储文件进行合适的命名。4)源点和汇点源点和汇点是代表系统之外的实体,数据流的源点和终点说明了数据的来龙去脉,使数据流图更加清晰。除了上述4种基本成分外,数据流图还有几种附加成分,例如,星号表示几股数据流之间是“与”的关系,加号“+”表示“或”的关系,号表示从几股数据流中选取一股,即表示“互斥”的关系。,3.4需求分析的方法,3.4.3数据流图2.数据流图的特性(1)抽象性在数据流图中,具体的组织机构、工作场所、物质流等都被去掉,仅剩下信息和数据存储、流动、使用及加工的情况。这有助于抽象地总结出信息处理的内在规律。(2)概括性数据流图把系统对各种业务的处理过程联系起来考虑,形成一个总体,具有概括性。数据流图描述的主体是抽象出来的数据。(3)层次性数据流图具有层次性,一个系统将有许多层次的流图。,3.4需求分析的方法,3.4.3数据流图3.命名数据流图中每个成分的命名是否恰当,直接影响到数据流图的可理解性。在命名时应注意的问题如下:(1)为数据流、数据存储命名名字应代表整个数据流或数据存储的内容,而不是仅仅反映它的某些成分。不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类的)。(2)为处理加工命名通常先为数据流命名,然后再为与之相关联的处理命名。这样命名比较容易,而且充分体现了人类习惯的“由表及里”的思考过程。名字应该反映整个处理的功能,而不是它的一部分功能。名字最好由一个具体的及物动词加上一个具体的宾语构成,应该尽量避免使用“加工”、“处理”等这样笼统的动词做名字。,3.4需求分析的方法,3.4.3数据流图4.数据流图的画法构造数据流图DFD的方法是识别出主要输入和主要输出,然后从输入向输出推进,找出通道上的主要变换,多数情况下,应该由里至外,自顶向下去模拟问题的处理过程,通过一系列的分解步骤,逐步求精地表达出整个系统功能的内部联系。下面说明画数据流图的步骤:(1)在数据流图的外围画系统的输入和输出。(2)集中精力找出数据流,并与外围的输入、输出数据流连接起来。(3)给每个数据流命名。(4)为加工命名。任何系统都是有层次的结构,如果按照层次结构对系统进行逐步分解,就能很清楚地表达和理解整个系统。在每一个层次上,最核心的部分就是数据加工及其相关的数据流。,3.4需求分析的方法,3.4.3数据流图5.用途画数据流图的基本目的是利用它作为交流信息的工具。分析员把对现有系统的认识或目标系统的设想用数据流图描绘出来,供有关人员审查确认。由于在数据流图中通常仅仅使用4种基本符号,而且不包含任何有关物理实现的细节,因此,绝大多数用户都可以理解和评价它。数据流图的作用主要有以下几条:()系统分析员用这种工具可以自顶向下地分析系统信息流程。()在图上画出需要计算机处理的部分。()数据存储,进一步做数据分析,向数据库设计过渡。()依据数据流向,定出存取方式。()一个处理过程,用相应的语言、判定表等工具表达处理方法。,3.4需求分析的方法,3.4.4数据字典1.数据字典的定义数据字典就是对在数据流图中每一个图形元素的定义,其内容包括图形元素的名称、别名或编号、分类、描述、定义、位置等。一般地,它由下面的几类元素的定义组成:数据流、数据元素、数据结构、数据存储、处理逻辑、源点及汇点。(1)数据流定义描述在数据流图中,数据按照数据流指明的方向传播。数据流定义的主要内容如下:1)数据流名2)数据流来源3)数据流去向4)数据流组成5)数据流数据量6)流通量,3.4需求分析的方法,3.4.4数据字典1.数据字典的定义(2)数据元素定义描述数据元素也称为数据项,是数据处理中最小的、不可再分的单位,它直接反映事物的某一特征。数据元素定义的内容如下:1)数据元素名2)数据元素类型说明其类型,可以是数字或文字。数据元素的类型包括数字型和文字型两种。数字型又分为离散值和连续值。离散值或者是枚举的,或者是介于上下界之间的一组数;连续值一般是有取值范围的实数集。对于文字型,需给出编码类型,文字值需加以定义。3)数据元素长度说明其所包含的字符或数字的位数。4)取值范围,3.4需求分析的方法,3.4.4数据字典1.数据字典的定义(3)数据结构定义描述数据结构描述了数据元素之间的关系。一个数据结构可以由若干数据元素组成,也可以由若干数据结构组成,还可以由若干数据元素和数据结构组成。数据结构定义的描述内容如下:1)数据结构名2)数据结构的组成如果是一个简单的数据结构,只需列出它所包含的数据项即可。如果是一个嵌套的数据结构,则只需列出它所包含的数据结构的名称,因为这些数据结构同样在数据字典中有定义。,3.4需求分析的方法,3.4.4数据字典1.数据字典的定义(4)数据存储定义描述数据存储是保存数据结构的地方。数据存储定义的描述内容如下:1)数据存储名2)简述说明存放的是什么样的数据。3)输入数据说明其输入数据。4)输出数据说明其输出数据。5)数据存储组成说明其包含的数据元素和数据结构。6)存储方式说明其存储方式,包括顺序、直接、关键码等。7)存取频率说明数据的存储、读取频度。,3.4需求分析的方法,3.4.4数据字典1.数据字典的定义(5)处理逻辑定义描述处理比较复杂,它到后来就是一段程序。处理的表达方式有判定表、判定树和结构化语言等,它们要全部写在一个定义中是有困难的。处理逻辑定义的描述内容如下。1)处理逻辑名2)处理逻辑编号3)简要描述4)输入数据流5)输出数据流6)处理逻辑,3.4需求分析的方法,3.4.4数据字典1.数据字典的定义(6)源点及汇点定义描述顾名思义,源点就是系统的数据由外部实体的流入点,汇点就是系统的数据向外部的流出点。对一个数据处理系统而言,源点和汇点应当比较少。如果源点和汇点过多就缺乏独立性,造成人机界面过于复杂,此时,就需考虑适当减少源点和汇点,提高系统的独立性。源点和汇点定义的描述内容如下。1)源点或汇点名称即外部实体名。2)简要描述说明它是什么外部实体。3)有关数据流说明与外部实体有关的数据流。4)数目,3.4需求分析的方法,3.4.4数据字典2.数据字典的定义定义就是自顶向下的分解,所以数据字典中的定义就是对数据自顶向下的分解。在一般情况下,当分解到不需要进一步定义,每个和项目有关的人也都清楚其代表的元素时,这种分解过程就完成了。数据元素组成数据的方式有下述三种基本类型。(1)顺序按确定次序连接两个或多个分量。(2)选择从两个或多个可能的分量中选取一个。(3)重复把指定的分量重复次或多次。,3.4需求分析的方法,3.4.4数据字典2.数据字典的定义在数据字典的编制中,分析员虽然可以使用自然语言描述由数据元素组成数据的关系,但是为了更加清晰简洁,通常采用定义式或者Warnier图描述数据结构。(1)定义式在数据流图中,数据流和数据存储都具有一定的数据结构,因此必须以一种清晰、准确、无二义性的方式来描述数据结构。(2)Warnier图Warnier图是表示数据层次结构的一种图形工具,它用树形结构来描述数据结构。,3.4需求分析的方法,3.4.4数据字典3.数据词典的作用(1)数据流图和数据词典一起构成系统的逻辑模型。(2)数据词典精确地、严格地定义了每个与系统相关的数据元素,并以词典形式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。,3.4需求分析的方法,3.4.4数据字典4.数据词典的特点数据词典应具有以下特点:(1)通过名字能方便地查询数据定义。(2)没有冗余,容易修改和更新。(3)定义的书写方法简便而严格。(4)能单独处理每个数据元素的信息。,3.4需求分析的方法,3.4.5其他分析方法1数据结构化系统开发数据结构化系统开发(DSSD)也称为Warnier-Orr方法,是由JDWarnier进行的信息域分析的开创性工作演化而来的。Warnier开发了使用顺序、选择和重复3种结构表示信息层次的符号体系,并说明了软件结构可以由数据结构直接导出。DSSD包含信息流和功能特征及数据层次。,3.4需求分析的方法,3.4.5其他分析方法2Jackson系统开发Jackson系统开发(JSD)是MAJackson在进行关于信息域分析及其与程序设计和系统设计的关系方面的工作时推演出来的。它在某些方面与DSSD相似。不同的是,JSD关注的是现实世界信息域的模型。为实施JSD,分析员需要采用以下步骤。(1)实体动作分析(2)实体结构分析(3)定义初始模型(4)功能描述(5)决定系统时间特性(6)实现,3.5加工逻辑说明,3.4.5其他分析方法目前,常用的书写逻辑加工说明的工具有三种:程序设计语言、判定表和判定树。1程序设计语言2判定表3判断树,3.5加工逻辑说明,3.4.5其他分析方法4三种表达工具的比较(1)对于一个不太复杂的判断逻辑,即条件只有两个或3个,条件组最多只有15个,相应的动作也只有10个左右,或者是作为判定表的图形表达要和用户共同讨论时,在这两种情况下,使用判定树最好。(2)对于一个复杂的判断逻辑,条件很多,组合也很多,相应的动作有任意多个,在这种情况下,使用判定表最好。(3)在一个加工中,既包含了一般的顺序执行动作,又包含了判断或循环逻辑的时候,使用结构化语言最好。,3.6软件需求分析文件与复审,1软件需求分析文件软件需求分析完成后,这一阶段应交付的文件有:(1)软件需求说明书(2)修改后的项目开发计划(3)初步的用户手册(4)确认测试计划(5)数据要求说明书,3.6软件需求分析文件与复审,2软件需求说明书好的软件需求说明书SRS必须具有下列基本特性:(1)无歧义性(2)完整性(3)一致性(4)可修改性(5)可追踪性,3.6软件需求分析文件与复审,3数据要求说明书数据要求说明书编制的目的是为了向整个开发时期提供关于被处理数据的描述和数据采集要求的技术信息,为生成和维护系统数据文卷做好准备。4用户手册在确定人机交互作用的软件需求后,准备一份初步的用户手册,作为对所要求的文件的补充往往是有利的。这种用户手册将起到两个作用:1)手册的准备迫使分析员从用户的角度来看待软件,从而及早考虑接口方面的人机工程。2)用户或需求者可以复审一个明确描述人机接口的实际文件。,3.6软件需求分析文件与复审,5软件需求分析的复审软件需求分析的复审是由软件开发者和用户或需求者共同实施的。由于软件需求说明构成开发阶段的基础,因此,在进行复审时应当特别小心,必须就数据流、各个界面和功能的完整性、正确性和清晰性仔细地评价。,THEEND!,
展开阅读全文