第二章 需求分析基础
2.1 软件需求工程的基本概念
-
对系统应该提供的服务和所受到的约束进行理解、分析、建立文档、检验的过程——需求工程
-
没有需求就没有软件。
-
软件需求的困难:
- 应用领域的广泛性
- 非功能需求建模技术的缺乏
- 沟通上的困难
-
软件需求的内容:
-
-
功能需求: 是对系统应该提供的服务、功能以及系统特定条件下的行为的描述。
-
领域需求: 是由软件系统的应用领域所决定的特有的功能需求,或是对功能的约束。
-
非功能需求:
-
-
传统需求分析的作用:
-
定义软件的范围及必须满足的约束;
-
确定软件的功能和性能及与其他系统成分的接口。
-
建立数据模型、功能模型和行为模型;
-
最终提供需求规格说明,并用于作为评估软件质量的依据。
-
-
需求工程的活动
- 需求工程是系统工程和软件工程的一个交叉分支,涉及到软件系统的目标、软件系统提供的服务、软件系统的约束和软件系统运行的环境。它还涉及这些因素和系统的精确规格说明以及系统进化之间的关系。它也提供现实需求和软件能力之间的桥梁。
-
需求工程的基本活动
- 获取需求:需求工程的主体。
- 非常困难,主要是因为:
- 缺乏领域知识
- 存在默认的知识
- 存在多个知识源
- 客户可能的偏见
- 需求抽取的方法:
- 面谈法:主要面谈对象为用户和领域专家
- 问卷调查法:从多个用户中手机需求信息(对面谈的补充)
- 需求专题讨论会:由开发方和用户共同召开
- 观察用户的工作流程
- 原型化方法
- 基于用例的方法
- 知识工程方法:场记分析法、卡片分类法、分类表格技术和基于模型的知识获取。
- 非常困难,主要是因为:
- 需求分析与建模
- 主要对收集到的需求进行提炼、分析和认真审查,确保所有参加人员取得一致共识。找出错误、遗漏和不足,建立完整的分析模型。
- 需求分析和建模的三个层次的工作:
- 需求分析
- 需求建模(分为企业建模、功能需求建模和非功能需求建模等)
- 需求规格说明—不同的描述方式
- 需求分析常用技术
- 分解:大问题分解为小问题,通常自顶向下
- 抽象:抓住问题的本质特性
- 多视点:注意从各类开发人员和不同用户的角度考虑问题
- 确认需求
- 进化需求
- 获取需求:需求工程的主体。
-
需求的有效性验证:
- 重要性
- 由于需求是第一步,直接影响后续开发。
- 需求的可变性必须进行验证
- 需求验证的内容
- 有效性验证
- 一致性验证
- 完备性验证
- 可检验性验证
- 重要性
-
需求管理
-
需求管理的所有活动中,最重要的是“需求变更管理”:
-
需求管理过程需要CASE (Computer Aided Software Engineering) 工具支持。
-
需求变更管理方法
- 传统的变化管理:基本内容包括软件配置、软件基线和变化审查。
- 新的管理方法
- 软件家族法
- 即软件产品线方法,该方法是源于工业界产品线的概念,关注于一个软件企业如何组织一组具有共性特征的,相似产品的生产,并应用软件复用的相关原理与技术。
- 多视点方法
- 它可以用于管理不一致性并进行关于变化的推理。是从多个视点出发在软件工具的协助下对需求描述,进行自动需求建模,从而提高需求模型的完整性。
- 软件家族法
2.2 需求分析方法
-
功能分解方法
- 将系统看作若干功能模块的集合,每个功能又可以分解为子功能,子功能还可继续分解,分解的结果即是系统的雏形。
- 存在的问题
- 需要人工完成
- 无法对描述的准确度进行验证
- 难以适应需求的变化
-
结构化分析方法
- 是一种以数据、数据的封闭性为基础,从问题空间到某种表示的映射方法,由**数据流图(DFD图)**表示
-
信息建模法
-
是从数据的角度对现实世界建立系统的信息模型,基本工具是ER图。是由实体、属性和关系组成的网络图。
- E-实体,是一个或一组对象;
- R-关系,实体之间联系或交互作用。
-
-
面向对象的分析方法
- 面向对象分析方法(OOA)的关键是 识别问题域内的对象, 分析它们之间的关系,并建立起三类模型。
2.2.1 结构化分析方法
-
1.SA法的基本思想——”分解“和”抽象“
- 分解:大问题化小问题
- 抽象:用最本质的属性表示一个系统
-
2.SA法的步骤
-
3.SA法的描述方法
-
分层的数据流图(DFD图):描述系统中数据流程的图形工具,它描述了将系统的逻辑输入转换为逻辑输出所需的加工处理过程。
-
画图步骤
- 1、确定外部实体及输入、输出数据流。
- 2、确定分解顶层的加工。
- 3、确定使用的文件。
- 4、用数据流将各部分连接起来,形成数据封闭。
-
先全局后局部,先整体后细节,先抽象后具体。
-
画图的基本原则
- 数据守恒与数据封闭原则:每一个加工既有输入数据流又有输出数据流
- 加工分解的原则
- 自然性
- 均匀性
- 分解度:一般最多不超过7个子加工
- 子图与父图的”平衡“
- 合理使用文件
-
分层DFD图的改进
- 1.检查数据流的正确性
- 2.改进DFD图的易理解性
-
-
数据词典:四种类型的条目
- 数据流:给出某个数据流的定义,通常是列出该数据流的各组成数据项。
- 文件:给出某个文件的定义,文件的定义通常是列出文件记录的组成数据流。
- 数据项:数据项条目给出某个数据单项的定义,通常是数据项的值类型,允许的取值范围。
- 加工:加工类条目就是 “加工小说明” 。一般应该单独列出。
-
加工说明:精确地描述加工的激发条件、加工逻辑、优先级、执行频率和出错处理等。加工逻辑是其中最基本的部分,指用户对这个加工的逻辑要求。
对基本加工说明有三种描述方式-
结构化语言:结构化语言是介于自然语言和形式语言之间的一种半形式语言,是自然语言的一个受限制的子集。(外层语法:控制结构(顺序结构、选择结构、循环结构),内层语法:表达“做什么”)
-
判定表: 判定表是一种二维的表格,常用于较复杂的组合条件(与结构化语言比较)。
特点:可处理较复杂的组合条件,但不易理解,不易输入计算机。
四部分组成- 条件框:条件定义
- 操作框:操作的定义
- 条件条目:各条件的取值及组合
- 操作条目:在各条件取值组合下所执行的操作
-
判定树
特点:描述一般组合条件较清晰,易理解。不易输入计算机。
-
-
-
需求分析小结:最终任务是要完成目标系统的需求规格说明,确定系统的功能、非功能需求和性能,为后阶段的开发打下基础。
常用方法:SA法,原型法,OOA法等
第二章完