软工导论第三章 需求分析

对软件需求的深人理解是软件开发工作获得成功的前提条件,不论人们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发者带来烦恼。(意义)

需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答"系统必须做什么"这个问题。(目的)

文章目录

[3.1 需求分析的任务](#3.1 需求分析的任务)

[3.1.1 确定对系统的综合要求](#3.1.1 确定对系统的综合要求)

[3.2 与用户沟通获取需求的方法](#3.2 与用户沟通获取需求的方法)

1.访谈

2.面向数据流自顶向下求精

3.简易的应用规格说明技术

4、快速建立软件原型

[3.3 分析建模与规格说明](#3.3 分析建模与规格说明)

1.分析建模

2.软件需求规格说明

[3.4 实体-联系图](#3.4 实体-联系图)

[3.6 状态转换图](#3.6 状态转换图)

1.状态

2.事件

[3.7 其他图形工具](#3.7 其他图形工具)

1.系统流程图

2.层次方框图

[3.Warnier 图](#3.Warnier 图)

[4.IPO 图](#4.IPO 图)

[3.8 验证软件需求](#3.8 验证软件需求)


3.1 需求分析的任务

3.1.1 确定对系统的综合要求

  • 功能需求(系统必须提供的服务)
  • 性能需求(系统必须满足的定时约束或容量约束)
  • 可靠性和可用性需求
  • 出错处理需求(对环境错误应该怎样响应)
  • 接口需求(它的环境通信的格式)
  • 约束
  • 逆向需求(不应该做什么)
  • 将来可能提出的要求(不属于当前系统开发范畴)

需求分析的方法:

  • 功能分析法
  • 结构化分析法
  • 信息建模法
  • 面向对象分析法

3.2 与用户沟通获取需求的方法

分析员和用户都起着关键的、必不可少的作用。用户与分析员之间需要沟通的内容非常多,在获取和分析软件需求的过程中,在双方交流信息的过程中很容易出现误解或遗漏,也可能存在二义性。因此,不仅在个需求分析过程中应该采用行之有效的通信技术,集中精力做细致的工作,而且必须严格审查、验证需求分析的结果。

分析员与用户沟通进行需求分析的典型方法如下所述。

1.访谈

访谈是最早开始使用的获取用户需求的方法,也是迄今为止仍然广泛使用的需求分析方法。

访谈有两种基本形式,分别是正式的和非正式的访谈。

当需要调查大量人员的意见时,请被调查人填写调查表是十分有效的做法。

在访问用户的过程中使用情景分析技术往往非常有效。所谓情景分析,就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析。系统分析员利用情景分析技术往往能够获知用户的具体需求。

2.面向数据流自顶向下求精

结构化分析方法实质上就是,面向数据流自顶向下逐步求精进行需求分析的方法。

通过可行性研究已经得出了目标系统的高层数据流图,需求分析的一个主要目标就是把数据流和数据存储定义到元素级。为了达到这个目标,通常从数据流图的输出端着手分析。

3.简易的应用规格说明技术

简易的应用规格说明技术是一种面向团队的需求收集技术。这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同的方案并指定基本需求。目前,这种技术已经成为信息系统领域使用的主流技术。

4、快速建立软件原型

快速建立软件原型是最准确、最有效、最强大的需求分析技术。所谓软件原型,就是快速建立起来的旨在演示目标系统主要功能的可运行的程序。

构建软件原型的要点是,它应该实现用户看得见的功能,省略目标系统的"隐含功能。

软件原型应该具有的第一个特性是"快速",第二个特性是"容易修改"。

3.3 分析建模与规格说明

1.分析建模

为了更好地理解复杂事物,人们通常采用建立事物模型的方法。所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。

尽管目前有许多不同的用于需求分析的结构化分析方法,但是,多数方法都遵守下述准则。

(1)必须理解并描述问题的信息域,根据这条准则应该建立数据模型

(2)必须定义软件应完成的功能,这条准则要求建立功能模型。

(3)必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型

(4)必须对描述目标系统信息功能和行为的模型进行分解,用层次的方式展示细节

2.软件需求规格说明

通过需求分析除了创建分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要文档。

通常用自然语言完整、准确、具体地描述对目标系统的需求,这样的规格说明书具有容易书写、容易理解的优点。

为了消除用自然语言书写的软件需求规格说明书中可能存在的不一致、歧义、含糊不完整及抽象层次混乱等问题,有些人主张用形式化方法描述用户对软件的需求。

3.4 实体-联系图

为了把用户的数据要求清楚、准确地描述出来,系统分析员通常建立一个概念性的数据模型。概念性数据模型是一种面向问题的数据模型,它描述了从用户角度看到的数据

通常,使用实体-联系图来建立数据模型。可以把实体-联系图简称为ER图,相应地可以把用ER图描绘的数据模型称为ER模型。

ER图中包含了实体(即数据对象)关系和属性三种基本成分。通常用矩形框代表实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体或关系的属性并用直线把实体(或关系)与其属性连接起来。

3.6 状态转换图

状态转换图(简称为状态图)通过描绘系统状态及引起系统状态转换的事件来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。因此,可以用状态图建立软件系统的行为模型。

1.状态

状态图:状态、状态的转换、引起状态转换的事件

一个类的对象里面的一个枚举类型的数据成员,在整个生命周期中所有可能的状态,以及状态的转化、引起状态转换的事件(他有哪些取值?什么状态会改变这些值?那些函数可以改变这些值?)

状态是可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。

在状态图中定义的状态主要有初态、终态和中间状态。在一张状态图中只能有一个初态,而终态则可以有0至多个。

在状态图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下三个部分,分别放置状态名、状态变量和活动表。

2.事件

事件是在某个特定时刻发生的事情,它是对引起系统做动作或(和)从一个状态转到另一个状态的外界事件的抽象。

状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换的方向。状态转换通常是由事件触发的,在这种情况下应该在表示状态转换的箭头线上标出触发转的事件表达式。

3.7 其他图形工具

1.系统流程图

在进行可行性研究时,需要了解和分析现有的系统,并以概括的形式表达对现有系续的认识;在可行性研究及设计阶段,需要把设想的新系统逻辑模型转变成物理模型,因必须措绘未来物理系统的摄貌、

系统流程图是概括地描绘物理系统的传统工具,它用图形符号以黑盒子形式描绘组成系统的每个具体部件。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此,它是物理数据流图而不是程序流程图。

2.层次方框图

层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面各层矩形框代表这个数据的组成部分,最底层的各个框代表组成这个数据的实际数据元素。

3.Warnier 图

Warnier图也用树形结构描绘信息,但是它提供的描绘手段比层次方框图更丰富。用 Warnier图可以清楚地描绘信息的逻辑结构,也就是说,它可以表明一个(或一类)信息元素是重复出现的,也可以表示特定信息在某一类信息中是有条件地出现的。因为重复和条件约束是说明软件处理过程的基础,所以很容易把Warnier图转变成软件设计的工具。

Warnier图用花括号的开括号来区分数据结构的层次,在一个开括号内的所有名字都属于同一类信息,一个名字下方(或右侧)的圆括号中的数字标明了这个名字代表的信息类(或元素)在这个数据结构中出现的次数。

4.IPO 图

IPO图是输入、处理和输出图的简称,它能够方便地描绘输人数据、对数据的处理和输出数据之同的关系,可以用来描述数据流图中处理框的功能,也可以描述程序模块的功能或实现算法。

3.8 验证软件需求

需求分析阶段的工作结果是开发软件系统的重要基础,一旦对目标系统提出完整、具体的要求并写出了软件需求规格说明书之后,就必须严格验证这些需求的正确性。通常从下述4个方面进行验证。

(1)一致性。所有需求必须是一致的,任何一条需求都不能和其他需求相互矛盾。

(2)完整性。需求必须是完整的,软件需求规格说明书应该包含用户对软件产品的每一项要求。

(3)现实性。指定的需求应该是用现有的硬件技术和软件技术可以实现的

(4)有效性。需求必须是有效的,确实能解决用户所面临的问题,可以达到开发该软件的目标。

相关推荐
LIKEYYLL3 分钟前
GNU Octave:特性、使用案例、工具箱、环境与界面
服务器·gnu
云云32139 分钟前
搭建云手机平台的技术要求?
服务器·线性代数·安全·智能手机·矩阵
云云32142 分钟前
云手机有哪些用途?云手机选择推荐
服务器·线性代数·安全·智能手机·矩阵
CircleMouse1 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
木子Linux2 小时前
【Linux打怪升级记 | 问题01】安装Linux系统忘记设置时区怎么办?3个方法教你回到东八区
linux·运维·服务器·centos·云计算
不惑_2 小时前
小白入门 · 腾讯云轻量服务器部署 Hadoop 3.3.6
服务器·hadoop·腾讯云
阿甘知识库3 小时前
宝塔面板跨服务器数据同步教程:双机备份零停机
android·运维·服务器·备份·同步·宝塔面板·建站
zhou周大哥4 小时前
linux 安装 ffmpeg 视频转换
linux·运维·服务器
loong_XL5 小时前
服务器ip:port服务用nginx 域名代理
服务器·tcp/ip·nginx
夕泠爱吃糖5 小时前
C++中如何实现序列化和反序列化?
服务器·数据库·c++