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

article/2025/3/13 14:00:57

软件工程 系列为本学期(2020春季)软件工程以及软件工程实践课程笔记整理~

明天醒来又是新的一周,从软件工程开始。。。 

目录

一、可行性分析

二、需求分析-->决定软件产品质量的关键

三、需求诱导-->将用户真正需求挖掘出来

四、结构化分析方法(Structured Analysis SA)

1.结构化分析方法

2.结构化需求分析技术

五、软件快速原型实现

六、需求评审

UML 图形整理 


软件项目计划:软件过程的开始、重要的环节-->基础是对用户需求有足够的明晰的认识。 

一、可行性分析

  1. 项目的成功与否取决于多种因素,包括社会因素、认为因素以及技术因素等等,可行性分析是其中的重要因素之一。
  2. 可行性分析的内容-->软件产品技术路线、软件成本和效益分析、软件风险的量化分析可重用构件技术分析
  3. 可行性分析的四个要素
  • 经济:维护阶段的费用、项目扩展的收益
  • 技术:给定时间完成功能、软件性能是否有保障、是否允许引进新技术
  • 环境:市场与政策(法律、知识产权)
  • 人:综合特质(流动  开发、配合、协调领导能力等)

 

二、需求分析-->决定软件产品质量的关键

1.需求分析的任务

  • 功能需求分析:系统必须提供的服务
  • 性能需求分析:速度、效率、反应时间等
  • 质量需求
  • 外部接口需求
  • 出错处理需求
  • 约束条件
  • 未来扩展需求:功能、网络扩展等内容

2.需求分析的基本原则

(1)表达和理解问题的信息域

(2)建立描述系统信息、功能和行为的模型

(3)对系统模型按照一定形式分解

(4)分清系统的逻辑视图和物理视图

逻辑视图:系统要达到的功能和要处理的信息之间的关系 与实现细节无关

物理视图:处理功能和信息结构的实际表现形式               与实现细节有关 

3.需求分析过程

  • 目标认定:必须完成的功能、性能要求、有无外部接口等
  • 分析和综合:进行需求确认 保证需求的正确性、一致性和无歧义性
  • 需求建模:建立功能模型、行为模型和数据模型
  • 需求规格说明书:需求分析阶段的最终产物
  • 需求评审
  • 变更

 

三、需求诱导-->将用户真正需求挖掘出来

  • 规约技术
    • 面向团队的需求获取技术
    • 软件开发人员、客户-->需求分析团队
    • 用于分析和规约的早期阶段,是需求分析的主流技术
  • 质量功能部署-->最大限度让用户满意
    • 强调 正常、期望、令人振奋 三类需求
  • USE—CASE-->参与者和系统的交互方式

 

四、结构化分析方法(Structured Analysis SA)

1.结构化分析方法

(1)面向数据流的需求分析方法 适合分析大型的数据处理系统

(2)基本思想:

  • 分解-->对于复杂的系统,将大问题分解为若干小问题,然后对小问题分别求解
  • 抽象-->先考虑问题最本质的属性 暂把细节略去,以后再逐层添加细节,直至涉及到最详细的内容。利用最本质的属性表示一个系统的方法为抽象 

(3)特点

  • 本质上是借助模型实现需求分析的一种活动
  • 模型:
    • 数据模型-->实体关系图
    • 功能模型-->数据流图
    • 行为模型-->状态转换图
    • 数据字典

结构化分析的过程就是要创建数据模型、功能模型和行为模型。

2.结构化需求分析技术

(1)实体关系图(Entity Relation Diagram,ERD)

  • 描述数据对象、属性、对象间关系  以实体、关系、属性三个基本概念概括数据的基本结构
  • 数据对象:被软件所标识的具有一系列属性的抽象信息 每个数据对象的实体被唯一标识
  • 对象属性:实体具有的特性
  • 对象间关系1:1   1:N   N:M

