[软件工程导论(第六版)]第3章 需求分析(复习笔记)

news2024/11/15 19:34:21

文章目录

    • 3.1 需求分析的任务
    • 3.2 与用户沟通获取需求的方法
    • 3.3 分析建模与规格说明
    • 3.4 实体-联系图(E-R图)
    • 3.5 数据规范化
    • 3.6 状态转换图
    • 3.7 其他图形工具
    • 3.8 验证软件需求


  • 需求分析是软件定义时期的最后一个阶段,需求分析的基本任务是准确的回答“系统必须做什么”这个问题
  • 需求分析阶段系统分析员需要写出软件需求规格说明书
  • 在需求分析阶段通常建立数据模型(实体 -联系图( E-R 图))、功能模型(数据流图)、行为模型(状态转换图是行为模型的基础),数据字典成为把3种分析模型粘合在一起的“粘合剂”,是分析模型的核心。

3.1 需求分析的任务

  • 需求分析的定义
    • 需求分析是发现、求精、建模、规格说明和复审的过程。
  • 需求分析的必要性
    • 为了开发出真正满足用户需求的成功的软件产品,必须知道用户的需求。
  • 需求分析的任务
    • (1)确定对系统的综合要求;
      • (1)功能需求
      • (2)性能需求
      • (3)可靠性和可用性需求
      • (4)出错处理需求
      • (5)接口需求
      • (6)约束
      • (7)逆向需求
      • (8)将来可能提出的要求
    • (2)分析系统的数据要求;
      • 数据结构表示数据元素之间的逻辑关系
      • 利用数据字典可以全面准确的定义数据(不够形象直观)
      • 在描绘系统中的数据结构,使用层次方框图或Warnier图等图形工具。(提高可理解性)
    • (3)导出系统的逻辑模型;
      • 通常使用数据流图、实体-联系图、状态转换图、数据字典、主要的处理算法描述逻辑模型
    • (4)修正系统开发计划。

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

  • 访谈
    • 正式访谈,系统分析员提出事先准备好的具体问题
    • 非正式访谈,分析员提出用户可以自由回答的开放性问题
  • 面向数据流自顶向下求精
    • 先建立一个初步的系统功能模型,然后按照基本思想,自顶向下,逐步对顶层数据流图进行细分
    • 结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法
  • 简易的应用规格说明技术
    • 进行初步访谈;
    • 开发者和用户分别写出“产品需求”;
    • 选定会议的时间和地点,选举协调人;
    • 邀请开发者和用户双方组织的代表出席会议;
    • 列出系统环境组成部分的对象、系统将产生的对象、系统为完成自己的功能将使用的对象,列出操作这些对象或与这些对象交互的服务,列出约束条件和性能标准;
    • 共同起草完整的软件需求规格说明书
  • 快速建立软件原型
    • 首先通过初步需求,快速建立一个系统原型;然后运行给用户看,用户根据原型提出自己的修改意见,最后程序开发者根据用户的建议,对原型进行修改和完善。如此反复的迭代进行,知道最终建立一个满足用户需求的软件系统为止
    • 特性:快速、容易修改
    • 快速构建和修改原型的方法和工具
      • 第四代技术
      • 可重用的软件构件
      • 形式化规格说明和原型环境

3.3 分析建模与规格说明

  • 分析建模
    • (1)模型
      • 模型由一组图形符号和组织这些符号的规则组成。
      • 为了理解事物而对事物作出的抽象
      • 对事物的一种无歧义的书面描述
    • (2)建模过程
      • 结构化分析实质上是一种创建模型的活动,应从不同的角度抽象目标系统的特性。
    • 实体-联系图:描绘数据对象和数据对象之间的关系,用于建立数据模型的图形
    • 数据流图:描绘当数据在软件系统中移动时被交换的逻辑过程,指明系统具有的变换数据的功能,数据流图是建立功能模型的基础
    • 状态转换图:描绘了系统的各种行为模式(称为状态)和在不同状态间转换的方式,状态转换图是行为建模的基础
  • 软件需求规格说明
    • 软件需求规格说明书是需求分析阶段得出的最主要的文档。

