电子科技大学软件工程期末复习笔记(三):需求分析

2023-11-12

目录

前言

重点一览

需求分析

需求的定义

需求的特性

功能性需求与非功能性需求

需求分析的四个步骤

结构化需求分析方法

结构化需求分析建模的核心

围绕该核心建立的三种图

⭐绘制数据流图(重点)

绘制数据流图实例

面向对象分析

面向对象分析的三种模型

用例图的三个元素

⭐绘制用例图(重点)

本章小结


前言

本复习笔记基于王玉林老师的课堂PPT与复习大纲,供自己期末复习与学弟学妹参考用。


重点一览

分为三个部分讲解:需求分析、结构化需求分析方法、面向对象分析 


需求分析

需求的定义

  • 软件需求表达了对解决现实世界中某类问题的产品的要求和约束
  • 确定系统必须具有的功能和性能,系统要求的运行环境,并且预测系统发展的前景
  • 需求就是以一种清晰、简洁、一致且无二义性的方式,对一个待开发系统中各个有意义方面的陈述的一个集合

需求的特性

  • 可验证性
    • 需求是测试的依据(即能测试)
    • 尽可能量化表述
      • 不可验证:“软件应该是可靠的”;“软件应该对用户是友好的”
      • 可验证:“在任何营业时间内出现一个致命错误的可能性低于1*10-8""
    • 验证某个软件需求可能非常困难,代价很大。例如,呼叫中心软件验证吞吐量需求

需求除了行为属性外还有其他属性,如有优先级
折中: 根据需求紧迫程度现有资源(人力、技术、资金等)安排需求的实现先后顺序,有些先做有些后做,甚至有些可以放在第二期或第三期来做。

功能性需求与非功能性需求

  • 功能性需求
    • 描述系统应该做什么,即为用户和其它系统完成的功能、提供的服务
  • 非功能需求
    • 指解决问题时的约束。非功能性需求有时也称为限制或质量要求
      • 可进一步被分为性能要求、可维护性要求、安全需求、可靠性要求、可移植性要求、......
      • 非功能需求限定了选择解决问题方案的范围,如运行平台、实现技术、编程语言和工具等

下面通过一个实例分析不同需求的区别

将飞机订票系统中的以下方面做如下的划分,F代表“功能性”,NF代表“非功能性”,X代表“不应当是需求”。简要的说明功能性或非功能性需求的种类。对于不应当是需求的方面,说明其原因。

·如何输入有关航班、乘客及订票信息                                 F:输入
·什么信息要出现在机票和报告中                                        F:输出
·如何计算乘机费用                                                              F:计算
·什么信息必须存储在旅行社和其他人访问的数据库中        F:数据存储
·这个系统应该设计成可以处理旅行常客计划。                   NF:增强的容限
·这个系统在任何时候都必须是可用的。一周中只允许有2分钟宕机时间        NF:可用性需求
·必须使用排序算法根据离开时间对航班排序                       X:这是一个设计问题

需求分析的四个步骤

  • 需求获取
    • 软件需求的来源以及软件工程师收集这些软件需求的方法
    • 完整定义:指的是软件需求的来源以及软件工程师收集这些软件需求的方法。它也称为需求抓取、需求发现和需求获得
  • 需求提炼
    • 产生操作规格参数表,指明与其他系统元件的软件接口,确定软件必须遵循的约束
    • 完整定义:对应用问题及环境的理解和分析,为问题涉及的信息、功能及系统行为建立模型。将用户需求精确化、完全化,最终形成需求规格说明书。
  • 需求描述
    • 撰写需求规格说明书
    • 完整定义:软件需求规格说明书(SRS)----是对待开发系统的行为的完整描述,包含了描述用户与软件交互的用例的集合。用例通常描述功能性需求,除了用例之外,SRS还包含非功能性需求
  • 需求验证
    • 检查需求的正确性、完整性、非二义性、内部和外部的连贯性
    • 完整定义:需求验证即检查需求的正确性、完整性、非二义性、内部和外部的连贯性。这不可避免地需要用户的参与,用户是问题的所有者,只有他们才能决定需求规格说明书是否恰当描述了他们的问题

结构化需求分析方法

结构化需求分析建模的核心

结构化分析方法是一种建模技术,它建立的分析模型如图所示:

如上图所示,结构化分析建模的核心是数据字典 

围绕该核心建立的三种图

(数据流图 / 实体-关系图 / 状态-迁移图)

数据流图 —— 功能建模 —— DFD

实体-关系图 —— 数据建模 —— ERD

状态-迁移图 —— 行为建模 —— STD

