定义为一种实现上的限制。
3.4 通讯接口
描述与软件产品所使用的通讯功能相关的需求,包括: ● 电子邮件; ● WEB浏览器;
● 网络通讯标准或者协议; ● 数据交互用电子表格; 必须定义相关的: ● 消息格式;
● 通讯安全或加密问题; ● 数据传输速率;
● 同步和异步通讯机制;
4. 系统功能需求
需要进行详细的需求记录,详细列出与该系统功能相关的详细功能需求,并且,唯一地标识每一项需求。这是必须提交给用户的软件功能,使得用户可以使用所提供的功能执行服务或者使用所指定的使用实例执行任务。描述软件产品如何响应己知的出错条件、非法输入、非法动作。
如果每一项功能需求都能用一项,也只需要用一项测试用例就能进行验证,那么就可以认为功能需求已经适当地进行描述了。如果某项功能需求找不到合适的测试用例,或者必须使用多项测试用例才能验证,那么该项功能需求的描述必然存在某些问题。
功能需求是根据系统功能,即软件产品所提供的主要服务来组织的。可以通过使用实例、运行模式、用户类、对象类或者功能等级来组织这部分内容,也可以便用这些元素的组合。总而言之,必须选择一种是读者容易理解预期产品的组织方案。
用简短的语句说明功能的名称,例如:“4.1系统参数管理”。按照服务组织的顺序,逐条阐述系统功能。无论说明的是何种功能,都应该针对该系统功能重复叙述4.1~ 4.3这三个部分。
可以通过各种方式来组织这一部分内容,例如采用:使用实例、运行模式、用户类、对象类、功能等级等,也可以采用它们的组合。其最终目的是,让读者容易理解即将开发的软件产品。一般来说,每个使用实例都对应一个系统功能,因而按照使用实例来组织内容比较容易让用户理解。
对应一些被共享的独立使用实例,可以定义一些公用系统功能。
必须特别注意的是,在2.2节“产品的功能”中描述的全部需求,以及它们的规格说明;必须在某个系统功能描述中有所反映,而且不应重复。
4.1 说明和优先级
对该系统功能进行简短的说明,并且指出该系统功能的优先级是:高、中、还是低。需要的话,还可以包括对特定优先级部分的评价,例如:利益、损失、费用和风险,其相对优
8
先等级可以从1(低)到9(高)。
4.2 激励/响应序列
列出输入激励(用户动作、来自外部设备的信号或者其它触发)并且定义针对这——功能行为的系统响应序列,这些序列将与使用实例中相关的对话元素相对应。
描述激励/响应序列时,不仅需要描述基本过程,而且应该描述可选(扩充)过程,包括例外(引起任务不能顺序完成的情况称为例外)。疏忽了可选过程,有可能影响软件产品的功能;如果遗漏例外过程,则有可能会引发系统崩溃。
如果采用流程图来描述激励/响应序列,比较容易让用户理解。
4.3 输入/输出数据
列出输入数据(用户输入、来自外部接口的输入或者其它输入)并且定义针对这些输入数据的处理(计算)方法,以及相应地输出数据,描述对应区别:输入数据和输出数据。
当有大量数据需要描述时,也可以分类描述数据,并且注明各项数据的输入、输出属性。 对于每一项数据,均需要描述: ● 数据名称; ● 实际含义; ● 数据类型; ● 数据格式; ● 数据约束;
对于复杂的处理方法,仅仅给出算法原理是不够的,必须描述详细的计算过程,并且列出每一步具体使用的实际算式;如果计算过程中涉及查表、判断、迭代等处理方法,应该给出处理依据和相关数据。如果计算方法很简单,也可以将其从略,不加描述。
5. 其它非功能需求
在这里列举出所有非功能需求,主要包括可靠性、安全性、可维护性、可扩展性、可测试性等。
5.1 性能需求
阐述不同应用领域对软件产品性能的需求,并且说明提出需求的原理或者依据,以帮助开发人员做出合理的设计选择。尽可能详细地描述性能需求,如果需要,可以针对每个功能需求或者特征分别陈述其性能需求。在这里确定:
● 相互合作的用户数量; ● 系统支持的并发操作数量; ● 响应时间;
● 与实时系统的时间关系: ● 容量需求
? 存储器;
9
? 磁盘空间;
? 数据库中表的最大行数。
5.2 安全措施需求
详尽陈述与软件产品使用过程中可能发生的损失、破坏、危害相关的需求。定义必须采取的安全保护或动作,以及必须预防的潜在危险动作。明确软件产品必须遵从的安全标准、策略、或规则。
5.3 安全性需求
详尽陈述与系统安全性、完整性问题相关的需求,或者与个人隐私问题相关的需求。这些问题将会影响到软件产品的使用,和软件产品所创建或者使用的数据的保护。定义用户身份认证,或备授权需求。明确软件产品必须满足的安全性或者保密性策略。也可以通过称为完整性的质量属性来阐述这些需求。一个典型的软件系统安全需求范例如下:“每个用户在第一次登录后,必须更改他的系统预置登录密码,系统预置的登录密码不能重用。”
5.4 软件质量属性
详尽陈述对客户和开发人员至关重要的在软件产品其它方面表现出来的质量功能。这些功能必须是确定的、定量的、在需要时是可以验证的。至少也应该指明不同属性的相对侧重点,例如:易用性优于易学性,或者可移植性优于有效性。
5.5 业务规则
列举出有关软件产品的所有操作规则,例如:那些人在特定环境下可以进行何种操作。这些本身不是功能需求,但是他们可以暗示某些功能需求执行这些规则。一个业务规则的范例如下:“进行达到或者超过10,000,00元人民币的储蓄业务时,必须通过附加的管理员认证。”
列举业务规则时,可以根据规则的数量,选取合适的编目方式。
5.6 用户文档
列举出将与软件产品一同交付的用户文档,并且明确所有己知用户文档的交付格式或标准,例如:
● 安装指南
纸质文档,16开本; ● 用户手册
纸质文档,16开本; ● 在线帮助
● 电子文档,与软件产品一同分发、配置;
● 使用教程电子文档,与软件产品一同分发、配置。
10
6. 词汇表
列出本文件中用到的专业术语的定义,以及有关缩写的定义(如有可能,列出相关的外文原词)。为了便于非软件专业或者非计算机专业人士阅读软件产品需求分析报告,要求使用非软件专业或者非计算机专业的术语描述软件需求。所以这里所指的专业术语,是指业务层面上的专业术语,而不是软件专业或者计算机专业的术语。但是,对于无法回避的软件专业或者计算机专业术语,也应该列入词汇表并且加以准确定义。
7. 数据定义
数据定义是一个定义了应用程序中使用的所有数据元素和结构的共享文档,其中对每个数据元素和结构都准确描述:含义、类型、数据大小、格式、计量单位、精度以及取值范围。数据定义的维护独立于软件需求规格说明,并且在软件产品开发和维护的任何阶段,均向风险承担者开放。
如果为软件开发项目创建一个独立的数据定义,而不是为每一项特性描述有关的数据项,有利于避免冗余和不一致性。但是却不利于多人协同编写需求分析报告,容易遗漏数据,也不方便阅读。因此还是建议为每个特性描述有关的数据项,汇总数据项创建数据定义,再根据数据定义复核全部数据,使得它们的名称和含义完全一致。必须注意的是,为了避免二义性,在汇总数据项时应该根据数据项所代表的实际意义汇总,而不是根据数据项的名称汇总。
在数据定义中,每个数据项除了有一个中文名称外,还应该为它取一个简短的英文名称,该英文名称应该符合命名规范,因为在软件开发时将沿用该英文名称。可以使用等号表示数据项,名称写在左边,定义写在右边。常见数据项的描述方式如下:
● 原数据元素
一个原数据元素是不可分解的,可以将一个数量值赋给它。定义原数据元素必须确定其 含义、类型、数据大小、格式、计量单位、精度以及取值范围。采用以星号为界的一行 注释文本,描述原数据元素的定义。 ● 选择项
选择项是一种只可以取有限离散值的特殊原数据元素,描述时一一枚举这些值,并用方 括号括起来写在原数据元素的定义前。在两项离散值之间,使用管道符分隔。 ● 组合项
组合项是一个数据结构或者记录,其中包含了多个数据项。这些数据项可以是原数据元 素,也可以是组合数据项,各数据项之间用加号连接。其中每个数据项都必须是数据定 义中定义过的,结构中也可以包括其它结构,但是绝对不允许递归。如果数据结构中有 可选项,使用圆括号把该项括起来。 ● 重复项
重复项是组合项的一种特例,其中有一项将有多个实例出现在数据结构中,使用花括号 把该项括起来。如果知道该项可能允许的范围,就按“最小值:最大值”的形式写在花 括号前。
11