3.4 实体-联系图(E-R图)

  • 数据模型的定义
    • 概念性数据模型(信息模型)是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。
  • 数据模型的构成
  • (1)数据对象
    • ① 定义
      • 数据对象是对软件必须理解的复合信息的抽象。
    • ② 特点
      • a.可以由一组属性来定义的实体都可以被认为是数据对象。
      • b.数据对象彼此间是有关联的。
      • c.数据对象只封装了数据而没有对施加于数据上的操作的引用。
  • (2)数据对象的属性(属性)
    • 属性定义了数据对象的性质。
  • (3)数据对象彼此间相互连接的关系(联系)
    • 数据对象彼此之间相互连接的方式称为联系,也称为关系。
    • 联系也可能有属性。
    • 联系可分为以下3种类型
      • ① 一对一联系(1:1)
      • ② 一对多联系(1:N)
      • ③ 多对多联系(M:N)
  • 实体-联系图(E-R图)
    • 实体-联系图用于建立数据模型
    • ER图描绘的数据模型称为ER模型
    • ER图的基本成分
      • E-R图中包含了实体(数据对象)、关系和属性3种基本成分
      • 通常用矩形框代表实体
      • 用连接相关实体的菱形框表示关系
      • 用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线把实体(或关系)与其属性连接起来。
    • 优点
      • ① E-R模型比较接近人的习惯思维方式;
      • ② E-R模型使用简单的图形符号来描述问题,便于用户理解。
    • ER模型可以作为用户与分析员之间的交流工具
    • 在这里插入图片描述

3.5 数据规范化

  • 数据规范化减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程
  • 使用范式消除数据冗余的程度

