软件工程导论——第三章——需求分析

软件工程导论——第三章——需求分析

1、需求分析的相关概念

(1)定义:

需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题,即对目标系统提出完整、准确、清晰、具体的要求。在需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确地描述软件需求。

(2)必要性:

为了开发出真正满足用户需求的软件产品,首先必须要知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的前提,不了人们把设计和编码工作做的多么出色,不能真正满足用户需求的程序只会令用户失望,给开发者带来烦恼。

(3)准则:

  1. 必须理解并描述问题的信息域,根据这条准则应该建立数据模型
  2. 必须定义软件必须完成的功能,这条准则要求建立功能模型
  3. 必须描述外部事件结果的软件行为,这条准则要求建立行为模型
  4. 必须对描述信息、功能和行为的模型进行分析,用层次的方式展示细节。

2、需求分析的任务

1、确定系统的综合要求

  1. 功能需求:功能需求指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。
  2. 性能需求:性能需求指定系统必须满足的定时约束或容量约束,通常包括速度(响应时间)、信息量速率、主存储量、磁盘容量、安全性等方面的需求
  3. 可靠性和可用性需求:可靠性需求定量地指定系统的可靠性;可用性欲可靠性密切相关,它量化了用户可以使用系统的程度。
  4. 出错处理需求:出错处理需求说明系统对环境错误应该怎样响应。在某些情况下,“出错处理”指的是当应用系统发现他自己犯下一个错误时所采取的行动。总之,对应用系统本身错误的检测应该仅限于系统的关键部分,而且要你管管尽可能少。
  5. 接口需求:接口需求描述应用系统与他的环境通信的格式。常见的接口需求有:用户接口需求,硬件接口需求,软件接口需求,通信接口需求
  6. 约束:设计约束和实现约束描述在设计和实现应用系统时应该遵守的限制条件。常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准,应该使用的硬件平台
  7. 逆向需求:逆向需求通常说明软件系统不应该做什么。理论上有无数个逆向需求,应该选取能澄清真实需求且可消除发生误解的逆向需求。
  8. 将来可能提出的需求:目的是在设计过程中对系统将来可能的扩展和修改预先做好准备,以便一旦确定需要时能比较容易进行这种扩充和修改

2、分析系统的数据要求

(1)意义:任何一个软件系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌。因此,必须分析系统的数据要求,这是软件需求分析的一个重要任务。

(2)工具:分析系统的数据要求通常采用建立数据模型的方法。复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系。利用数据字典可以全面准确的定义数据,但是数据字典的缺点是不够直观形象,

(3)规范:软件系统经常使用各种长期保存的信息,为了减少数据冗余,避免出现插入异常和删除异常,简化修改数据的过程,通常需要把数据结构规范化。

3、导出系统的逻辑模型

4、修正系统开发计划

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

(1)访谈

基本形式:

  • 正式访谈:系统分析员将提出事先准备好的具体问题
  • 非正式访谈:分析员将提出一些用户可以自由回答的开放性问题,鼓励被访问任意说出自己的想法

技术方法:

  • 调查表技术
  • 情景分析技术:
    • 概念:
      • 情景分析是对用户将来使用目标系统解决某个问题的方法和结果进行分析。系统分析员利用情景分析技术,往往能够获取用户的具体需求
    • 作用:
      • 第一,能在某种程度上演示目标系统的行为,从而便于用户理解,还可能进一步揭示出一些分析员目前还不知道的需求
      • 第二,使用这种技术能保证用户在需求分析过程中始终扮演一个积极主动的角色。

(2)面向数据流自顶向下求精

定义:
结构化分析方法是面向数据流自顶向下逐步求精进行需求分析的方法。通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级。

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

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

(2)优点:

  • 开发者与用户不分彼此,齐心协力,密切合作
  • 即时讨论并求精,有能导出规格说明的具体步骤。

(4)快速建立软件

(1)定义:快速原型是快速建立起来的旨在演示目标系统主要功能的可运行的程序。构建原型的要点是,它应该实现用户看得见的功能,省略目标系统的隐含功能。快速建立软件原型是最准确、最有效、最强大的需求分析技术。

(2)特性:

  1. 快速
    快速原型的目的是尽快向用户提供一个可在计算机上运行的目标系统的模型,以便使用户和开发者在目标系统应该做什么,这个问题上尽可能快速的达成共识。因此,原型的某些缺陷是可以忽略的,只要这些缺陷不严重的损害原型的功能,不会使用户对产品的行为产生误解,就不必管他们。
  2. 容易修改:
    如果原型的第一版不是用户所需要的,就必须根据用户的意见迅速的修改它,构建出原型的第二版,以更好地满足用户需求,在实际开发软件产品时,原型的“修改试用反馈”过程可能重复多变,如果修改耗时过多,势必会厌恶软件开发时间

(3)使用的方法和工具

  • 第四代技术
  • 柯重阳的软件构件
  • 形式化规格说明和原型环境

4、分析建模与规格说明

1、分析建模

(1)模型:模型是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。模型由一组图形符号和组织这些符号的规则组成。

(2)建模过程:
结构化分析实质上是一种创建模型的活动。为了开发出复杂的软件系统,系统分析员应该从不同角度抽象目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足用户对目标系统的需求,并在设计过程中逐渐把实现有关的细节加进模型中,直到最终用程序实现模型

