当前课程知识点:软件理论与工程 > 第2章 需求分析 > 2.3 需求分析 > 2.3 需求分析
大家好
那我们今天开始软件理论与工程 第二章
第三节需求分析
我是主讲老师高广宇
我们在前面我们讲到整个需求工程
包括需求获取 需求分析
规格说明 需求验证
以及我们看到的这个最上面外围的
需求管理 五个环节
我们上一节课的时候呢
我们讲的需求获取
那我们今天呢
接着讲我们的下一个环节
需求分析
那首先呢
我们理解一下什么是需求分析
其实在上一节的时候呢
我们适当的讲了一下
我们在讲说需求获取
有的时候跟需求分析呢
它是融为一体的
我们在获取了之后会进行一些适当分析
我们再回顾一下我们分析的时候
我们通常是针对用户需求或者系统需求
我们通过一些建模
或者说一些规格化 形式化的文档
再进行需求获取
所以呢
从这个层面上我们能够理解出
整个需求分析
简单来说
就是针对我们前期获取的需求
当然这些需求可能是通过一些
比较粗糙的一些文档 一些简单的
一些这个图表的方式来展现的
需求分析的过程就是要
通过我们特定的一些需求分析的
模型
通过需求建模
需求细化等等一些方式呢
来更好的梳理和
抽象我们的一些需求内容
使得它呢更加的靠近
我们整个系统工程师所能够
理解的一些这个描述方式
所以呢
需求分析第一个呢
它是通过建模来整合各种信息
以使得人们更好的理解问题
第二个呢
具体和形式化的描述呢
它是为一个问题去定义出一个需求的集合
这个集合
能够为问题界定一个有效的解决方案
第三个呢
我们还需要在这个过程中去
检查需求当中
存在的错误或者遗漏
不一致等各种缺陷
并加以修正
这样的话
能够确保我们最后所形成的一些需求工程
的一些这个文档
一些结果 一些成果呢
它的一些有效性和正确性
这是关于这个
那我们整个需求分析呢
跟需求获取一样
它也会包含
若干的一些这个子活动
包括背景分析 确定系统边界
需求建模 需求细化 确定优先级
需求协商等等 对吧
这是他的一些这个子活动
这个大家稍微理解一下
我们后面在会在具体去讲
我们下面呢
从四个方面再对整个需求分析呢
进行一些这个深入的讲解
第一个就是说呢
需求分析的根本任务是什么
接下来 我们就从
它的技术 方法和活动
几个层面分别进行介绍
首先是需求分析的根本这个任务
那我们知道整个需求分析是处在说
需求获取
和后期的这个规格说明
甚至是跟这个需求管理去打交道的一个环节
它的一个任务是要干嘛呢
是要在已经获取的这一些需求
我想用户的理解问题的描述这么一些
这个基础上去进行一些分析梳理
也就是我们要去建立分析的模型
我们要去
针对这个分析的一些模型
去创建一些解决方案
所以呢 需求分析的
根本任务主要包括两个方面
第一建立分析模型
第二创建解决方案
重点是后面的创建解决方案
那它到底是什么样一个环节呢
我们可以看一下这些PPT理解一下
要创建解决方案呢
我们是要将一个问题分解成独立的
更简单的或易于管理的子问题
来帮助我们寻找一个解决方案
所以呢
创建解决方案的过程是创造性的
当然它也能够帮助
开发者建立问题的一个定义
并确定了被定义的事物之间的一个逻辑关系
也就是说呢
通过这个方式
我们能够对前面所获得的一些需求进行更好的
体现逻辑关系的一些
这种描述或者阐述 对吧
是他的一个根本任务
那需求分析他的一些技术
包括什么样的一些这个技术呢
那我们看一下 通常来说呢
需求分析的技术包括两大类
一类是结构化的一些技术
一类是面向对象的一些技术
结构化的技术呢
这些ppt的我们列的非常的详细
大家看一下这个二级子标题
结构化的技术包括呢 我们要对数据去建模
对过程建模
对行为建模
还有呢 包括这个传统的一些信息工程的
一些方式
前面的这几个都是从我们不同的这个关注
或者说视角来看
从数据过程和行为的角度来看
怎么去做建模
那还有一大类就是面向对象的技术
在这一类技术里面呢
比较主要的就是依赖于
所谓的这个统一模型语言UML技术
因为在UML技术里面其实有
大量的这个模型化
规范化的一些图表来表示
包括用例图
类图等等活动图
这个的话因为我们整个这个课程
这个不是专门去讲UML
所以呢 不做特别深入的理解
大家可以自己去看一下
也能找到大量关于UML的技术
至少大家要知道呢
UML技术
可以被有效的用于软件工程还有需求工程
尤其是向需求分析的一个过程中来
那我们再讲一下 就是说有了这么一些技术
那他需求分析
具体这些方法包括哪些呢
通常来说呢
我们将需求分析的方法分为三大类
第一类呢 是传统的一些方法
包括向前面提到的在上个世纪的50年代
就完全是依赖个体
那也就是依赖自己的一些这个习惯去描述
所以这个时候是非常的混乱无章的
当然 也导致他最后形成的一些需求描述
以及他背后的这个软件开发过程
非常的混乱
效率非常的低
所以呢
到后期到上个世纪60年代开始
就出现了所谓的结构化的分析方法
对吧
然后呢 还有包括呢以数据结构为基础的
以过程结构为基础的
等等一些通过结构化的一些描述
然后再到后来到上个世纪90年代末期开始
依赖于面向对象的一个方法的一个发展
因为我们知道面向对象
是一大类方法
在程序设计语言里面
大概也知道有面向对象的
这个程序设计语言c++
java等之类的对吧
但面向对象 它是一个方法论的一个统称
所以在人的需求分析方法里面
他同样有面向对象分析的一类方法
它呢是以对象为中心
以一些图等模型为核心技术
来描述我们的一个需求分析的一个过程
它呢
能够更加的全面
更加的清晰去描述我们的一个需求
分析的一个过程
所以呢
这个也是被用的比较多的
当然 在这里面提到的这三类方法里
尤其是结构化分析方法和面向对象分析方法
其实并没有一个严格的说谁好谁坏的
这个过程主要是看谁适用
对于一些中小的一些软件来说
有的是我们通过一些结构化分析方法
就能够很有效的去
对我们那些需求分析过程进行一些建模
当然 有时候对于一些大型的复杂的
一些软件设计
一些工程开发来说
我们需要使用到面向对象分析的一些方法
这是关于这个需求分析的一个方法
当然这个里面这些ppt针对前面提到的
比如说结构分析方法
它具体涉及到的一些
这个模型做了一些介绍
比如第一个我们发现 业务事件
我们通常可以利用 上下文图
这是结构化分析方法里面的一类
这个叫什么 模型
不同的图和表都是可以统称为这个模型的
这也是我们整个需求工程过程中
建模这个模型所代表的一些这个内容
就是各种不同的一些图和表
包括到后面的一些数据字典
实体关系图 数据流图等等
这些都可以理解成是结构化分析方法
它的一些这个模型
另外一大类就是面向对象分析方法
前面我们讲的在这一类里面呢
比较经典的
用的比较多的就是前面提到的这个UML语言
他定义了
大概13类和16类各种不同的一些图表
从各个不同的层面
包括这里面提到的
像这个用例图啊
这个交互图 状态图 类图等等
各种各样一些这个图表
都是 一些所谓的这个面向对象的一些模型
来通过面向对象分析的方法进行需求分析
建模的一个过程
这是我们这个需求分析这些方式
那有了这么一些
这个技术和方法面向这么一个根本任务
那需求分析到底包括什么样的一些活动呢
所以在最开始那些ppt里我们适当的
说了一下
那我们现在呢
在结合前面三部分内容
我们再精确讲解一下
通常来说呢
我们在前期呢
在通过需求获取获取到大量的需求
比如这里面提到的这个需求笔录
形成一些文字记要的一些东西之后
我们要进行这个需求建模
这个需求建模就是利用前面提到的方法和技术
通过结构化方法 结构化技术
或者说是
面向对象的UML的一些这个图表的方式
来进行建模
进行一些这个模型化的阐述
文档化的描述
形成一些所谓的一个解决方案
这个时候呢
我们在结合前期我们的业务需求
和用户需求这两个
我们前面提到在需求获取阶段
有的时候就已经比较明确了
我们在对我们刚才形成的这么一些
这个需求建模之后形成的一些模型文档
进行所谓的什么需求细化
得到呢
下面的这个什么系统需求
因为最后我们是希望有非常清晰的
通过需求规格说明去描述的一些系统需求
从而呢
交给系统设计和开发人员去
进行软件工程的下一个阶段
但这里面的话呢
前面有提到
我们得到了系统需求 我们要去
去确定它的一些优先级
同时呢 我们要去做一些验证
然后去排除一些不合理的一些这个需求
当然 还要做一些这个需求的一些协商
这是关于谈论需求分析这个活动
那需求分析活动里面呢
比较重要的一个环节是需求细化
这里面也提到了需求细化 我们要去明确
比如用户需求的一些隐含因素
我们要将问题域和业务的角度表达的用户需求
进行等效的转换
等等
而且呢 最后细化后的需求应该被
一一的标识和记录下来
大家留意一下
在整个需求工程过程中啊
所有的这些文档模型都是需要去
被标识和记录下来
这个最后要作为这个成果来输出的
这是需求分析的一个活动
那我们今天的这一节就讲到这里
我们下一节继续讲
需求分析的剩下的一些内容
谢谢大家
-课程概述
-1.1 软件的本质
-1.2 软件工程
--1.2 软件工程
-1.3 软件过程结构
-1.4 过程模型
--1.4 过程模型
-1.5 敏捷开发方法
-第1章 习题
--第1章 习题
-2.1 需求工程过程
-2.2 需求获取
--2.2 需求获取
-2.3 需求分析
--2.3 需求分析
-2.4 过程建模
--2.4 过程建模
-2.5 面向对象建模
-第2章 习题
--第2章 习题
-3.1 设计概述
--3.1 设计概述
-3.2 设计的概念
-3.3 设计模型元素
-3.4 体系结构概述
-3.5 体系结构风格
-3.6 构件级设计
-3.7 UI设计
--3.7 UI设计
-3.8 基于模式的设计
-第3章 习题
--第3章 习题
-4.1 UML概述
-4.2 UML 及UML中的事物
-4.3 UML关系和图
-4.4 UML 图细节(上)
-4.4 UML 图细节(下)
-第4章 习题
--第4章 习题
-5.1 软件测试策略
-5.2 测试传统的应用系统
-5.3 测试面向对象的应用系统
-5.4 测试web应用系统
-5.5 测试移动应用系统
-第5章 习题
--第5章 习题
-6.1 软件项目估算
-6.2 软件过程管理
-6.3 软件配置管理
-6.4 项目版本控制及调试
-第6章 习题
--第6章 习题