4.4.2 需求描述的范围
需求分析的具体内容可以归纳为以下几方面:软件的功能需求、软件与硬件或其他外部系统接口、软件的非功能性需求、软件设计和实现上的限制、软件的反向需求、阅读支持信息等。
1.软件的功能需求
软件的功能需求是整个需求分析中的关键部分,描述软件在各种可能条件下,对所有可能输入的数据信息应完成哪些具体功能,产生什么样的输出。描述软件功能需求时应包含与功能相关的信息,应注意以下几点:
(1)必须清晰地描述出怎样输入、怎样输出,描述对应数据流描述、控制流描述图等,这些描述必须与其他地方描述一致。
(2)可以用语言、决策表、矩阵等对功能进行描述,如果选用语言描述必须使用结构化语言,必须说明该步骤的执行是顺序、选择、重复还是并发,说明步骤逻辑,整个描述必须符合单入口、单出口。
(3)每一个功能名称和参照编号必须唯一,不要将多个功能混在一起进行描述,这样便于功能的追踪和修改。
(4)注意需求说明和程序设计的区别。功能描述不应涉及那些细节问题,以避免给软件设计带来不必要的约束,例如,采用什么数据结构、定义接口等是设计阶段的事情。
(5)不使用“待定”这样的词,含有待定内容的需求都不是完整的文件,如果出现待定的部分,必须进行待定部分内容说明,落实负责人员、落实实施日期等。
需求功能描述要求做到无歧义、可追踪性和规范化。
2.软件与硬件或其他外部系统接口
软件与硬件或其他外部系统接口包括以下内容:
(1)人机接口:说明输入、输出的内容、屏幕安排、格式等要求。
(2)硬件接口:说明端口号、指令集、输入/输出信号的内容与数据类型、初始化信号源、传输通道号和信号处理方式。
(3)软件接口:说明软件的名称、助记符、规格说明、版本号和来源。
(4)通信接口:指定通讯接口和通讯协议等描述。
3.软件的非功能性需求
非功能需求是衡量软件能否良好运行的定性指标,在实际收集需求信息时,开发人员往往容易忽略非功能性需求,因为非功性能需求很难定义,如可靠性、易使用性、用户界面友好等。对软件系统的非功能性需求有很多,一定要根据用户对系统的期望来确定非功能性需求,主要包括性能性需求和其他非功能性需求,下面列举主要的性能需求指标(前两项)和其他非功能性需求的主要指标:
(1)时间需求:输入/输出频率、输入/输出响应时间、各种功能恢复时间等。
(2)处理容限、精度、采样参数的分辨率,误差处理等。
(3)可靠性:指在给定的时间内以及规定的环境条件下,软件系统能完成所要求功能的概率,其定量指标通常用平均无故障时间和平均修复时间来衡量。
(4)可扩充性:指软件系统能方便和容易地增加新功能,通常用增加新功能时所需工作量的大小来衡量。
(5)安全性:主要涉及防止非法访问系统功能,防止数据丢失,防止病毒入侵和防止私人数据进入系统等。
(6)互操作性:指软件系统与其他系统交换数据和服务的难易程度。
(7)健壮性:指软件系统或者组成部分遇到非法输入数据以及在异常情况和非法操作下,软件系统能继续运行的程度。
(8)易使用性:指用户学习和使用软件系统功能的简易程度,也包括对系统的输出结果易于理解的程度。
(9)可维护性:指在软件系统中发现并纠正一个故障或进行一次更改的简易程度。
(10)可移植性:指把一个软件系统从一种运行环境移植到另一个运行环境所花费的工作量的度量。
(11)可重用性:组成软件系统中的某个部件除了在最初开发的系统中能使用外,还可以在其他应用系统中使用的程度。
以上是在实际开发中,用户可能提出的一些非功能需求,随着软件系统的目标和应用领域的不同,用户提出的非功能需求可能是上述需求的一部分,也可能超出上述的非功能性需求。软件系统应具备什么样的可靠性?易使用性应达到什么程度?什么样的用户界面才算是友好的?这些问题由于缺乏定量指标,很难根据这些需求来评价软件系统,这也是开发出来的软件系统与用户所要满足的软件系统之间存在差异的主要原因。
4.软件设计和实现上的限制
软件设计和实现上的限制指对软件设计者的限制,如软件运行环境的限制(选择计算机类型,使用配置,操作系统的限制等)、设计工具的限制(使用语言、执行的标准)和保密要求等。
5.软件反向需求
软件反向需求描述软件在哪些情况下不能做什么,随软件实际要求而定,有两类情形需要采用反向需求的形式:第一种情况是某些用户需求适合采用反向形式说明,如数据安全性要求;第二种情况是对一些可靠性和安全性要求较高的软件,有些必须描述软件不能做些什么。
6.阅读支持信息
为了更好地理解用户需求,使需求便于修改和追踪,阅读支持信息本身并不是对需求的描述,但它影响到需求分析的可读性,也属于需求分析的一个重要部分,一般目录、需求背景信息、内容索引、交叉引用表、注释等均属于这部分的内容。