第3章 需求分析.ppt_第1页
第3章 需求分析.ppt_第2页
第3章 需求分析.ppt_第3页
第3章 需求分析.ppt_第4页
第3章 需求分析.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 软件需求分析, 需求分析任务, 获取需求分析的方法, 需求分析的步骤, 需求分析的原则, 数据建模, 功能建模, 行为建模, 加工逻辑说明, 结构化需求分析, 验证需求需求,3.1 需求分析概述,需求分析的主要任务:就是要通过软件开发人员与用户的交流和讨论,准确地获取用户对系统的具体要求。在正确理解用户需求的前提下,软件开发人员还需要将这些需求准确地以文档的形式表达出来,作为设计阶段的依据。需求分析阶段结束时需要提交的主要文档是软件规格说明书。,用户对系统的需求通常可分为如下两类: (1) 功能性需求:主要说明了待开发系统在功能上实际应做到什么,是用户最主要的需求。通常包括系统的输入、

2、系统能完成的功能、系统的输出及其他反应。,(2) 非功能性需求:从各个角度对所考虑的可能的解决方案的约束和限制。主要包括: 过程需求(如交付需求、实现方法需求等)、产品需求(如可靠性需求、可移植性需求、安全保密性需求等)和外部需求(如法规需求、费用需求等)等。,3.1.1 确定对系统的综合要求 (1) 功能性需求; (2) 性能需求; (3) 可靠性和可用性需求;(4) 出错处理需求; (5) 接口需求; (6) 约束; (7) 逆向需求; (8) 将来可能提出的要求;,3.1.2 分析系统的数据要求 分析系统的数据要求通常采用建立数据模型的方法。复杂的数据由许多基本的数据元素组成,数据结构表

3、示数据元素之间的逻辑关系。利用数据字典可以全面准确地定义数据,但是数据字典的缺点是不够形象直观。为了提高可理解性,常常利用图形工具辅助描绘数据结构。,3.1.3 导出系统的逻辑模型 常用数据流图、实体联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型。 3.1.4 修改系统开发计划,3.2 与用户沟通获取需求的方法 3.2.1 访谈或实地考察 (1) 系统界限和运行状态 (2) 组织机构、人员配置、职责 (3) 业务流程 (4) 信息格式、容量 (5) 资源情况 (6) 约束条件 (7) 瓶颈问题,3.2.2 面向数据流自顶向下求精 3.2.3 简易的应用规格说明技术,3.2.4 快

4、速建立软件原型 为了快速地构建和修改原型,常采用下述3种方法和工具: (1)第四代技术:包括众多数据库查询和报表语言、程序和应用程序生成器以及其他非常高级的非过程化语言。 (2)可重用的软件构件 (3)形式化规格说明和原型环境,3.3 需求分析的步骤 需求分析大致可分为如下几个步骤进行: (1) 通过调查研究,获取用户的需求。 软件开发人员只有通过认真细致的调查研究,才能获得进行系统分析的原始资料。需求信息的获取可来源于阅读描述系统需求的用户文档;对相关软件、技术的市场调查;对管理部门、用户的访问咨询;对工作现场的实际考察等。,(2) 去除非本质因素,确定系统的真正需求。 对于获取的原始需求,

5、软件开发人员需要根据掌握的专业知识,运用抽象的逻辑思维,找出需求间的内在联系和矛盾,去除需求中不合理和非本质的部分,确定软件系统的真正需求。 (3) 描述需求,建立系统的逻辑模型。 对于确定的系统需求,软件开发人员要通过现有的需求分析方法及工具对其进行清晰、准确的描述,建立无二义性的、完整的系统逻辑模型。,(4) 书写需求说明书,进行需求复审。 需求阶段应提交的主要文档包括需求规格说明书、初步的用户手册和修正后的开发计划。其中,需求规格说明书是对分析阶段主要成果的综合描述,是该阶段最重要的技术文档。为了保证软件开发的质量,对需求分析阶段的工作要按照严格的规范进行复审,从不同的技术角度对该阶段工