3.6 状态转换图

  • 定义
    • 状态转换图(状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
  • 状态
    • (1)定义
      • 状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
    • (2)分类
      • 状态主要有:初态(初始状态)、终态(最终状态)和中间状态。
      • 【注意】在一张状态图中只能有一个初态,而终态则可以有0至多个。描绘单程生命周期时需要标明初始状态和最终状态
  • 事件
    • 事件是在某个特定时刻发生的事情,是对引起系统做动作或从一个状态转换到另一个状态的外界事件的抽象,是引起系统做动作或(和)转换状态的控制信息。
  • 状态图的符号
    • (1)符号的表示方法
      • ① 初态:用实心圆表示。
      • ② 终态:用一对同心圆(内圆为实心圆)表示。
      • ③ 中间状态:用圆角矩形表示。可以用两条水平横线把它分成上、中、下3个部分。上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,下面部分是活动表。
    • (2)组成部分
      • 图给出了状态图中使用的主要组成部分和符号表示。
        • 在这里插入图片描述
      • ① 活动表
        • 活动表的语法格式为:事件名(参数表)/动作表达式
        • 在活动表中经常使用下述3种标准事件:entry,exit和do。entry事件指定进入该状态的动作;exit事件指定退出该状态的动作;do事件则指定在该状态下的动作。
      • ② 状态转换
        • 状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。
        • 状态如果由事件触发,需要在状态转换的箭头上标出触发转换的事件表达式,如果不是由事件触发(执行完内部活动后自动触发)则不用标明。
      • ③ 事件表达式
        • 事件表达式的语法为:事件说明[守卫条件]/动作表达式,其中,事件说明的语法为:事件名(参数表)。
        • 守卫条件是一个布尔表达式
  • 例子
    • 在这里插入图片描述

3.7 其他图形工具

  • 层次方框图

    • 层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。
    • 在这里插入图片描述
  • Warnier 图

    • Warnier图有以下三种基本符号:
      • ① 花括号:用来区分数据结构的层次,在一个花括号内的所有名字都属于同一类信息。
      • ② 异或符号:表明一类信息或一个数据元素在一定条件下才出现。
      • ③ 圆括号中的数字:指明了这个名字代表的信息类在这个数据结构中重复出现的次数。
    • 在这里插入图片描述
  • IPO图

  • (1)定义

    • IPO图是输入、处理、输出图的简称,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。
  • (2)基本形式和用法

    • ① 左边的框中列出有关的输入数据;
    • ② 中间的框内列出主要的处理;
    • ③ 右边的框内列出产生的输出数据;
    • ④ 粗大箭头指出数据通信的情况。
    • 处理框中列出处理的次序暗示了执行的顺序。
    • 在这里插入图片描述
  • (3)改进的IPO图

    • 改进的IPO图(IPO表)中包含某些附加的信息。如图3-2所示,改进的
      IPO图中包含的附加信息主要有系统名称、图的作者,完成的日期,本图描述的模块的名字,模块在层次图中的编号,调用本模块的模块清 单,本模块调用的模块的清单,注释,以及本模块使用的局部数据元素等。
    • 在这里插入图片描述
  • 【注意】要区分并牢记给定图形工具可用于软件生命周期的哪一阶段,此为常考题。本节三种图形工具均可用于需求分析阶段。

3.8 验证软件需求

  • 验证软件需求的正确性
    • (1)验证需求正确性的目的
      • 为了提高软件质量,确保软件开发成功,降低软件开发成本。
    • (2)进行验证的四个方面
      • ① 一致性,需求之间不能相互矛盾;
      • ② 完整性,要实现每一个需求;
      • ③ 现实性,指定的需求是在现有的硬件技术和软件技术的基础上可以实现;
      • ④ 有效性,需求可以解决用户面对的问题。
  • 验证软件需求的方法
    • (1)验证需求的一致性;
    • (2)验证需求的现实性;
    • (3)验证需求的完整性和有效性。
  • 用于需求分析的软件工具——PSL/PSA系统
    • ① 定义
      • PSL是用来描述系统的形式语言,PSA是处理PSL描述的分析程序。
    • ② 功能
      • a.描述任何应用领域的信息系统;
      • b.创建一个数据库保存对该信息系统的描述符;
      • c.对描述符施加增加、删除和更改等操作;
      • d.产生格式化的文档和关于规格说明书的各种分析报告。
    • ③ 优点
      • a.改进了文档质量,能保证文档具有完整性、一致性和无二义性,从而可以- 减少管理和维护的费用;
      • b.数据存放在数据库中,便于增加、删除和更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/355621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EASYui+C#web

第一步创建一个web应用程序。 选择web应用程序。 第二步选择mvc框架 创建完成项目目录。 如图引入easyui包。 记住复制到content文件夹&#xff0c;否则无法识别。 easyui下载&#xff0c;官网。 如何用 引入jscss文件 <link rel"stylesheet" type"text…

Guitar Pro8手机电脑免费版吉他软件下载

Guitar Pro8是专业的吉他软件&#xff0c;具有可视化的五线谱编辑器&#xff0c;涵盖常用的乐器和特殊乐器单元&#xff0c;内置海量吉他音色效果和1000多个乐器音色&#xff0c;成为一个小型音乐站&#xff0c;制作出动听的音乐&#xff0c;支持边看边听&#xff0c;添加音频轨…

【论文阅读】 Few-shot object detection via Feature Reweighting

Few-shot object detection的开山之作之一 ~~ 特征学习器使用来自具有足够样本的基本类的训练数据来 提取 可推广以检测新对象类的meta features。The reweighting module将新类别中的一些support examples转换为全局向量&#xff0c;该全局向量indicates meta features对于检…

使用MindSpore20.0的API快速实现深度学习模型之数据变换

文章目录前言一. 实验环境二. 安装ubuntu虚拟机2. 1.下载ubuntu镜像2.2 配置虚拟机2.3 安装操作系统三. 安装MindSpore20.0-alpha3.1 下载需要的安装程序脚本3.2 安装MindSpore 2.0.0-alpha和Python 3.73.3 开始手动安装3.4. 安装gcc3. 5.安装MindSpore3.6. 验证是否成功&#…

【opencv源码解析0.3】调试opencv源码的两种方式

调试opencv源码的两种方式 上两篇我们分别讲了如何配置opencv环境&#xff0c;以及如何编译opencv源码方便我们阅读。但我们还是无法调试我们的代码&#xff0c;无法以我们的程序作为入口来一步一步单点调试看opencv是如何执行的。 【opencv源码解析0.1】VS如何优雅的配置ope…

有效提升英语论文写作的方法

这里结合我的一些经验&#xff0c;分享一些练习英语论文写作的方法。 论文是由单词&#xff0c;句子&#xff0c;还有逻辑三部分组成&#xff0c;每个部分的要求都不太一样&#xff0c;这里分成三个部分练习讨论: 1炼词, 2 炼句,3 炼逻辑. 炼词 首先&#xff0c;炼词就是首先…

发布npm库遇到的

&#xff08;1&#xff09;首先首先要检查源是npm还是淘宝镜像源&#xff0c;因为本地设置了淘宝镜像源的原因&#xff0c;会导致npm login出错&#xff0c;需要修改&#xff1a; npm config set registry https://registry.npmjs.org 查看是否修改成功&#xff1a;得到上面源…

SpringCloud - Eureka注册发现

目录 提供者与消费者 Eureka原理分析 搭建Eureka服务 服务注册 服务发现 提供者与消费者 服务提供者&#xff1a; 一次业务中&#xff0c;被其它微服务调用的服务(提供接口给其它微服务)服务消费者&#xff1a; 一次业务中&#xff0c;调用其它微服务的服务(调用其它微服务…

基于jeecgboot的flowable流程增加节点自动跳过功能

为了满足有时候需要在某个节点没有人员处理的时候需要自动跳过&#xff0c;所以增加了这个功能。 一、FlowComment意见里增加一个类型8&#xff0c;跳过流程 /** * 流程意见类型 * */ public enum FlowComment { /** * 说明 */ NORMAL("1", "…

Java8新特性全面

文章目录一、函数式接口二、Java内置函数式接口三、接口内允许添加默认实现的方法四、Lambda表达式五、方法引用六、Stream API七、Stream API示例1. Filter过滤2. Sorted排序3. Map转换4. Match匹配5. Count计数6. Reduce7. Parallel-Streams并行流8. Map集合八、新时间日期接…

天津+发展得到的权重

添加评分添加评分的依据高德地图找到如图数据&#xff0c;容积率体现楼层高度近似反映人口密度&#xff0c;繁华程度近似等价霓虹灯照明时长住房容积率具体是指在城市规划区的某一宗地内&#xff0c;房屋的总建筑面积与宗地面积的比值&#xff0c;分为实际容积率和规划容积率两…

链表学习基础

链表 通过指针串联在一起的线性结构&#xff0c;每个节点由数据域和指针域两部分组成。链表节点在内存中的存储通常不是连续的&#xff0c;各节点通过指针连接在一起&#xff0c;其内存分布大致如下图所示。 定义 单链表 struct ListNode {// DATATYPE 可以是任意存放数据的…

HTTP基础知识

关键字&#xff1a;一问一答用于和服务器交互什么是HTTPHTTP是个应用层协议&#xff0c;是HTTP客户端和HTTP服务器之间的交互数据格式。所以这里有个实例&#xff1a;在浏览网页的时候&#xff0c;浏览器会向服务器发送一个HTTP请求&#xff0c;告诉服务器我想访问什么..然后服…

图论学习03

图神经网络模型介绍 将图神经网络分为基于谱域上的模型和基于空域上的模型&#xff0c;并按照发展顺序详解每个类别中的重要模型。 基于谱域的图神经网络 谱域上的图卷积在图学习迈向深度学习的发展历程上起到了关键性的作用。三个具有代表性的谱域图神经网络 谱图卷积网络切…

c++中超级详细的一些知识,新手快来

目录 2.文章内容简介 3.理解虚函数表 3.1.多态与虚表 3.2.使用指针访问虚表 4.对象模型概述 4.1.简单对象模型 4.2.表格驱动模型 4.3.非继承下的C对象模型 5.继承下的C对象模型 5.1.单继承 5.2.多继承 5.2.1一般的多重继承&#xff08;非菱形继承&#xff09; 5.2…

奥地利、爱沙尼亚重要机构或正成为俄黑客目标

近日&#xff0c;网络安全公司Sekoia有一项新发现&#xff1a;由俄罗斯政府支持的黑客组织“图拉”&#xff08;Turla&#xff09;正在对奥地利经济商会、北约平台、波罗的海国防学院&#xff08;Baltic Defense College&#xff09;发动一系列攻击。这是Sekoia公司基于Google …

One Fuzzing Strategy to Rule Them All

One Fuzzing Strategy to Rule Them All 文章目录One Fuzzing Strategy to Rule Them All相关链接概述背景实验测试RQ1&#xff1a;RQ2相关工作总结最后相关链接 One Fuzzing Strategy to Rule Them All 参考链接 概述 在本文中作者提出了对变异策略havoc的研究&#xff0c…

linux异步IO编程实例分析

在Direct IO模式下&#xff0c;异步是非常有必要的&#xff08;因为绕过了pagecache&#xff0c;直接和磁盘交互&#xff09;。linux Native AIO正是基于这种场景设计的&#xff0c;具体的介绍见&#xff1a;KernelAsynchronousI/O (AIO)SupportforLinux。下面我们就来分析一下…

大数值金额大写转换(C语言)

关于大数值金额大写转换&#xff0c;在财务管理的应用方面没什么意义。一般来说&#xff0c;千亿级&#xff0c;万亿级的数值就够了。因为在国家级层面是以亿为单位的&#xff0c;也就表达为千万亿&#xff0c;万万亿。在企业层面数值金额转换设置到千亿、万亿就行了。大的集团…

RabbitMQ 入门到应用 ( 四 ) 与SpringBoot整合

5.与SpringBoot整合 5.1.SpringBoot项目中配置环境 5.1.1.pom.xml配置依赖 在 pom.xml 配置文件中声明依赖, 通过Maven导入 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> &l…