(2) 数据流图(data flow diagram,DFD)      应用于数据驱动的系统

  • 描述信息流和数据从输入移动到输出时被应用的变换的图形化技术
  • 基本组成
    • 数据源点和终点:系统外部环境中的实体(人员、组织或者其他软件) 使用矩形框表示
    • 加工或处理:对数据流进行的操作或变换,使用圆角矩形或者椭圆表示
    • 数据流:数据在系统内传播的路径,使用箭头表示
    • 数据存储:暂时保存的数据    为数据处理提供所需要的输入流或者仓库存储,使用双直线表示
  • 数据流的关系

  •  分层的数据流图 分层的数据流图由顶层、中间层和底层组成
    • 顶层(第0层):说明系统的边界 确定开发范围 通过输入和输出数据流显示系统与外部环境的数据交换关系
    • 中间层
    • 底层:不需要再做分解的数据流图 加工已经足够简单
  • 绘图原则
    • 由外向内画数据流图:输入数据是什么-->通过系统什么生产-->输出那些内容 ==》顶层数据流图
    • 自顶向下进行分层
      • 顺应自然,系统实现角度要条理清晰、逻辑角度要自然顺畅
      • 顶层分解可相对宽泛,下层分解要尽量细致,实行横向分解
      • 分解要均匀
      • 简化加工之间的联系-->分解为相对独立的部分
    • 父图和子图的平衡性-->父图加工的输入输出数据流与子图的输入输出相同

  • 明确数据流图和程序框图的区别
    • 程序流程图:从对数据加工的角度描述系统,描述如何解决问题,包含数据加工的次序和细节
    • 数据流图:从数据的角度描述系统,表明系统解决什么问题

(3)控制流模型图-->状态转换图 

  • 事件驱动的系统:系统对事件的响应-->系统状态的改变
  • 状态:特定时刻系统可以被观察到的行为模式,外部事件可以改变状态;分为初始状态(仅有一个)、中间状态、最终状态(可能有多种)
  • 事件:系统在某个特定时刻发生的事情 导致系统产生动作、状态发生改变
  • 图示

(4)数据词典 

  • 描述分析过程中的数据和对象,对分析模型中出现的所有名字进行定义
  • 内容:
    • 名字-->数据、控制项、数据存储和外部实体的名称
    • 别名
    • 使用地点与方法-->使用数据或控制项的加工列表
    • 内容描述:描述数据或者控制项的符号
    • 其他说明
  • 作用:独立于软件需求规格说明书,减少编程人员在数据定义时的混乱和无序 增加项目参与者对关键信息理解的一致性
  • 组成:数据流、数据项、文件、基本加工

 

五、软件快速原型实现

1.软件原型:能够呈现系统的主要功能和接口实现的“软件样机”。

   快速原型技术是一种有效的需求分析方法

2.原型的实现方法-->突出原型软件实现的快速功能

  • 可重用的软件构件技术
  • 第四代编程技术-->简答易学、用户界面良好、非过程化程度高、面向问题、不必告诉计算机怎么做
  • 形式化规格说明书和原型环境

3.流程

4.实现策略

  • 抛弃式原型:用户通过软件原型发现需求中的漏洞并提出足够多反馈意见时即可抛弃
  • 演化式原型:原型通过多次演化更新,形成可交付的软件产品

目的:使用户的需求更加明确和具体

 

六、需求评审

1.需求评审:彻底验证软件需求规格说明书的正确性 使得利益相关双方彻底理解需求

2.评审:需求的正确性、一致性、完整性、可实施性、可靠性、合理性

3.评审

  • 准备:软件开发人员认真准备需求规格说明书 对需求做尽可能详细的描述
  • 多层次多阶段评审结合:需求分析分成不同的阶段,进行范围大小不等的阶段性评审
  • 跟踪和反馈:评审结束后给出问题的确定性结论

 

UML 图形整理 

1.UML图种类

对于整个系统:

功能使用用例图描述

静态结构由类图和对象图描述

动态行为由状态图、顺序图、协作图和活动图描述

物理架构由构件图和部署图描述

2.UML图例

3.用例图use case diagram

  • 定义系统的功能需求,从系统的外部观看系统的功能,并不描述系统内部对功能的具体实现
  • 从外部执行者的角度描述系统提供的功能
  • 一个用例(a)包含(include)另外一个用例(b):用例a需要用例b的功能并且总是执行这个内含的用例
  • 一个用例(a)扩展(extend)另外一个用例(b):用例a可能(可选择的)用到用例b的功能,于是去扩展用例b。