6、作做出综合性的评价。复审即要有用户参加,也要有管理部门和软件开发人员参加。,3.4 需求分析的原则 (1) 能够表达和理解问题的数据域和功能域。 所有软件开发的最终目的都是为了解决数据处理的问题,数据处理的本质就是将一种形式的数据转换成另一种形式的数据,即通过进行一系列加工将输入的原始数据转换为所需的结果数据。需求分析阶段必须明确系统中应具备的每一个加工、加工的处理对象和由加工所引起的数据形式的变化。,(2) 能够将复杂问题分解化简。 便于问题的解决和实现,在需求分析过程中需要对于原本复杂的问题按照某种合适的方式进行分解(对功能域和数据域均可)。分解可以是同一层次上的横向分解,也可以是多层上的

7、纵向分解。每一步分解都是在原有基础上对系统的细化,使系统的理解和实现变得较为容易。,学生成绩管理系统,登陆,查询,打印,.,学生成绩管理系统,登陆,查询,打印,.,人工打印,自动打印,(3) 能够给出系统的逻辑表示和物理表示。 系统需求的逻辑表示用于指明系统所要达到的功能要求和需要处理的数据,不涉及实现的细节。系统需求的物理表示用于指明处理功能和数据结构的实际表现形式,通常由系统中的设备决定。,3.5 数 据 建 模,3.5.1 实体模型 1.实体模型的概念 对于一个软件系统来说,所涉及的数据成千上万,如何对这些复杂数据及其之间的关系进行分析并将它们以最优的方式组织起来,对软件开发的成败起着非

8、常重要的作用。,E-R(Entity-Relation 实体联系)方法是目前最常用的数据建模方法,可以用于在需求分析阶段清晰地表达目标系统中数据之间的联系及其组织方式,建立系统的实体数据模型(E-R模型)。实体模型是一种面向问题的概念数据模型,是按照用户的观点对系统的数据和信息进行建模的,因此它与软件系统中的实现方法,如数据结构、存取路径、存取效率等无关。实体模型可以根据需要在软件实现时转换成各种不同数据库管理系统所支持的数据物理模型。实体模型由实体、联系和属性三个基本成分组成。,(1) 实体:指客观世界存在的且可以相互区分的事物。实体可以是人或物或抽象概念。如职工、计算机、产品都是实体。 (

9、2) 属性:有时也称性质,是指实体某一方面的特征。一个实体通常由多个属性值组成。如学生实体具有学号、姓名、专业、年级等属性。 (3) 联系:指实体之间的相互关系。实体之间的联系可主要划分为三类:一对一(1:1)、一对多(1:n)和多对多(m:n)。联系也可以具有属性。为了便于实现,在进行数据库设计时通常将多对多的联系转换为一对多的联系,如图3.5.1所示。,图3.5.1 学生和课程之间的E-R模型 学生和课程之间的多对多联系E-R模型; (b) 将多对多联系转换为一对多联系E-R模型,2. 实体模型中的基本符号,表3.1 E-R模型中的基本符号,3. 实体模型的建立 要建立系统的实体模型,通常

10、可按如下步骤进行: (1) 对系统的数据域和功能域进行分析,确定系统中所涉及的实体。,图3.5.2 工资计算系统的E-R模型,(2) 确定系统中各实体之间的联系。如工资计算系统中,一名职工一个月只有一条出勤记录,因此职工和出勤两个实体之间是一对一的联系;一名职工在一个月中对应着多项扣款,如水电费、缺勤扣款、个人所得税等,因此职工和扣款之间是一对多的联系;同理,一名职工在一个月中可以获得多项奖励,因此职工和奖金之间也是一对多的联系。,(3) 确定各实体及联系的属性。例如,工资计算系统的职工实体具有职工号、性别、职称、年龄、部门、基本工资等属性。 目前,最常用的数据库模型是关系模型,它是通过一张二

11、维表来表示和处理实体集合和属性关系的数据库系统方法。在关系数据库中,为了避免出现数据冗余、二义性的问题,方便数据库的各种操作,二维表必须满足以下的规范化约束条件:,(1) 表格中的每个信息项必须是一个不可分割的数据项。 (2) 表格每一列中所有信息项必须是同类型的数据,各列在表中的次序任意,每列对应一个惟一的名字。 (3) 表格中每一行的数据各不相同,各行在表中的次序任意。,学号 姓名 性别 班级 专业 200101 张三 男 2001-2 网络 200211 李四 女 2002-1 软件,3.5.2 数据建模的其他图形工具 1. 层次方框图 层次方框图通过树型结构的一系列多层次的矩形框描述复

