软件工程-第三章-需求分析

  • 3. 需求分析
    • 3.1 需求分析的任务
    • 3.2 与用户沟通获取需求的方法
    • 3.3 分析建模与规格说明
      • 3.3.1 分析建模
      • 3.3.2 软件需求规格说明
    • 3.4 实体-联系图
      • 3.4.1 数据对象
      • 3.4.2 属性
      • 3.4.3 联系
      • 3.4.4 实体-联系图的符号
    • 3.5 数据规范化
    • 3.6 状态转换图
    • 3.7 其他图形工具
      • 3.7.1 层次方框图
      • 3.7.2 Wainier 图
      • 3.7.3 IPO 图
    • 习题

3. 需求分析

3.1 需求分析的任务

  1. 确定对系统的综合要求

    • 功能需求
    • 性能需求
    • 可靠性和可用性需求
    • 出错处理需求
    • 接口需求
    • 约束
    • 逆向需求
    • 将来可能提出的要求
  2. 分析系统的数据要求
  3. 导出系统的逻辑模型
  4. 修正系统开发计划

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

  1. 访谈
  2. 面向数据流自顶向下求精
  3. 简易的应用规格说明技术
  4. 快速建立软件原型

3.3 分析建模与规格说明

3.3.1 分析建模

模型:就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。
需求分析过程应该建立的三种模型:数据模型、功能模型和行为模型。

  • 实体-联系图:描绘数据对象、数据对象的属性及数据对象之间的关系,用于建立数据模型。
  • 数据流图:描绘当数据在软件系统中流动和被处理的逻辑过程,是建立功能模型的基础。
  • 状态转换图:描绘了系统的状态及引起状态转换的事件,是建立行为模型的基础。

3.3.2 软件需求规格说明

通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。

3.4 实体-联系图

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

3.4.1 数据对象

可以由一组属性来定义的实体都可以被认为是数据对象。

数据对象彼此间是有关联的。

数据对象与面向对象范型中的“类”或“对象”的显著区别:数据对象值封装了数据而没有对施加于数据上的操作的引用。

3.4.2 属性

属性定义了数据对象的性质。

3.4.3 联系

  1. 一对一联系
  2. 一对多联系
  3. 多对多联系

3.4.4 实体-联系图的符号

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

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

3.5 数据规范化

通常以一定方式组织并存储在数据库或文件中,为减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化。

实体-联系图:描绘数据对象、数据对象的属性及数据对象之间的关系,用于建立数据模型。

  1. 第一范式:每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。
  2. 第二范式:满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。
  3. 第三范式:符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述(即一个非关键字属性值不依赖于另一个非关键字属性值)

3.6 状态转换图

描绘了系统的状态及引起状态转换的事件,是建立行为模型的基础。

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

3.7 其他图形工具

3.7.1 层次方框图

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

3.7.2 Wainier 图

图中花括号用来区分数据结构的层次,在一个花括号内的所有名字都属于同一类信息;异或符号(⊕)表明一类信息或一个数据元素在一定条件下才出现,而且在这个符号上、下方的两个名字所代表的数据只能出现一个;在一个名字下面(或右边)的圆括号中的数字指明了这个名字代表的信息类(或元素)在这个数据结构中重复出现的次数。

3.7.3 IPO 图

习题

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

需求分析是一个发现、求精、建模、规格说明和复审的过程,我们进行需求分析是为了发现系统中可能存在的问题,以及确定系统必须完成的工作,为了更好的满足用户的真正需求。我们所做的一切都是为了能够真正的满足用户需求。

需求分析通常对软件系统有一下需求:

1.功能需求,即指定系统必须提供的服务;

2.性能需求,即指定系统必须满足的定时约束或者容量约束;

3.可靠性和可用性需求,即定量地指定系统的可靠性以及量化用户可以使用系统的程度;

4.出错处理需求,即说明系统对环境错误应该怎样响应;

5.接口需求,即描述应用系统与它的环境通信的格式;

6.约束,即设计约束或实现约束在设计或实现应用系统时应遵守的限制条件;

7.逆向需求,即说明软件系统不应该做什么;

8.将来可能提出的要求,即明确的列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求;

  1. 怎样与用户有效地沟通以获取用户的真实需求?
  • 访谈
  • 面向数据流自顶向下求精
  • 简易的应用规格说明书
  • 快速建立软件原型