2、软件需求规格说明

软件需求规格说明书是需求分析阶段得出的最主要的文档。通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。自然语言的规格说明具有很容易书写、容易理解的优点。

5、实体-联系图

1、数据模型 的定义

为了把用户的数据要求清楚、准确地描述出来,通常建立一个概念性的数据模型(信息模型)。概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。它描述了从用户角度看到的数据,它反映了用户的现实环境,而且与在软件系统中的实现方法无关。

2、数据模型的构成

数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互关联的关系

(1)数据对象

定义:
数据对象是对软件必须理解的复合信息的抽象。复合信息是指具有一系列不同性质或属性的事物,仅有单个值的事物不是数据对象。

特点:

  • 可由一组属性来定义的实体都可以被认为是数据对象
  • 数据对象彼此间是有关联的。
  • 数据对象只封装了数据而没有对施加于数据上的操作的引用,这也是数据对象与面向对象范型中的“类”或“对象”的显著区别
(2)属性

属性定义了数据对象的性质。必须把一个或多个属性定义为标识符,即当希望找到数据对象的一个实例时,用标识符属性作为“关键字”。应该根据对所要解决的问题的理解,来确定特定数据对象的一组合适的属性。

(3)联系

数据对象彼此之间相互连接的方式称为联系,也称为关系。联系也可能有属性。联系可分为以下三种类型:

  1. 一对一联系(1:1)
  2. 一对多联系(1:N)
  3. 多对多联系(M:N)

3、实体——联系图的符号

使用实体联系图来建立数据模型。可以把实体─联系图简称为E—R图,把用E—R图描绘的数据模型称为E—R模型。

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

6、数据规范化

1、必要性:

软件系统与经常使用各种长期保存的信息,这些信息通常以一定方式组织并存储在数据库或文件中,为减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化。

2、范式特点:

①通常用“范式”定义消除数据冗余的程度。第一范式数据冗余程度最大,第五范式数据冗余程度最小。

②范式级别越高,存储同样数据就要分解成更多张表,“存储自身”的过程也就越复杂。

③随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降,故在需求变化时数据的稳定性较差。

④范式级别提高则需要访问的表增多,因此性能将下降。一般选用第三范式都比较恰当

3、各范式的定义:

①第一范式每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。

②第二范式满足第一范式条件,而且每个非关键字属性都由整个关键字决定。

③第三范式符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述,即一个非关键字属性值不依赖于另一个非关键字属性值。

7、状态转换图

1、定义

状态转换图(状态图)通过描绘系统的状态及引起系统状态转换的时间,来表示系统的行为,状态图还提供了行为建模机制,指明了作为特定事件的结果系统将做哪些动作。

2、状态

(1)定义:

​ 状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态规定了系统对事件的响应方式。系统对事件的响应,既可以是做一个(或做一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。

(2)分类:

状态主要有:初态(初始状态)、终态(最终状态)和中间状态。在一张状态图中只能有一个初态,而终态可以有0个或多个。

(3)表示:

状态图既可以表示系统循环运行过程,也可以表示系统单程生命周期。

  • 描绘循环运行过程:通常并不关心循环是怎么启动的
  • 描绘单程生命周期:需要标明初始状态和最终状态。

3、事件

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

4、状态图的符号

(1)符号的表示方法

  • 初态:用实心圆表示
  • 终态:用一对同心圆(内圆为实心圆)表示
  • 中间状态:用圆角矩形表示,可以用两条水平横线把它分为上中下三个部分。上面部分为状态的名称,这部分是必须有的;中间部分阿伟状态变量的名字和值,下面部分是活动表。

8、层次方框图

(1)定义:

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

(2)特点:

随着结构的精细化,层次方框图对数据结构也描绘得越来越详细,这种模式非常适合需求分析阶段的需要。系统分析员从顶层信息的分类开始,沿图中每条路径反复细化,直到确定了数据结构的全部细节为止。

9、验证软件需求

1、验证软件需求的正确性

(1)验证需求正确性的目的

需求分析阶段的工作结果是开发软件系统的重要基础。为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性。

(2)进行验证的四个方面

  1. 一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。
  2. 完整性:需求必须是完整的,规格说明书应该包含用户需要的每一个功能或性能。
  3. 现实性:指定的需求应该是现有的硬件技术和软件技术基本上可以实现的
  4. 有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。

2、用于需求分析的软件工具

(1)要求
为了更有效地保证软件需求的正确性,特别是为了保证需求的一致性,需要有适当的软件工具支持需求分析工作。这类软件工具应该满足下列要求。
①必须有形式化的语法(或表),因此可以用计算机自动处理使用这种语法说明的内容。

②使用这个软件工具能够导出详细的文档。

③必须提供分析(测试)规格说明书的不一致性和冗余性的手段,并且应该能够产生一组报告指明对完整性分析的结果。

④使用这个软件工具之后,应该能够改进通信状况。

10、为什么要进行需求分析?通常对软件系统有哪些需求?

需求分析的原因:

为了开发真正满足用户需求的软件产品,需求分析是软件开发工作获得成功的前提条件,不能满足用户需求的程序只会令用户失望,给开发者带来烦恼。

对软件系统的需求:

功能需求、性能需求、可靠性和可用性需求、出错处理、接口需求、约束、逆向需求、将来可能提出的要求。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

允谦呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值