《需求工程——软件建模与分析》02
一、需求分类与表述:
(一)严格意义上的需求分类常见的有以下五种:
1.功能需求(functional requirement):和系统主要工作相关的需求,即在不考虑物理约束的情况下,用户希望所能够执行的活动。
2.性能需求(performance requirement):系统整体或者其他部分应该拥有的性能特征。
3.质量属性(quality attribute)
4.对外接口(external interface):软、硬件、数据库接口。
5.约束(constraint):例如编程语言、硬件设施等。
(二)五种需求的详细说明:
1.功能需求:
软件需求中最常见和最重要的需求,同时也是最为复杂的需求。
2.性能需求常见分类:
(1)速度:系统完成任务所需的时间。
(2)容量(capacity):存储的数据量。
(3)吞吐量(throughput):连续时间内完成的事务数量。
(4)负载(load):承载的并发工作量。
(5)实时性(time-critical)
3.质量属性:
为了度量系统的质量,需要选用某些质量要素进行量化处理,建立质量特征。书中介绍了[ISO/IEC 9126-1]、[IEEE 1061-1992,1998]两种质量模型,两者从大致的分类上一致,只是在细化时的子因素所包含的特征略微不同。下面以[IEE 1061-1992,1998]为例进行总结,其主要包含了以下几个要素:
(1)功能性
系统的完备性、正确性、安全性、兼容性、互操作性。
(2)可靠性
系统的无缺憾性、容错性、可用性。
(3)易用性
包含可理解性、易学习性、易操作性、通信性。
(4)效率
包含时间经济性、资源经济性。
(5)可维护性
包含可修正性、扩展性、可测试性。
(6)可移植性
包含软硬件独立性、可安装性、可复用性。
4.对外接口:
对系统的软硬件接口需要说明以下内容:
(1)接口的用途
(2)接口的输入输出
(3)格式规范,例如数据、命令格式
(4)异常处理要求
5.约束:
常见约束内容:
(1)系统开发及运行环境
(2)问题域的相关标准:包括法律法规、行业协定和企业规模等。
(3)商业规则
(4)社会性因素:例如文化、信仰。
6.其他需求:
例如安装需求、培训需求、数据需求等。
二、优秀需求的特性
(一)完备性
不需要做更多的扩展就可以充分说明用户需求的系统功能。在需求开发过程中,对于不清晰的信息可以标记为TBD(To be Determined,待确定),但在开发过程结束之前,所有的TBD都必须解决。
可通过对不同类型的需求从不同方面来保障需求描述的完备性。
1.对功能需求需要确保以下内容进行了描述:
(1)行为的触发者(trigger):它使系统执行功能需求的行为,常见触发者包括数据输入、接收的请求、要处理的异常等。
(2)行为的前置条件(pre-condition):系统成功满足功能需求的前提。常见的前置条件包括系统的模式或状态,其他外部系统的状态、任何系统数据的值。
(3)行为:前置条件下接受到触发者时,系统必须执行的行为。
(4)后置条件(post-condition):系统成功后执行行为后所处的状态。
(5)不满足前置条件情况下,相应情况的结果。
(二)正确性
(三)可行性
(四)必要性
(五)无歧义
(六)可验证