第 4 讲 需求分析
Requirements Analysis
需求是什么?
需求分析总述
,系统必须做什么?,的问题。
需求分析阶段真正的目标是确定客户 需要 什么样的软件。
软件开发者和用户起着 同样重要的作用 。
需求分析是软件开发项目得以 成功的基础 。
需求分析的重要性软件生命周期中,一个错误发现得越晚,
修复错误的费用越高。
许多错误是潜伏的,并且在错误产生后很长一段时间才被检查出来。
在需求过程中会产生很多错误。
在需求阶段,代表性的错误为疏忽、不一致和二义性。
需求错误是可以被检查出来的。
生命周期中修复软件的相对费用需求阶段设计阶段编码阶段单元测试阶段验收测试阶段维护阶段
0.1 ~ 0.2
0.5
1
2
5
20
阶段 相对修复费用需求分析的困难性误解交流障碍缺乏共同语言
“完整性”问题需求永远不会稳定用户意见不统一错误要求认识混淆需求工程通常是一些过程的集合:
需求获取 (需求获取 )、
需求分析
编写软件规格说明书 (SRS)
验证 (包括确认和证实 )。
需求工程
Requirements Engineering
需求工程涉及人员需求分析的任务可行性分析阶段已经粗略了解了用户的需求,甚至已经提出了一些可行的方案,
但是,可行性研究的基本目的是用较小的成本在较短的时间内确定是否存在可行的方案。因此许多细节被忽略。
在系统开发前,还需要进一步确定需求分析软件需求分析可分成 6个任务:
问题识别 (problem recognition)
评估和综合 (evaluation and synthesis)
建模 (modeling)
建立原型 (prototyping)
规约 (specification)
评审 (review)
需求分析的任务问题识别
分析人员研究系统规约和软件项目计划,了解软件在系统中的作用。其次,与用户建立通信关系,了解用户提出的功能和性能要求。其目标是弄清用户理解的基本问题元素。
评价和综合
分析人员必须获得数据的流程和数据结构,评价优缺点;结合用户要求,修改现行的系统,提出新系统的功能,加以细化;提出软件的约束条件、响应时间、存储条件等。
需求分析的任务建模
使用文本、图形等表示形式的组合描述软件系统的数据、功能和行为的需求。同时也是评审的焦点,以及设计的基础。
建立原型
由于得不到详细和完整的需求规约,所以可以为需求分析选择原型开发方法。
需求分析的任务建立规约
软件需求规约包含软件功能、性能、接口、
有效性和逻辑模型的描述。为了证实软件能否被成功实现,就要规定相应的检验标准,
这些标准在软件开发期间将作为测试的依据。
评审
由软件开发人员和用户共同对需求说明书进行严格的评审。
需求分析的目标软件需求分析实现以下几个目标:
给出软件系统的数据领域、功能领域和行为领域的模型;
提出详细的功能说明,确定设计约束条件,规定性能要求;
密切与用户的联系,使用户明确自己的任务,以便实现上述两项目标。
涉及与思考的几个问题
如何定义软件系统需求?
如何识别、获取需求?
你能够采取何种手段与用户进行交流沟通?
需求获取需求获取 确定客户或用户的要求是什么的信息收集过程。
目的:
研究可行性分析报告和系统实施计划,
明确系统的目标要求。
建立分析所需要的通信途径,保证需求获取得顺利进行。
需求获取面临的挑战
问题的复杂性
对问题空间理解的不完备性与不一致性
交流障碍
需求易变性需求获取获取技术
建立分析小组
包括领域专家-主角和系统分析员-导演
客户访谈或会议
情景 (Scenario)/ 用例 (use-case)
在 OO分析中更重要
问卷调查表 (questionnaire)
方便的应用规范技术 (FAST)
质量功能部署 (QFD)
需求获取的内容用户需求分类
功能性需求,定义了系统做什么(描述系统必须支持 的功能和过程)。
非功能性需求(技术需求),定义了系统工作时的特性描述操作环境和性能目标)。
包括的内容
功能、性能、环境、界面、用户或人的因素、
文档、数据、资源、安全保密、软件成本消耗与开发进度、质量保证 。
系统做什么?
系统何时做什么?
系统何时及如何修改或升级?
功能需求软件开发的技术性指标。例如:
存储容量限制
执行速度、相应时间
吞吐量性能需求
硬件设备,机型、外设、接口、
地点、分布、温度、
湿度、磁场干扰等
软件:操作系统、网络、数据库等环境需求
有来自其它系统的输入吗?
到自其它系统的输出吗?
对数据格式有规定吗?
对数据存储介质有规定吗?
界面需求
用户类型?
各种用户熟练程度?
需受何种训练?
用户理解、使用系统的难度?
用户错误操作系统的可能性?
用户或人的因素小结需求分析的重要性与困难需求工程的基本概念需求分析的过程