购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2.1 软件需求

IEEE软件工程标准词汇表(1997年)中将需求定义为:①用户解决问题或达到目标所需的条件或能力;②系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力。

其中,①是从用户的角度定义的,②是从软件系统的角度定义的。虽然目前对什么是软件需求的定义有不同的看法,但我们认为软件需求是指软件系统必须满足的所有功能、性质和限制。需求分析需要实现的是将用户对软件的一系列要求、想法转变为软件开发人员所需要的有关软件的技术规格说明,它涉及面向用户的用户需求和面向开发者的系统需求两个方面的工作内容。

软件需求包括3个不同的层次:业务需求、用户需求和系统需求(包括功能需求、非功能需求和数据需求)。

1.业务需求

业务需求反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。

2.用户需求

用户需求是关于软件的一系列想法的集中体现,涉及软件的功能、操作方式、界面风格、用户机构的业务范围、工作流程、用户对软件应用的展望等。因此,用户需求也就是关于软件的外界特征的规格表述。用户需求具有以下特点:

(1)用户需求直接来源于用户。需求可以由用户主动提出,也可以通过与用户进行沟通、交流或者通过问卷调查等方式获得。由于用户对计算机系统认识上的不足,分析人员有义务帮助用户挖掘需求,如可以用启发的方式激发用户的需求想法。

(2)用户需求需要以文档的形式提供给用户审查,因此,需要使用流畅的自然语言和简洁清晰的直观图表来表述,以方便用户的理解和确认。

(3)可以把用户需求理解为用户对软件的合理请求。这意味着,必须全面理解用户的各项要求,但又不能全盘接受其要求。因为并非所有用户提出的全部要求都是合理的,对其中模糊的要求还需要澄清,然后才能决定是否可以采纳。对于那些无法实现的要求应向用户充分解释,以求得到理解。

(4)用户需求主要是为用户方管理层撰写的,但是用户方的技术代表、软件系统今后的操作者及开发方的高层技术人员,也有必要认真阅读用户需求文档。

3.系统需求

系统需求是比用户需求更具有技术特性的需求陈述,它是提供给开发方或用户方技术人员阅读的,并将作为软件开发人员设计系统的起点与基本依据。系统需求需要对系统的功能、性能、数据等方面进行规格定义。系统需求往往要求用更加严格的形式化语言进行表述,以保证系统需求表述具有一致性。系统需求是综合的、多方面的,下面重点介绍功能、非功能、数据3个方面的需求特征。

(1)功能需求。功能需求是软件系统的最基本的需求表述,包括对系统应该提供的服务,如何对输入作出反应,以及系统在特定条件下的行为描述。在某些情况下,功能需求还必须明确系统不应该做什么,这取决于开发的软件类型、软件未来的用户及开发的系统类型。所以,功能性的系统需求,需要详细地描述系统功能特征、输入和输出接口、异常处理方法等。

软件系统的功能需求可以有许多不同的描述方式。软件工程中的许多问题都源自对需求描述的不严格,自然语言对需求分析最大的弊端就是它的二义性,所以我们不得不对需求分析中采用的语言做某些限制。例如,尽量采用主语+动词的表达方式。

理论上,系统的功能需求描述应该具有全面性和一致性。全面性意味着对用户所需的所有功能都应该给出描述;一致性意味着需求描述不能前后矛盾。在实际过程中,对于大型复杂的系统而言,要完全满足这两个方面的要求几乎是不可能的,因此,需要由质量保证小组进行评审。

(2)非功能需求。非功能需求包括对系统提出的性能需求、可靠性和可用性需求、系统安全,以及系统对开发过程、时间、资源等方面的约束、标准等。性能需求指系统必须满足的定时约束或容量约束,一般包括速度(响应时间)、信息量速率(吞吐量、处理时间)、存储容量等方面的需求。例如,“汇总统计分析必须在一分钟之内生成”就是一项性能需求。可靠性需求定量地指定系统的可靠程度,如“系统应支持7×24小时提供服务的业务需要”。可用性与可靠性密切相关,它量化了用户可以使用系统的程度。例如,在任何情况下,主机或备份系统应该至少有一个可用,而且在一年内,该系统的不可用时间不能超过总时间的1%。

非功能需求一般关心系统的整体特性,而不是个别的系统特性。因此,对于系统来说非功能需求比功能需求更关键。一个功能需求没有满足,可能降低系统的能力;而一个非功能需求没有满足,则可能使整个系统无法使用。

非功能需求不仅与软件系统本身有关,还与系统的开发过程有关。例如,质量标准的描述、使用开发工具的描述,以及必须遵守的原则等。非功能需求还源于一些用户的限制,包括预算约束、机构政策、硬件平台、隐私权的保护等。

(3)数据需求。大多数软件系统本质上都是信息处理系统。系统处理的信息和系统产生的信息在很大程度上决定了系统的面貌,对软件设计具有深远的影响。因此,必须分析系统的数据需求,这也是软件需求分析的一个任务。数据需求包括输入数据、输出数据、加工中的数据、保存在存储设备上的数据等。在结构化方法中,可以使用数据字典对数据进行全面准确的定义,如数据的名称、组成元素、出现的位置、出现的频率、存储的周期等。当所要开发的软件系统涉及对数据库的操作时,可以使用数据关系模型图,对数据库中的数据实体、数据实体之间的关系进行描述。 hd5yeCZJNn97EU5XBvfWd84hPDYRrSizhf+Zs1veGePc5LaQe/d9QvC8ryknmyoY

点击中间区域
呼出菜单
上一章
目录
下一章
×