软件工程-第三章-需求分析相关推荐

  1. 软件工程--第三章--需求分析

    文章目录 文档 研究内容 方法:结构化分析法 任务 系统的综合需求 系统的数据需求 导出逻辑模型 修正系统开发计划 获得需求的方法 分析建模 需求分析的其他图形工具 层次方框图 Warnier图 IP ...

  2. 软件工程技术--第三章 需求分析

    第三章 需求分析 需求分析 ​ 需求分析的任务是要准确地定义新系统的目标,准确回答"系统必须做什么"的问题,并用需求规格说明书规范的形式准确地表达用户的需求. ​ 虽然在可行性研究 ...

  3. 读软件工程前三章后感

    "再多读一次",这是我读完一到三章之后的第一想法,自我发现悟性不高,相信下一次阅读会有新的感悟以及收获. 第一章中作者极尽通俗之力,告诉读者何为软件工程,善用例子,让读者能一点就通 ...

  4. 软件工程 第三章:类图

    第三章:类图 概念 类图的概念:类图是描述类.接口以及它们之间关系的图,它显示了系统中各个类的静态结构,是一种静态模型. 分类可以有效地使复杂问题简化.建立类模型的过程,是把现实世界中与问题有关的各种 ...

  5. (软件工程复习核心重点)第三章需求分析习题

    文章目录 一:选择题 二:填空题 三:名词解释 (1)必考 四:简答题 (1)必考 (2)了解 五:应用题/画图题 一:选择题 二:填空题 需求分析的任务 确定对系统的综合要求 分析系统的数据要求 导 ...

  6. (软件工程复习核心重点)第三章需求分析-第五节:验证软件需求

    文章目录 一:验证需求正确性的四个方面 二:验证软件需求的方法 三:用于需求分析的软件工具 (1)要求(了解) (2)PSL/PSA系统 一:验证需求正确性的四个方面 一致性:所有需求必须是一致的,任 ...

  7. (软件工程复习核心重点)第三章需求分析-第一节:需求分析相关概念

    文章目录 一:需求分析相关概念 (1)定义 (2)必要性(了解) (3)准则 二:需求分析的任务 (1)确定对系统的综合要求 (2)分析系统的数据要求 A:意义(了解) B:工具 (3)导出系统的逻辑 ...

  8. 软件工程(速成)——第三章 需求分析

    一.需求分析 1.需求分析的概念与任务: 需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答"系统必须做什么"这个问题. 二.分析建模与规格说明 需求分析应该建立三种模 ...

  9. (软件工程复习核心重点)第三章需求分析-第三节:状态转换图

    文章目录 一:定义(了解) 二:符号表示 一:定义(了解) 状态转换图(状态图) :通过描绘系统的状态及引起系统状态转换的事件来表示系统的行为.状态图还提供了 行为建模机制,指明了作为特定事件的结果系 ...

  10. (软件工程复习核心重点)第三章需求分析-第四节:其他图形工具

    文章目录 一:层次方框图 二:Warnier图 三:IPO图 一:层次方框图 用树形结构的一系列矩形框描绘数据的层次结构 优点:随着结构的逐步精细,对数据结构的描绘也越来越详细 二:Warnier图 ...

最新文章

  1. python无限循环条件循环_python 语句,条件,循环
  2. 使用SHA256证书进行微软数字签名代码签名
  3. pythonjson数据提取_python爬虫学习笔记(十)-数据提取之JsonPath的使用
  4. [Vue.js] 路由 -- 前端路由
  5. oracle 表空间 归档,oracle数据库表空间及归档
  6. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_2 连接池介绍
  7. 微信小程序从入门到放弃(五)
  8. Mac删除文件时显示“不能完成此操作,因为项目‘xxxx’正在使用中”(添加/删除新用户引发的问题)
  9. Kinect Fusion三维重建
  10. 8个免费在线编程游戏网站,让每个人都可以学习编程
  11. association weak 属性
  12. 袁萌浅谈C919大飞机(五)
  13. Console.read()、Console.readline()、Console.readkey()和Console.Write、Console.Writeline()的意思
  14. window 结束进程命令
  15. 网易企业邮箱删除的的邮件服务器,网易企业邮箱进行全选删除移动操作步骤说明...
  16. 数商云采购管理系统方案助力采购平台:缩短采购周期、降本增效
  17. Fiddler如何进行弱网测试
  18. (C语言)求矩阵各行元素之和
  19. Windows内核开发初步
  20. [Android编译(二)] 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

热门文章

  1. linux环境搭建之tftp tftpd服务器
  2. 明解c语言中级篇微盘,明解C语言:中级篇
  3. InletexEMC共享Windows屏幕的永久免费软件
  4. 海思3559万能平台搭建:YUV422的踩坑记录
  5. Matlab机器学习和深度学习APP之Regression Learner
  6. 入门JSP第一步,看这里~
  7. xbox win10测试软件,UWP APP可通过Win10商店直接安装至XboxOne主机
  8. HLW8012电能测量芯片使用记录
  9. CUDA优化之PReLU性能调优
  10. 图像处理库 FreeImage的简述