4.类图 class diagram

  • 描述系统的静态结构,表示系统中的类以及类与类之间的关系

5.对象图 object diagram

  • 描述一组对象以及它们之间的关系,表示类的实例对象
  • 对象图是对类图的一种实例化,是系统某个时期可能存在的具体对象实例

 

6.状态图 state chart diagram

  • 表示一个状态机,强调对象行为的时间顺序
  • 对类的补充,展开此类对象可能的状态和发生某些事件时状态的转移情况

7.顺序图sequence diagram & 协作图 collaboration diagram

  • 表示一组对象之间的动态协作关系
  • 顺序图:对象之间发送消息的时间顺序     

  • 协作图:收发信息的对象的组织结构

8.构件图 component diagram

  • 描述程序代码的组织结构,构件以及它们之间的依赖关系,表示系统的静态实现视图

9.部署图deployment diagram

  • 系统中软件和硬件的物理架构,表示系统运行时的处理节点以及节点中构件的配置

 

 


http://chatgpt.dhexx.cn/article/jbN2YtDt.shtml

相关文章

【软件工程】二、需求分析——怎么提需求?,怎么写需求?

一、需求的作用 需求是解决问题的前提。 其中标注为软件系统工程的一些活动,是作为系统工程工作的一部分被实施的。 Q:什么样的陈述可以被称为需求? 1.这个需求是否有必要?–>必要的(Necessary) 2.会不会产生歧…

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

第三章 需求分析 需求分析 ​ 需求分析的任务是要准确地定义新系统的目标,准确回答“系统必须做什么”的问题,并用需求规格说明书规范的形式准确地表达用户的需求。 ​ 虽然在可行性研究阶段,对用户需求有了初步了解,但对需求的了…

【软件工程(二)】软件需求分析

文章目录 软件需求分析引言需求分析之前的活动需求的定义需求理解过程需求分析的必要性需求分析的对象、任务和目标需求分析的原则数据、功能及行为建模需求工程需求获取需求获取流程需求获取的准备需求获取的记录撰写用户需求说明书用户需求说明书与软件需求规格说明书的区别需…

软件工程导论—需求分析

文章目录 1. 需求分析概述1.1. 软件需求的概念1.2. 需求分析的准则1.3. 需求分析的任务和步骤 2. 需求获取的常用方法和步骤3. 分析建模3.1. 结构化分析模型3.1.1. 结构化分析模型概述3.1.2. 实体联系图 E-R图3.1.3. 数据流图 DFD3.1.4. 结构化分析方法 3.2. 面向对象分析模型 …

【软件工程】软件工程需求分析——结构化分析

halo~我是bay_Tong桐小白 本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点 软件工程需求分析——结构化分析 【更新日志】 结构化分析概述功能建模…

软件工程 学生信息管理系统 结构化的需求分析

文章目录 前言1.实验目的2.实验要求3.需求分析3.1用户需求3.2功能需求分析3.3非功能性需求3.3.1数据精准度需求3.3.2界面需求3.3.3 响应时间需求3.3.4 可靠性需求3.3.5 可扩展性需求3.3.6 系统安全性需求 4.实验内容4.1数据流图4.2数据字典 5.实验小结 前言 《软件工程》课程 …

软件工程--需求分析

软件工程–需求分析 需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题。需求分析的任务还不是确定系统怎么样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清…

linux系统监控工具——Conky

实验简介 Conky 是一个应用于桌面环境的系统监视软件,可以在桌面上监控系统运行状态、网络状态等一系列参数,而且可自由定制,但对于新手来说可能会比较难于上手。 Conky是一种自由软件,用于X视窗系统的系统监视,可以在…

manjaro美化之conky 系统监控

