需求分析

Posted tianxiafeiyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需求分析相关的知识,希望对你有一定的参考价值。

  需求分析是软件定义时期的最后一个阶段,它的基本任务是准确回答 “系统必须做什么?”。

  需求分析的任务还不是确定系统怎样完成它的任务,而仅仅是确定系统必须完成那些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

  需求分析的基本准则:

    (1)必须理解并描述问题的信息域,并建立数据模型。

    (2)必须定义软件应完成的功能,并建立功能模。

    (3)必须描述作为外部事件结果的软件行为,建立行为模型。

    (4)对数据、功能、行为模型进行分解,用层次的方法展示细节。

一、需求分析的任务

(1)确定对系统的综合要求

  1、功能需求

  2、性能需求

  3、可靠性和可用性需求

  4、出错处理需求

  5、接口需求

  6、约束(精度;工具和语言;设计约束了;标准约束等)

  7、逆向需求(说明软件不应该做什么)

  8、将来可能提出的要求

(2)分析系统的数据要求

  软件系统本质上都是信息处理系统。

  数据字典定义数据,图形工具辅助描绘数据结构(层次方框图,Warnier图)。

(3)导出系统的逻辑模型

   综合上述两项分析的结果可以导出系统详细的逻辑模型,通常用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述逻辑模型。

(4)修正系统开发计划

 

 

实体—联系图(ER图)

数据规范化:

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

  第二范式:满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。

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

多数场合使用第三范式。

同理,数据库的三大范式:

◆ 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 
考虑这样一个表:【联系人】(姓名,性别,电话) 
如果在实际场景中,一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF。要符合 1NF 我们只需把列(电话)拆分,即:【联系人】(姓名,性别,家庭电话,公司电话)。


◆ 第二范式(2NF):首先是 1NF,另外包含两部分内容,① 表必须有一个主键;② 没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。 (一个表只描述一件事情)。
考虑一个订单明细表:【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName)。
因为我们知道在一个订单中可以订购多种产品,所以单单一个 OrderID 是不足以成为主键的,主键应该是(OrderID,ProductID)。显而易见 Discount(折扣),Quantity(数量)完全依赖(取决)于主键(OderID,ProductID),而 UnitPrice,ProductName 只依赖于 ProductID。所以 OrderDetail 表不符合 2NF。不符合 2NF 的设计容易产生冗余数据。
可以把【OrderDetail】表拆分为【OrderDetail】(OrderID,ProductID,Discount,Quantity)和【Product】(ProductID,UnitPrice,ProductName)来消除原订单表中UnitPrice,ProductName多次重复的情况。


◆ 第三范式(3NF):首先是 2NF,另外① 非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。(表中的每一列只能依赖于主键)。
考虑一个订单表【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)主键是(OrderID)。
其中 OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity 等非主键列都完全依赖于主键(OrderID),所以符合 2NF。不过问题是 CustomerName,CustomerAddr,CustomerCity 直接依赖的是 CustomerID(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合 3NF。
通过拆分【Order】为【Order】(OrderID,OrderDate,CustomerID)和【Customer】(CustomerID,CustomerName,CustomerAddr,CustomerCity)从而达到 3NF。

以上是关于需求分析的主要内容,如果未能解决你的问题,请参考以下文章

测试需求分析

01——驾校科目一考试系统——需求分析

如何进行管理信息系统需求调研分析

[需求管理-7]:需求分析 - 如何进行有商业价值需求的技术影响分析?

软件测试体系学习及构建(16)-测试活动之需求分析

需求分析