⭐绘制数据流图(重点)

  • 基本图形符号

  • 多个数据流之间的关系

* 表示只能两个同时存在

⊕ 表示只能有一个存在

+ 表示可以同时存在也可以只有一个存在,可以省略 

  • 环境图(0层数据流图 / 顶层数据流图)

仅包括要开发的目标系统,相当于确认系统在环境中的位置,确认与外部实体的边界。

  • 分层数据流图 

按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统

(我的理解是把目标系统内部的数据流逐步细化,一层一层分解。)

绘制数据流图实例

银行储蓄系统的业务流程:

  • 储户填写的存款单或取款单由业务员键入系统
  • 如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率、密码(可选)等信息并印出存单给储户
  • 如果是取款而且开户时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户
  • 要求画出分层的数据流图,并细化到2层数据流图

参考解答:

1. 识别外部实体以及输入输出数据流

2. 绘制顶层数据流图

 

3. 绘制一层数据流图(细化系统内部流程)

 

4. 绘制二层数据流图

对一层图中的“处理存款”及“处理取款”进行进一步分解,得到二层数据流图,即处理存款的数据流图和处理取款的数据流图

处理存款的数据流图

 

处理取款的数据流图

面向对象分析

面向对象分析的三种模型

用例模型:用例和场景表示的功能模型(用例图)
对象模型:用类和对象表示的静态模型(类图)
动态模型:由状态图交互图(如顺序图)表示的交互模型

状态图:对一个对象建立,描述其状态及转换

交互图:对一个用例建立,描述多个对象间的动态交互

用例图的三个元素

用例图的主要元素是用例(Use Case)、参与者(Actor)和它们之间的关系。

⭐绘制用例图(重点)

用例之间主要有三种关系:包含、使用、扩展

泛化:当多个用例共同拥有一种类似的结构和行为的时候,我们可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。

包含:包含关系表示一个用例(基础用例,Base)所执行的功能中总是包括另一个用例(被包含用例)的功能。具体地讲,就是将被包含用例的事件流插入到基础用例的事件流中。被包含用例是可重用的用例——多个用例的公共用例。

即:当多个用例使用同一功能时,可将该功能单独提取成一个用例(被包含用例)

包含关系以指向被包含用例的虚线箭头表示


扩展:扩展关系指一个用例(基础用例,Base)的执行可能需要由其他用例(扩展用例,Extension)的功能来扩展。即,扩展用例的事件流在一定的条件下按照相应的扩展点插入到基础用例中

扩展关系以指向基础用例的虚线箭头表示


本章小结

  • 软件需求贯穿于软件工程的整个生命周期
  • 软件需求:用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
  • 需求分析的任务建立需求分析模型和编写需求说明。
  • 要求会绘制数据流图
  • 要求会绘制用例图
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电子科技大学软件工程期末复习笔记(三):需求分析 的相关文章