​​​​​​​ sudo pacman -S conky 下载字体 sudo pacman -S JetBrainsMono nano ~/.conkyrc 复制粘贴下面内容ctrlx y enter 然后启动conky onky.config { -- CONK…

Linux美化 : conky

conky 是Linux桌面美化小工具 conky 也是轻量级的系统监视器 自定义性极强,请发挥想象! 从github上下载了配置,发现不能用 经检测 发现curl访问网站超时,因此对其进行简单修改 配置如下 先安装 sudo apt install curl fortune cowsay -y.conkyrc -- vim: ts=4 sw=4 no…

KALI美化-设置CONKY开机启动

简介 Conky 是一个应用于桌面环境的系统监视软件,可以在桌面上监控系统运行状态、网络状态等一系列参数 https://github.com/brndnmtthws/conky/ 详细配置文档:http://conky.sourceforge.net/docs.html 简洁的用户界面; 高度可配置; 它既可使用内置的部件…

Linux安装使用Conky

安装conky sudo yum install conky安装sensors sudo yum install lm-sensors设置开机自启 在GNOME Tweaks中将conky加入开机自启 复制文件 sudo cp /etc/conky/conky.conf ~/.conkyrc设置配置文件 sudo vim ~/.conkyrc配置文件内容 conky.config {own_window_argb_visu…

linux如何卸载conky,Linux Deepin 15.10.2 下折腾 简单自制的 Conky Conky-manager

前言 Conky是Linux下的桌面美化工具,可以把一些系统信息,以各种酷炫的形式,显示到你的桌面上。很久以前在Ubunut折腾过,最近把工作开发环境切换到了Deepin 15.10.2,打算再从零折腾一次Conky 一、安装 由于新版Deepin商…

linux如何卸载conky,如何在Ubuntu 20.04 LTS中安装Conky&Conky Manager

原标题:如何在Ubuntu 20.04 LTS中安装Conky&Conky Manager 来自:https://www.linuxmi.com/ubuntu-20-04-lt-conky-conky-manager.html 这个简单的教程展示了如何在Ubuntu 20.04 LTS中安装Conky Manager(Conky系统监视器的图形前端)。 Conky是…

kali linux conky配置文件,7个美丽的Conky配置为您的Linux桌面 | MOS86

现在,大多数Linux用户非常熟悉Conky包括多少人都没有今天我们 Note:其中一些不仅仅是一个习惯。conkyrc文件。许多都配有专门的字体或附加软件,有些则作为更大的桌面主题的一部分打包。此处列出的所有配置都提供了到原始下载位置以及每个包的链接此外&am…

Linux(Ubuntu系统)-- Conky配置文件记录

Conky文件配置 不禁觉得这匹狼配上conky有点小帅,特此记录一下。。。 Conky配置文件: alignment top_right #设置屏幕位置 background yes #是否嵌入桌面 draw_borders no #是否绘制窗口边框 border_width 1 #窗口边框宽度cpu_avg_samples 2 #defaul…

conky 1.10配置和开机启动

不多说,先上图。 大家把目光放到右边就行了。 1、安装conky debian或ubuntu用户直接apt-get install conky-all就行了。 或者也可以直接从源码编译安装,https://github.com/brndnmtthws/conky,目前最新版是1.10.0。 安装完成后可以试着从终…

Conky--linux自定义桌面监控

Conky可以对linux硬件设备进行实时监控,并且显示在桌面上。 好吧说实话,就是为了装逼 ^_^! 首先,先贴图: 右边就是conky显示的,可以显示进程,内存,显卡温度等等。下载安装在github&#xf…

linux如何卸载conky,如何在Ubuntu 16.04/17.04上安装和使用Conky Manager

Conky是用于Linux,FreeBSD和OpenBSD的高度可配置的系统监视器。 它是免费的和开源的,根据GPL的条款发布。 本教程将向您展示如何在Ubuntu 16.04/17.04上安装Conky以及如何使用Conky Manager。 Conky可以在桌面上显示以下信息。 CPU负载 内存使用情况 硬盘…

kali linux conky配置文件,conky的配置文件

使用的conky配置,备查: 效果: .conkyrc: #set to yes if you want Conky to be forked in the background background yes cpu_avg_samples 2 net_avg_samples 2 out_to_console no # X font when Xft is disabled, you can pick one with program xfontsel #font 7x12 #font 6…