软件需求基础
5-软件需求基础
需求工程概念:
所有需求处理活动的总和。它收集信息、分析问题、整合观点、记录需求并验证其正确性,最终描述出软件被应⽤后与其环境互动形成的期望效应
需求工程的三个任务:
①说明软件系统被应用的环境及其目标(在哪里做什么),说明达成这些目标的软件功能(以什么做),也即要同时说明软件需要“做什么”和“为什么”需要做。(环境,目标,功能)
②需求工程必须将目标和功能反映到软件系统当中,映射为可行的软件行为,并对其进行准确的规格说明。(反映,规格说明)
③现实世界是不断变化的世界,因此需求工程还需要处理目标和功能随着时间演化的变动情况。(迎接变化)
需求工程的活动
①(“需求特性”)需求开发:
需求获取:从人、文档或者环境中获取需求的过程。
需求分析:通过建模分析,达到开发者与用户对需求的共同理解,检查需求中存在的各种缺陷,并加以修改。
需求规格说明:将获取的需求编写成文档,从软件产品的角度以系统级需求列表的方式描述软件系统解决方案。
需求验证(验证方法有:同级评审,原型,模型):验证文档中定义的需求的正确性和准确性。
②(“工程特性”)需求管理:保证需求作用的持续、稳定和有效发挥以及进行变更控制。
需求获取的方法
面谈:需求工程师与用户面对面交谈
集体获取方法:多个用户集中在一起讨论,发现需求
头脑风暴:特殊的面谈方式,鼓励自由思考,目的是发现潜在需求
原型:建立一个有形的制品来增进用户与需求工程师的交流
需求定义
1)用户的一种期望,用户为了解决问题或达到某些目标所需要的条件或能力。
2)系统或系统部件为了满足合同、标准、规范或其他正式文档所规定的要求而需要具备的条件或能力。
3)对 1) 或 2)中的一个条件或一种能力的一种文档化表述。
需求的三个层次
①业务需求: 抽象层次最高的需求,是系统建立的战略出发点,描述了组织为什么要开发系统,
描述:系统提供…服务(图书管理系统应该提供查询,借书,还书等服务)
②用户需求:用户对系统所能完成的具体任务的期望,描述了系统能够帮助用户做些什么
描述:系统应该允许…做…(系统应该允许图书管理员查看书库存和借书人信息)
③系统级需求:用户对系统行为的期望,每个系统级需求反映了一次外界与系统的交互行为,或者系统的一个实现细节,描述了开发人员需要实现什么
描述:当…,系统应该…(当管理员输入借书编号时,应该提供借书人信息和其结束记录)
需求三个层次的联系
都是用户的一种期望,用户为了解决问题或达到某些目标所需的条件或能力。
业务需求指导用户需求的获取、而用户需求又需要进行分析转化为系统级需求进而用于系统开发。

需求、问题域、规格说明三者的区别与联系:
区别:
①需求:需求是用户的一种期望。源于现实又高于现实,需求是多变和可调整的,项目可以依据实际情况调整需求的实现程度。
②问题域:是现实世界运行规律的一种反映,是需求的产生地也是解决地。最终的软件产品要在现实中部署,它能够部分影响问题域,但不能任意改变现实。
③规格说明:从软件产品的角度以系统级需求列表的方式描述软件系统解决方案。不是需求但实现需求,不是问题域但需要与问题域互动。
联系:都是是进行需求开发的三个重要内容。
①如果忽视需求,则软件系统只是单纯模拟现实而不是改变现实,丢失了软件产品的价值。
②如忽视问题域,则软件系统脱离现实,无法得到应用。
③规格说明本质上是对需求以及问题域的吸纳。
需求谱系

软件需求的分类:
①功能需求:和系统主要工作相关的需求,主要表现为系统和环境之间的交互(需求的三个层次是功能性需求的三个层次)
②非功能需求:描述了一个系统的性能特点,包括性能需求,质量属性,对外接口和约束等,其中质量属性是非功能需求中最大的需求
非功能需求:
①性能需求:系统限定的约束下,完成其制定功能的程度,例如速度,容量,吞吐量,负载,实时性
②质量属性:隐式的需求,分为可靠性,可用性,安全性,可维护性,可移植性,易用性
③对外接口:指系统和环境中其他系统之间需要建立的接口,包括用户界面,标题的形式,软硬件接口,网络通信接口,需要说明接口的用途,输入输出,数据格式,命令格式,异常处理要求
④约束:进行系统构造时需要遵守的约定,编程语言,硬件设施。(开发运行环境,问题域内相关标准(法律等),商业规则)
③数据需求:功能需求的补充,常用于数据库、文件等存储数据的描述。
质量属性
①可用性:软件投入使用时的可操作性和可访问程度
②可靠性:软件产品维持规定性能水平的能力。
③安全性:软件安全保护机制不受非法入侵的能力
④可维护性:修正缺陷,改进功能或适应环境而修改软件的容易程度。
⑤可移植性:从一种软件或环境环境转移到另一种环境的容易程度。
⑥易用性:用户使用软件所花费的努力及对其使用的评价。(易学性,易记性,效率,主观满意度,出错率)