12、杂数据的层次结构。树型结构顶端的矩形框只有一个,用于代表完整的数据结构。下面各层的矩形框是对完整数据结构的逐步分解和细化得到的数据子集;底层的矩形框代表组成该数据结构的基本元素,是数据的最小单位,不可再分割。层次方框图非常适合描述自顶向下的需求分析方法中数据的层次关系。,例: 某单位职工的实发工资由应发工资和扣款两部分组成,每部分又可进一步细分。如应发工资又可分为基本工资和奖金;基本工资又可分为国家工资、津贴、补贴;奖金也可分为出勤奖和业绩奖;津贴和补贴还可以再进一步地细分。实发工资的层次方框图如图3.3所示。,图3.3 某单位职工实发工资的层次方框图,2. Warnier图 Warnier图

13、是法国科学家Warnier提出的另一种描述数据层次结构的图形工具。与层次方框图类似,Warnier图也采用了树型结构表示数据,但与层次方框图相比,Warnier图对数据的描绘手段更加丰富。利用Warnier图可以清楚地表明数据的逻辑结构中某类信息的重复出现及某些特定信息出现的条件约束,因此,Warnier图可以较为容易地转变成软件设计的工具。,在Warnier图中,使用大括号来区分数据结构的层次。一个大括号内的所有名字都属于同一类信息;异或符号“?”用于表明一类信息或一个数据元素在一定条件下出现,而且在这个符号上、下方的两个名字所代表的数据只能出现一个。在一个名字下面或右边的圆括号中出现的数字

14、指明了这个名字所代表的信息类或数据元素在该数据结构中重复出现的次数。例如,某公司的一种软件产品要么是系统软件,要么是应用软件;系统软件中有k1种操作系统、k2种编译程序,此外还有工具软件;工具软件进一步又可划分为编辑程序、测试工具和辅助设计工具,它们各自的数量分别为j1、j2和j3。Warnier 图如图3.4。,图3.4 描绘一种软件产品的Warnier图,3.IPO图 IPO图是输入、处理、输出图。,图3.5 计算工资模块的IPO图,3.6 功 能 建 模,需求分析阶段,数据流(信息流)是系统分析的基础。所谓数据流,形象地说就是系统中“流动的数据结构”。数据流图(DFD,Data Flow

15、 Diagram)是描述软件系统中数据处理过程的一种有力的图形工具。数据流图从数据传递和加工的角度出发,刻画数据流从输入到输出的移动和变换过程。由于它能够清晰地反映系统必须完成的逻辑功能,所以它已经成为需求分析阶段中功能建模最常用的工具。,3.6.1 数据流图的基本符号,表4.2 数据流图中的基本符号,1. 数据的源点或终点 数据的源点或终点用于反映数据流图与外部实体之间的联系,表示图中的输入数据来自哪里或处理结果送向何处。,2. 数据流 数据流是数据在系统中(包括数据处理之间、数据处理和数据存储之间以及数据处理和数据的源点或终点之间)的传送通道,数据流符号的箭头指明了数据的流动方向。,图3.

16、6 工资计算系统的顶层(0层)数据流图,3. 加工 加工也称为数据处理,是对系统中的数据流进行的某些操作或变换。图中每个加工都要有对应的名称,最常见的名称是由一个表明具体动作的动词和一个表明处理对象的名词构成的,如计算应发工资、打印工资清单等。,4. 数据存储 在数据流图中用于保存数据的数据文件被称为数据存储,它可以是数据库文件或任何其他形式的数据组织。流向数据存储的数据流可理解为向文件写入数据或对文件进行查询,流出数据存储的数据流可理解为从文件中读取数据或得到查询结果。,3.6.2 数据流与加工之间的关系 在数据流图中,可以有两个以上的数据流进入同一个加工,也可以有两个以上的数据流从同一个加

17、工中流出,这样的多个数据流之间往往存在一定的关系。为了表示这些数据流之间的关系,需要在数据流图中给这些数据流对应的加工加上一定的标记符号。,3.7 行 为 建 模,3.7.1 状态迁移图 状态迁移图是一种描述系统状态随外部信号或事件进行迁移的有效的图形手段。在状态迁移图中,用圆圈表示可得到的系统状态,在圆圈中需要标明状态的名字。此外,用带箭头的线表示从一种系统状态向另一种系统状态的迁移,在线上要写明导致状态迁移的信号或事件的名字。例如,在操作系统中,当存在多个申请占用CPU运行的进程(进程是分配CPU的最小处理单位)时,系统将按照某种调度策略为各个进程分配CPU。此时,进程的状态可能有三种:就