随机推荐

  • Spring JDBC 示例

    Spring JDBC 是本教程的主题 数据库是大多数企业应用程序不可或缺的一部分 因此 当涉及到 Java EE 框架时 必须与JDBC非常重要 春季 JDBC Spring Framework provides excellent in
  • 带有 COUNT() 函数的 SQL SELECT 语句

    嘿伙计 在这篇文章中 我们将重点关注SQL SELECT 语句以及 COUNT 函数 什么是 SQL SELECT 语句 SQL SELECT 语句帮助我们选择并显示数据库特定表中的数据值 Syntax SELECT columns FRO
  • Python 有序字典

    Python OrderedDict 是一个dict维护项目插入顺序的子类 当我们迭代 OrderedDict 时 项目将按照插入的顺序返回 常规字典不跟踪插入顺序 因此 当对其进行迭代时 项目会以任意顺序返回 当我们想要确保项目按照插入顺
  • 代理设计模式

    代理设计模式是结构设计模式之一 在我看来也是最容易理解的模式之一 代理设计模式 Proxy design pattern intent according to GoF is Provide a surrogate or placehold
  • 如何在 Ubuntu 16.04 上使用 RVM 安装 Ruby on Rails

    介绍 Ruby on Rails 是最受希望创建网站和 Web 应用程序的开发人员欢迎的应用程序堆栈之一 Ruby 编程语言与 Rails 开发框架相结合 使应用程序开发变得简单 您可以使用命令行工具轻松安装 Ruby 和 RailsRVM
  • C/C++中二叉树的高度

    二叉树的高度定义为任何叶节点距根节点的最大深度 即从根节点到任意叶子节点的最长路径的长度 让我们考虑下面的二叉树 Binary Tree Ht 由于最大深度对应的叶子节点为40 and 50 为了求出高度 我们只需求出从根节点到这两个节点之
  • 如何在 Ubuntu 22.04 上安装和配置 Ansible

    介绍 配置管理系统旨在简化管理员和运营团队控制大量服务器的过程 它们允许您从一个中心位置以自动化方式控制许多不同的系统 虽然有许多流行的配置管理工具可用于 Linux 系统 例如Chef and Puppet 这些通常比许多人想要或需要的更
  • 了解 R 中的plot() 函数 - 图形绘制基础知识

    在本教程中 让我们首先了解 R 中使用plot 函数的基础知识 R 语言以其精美的图形而闻名 它具有丰富的函数来构建和格式化任何类型的图形以及plot 函数族之一可以帮助我们构建这些函数 R 中的plot 函数不是单个定义的函数 而是一系列
  • 如何在 Ubuntu 14.04 上安装 Tinc 并设置基本 VPN

    介绍 在本教程中 我们将介绍如何使用 Tinc 一个开源虚拟专用网络 VPN 守护程序 来创建一个安全的 VPN 您的服务器可以在该 VPN 上进行通信 就像在本地网络上一样 我们还将演示如何使用 Tinc 建立通往专用网络的安全隧道 我们
  • 如何使用 Python WebSSH 从浏览器连接到终端

    介绍 通常 您使用终端中的命令行应用程序或包含 SSH 客户端的终端仿真器软件连接到 SSH 服务器 一些工具 例如 Python 的WebSSH 可以通过 SSH 连接并直接在 Web 浏览器中运行终端 这在许多情况下都很有用 当以具有视
  • 在 Ubuntu 18.04 上使用 Nginx 安装 WordPress

    WordPress是最受欢迎的开源内容管理系统 CMS 之一 与 Drupal 或 Joomla 等其他 CMS 相比 拥有高达 60 的市场份额 WordPress 可用于开发任何类型的网站 无论是博客 小型企业还是大型企业 凭借其免费和
  • Java中的模板方法设计模式

    模板方法是行为设计模式 模板方法设计模式用于创建方法存根并将某些实现步骤推迟到子类 模板方法设计模式 模板方法定义了执行算法的步骤 并且它可以提供可能对所有或某些子类通用的默认实现 让我们通过一个例子来理解这个模式 假设我们想提供一种建造房
  • 如何在虚拟专用服务器上配置 Nginx Web 服务器

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化

    介绍 蟒蛇pandas包用于数据操作和分析 旨在让您以直观的方式处理标记数据或关系数据 The pandas软件包提供了电子表格功能 但由于您使用的是 Python 因此它比传统的图形电子表格程序更快 更高效 在本教程中 我们将介绍如何设置
  • 如何使用 Nginx 创建临时和永久重定向

    介绍 HTTP重定向是将一个域或地址指向另一个域或地址的方法 有几种不同类型的重定向 每种重定向对于客户端浏览器来说都有不同的含义 两种最常见的类型是临时重定向和永久重定向 临时重定向 响应状态码302 找到 如果临时需要从不同位置提供 U
  • 如何在 Ubuntu 12.04 LTS 上设置 nginx 虚拟主机(服务器块)

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • Hibernate 多对多映射 - 连接表

    今天我们将研究Hibernate 多对多映射使用 XML 和注释配置 之前我们研究过如何实施一对一 and 一对多映射在休眠状态下 休眠多对多 多对多映射通常在数据库中使用连接表 例如我们可以有Cart and Item表和Cart Ite
  • 春季面试问题及解答

    我发了很多帖春季教程最近 这篇文章将帮助您解决 Spring 面试问题 详细解释核心概念 Spring框架是最流行的 Web 应用程序 Java EE 框架之一 依赖注入面向方面编程是 Spring 框架的核心 如果你擅长 Spring 框
  • 运算符

    运算元 运算符应用的对象 1 2 3 1 2就是运算元 一元运算符 只有一个运算元的运算符 var a 1 a a 表达式 由运算符和变量 常量组成的式子 a 1 1 2 3 5 5 4 a b c d 常见的数学运算符 指数 多个数字和字
  • 电子科技大学软件工程期末复习笔记(三):需求分析

    目录 前言 重点一览 需求分析 需求的定义 需求的特性 功能性需求与非功能性需求 需求分析的四个步骤 结构化需求分析方法 结构化需求分析建模的核心 围绕该核心建立的三种图 绘制数据流图 重点 绘制数据流图实例 面向对象分析 面向对象分析的三