软件需求分析
一、需求分析之前的活动
—软件的系统分析
预研
探索项目的目标、市场预期、主要技术指标等,帮助决策者判断是否进行软件项目立项。
可行性分析
针对项目的目标和范围进行概要分析和研究,探索核心问题及其解决方案,为决策者提供可行性分析报告。
二、需求分析的某些概念
—需求和需求工程的概念
需求
一种无二义性的表达工具,它能为用户和软件人员双方都接受,并能够把“需求”严格地、形式地表达出来。
需求工程
把所有与需求直接相关的活动通称为需求工程。
—需求类别
- 功能需求、性能需求、环境需求
- 可靠性需求、安全保密需求、用户界面需求、资源使用需求、软件成本消耗和开发进度需求、可能目标估计
—需求分析必要性
- 在这个阶段,开发人员描述软件功能与性能、指明软件和其他系统元素的接口,建立软件必须满足的约束条件。
- 开发人员细化关键问题,构建相应的分析模型
- 分析模型成为设计模型的基础,需求规格说明书为测试人员和用户提供了软件质量评估的依据。
- 需求分析准确表达用户对系统的各项要求。
—需求分析对象
用户的具体要求。
—需求分析任务
准确定义新系统的目标,编制需求规格说明书。
—需求分析目标
借助当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。
—需求分析原则
操作性原则
- 信息与必须被表示和被理解;
- 功能必须被定义;
- 行为必须被表示;
工程化原则
- 正确理解问题再建立分析模型;
- 记录每个需求的起源及原因,保证需求的可回溯性;
- 开发人机交互过程的原型;
- 给需求赋予优先级;
- 删除歧义性;
—需求分析分析模型
- 数据模型
主要包括如下几个方面:信息内容和关系;信息流;信息结构。
- 功能模型
对进入软件的信息和数据进行变换和处理,至少完成三个常见功能:输入、处理和输出。
- 行为模型
大多数软件对来自外界的事件做出反应,这种刺激/反应特征形成了行为模型的基础。行为模型创建了软件状态的表示,以及导致软件状态变化的事件的表示。
三、需求分析基本过程
—需求获取
- 清楚理解所要解决的问题,完整获得用户需求,提出需求实现条件以及应达到的标准,经过分析之后生成《用户需求说明书》。
- 难点:用户无法清楚表达需求、需求的理解问题、用户经常变更需求
- 需求获取的准备工作:
-准备需求调查问题表,将重点锁定在问题表中;
-确定调查方式;
-随时记录需求信息;
-对需求信息进行分析,消除错误,
-归纳和总结共性的用户需求;
—需求分析与综合
在需求获取之后对需求进行建模分析,细化所有的软件功能,找到系统各元素之间的联系、接口特性、设计限制,分析各元素是否满足功能要求,是否合理。
—需求建模
- 描述系统需要做什么,而不是如何去做系统;给出系统的逻辑视图以及物理视图;
- 常用的建模分析方法:
-面向数据流的结构化分析方法
-面向数据结构的Jackson方法
-面向对象的分析方法
-建立动态模型的状态迁移图
—需求分析文档编制
通过建模结果,编制软件需求规格说明书和用户需求说明书。
—需求确认和评审
需求规格说明书需要进行内部评审,和用户进行需求确认,并进行需求修改。