18、绪、运行和等待。, 就绪:等待分配CPU; 运行:占用CPU进行相应的处理; 挂起:放弃CPU的使用。 导致系统状态发生迁移的事件有四种:t1、t2、t3、t4,分述如下: t1:因I/O等事件的发生而要求中断; t2:中断事件已经处理完毕; t3:分配CPU; t4:已用完分配的CPU时间。,3.7.2 Petri网 Petri网是德国人CAPetri于1962年提出的,它是一种使用图形方式对系统进行需求规格说明的技术,不仅能够描述同步模型,而且适用于描述相互独立、协同工作的处理系统,即并发系统。目前,Petri网在硬件、软件等领域都得到了广泛的应用,已经大量地应用于各种系统的模型化。在形式

19、上,Petri网通常被描述为一张有向图。Petri网的图简称为PNG(Petri Net Graph)。在PNG中,组成的基本符号有三类,符号及其对应的含义如表3.6所示。,表3.6 Petri网中的基本符号及含义,将Petri网用于需求分析阶段的系统行为建模,可以使系统中时间之间的因果相关性及不相关性得到清楚的描述。虽然Petri网和状态迁移图同样都是通过一些定义好的状态来描述系统的行为,但Petri网更适用于并发系统的描述。,图3.7 描述静态系统的Petri网,图3.8 采用Petri网描述系统动态行为的状态变迁图 初始状态;(b) 激发t1之后;(c) 激发t2之后;(d) 同时激发t

20、1和t2之后,3.8 加工逻辑的描述 为了能够直观、明确地表达加工逻辑,经常采用结构化语言、判定树及判定表等三种描述方法。,1. 结构化语言 结构化语言是一种介于自然语言和形式化语言之间的半形式化语言,例如,对计算应发工资条目中加工逻辑的描述就是采用的结构化语言。它是在自然语言的基础上加入了一定的限制,通过使用有限的词汇和有限的语句来较为严格地描述加工逻辑。描述时可以使用的词汇包括:数据字典中定义的名字、基本控制结构中的关键词、自然语言中具有明确意义的动词和少量的自定义词汇等。尽量不使用形容词或副词,可以使用一些简单的算术或逻辑运算符。结构化语言中的三种基本结构的描述方法如下:,(1) 顺序结

21、构:由自然语言中的简单祈使语句序列构成。 (2) 选择结构:通常采用IFTHENELSEENDIF和CASEOFENDCASE结构。 (3) 循环结构:通常采用DO WHILEENDDO和REPEATUNTIL结构。,2. 判定表 判定表通常由用双线分隔开的四个部分构成:左上部用于列出所有相关的条件;左下部用于列出所有可能产生的动作;右上部用于列出所有可能的条件组合;右下部用于列出在各种组合条件下需要进行的动作。 通常把表中任意一个条件组合的特定取值及其相应要执行的动作称为规则。判定表的一般格式如下所示。,下面以描述某单位工资档案管理系统中“职务津贴计算”加工逻辑为例说明判定表的写法。由于篇幅

22、限制,在下面的例子中假定职工的职称只分为助工、工程师和高工三种,对应的判定表见下表。,表: “职务津贴计算”判定表,3. 判定树 判定树是判定表的图形表示,它与判定表的作用大致相同,但比判定表更加直观,更易于理解和掌握。例如,图3.9是采用判定树对“基本奖金计算”加工逻辑的描述。,图3.9 “基本奖金计算”判定树,判定树虽然形式上比判定表直观,但逻辑上没有判定表严格,用户在使用判定树时容易造成个别条件的遗漏。 由于三种描述方法具有的不同特点,因而在实际的软件开发工作中,结构化语言、判定表和判定树通常被混合使用。对于顺序结构和循环结构采用结构化语言进行描述;对于存在多个条件组合的复杂判定问题采用

23、判定表或判定树进行描述。,3.9 结构化需求分析的若干技术,传统软件工程中的需求分析方法主要包括原型化分析方法和结构化分析方法等。其中,结构化分析方法的出现最早,其应用也最为广泛,在设计阶段还能与结构化设计方法很好地衔接起来,构成结构化分析与设计方法,即SADT方法。本节将简要介绍采用结构化分析方法进行需求分析的技术。,结构化分析(Structure Analysis)方法,简称SA方法,是在20世纪70年代由美国Yourdon E.等人提出的一种面向数据流进行需求分析的方法。这种方法简单实用,适合于加工类型软件系统的需求分析工作,尤其是信息管理类型的应用软件的开发。由于结构化分析方法中利用许

24、多图形工具来表达系统的需求,使需求模型清晰、简洁、易读、易修改,因此在软件开发中得到了广泛的应用,相应的支持工具也较多。,图3.10 系统的顶层数据流图,图3.11 “自顶向下,逐步分解”过程示意图,结构化分析方法主要使用了数据流图和数据字典等几个工具描述系统的需求信息,这些工具我们已经在前面分别进行了介绍。其中,数据流图作为一种用于表达数据在系统中流动情况的图形工具,可以形象、直观地描述系统功能的分解过程;数据字典是对数据流图中数据的格式与内容进行定义的数据集合,此外在数据字典中还能够对数据流的加工进行描述,加工的表达可以采用结构化语言、判定表或判定树的形式。,3.10 验证软件需求,3.1

25、0.1 软件需求规格说明的主要内容 需求分析阶段的最后一步工作是将对系统分析的结果用标准化的文档,即软件需求规格说明书的形式清晰地描述出来,以此作为审查需求分析阶段工作完成情况的依据和设计阶段开展工作的基础。需求规格说明书是系统所有相关人员,包括用户和开发人员对软件系统共同理解和认识的表达形式,是需求分析阶段最重要的技术文档。,需求规格说明书中应包括如下主要内容: (1) 引言:用于说明项目的开发背景、应用范围,定义所用到的术语和缩略语,以及列出文档中所引用的参考资料等。 (2) 项目概述:主要包括功能概述和约束条件。功能概述用于简要叙述系统预计实现的主要功能和各功能之间的相互关系;约束条件用

26、于说明对系统设计产生影响的限制条件,如管理模式、用户特点、硬件限制及技术或工具的制约因素等。,(3) 具体需求:主要包括功能需求、接口定义、性能需求、软件属性及其他需求等。功能需求用于说明系统中每个功能的输入、处理、输出等信息,主要借助于数据流图和数据字典等工具进行表达;接口定义用于说明系统软/硬件接口、通信接口和用户接口的需求;性能需求用于说明系统对包括精度、响应时间、灵活性等方面的性能要求;软件属性用于说明软件对可使用性、安全性、可维护性及可移植性等方面的需求;其他需求主要指系统对数据库、操作及故障处理等方面的需求。,3.10.2 软件需求的验证 因需求分析阶段取得的成果是软件设计和软件实

27、现的重要基础,一旦前期的需求分析中出现了错误或遗漏,就会导致后期的开发工作停滞不前或人力、物力的巨大浪费,甚至造成软件开发工作失败的严重后果。大量统计数字表明,软件系统中有大约15?的错误起源于错误的需求。为了提高软件质量,降低软件开发成本,确保软件开发的顺利进行,对获取的系统需求必须严格地进行验证,以保证需求的正确性。需求验证一般应从下述四个方面进行。,1. 验证需求的一致性 所谓一致性,是指目标系统中的所有需求应该是和谐统一的,任何一条需求不能和其他需求互相矛盾。当需求分析的结果是用非形式化的方法。为了克服非形式化需求说明难以验证的困难,人们提出了描述软件需求的形式化方法。当软件需求规格说明书是用形式化的需求描述语言书写的时候,可以用软件工具来验证需求的一致性。,2. 验证需求的完整性 完整性是指目标系统的需求必须是全面的,需求规格说明书中应包括用户需求的每一个功能或性能。由于软件开发人员获得的需求信息主要来源于用户,而许多时候用户并不能清楚地认识到他们的需求,或不能有效地表达他们的需求,大多数用户只有在面对目标软件系统时,才能完整、确切地表述他们的需求,因此需求的完整性常常难以保证。

温馨提示

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

评论

0/150

提交评论