需求规格说明书(ISO标准版)
编者说明:
当需求调查、分析工作告一段落时,你就需要将这些需求进行规格化
描述,整理成文,即软件需求规格说明书,也就是SRS。这是在软件项目
过程中最有价值的一个文档。ISO所提供的标准虽然已经时间久远,但还
是颇具参考价值的。
1.引言
编写的目的
[说明编写这份需求说明书的目的,指出预期的读者。]
背景
a.待开发的系统的名称;
b.本项目的任务提出者、开发者、用户;
c.该系统同其他系统或其他机构的基本的相互来往关系。
定义
[列出本文件中用到的专门术语的定义和外文首字母组词的原词
组。]
参考资料
[列出用得着的参考资料。]
2.任务概述
目标
[叙述该系统开发的意图、应用目标、作用范围以及其他应向读者
说明的有关该系统开发的背景材料。解释被开发系统与其他有关系统之
间的关系。]
用户的特点
[列出本系统的最终用户的特点,充分说明操作人员、维护人员的
教育水平和技术专长,以及本系统的预期使用频度。]
假定和约束
[列出进行本系统开发工作的假定和约束。]
3.需求规定
对功能的规定
[用列表的方式,逐项定量和定性地叙述对系统所提出的功能要求,
说明输入什么量、经怎么样的处理、得到什么输出,说明系统的容量,
包括系统应支持的终端数和应支持的并行操作的用户数等指标。]
对性能的规定
精度
[说明对该系统的输入、输出数据精度的要求,可能包括传
输过程中的精度。]
时间特性要求
[说明对于该系统的时间特性要求。]
灵活性
[说明对该系统的灵活性的要求,即当需求发生某些变化时,
该系统对这些变化的适应能力。]
输入输出要求
[解释各输入输出数据类型,并逐项说明其媒体、格式、数值范围、
精度等。对系统的数据输出及必须标明的控制输出量进行解释并举例。]
数据管理能力要求(针对软件系统)
[说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按
可预见的增长对数据及其分量的存储要求作出估算。]
故障处理要求
[列出可能的软件、硬件故障以及对各项性能而言所产生的后果和
对故障处理的要求。]
其他专门要求
[如用户单位对安全保密的要求,对使用方便的要求,对可维护性、
可补充性、易读性、可靠性、运行环境可转换性的特殊要求等。]
4.运行环境规定
设备
[列出运行该软件所需要的硬设备。说明其中的新型设备及其专
门功能,包括:
a.处理器型号及内存容量
b.外存容量、联机或脱机、媒体及其存储格式,设备的型号
及数量
c.输入及输出设备的型号和数量,联机或脱机;
d.数据通信设备的型号和数量
e.功能键及其他专用硬件]
支持软件
[列出支持软件,包括要用到的操作系统、编译程序、测试支持
软件等。]
接口
[说明该系统同其他系统之间的接口、数据通信协议等。]
控制
[说明控制该系统的运行的方法和控制信号,并说明这些控制信
号的来源。]
需求规格说明书(Volere版)
编者说明:
AtlanticSystemGuild()公司所提供的Volere需求过程与软件需
求规格说明书模板则充分利用了现代软件工程思想与技术,是一个十分实
用、完善的SRS模板。其所提供的Volere需求记录卡也十分实用,强烈
推荐。
注:从AtlanticSystemGuild公司网站上获得,并稍做修改
1.产品的目标
该项目工作的用户问题或背景
[对引发开发任务的工作和情况的描述。同时也应描述用户希望用
将要交付的软件来完成的工作。]
[该节内容为该项目提供了合法的理由,你应该考虑用户的问题是
否严重,是否应该解决和为什么应该解决。]
产品的目标
[用一句话或很少的几句话来说明“我们希望该产品做什么”换言
之,即开发该产品的真正原因。
[项目如果没有一个表述清晰、易于理解的目标,就会迷失在产品
开发的沙漠中。产品必须带来某种优势。典型的优势是产品会增加组织
在市场上的价值,减少运作成本,或提供更好的客户服务。这个优势应
该是可度量的,这样才能够让您确定交付的产品是否达到目标。]
2.客户、顾客和其它风险承担者
客户是为开发付费的人,并将成为所交付产品的拥有者
[这一项必须给出客户的姓名,三个以内是合理的。]
[客户最终将接受该产品,因此必须对交付的产品满意。如果你无
法找到一个客户的姓名,那么也许你就不应该构建该产品。]
顾客是将花钱购买该产品的人
[也给出姓名和相关的信息]
其它风险承担者
[其他的一些人或组织的名称,他们或者受到产品的影响,或影响
产品。]
1)经理或项目负责人;
2)业务领域专家;
3)技术人员;
4)系统开发者;
5)市场人员;
6)产品经理;
7)测试和质量保证人员;
8)审查员,诸如安全审查员或审计人员;
9)律师;
10)易用性专家;
11)你所处行业的专业人员。
3.产品的用户
产品的用户
[产品的潜在用户或操作员的列表。针对每种类型的用户,提供以
下信息:]
1)用户分类
2)用户工作的任务;
3)主要相关的经验;
4)技术经验;
5)其他用户特征:包括身体、智力、工作态度、对技术的态度、
教育程度、语言技能、年龄、性别等。
[用户是为了完成工作而与产品交互的人,你了解用户,就越
可能提交适合用户工作方式的产品。]
对用户设的优先级
[在每类用户后面附上一个优先级,这区别了用户的重要性和优先
地位:]
1)关键用户:对产品的后续成功至关重要;
2)次要用户:他们使用产品,但对产品的长期成功并无影响;
3)不重要的用户:不常用、未授权和没有技能的用户。
[如果认为某些用户对产品或组织更重要,那么应该写明,因
为它会影响你设计产品的方式。]
4.需求限制条件
解决方案限制条件
[此处明确了限制条件,它们规定了解决问题必须采取的方式。您
可以认为它们是指令式的解决方案。仔细描述该解决方案,以及测试是
否符合的度量标准。如果可能,您应该解释使用该解决方案的原因。]
[换一句话说,就是要求软件解决方案满足哪些限制条件!]
实现环境
[此处描述产品将被实施的技术环境和物理环境。]
[该环境也将成为设计解决方案时的限制条件之一。]
伙伴应用
[此处描述那些不属于产品的一部分,但产品却又必须与其协作的
应用程序。]
COTS
[此处描述实现产品需求所必须使用的COTS(商业组件)。]
预期的工作场地环境
[此处描述用户工作和使用该产品的工作场地。此处应该描述任何
可能对产品设计产生影响的工作场地特征。]
开发者构建该产品需要多少时间
[任何已知的最后期限,或商业机会的时限,应在此处说明。]
该产品的财务预算是多少
[该产品的预算,以金钱的形式或可得资源的形式说明。]
5.命名标准和定义
[定义项目中使用到的所有术语,包括同义词。这里的内容就是一个字
典,包括在需求规格说明书中使用的所有名称的含义。这个字典应该使用
你的组织或行业使用的标准名称。这些名称也应该反映出在工作领域中当
前使用的术语。该字典包括项目中用到的所有名称。请仔细地选择名称,
以避免传达不同的、不期望的含义。为每个名字写下简明扼要的定义,这
些定义必须经过相应的风险承担者同意。]
6.相关事实
[可能对产品产生影响的外部因素,但不是命令式的需求限制条件。]
7.假定
[列出开发者所做的假设。]
[将所有的假设列在此的目的是让每一个项目成员都意识到这个假
设。]
8.产品的范围
工作的上下文范围
[上下文范围图用来表示将要开发的系统、产品与其它系统之间的
关系,以确定系统边界。]
工作切分
[一个事件清单,确定系统要响应的所有业务事件。清单包括:]
1)事件名称
2)输入和输出
产品边界
[你可以使用用例图(u-ca)来确定了用户与产品之间的边
界。]
9.功能性需求与数据需求
功能性需求
[对产品必须执行的动作的描述。]
[每个功能性需求必须有一个验收标准。]
数据需求
[与产品/系统有密切关系的主题域相关的业务对象、实体、类的
说明书。]
[进行问题域建模,生成相应的类图。]
10.观感需求
[一些与产品的用户界面相关的需求描述。]
11.易用性需求
易于使用
[描述如何构建符合最终用户期望的产品。]
学习的容易程序
[学习使用该产品应该多容易的说明。通常是有学习时间来衡量。]
12.性能要求
速度需求
[明确完成特定任务需要的时间,这常常指响应时间。]
安全性的需求
[对可能造成人身伤害、财产损失和环境破坏所考虑到的风险进行
量化描述。]
精度需求
[对产品产生的结果期望的精度进行量化描述。]
可靠性和可用性需求
[本节量化产品所需的可靠性。这常常表述为允许的两次失败之间
无故障运行时间,或允许的总失败率。]
容量需求
[本节明确处理的吞吐量和产品存储数据的容量。]
13.操作需求
预期的物理环境
[本节明确产品将操作的物理环境,以及这种环境引起的任何特殊
需求。]
预期的技术环境
[硬件和其它组成新产品操作环境的设备的规范。]
伙伴应用程序
[对产品必须与之交互的其它应用程序的描述。]
14.可维护性和可移植性需求
维护该产品需要多容易
[对产品作特定修改所需时间的量化描述。]
是否存在一些特殊情况适用于该产品的维护
[关于预期的产品发布周期和发布将采取的形式的规定。]
可移植性需求
[对产品必须支持的其他平台或环境的描述。]
15.安全性需求
该产品是保密的吗
[关于该被授权使用该产品,以及在什么样的情况下授权等方面的
描述。]
文件完整性需求
[关于需要的数据库和其他文件完整性方面的说明。]
审计需求
[关于需要的审计检查方面的说明。]
16.文件和政策需求
[本节包括针对社会和政策的因素的规格说明,这些因素会影响产品的
可接受性。如果你开发的产品是针对外国市场的,可能要特别注意这些需
求。]
[问一下是否产品的目标是你所不熟悉的文化环境,是否其它国家的人
或其他类型的组织的人会使用该产品。人们是否有与你的文化不同的习惯、
节日、迷信、文化上的社会行为规范。]
17.法律需求
该产品是否受到某些法律的管制
[明确该产品的法律需求的描述。]
是否有一些必须符合的标准
[明确适用的标准和参考的详细标准的描述。]
问题
[对未确定但可能对产品产生重要影响的因素的问题描述。按照需求分
析的术语还说,就是TBD(ToBeDefine)的问题。]
解决方案
是否有一些制造好的产品可以购买
[应该调查现存产品清单,这些产品可以作为潜在的解决方案。]
该产品是否可使用制造好的组件
[描述可能用于该产品的候选组件,包括采购的和公司自己的产品。
列出来源。]
是否有一些我们可以复制的东西
[其他相似产品的清单。]
20.新问题
新产品会在当前环境中带来什么问题
[关于新产品将怎样影响当前的实现环境的描述。]
新的开发是否将影响某些已实施的系统
[关于新产品将怎样与现存系统协同工作的描述。]
是否我们现有的用户会受到新开发的敌对性影响
[关于现有用户可能产生的敌对性反应的细节。]
预期的实现环境会存在什么限制新产品的因素
[关于新的自动化技术、新的组织结构方式的任何潜在问题的描
述。]
是否新产品会带来其他问题
[确定我们可能不能处理的情况。]
21.任务
为提交该产品已经做了哪些事
[用来开发产品的生命周期和方法的细节。画一个高层的过程图展
示各项任务和它们之间的接口,这可能是沟通这方面信息的最好办法。]
开发阶段
[关于每个开发阶段和操作环境中的组件的规格说明。]
22.移交
我们要让已有数据和过程配合新产品,有什么特殊要求
[一个移交活动的列表,一个实现的时间表。]
为了新产品,哪些数据必须修改/转换
[数据转换任务清单,同时确定新产品需要转换的数据。]
23.风险
当你开发该产品时,要面对什么风险
你制定了怎样的偶然紧急情况计划
24.费用
[需求的其他费用是你必须投入到产品构建中去的钱或工作量。当需
求规格说明书完成时,你可以使用一种估算方法来评估费用,然后以构建
所需的资金或时间的形式表述出来。]
25.用户文档
[用户文档的清单,这些文档将作为产品的一部分交付。]
26.后续版本的需求
[这里记录下一些希望今后版本中实现的需求。]
Volere需求记录卡
编者说明:
正如前面所述,AtlanticSystemGuild还提供了一个配套的Volere
需求记录卡,这个记录卡十分实用。建议大家在需求调查、分析过程中,
将需求记录在一系列的Volere需求记录卡上,这个卡让你能够很好的理
清需求之间的关系,需求提出的背景,用户对需求的期望,有了这些素材,
整理SRS时将变得更加简单。
注:顾客满意度是指完成该项功能顾客满意的程度,而顾客不满意度
则是指未实现该功能顾客不满意的程度。
需求#:需求类型:事件/
用例#:
描述:
理由:
来源:
验收标准:
Volere
软件需求规格说明书(RUP版)
编者说明:
如果在需求分析时采用了用例(Uca)技术,那么该需求规格说
明书将更加符合你的需要。当然,你也可以结合Volere需求规格说明书
对该模板进行必要的修改。
1.文档概述
[该部分主要是对软件需求规格说明书文档进行基本的描述,包括该
文档的目的、范围、术语定义、参考资料以及概要。]
[软件需求规格说明书用来系统、完整地记录系统的软件需求。该软
件需求说明书的基础是用例分析技术。因此该文档中应包括用例模型、补
充规约等内容。]
目的
[在此小节中,主要对软件需求规格说明书的目的做一概要性说明,
通常软件需求规格说明书应详细地说明应用程序、子系统的外部行为,
还要说明非功能性需求、设计约束,以及其它的相关因素。]
范围
[系统是有范围的,而不是无限扩展的,对于无限扩展的需求是无
法进行描述的。因此,在本小节应该对该说明书所涉及的项目范围进行
清晰的界定。指定该规格说明书适用的软件应用程序、特性或者其它子
系统分组、其相关的用例模型。当然在此也需要列出会受到该文档影响
的其它文档。]
定义、首字母缩写词和缩略语
[与其它文档一样,该文档也需要将本文档中所涉及的所有术语、
缩略语进行详细的定义。还有一种可简明的做法,就是维护在一个项目
词汇表中,这样就可以避免在每个文档中都重复很多内容。]
参考资料
[在这一小节中,应完整地列出该文档引用的所有文档。对于每个
引用的文档都应该给出标题、标识号、日期以及来源,为阅读者查找这
些文档提供足够详细的信息。]
概述
[在本小节中,主要是说明软件需求规格说明书各个部分所包含的
主要内容,就像一个文章摘要一样。同时也应该对文档的组织方式进行
解释。]
2.整体说明
[在本节中,将对整个软件需求进行总体性的描述,以期让读者对整
个软件系统的需求有一个框架性的认识。也就是说,该节中主要包括影响
产品及其需求的一般因素,而不列举具体的需求。主要包括产品总体效
果、产品功能、用户特征、约束、假设与依赖关系、需求子集等方面的内
容。]
用例模型
[在本小节中,将列出该软件需求的用例模型,该模型处于系统级,
对系统的特性进行宏观的描述。在此应该列出所有的用例和Actor的名
称列表,并且对其做出简要的说明,以及在图中的各种关系。]
假设与依赖关系
[在软件系统的开发过程中,存在许多假设和依赖关系。在本小节
中应列举出所有的重要的技术可行性假设、子系统或构件可用性假设,
以及一些可行性的假设。]
3.具体需求
[如果说第二章节是框架,那么本节就是血肉。在本节中,应该详细
列出所有的软件需求,其详细程序应使设计人员能够充分理解并且进行设
计的要求,同时也应该给予测试人员足够的信息,以帮助他们来验证系统
是否满足了这些需求。整个需求的组织可以采用用例描述进行。]
用例描述
[如果你使用用例建模技术,那么你已经通过用例定义了系统的大
部分功能性需求和一些非功能性需求。因此,在软件需求规格说明书只
需将这些具体的用例描述,整理在一起,全部放在该小节之中。当然也
可以将用例描述做为附件,在此列出引用,只是这样做并不利于阅读。
建议在组织形式上采用以“软件需求”为线索,在每个需求中,填入对
应的1个或几个用例描述。]
补充需求
[由于用例毕竟主要针对功能性需求,因此还会有一些其它的补充
需求遗漏,因此在本小节中就是将这些东西补充出来。这些补充需求大
部分集中在非功能需求之上,包括以下几个方面的内容:]
1)易用性:例如指出普通用户和高级用户要高效地执行某个特定
操作所需的培训时间;指出典型任务的可评测任务次数;或者
指出需要满足的可用性标准(如IBM的CUA标准、Microsoft
的GUI标准。
2)可靠性:包括系统可用性(可用时间百分比、使用小时数、维
护访问权、降纸模式操作等);平均故障间隔时间(MTBF,通常
表示为小时数,但也可表示为天数、月数或年数);平均修复时
间(MTTR,系统在发生故障后可以暂停运行的时间);精确度(指
出系统输出要求具备的精密度、分辨率和精确度);最高错误或
缺陷率(通常表示为bugs/KLOC,即每千行代码的错误数目或
bugs/function-point,即每个功能点的错误数目);错误或缺
陷率(按照小错误、大错误和严重错误来分类:需求中必须对
“严重”错误进行界定,例如:数据完全丢失或完全不能使用
系统的某部分功能)。
3)性能:包括对事务的响应时间(平均、最长);吞吐量(例如每
秒处理的事务数);容量(例如系统可以容纳的客户或事务数);
降级模式(当系统以某种形式降级时可接受的运行模式);资源
利用情况:内存、磁盘、通信等。
4)其它:包括用户界面要求、联机帮助系统要求、法律许可、外
购构件,以及操作系统、开发工具、数据库系统等设计约束。
4.支持信息
[支持信息用于使软件需求规格说明书更易于使用。它包括:目录、
索引、附录等。]
计算机软件需求说明编制指南(国标版)
编者说明:
软件需求规格说明是十分重要的文档,因此为开发团队提供一份详细
的编制指南是十分有意义和必要的。本文档就是一个编制指南的例子,你
可以根据该指南,结合自己的实际情况进行修改。
1.引言
目的和作用
本指南为软件需求实践提供了一个规范化的方法。本指南不提倡把
软件需求说明(SoftwareRequirementsSpecifications,以下简称
SRS)划分成等级,避免把它定义成更小的需求子集。
本指南适用对象:
1)软件客户(Customers),以便精确地描述他们想获得什么样
的产品。
2)软件开发者(Suppliers),以便准确地理解客户需要什么样
的产品。
对于任一要实现下列目标的单位和(或)个人:
1)要提出开发规范化的SRS提纲;
2)定义自己需要的具体的格式和内容;
3)产生附加的局部使用条款,如SRS质量检查清单或者SRS作
者手册等。
SRS将完成下列目标:
1)在软件产品完成目标方面为客户和开发者之间建立共同协议创
立一个基础。对要实现的软件功能做全面描述,帮助客户判断
所规定的软件是否符合他们的要求,或者怎样修改这种软件才
能适合他们的要求;
2)提高开发效率。编制SRS的过程将使客户在设计开始之前周密
地思考全部需求,从而减少事后重新设计、重新编码和重新测
试的返工活动。在SRS中对各种需求仔细地进行复查,还可以
在开发早期发现若干遗漏、错误的理解和不一致性,以便及时
加以纠正;
3)为成本计价和编制计划进度提供基础。SRS提供的对被开发软
件产品的描述,是计算机软件产品成本核算的基础,并且可以
为各方的要价和付费提供依据。SRS对软件的清晰描述,有助
于估计所必须的资源,并用作编制进度的依据;
4)为确认和验证提供一个基准。任何组织将更有效地编制他们的
确认和验证计划。作为开发合同的一部分,SRS还可以提供一
个可以度量和遵循的基准(然而,反之则不成立,即任一有关
软件的合同都不能作为SRS。因为这种文件几乎不包括详尽的
需求说明,并且通常不完全的);
5)便于移植。有了SRS就便于移值软件产品,以适应新的用户或
新的机种。客户也易于移植其软件到其他部门,而开发者同样
也易于把软件移植到新的客户;
6)作为不断提高的基础。由于SRS所讨论的是软件产品,而不是
开发这个产品的设计。因此SRS是软件产品继续提高的基础。
虽然SRS也可能要改变,但是原来的SRS还是软件产品改进的
可靠基础。
范围
本指南适用于编写软件需求规格说明,它描述了一个SRS所必须的
内容和质量,并且在第6章中提供了SRS大纲。
2.引用标准
GB8566计算机软件开发规范
GB8567计算机软件产品开发文件编制指南
GB/T11457软件工程术语
3.定义
GB/T11457所列术语和下列定义适用于本指南。
合同(contract):是由客户和开发者共同签署的具有法律约束力的文
件。其中包括产品的技术、组织、成本和进度计划要求等内容。
客户(customer):指个人或单位,他们为产品开发提供资金,通常(但
有时也不必)还提出各种需求。文件中的客户和开发者也可能是同一个组
织的成员。
语言(language):是具有语法和语义的通信工具,包括一组表达式、
惯例和传递信息的有关规则。
分割(partitioning):把一个整体分成若干部分。
开发者(supplier):指为客户生产某种软件产品的个人或集团。在本
指南中,客户和开发者可能是同一个组织的成员。
用户(ur):指运行系统或者直接与系统发生交互作用的个人或集团。
用户和客户通常不是同一些人。
4.编写SRS的背景信息
SRS的基本要求
SRS是对要完成一定功能、性能的软件产品、程序或一组程序的说
明。对SRS的描述有两项基本要求:
1)必须描述一定的功能、性能;
2)必须用确定的方法叙述这些功能、性能。
SRS的环境
必须认识到SRS在整个软件开发规范(见GB8566)所规定的有关
阶段都起作用。正因为如此,SRS的起草者必须特别注意不要超出这种
作用的范围。这意味着要满足下列要求:
1)SRS必须正确地定义所有的软件需求;
2)除设计上的特殊限制之外,SRS中一般不描述任何设计、验证或
项目管理细节。
SRS的特点
无歧义性
当且仅当它对每一个需求只有一种解释时,SRS者是无歧义的。
1)要求最终产品的每一个特性用某一术语描述;
2)若某一术语在某一特殊的行文中使用时具有多种歧义,那么
对该术语的每种含义作出解释并指出其适用场合。
需求通常是用自然语言编写的,使用自然语言的SRS起草者
必须特别注意消除其需求的歧义性。提倡使用形式化需求说明语
言。
完整性
如果一个SRS能满足下列要求,则该SRS就是完整的:
1)包括全部有意义的要求,无论是关系到功能的、性能的、设
计约束的,还是关系到属性或外部接口方面的需求;
2)对所有可能出现的输入数据的响应予以定义,要对合法和非
合法的输入值的响应做出规定;
3)要符合SRS要求。如果个别章节不适用,则在SRS中要保留
章节号;
4)填写SRS中的全部插图、表、图示标记和参照,并且定义全
部术语和度量单位。
关于使用“待定”一词的规定
任何一个使用“待定”的SRS都是不完全的。
1)若万一遇到使用“待定”一词时,作如下处理:
对产生“待定”一词的条件进行描述,使得问题能被解
决;
描述必须干什么事,以删除这个“待定”;
2)包含有“待定”一词的任何SRS的项目文件应该:
标识与此特定文件有关的版本号或叙述其专门的发布号;
拒绝任何仍标识为“待定”一词的SRS章节的许诺。
可验证性
当且仅当SRS中描述的每一个需求都是可以验证的,该SRS
才是可以验证的;当且仅当在某一性能价格比可取的有限处理过
程,人或机器能通过该过程检查软件产品能否满足需求时,才称
这个需求是可以验证的。
一致性
当且仅当SRS中各个需求的描述是不矛盾时SRS才是一致的。
可修改性
如果一个SRS的结构和风格在需求有必要改变时是易于实现
的、完整性的、一致的,那么这个SRS就是可以修改的。可修改
性要求SRS具备以下条件:
1)具有一个有条不紊的易于使用的内容组织,具有目录表,索
引和明确的交叉引用表;
2)没有冗余。即同一需求不能在SRS中出现多次。
冗余本身不是错误,但是容易发生错误。冗余可增加SRS
的可读性,但是在一个冗余文件被更新时容易出现问题。
例如:假设一个明确的需求在两个地方详细列出,后来
发现这个需求需要改变,若只修改一个地方,于是SRS
就变得不一致了。
不管冗余是否必须,SRS一定要包含一个详细的交叉引用
表,以便SRS具备可修改性。
可追踪性
如果每一个需求的源流是清晰的,在进一步产生和改变文件
编制时,可以方便地引证每一个需求,则该SRS就是可追踪的。
建议采用如下两种类型的追踪:
1)向后追踪(即向已开发过的前一阶段追踪)。根据先前文件
或本文件前面的每一个需求进行追踪。
2)向前追踪(即是向由SRS派生的所有文件追踪)。根据SRS
中具有唯一的名字和参照号的每一个需求进行追踪。
当SRS中的一个需求表达另一个需求的一种指派或者是派生
的,向前、向后的追踪都要提供。例如:
1)从总的用户响应时间需求中分配给数据库操作响应时间;
2)识别带有一定功能和用户接口的需求的报告格式;
3)支持法律或行政上需要的某个软件产品(例如,计算税收)。
在这种情况下,要指出软件所支持的确切的法律或行政文件。
当软件产品进入运行和维护阶段时,SRS的向前可追踪性显得
特别重要。当编码和设计文件作修改时,重要的是要查清这些修
改所影响的全部需求。
运行和维护阶段的可使用性
SRS必须满足运行和维护阶段的需要,包括软件最终替换。
1)维护常常是由与原来开发无联系的人来进行的。局部的改变
(修正)可以借助于好的代码注释来实现。对于较大范围的
改变。设计和需求文件是必不可少的,这里隐含了两个作用:
如条指出,SRS必须是可修改的;
SRS中必须包括一个记录,它记录那些应用于各个成分的
所有具体条文。例如:它们的危急性(如故障可能危及
完全或导致大量财政方面和社会方面的损失);它们仅与
暂时的需要相关(如支持一种可立即恢复原状的显示);
它们的来源(如某功能是由已存在的软件产品的全部拷
贝复制而成)。
2)要求在SRS中清楚地写明功能的来源和目的,因为对功能的
来源和引入该功能的目的不清楚的话,通常不可能很好地完
成软件的维护。
SRS的编制者
软件开发的过程是由开发者和客户双方同意开发什么样的软件协
议开始的。这种协议要使用SRS的形式,应该由双方联合起草。这是因
为:
1)客户通常对软件设计和开发过程了解较少,而不能写出可用的
SRS;
2)开发者通常对于客户的问题和意图了解较少,从而不可能写出一
个令人满意的系统需求。
SRS的改进
软件产品的开发过程中,在项目的开始阶段不可能详细说明某些细
节,在开发过程中可能发现SRS的缺陷、缺点和错误之类的问题,所以
可能要对SRS进行改进。
在SRS的改进中,应注意如下事项:
1)尽管可以预见校正版本的开发以后不可避免,而对需求还必须尽
可能完全、清楚地描述。
2)一旦最初识别出项目的变化,应引入一个正式的改变规程来标识、
控制、追踪和报告项目的改变。批准了的需求改变,用如下的方
法编入SRS之中:
提供各种改变后的正确的、完全的审查记录;
允许对SRS当前的和被替代部分的审查。
SRS的编制工具
编制SRS最显而易见的方法是用自然语言来描述。尽管自然语言是
丰富多彩的,但不易精确,用形式化的方法较好。
形式化说明方法
在SRS中是否使用形式化方法要依据下列因素:
1)程序规模和复杂性;
2)客户合同中是否要求使用;
3)SRS是否是一个合同工具或仅仅是一个内部文件;
4)SRS文件是否成为设计文件的根据;
5)具有支持这种方法的计算机设备。
生产工具
软件产品生产中有多种生产工具。比如,计算机的字处理器
就是非常有用的生产辅助工具。一个SRS通常有若干作者。可能
经历若干版本,并且要进行多次重新组织内容。故生产工具是必
要的。
表达工具
在SRS中有许多词汇,特别是许多名词和动词,专门涉及到
系统的实体和许多活动,所以表达SRS需要若干工具。比如:
1)可以验证实体或活动,无论在SRS中什么地方都是同一
名字。
2)可以标识一个特殊的实体或动作在规格说明中的描述位
置。
此外,可以使用若干种形式化方法,以便允许自动处理SRS
内容,只要作某些限制就可以做到:
用一些表格或图示法来显示需求。
用详细分层体系自动检查SRS的需求,这里每一个分层自身
是完全的,但是也可以扩展为下一层,或是上一层的一个组成成
分。
自动检查SRS具有在条描述的部分或全部特点。
5软件需求
SRS中每一个软件需求是要求开发软件产品的某些基本功能和性能的
一个陈述。
表达软件需求的方法
软件需求可以用若干种方法来表达:
1)通过输入、输出说明;
2)使用代表性的例子;
3)用规范化的模型。
输入、输出说明
用输入输出序列来描述一个软件产品所要求的特性是很有
效的。
途径
根据被描述的软件的性质,至少有三种不同的途径:
1)有些软件产品(如报表系统)要求着重说明输出。一般情况
下,致力于输出的系统主要是在数据文卷上操作。用户的输
入通常是致力于提供控制信息和启动数据文卷的处理;
2)有些软件产品需要着重说明输入、输出特性。关注输入、输
出的系统主要是在当前的输入上操作,要求生成与输入相匹
配的输出(类似于数据转换例行程序或一个数学函数包);
3)还有一些系统(如过程控制系统)要求记忆它们的状态。可
以根据本次输入和上一次输入进行应答。也就是说,它的行
为如同一个有限状态机。在此种情况下,既要关注输入/输
出对,又要关注这些输入/输出对的次序。
困难
多数软件产品可能接收无限的序列作为输入,于是,为了通
过输入输出序列完整地说明产品的特性,就要求SRS包括一个无
限长的输入和所需的输出充列。然而,用这样的途径不可能完整
地描述软件所要求的一切特性。
典型例子
一种选择是用典型例子来说明要求的特性。例如,假设一个
系统中当接收“0”时用“1”来回答。显然,要列出全部输入和
输出序列是不可能的。然而,用典型的序列可以十分清楚地理解
系统的特性。下面是一组四种对话的典型的例子,用它描述系统
特性。
0101
0
01
010101
这些对话仅提供了要求的输入和输出之间的关系,但是不能
完全描述系统的特性。
模型
另一种表达需求的方法是模型的方式,这是表达复杂需求的
精确和有效方法。至少可以提出三种可供使用的通用模型:数学
型、功能型、计时型。应注意区别各种模型的应用场合,参考。
数学模型
数学模型是使用数学关系描述软件特性的模型。数学模型对
某些特殊应用领域是特别有用的。例如,导航、线性规划、计量
经济、信号处理和气象分析等。
用数学模型能够对中所讨论的典型例子描述如下:
(01)*。
这里,“*”号表示括号内的字符串可以重复一次或多次。
功能模型
功能模型是提供从略语以输出映象的模型。象有限状态机或
Petri网,这些功能模型可以有助于标识和定义软件的各种特点,
或者可以表示系统所要进行的操作。
对前面用数学模型描述的例子。可用图1所示的有限状态机
形式的功能模型来描述。图中进入的箭头表示启动状态。双线的
方框表示接收状态。在各线记号x/y的含义是:x代表接受的输入,
而y是产生的输出。
计时模型
计时模型是一种增加了时间限制的模型。这种模型对于表达
软件特性的形式和细节特别有用。尤其是实时系统或考虑人为因
素的系统。
计时模型可以把下列限制加到图1的模型中去:
1)激活因素0将在进入S1状态30S之内出现;
2)响应1将在进入S2状态2S之内出现。
其他模型
除了上面提及的模型外。对一些特殊的应用还有一些特别有
用的模型。例如,编译程序的说明可以使用属性文法,工资单系
统可以使用表格。要注意的是,对SRS使用形式需求语言,通常
含有使用特殊模型的意思。
警告
无论使用哪一类型的模型,都要在SRS中或在SRS涉及到的
一个文件中对它严格定义。这个定义应该规定:
1)模型中的参数所要求的范围;
2)使用时的限定值;
3)结果的精确度;
4)负载的能力;
5)要求的执行时间;
6)缺省或失败时的响应。
必须注意,在需求的定义域内要保持一个模型定义。每当一
个SRS使用一个模型时:
1)它意味着此模型提供一个十分有效和精确的方法说明需
求;
2)并不意味着软件产品的实现必须基于这个模型。
一个模型用于解释文件所写的需求是有效的,但是对于实际
软件的实现可能并不是最适宜的。
软件需求的注释
有关软件产品的所有需求,并不是同等重要的。某些需求可能是基
本的,例如是对于生命攸关的应用。而另一些可能并不那么重要。
SRS中每一个需求必须进行注释,以便区别其重要的程度。
有这种方法注释需求,可以:
1)帮助客户对每个需求给予更周密的考虑,通常可以在需求中澄
清隐藏的假设;
2)帮助开发者做出正确的设计决定,并对软件产品不同部分作出
相应的努力。
稳定性
注释需求的一种方法是使用稳定性量纲。当一个需求在软件
预期的生存期间内描述不改变的话,可以认为该需求是稳定的,
否则可以认为是易变的。
必要性等级
注释的另一种方法是把需求分成必须保证级、期望级和任选
级。
5)必须保证是指软件必须和这些需求相一致,否则该软件不可
能被接受;
6)期望是指这些需求将提高软件产品的功能,但如果缺省的话
也是可接受;
7)任选是给开发者一个机会,可以提供某些超出SRS规定的目
标。
注意事项
在注释需求之前,必须彻底理解这种注释的实质性含义。
在表达需求时遇到的共同弊病
SRS的基本点是它必须说明由软件获得的结果,而不是获得这些结
果的手段。编写需求的人必须描述的基本问题是:
1)功能——所设计的软件要做什么;
2)性能——是指软件功能在执行过程中的速度、可使用性、响应
时间、各种软件功能的恢复时间、吞吐能力、精度、频率等等;
3)强加于实现的设计限制——在效果、实现的语言、数据库完整
性、资源限制、操作环境等等方面所要求的标准;
4)属性——可移植性、正确性、可维护性及安全性等方面的考虑
因素;
5)外部接口——与人、硬件、其他软件和其他硬件的相互关系。
编写需求的人应当避免把设计或项目需求写入SRS之中,应当对说
明需求设计约束与规划设计两者有清晰的区别。
在SRS中嵌入了设计
在SRS中嵌入设计说明,会过多地约束软件设计,并且人为
地把具有潜在危险的需求放入SRS中。
1)SRS必须描述在干什么数据上、为谁完成什么功能、在什么
地方、产生什么结果。SRS应把注意力集中在要完成的服务
目标上。通常不指定如下的设计项目:
把软件划分成若干模块;
给每一个模块分配功能;
描述模块间的信息流程或者控制流程;
选择数据结构。
2)把设计完全同SRS隔离开来始终是不现实的。安全和保密方
面的周密考虑可能增加一些直接反映设计约束的需求。例如:
在一些分散的模块中保持某些功能;
允许在程序的某些区域之间进行有限的通讯;
计算临界值的检查和。
3)通常应考虑到,若要为软件选择高层次的设计,就可能需要
大量的资源(可能占整个产品开发成本的10%-20%以上)。
有两种选择:
不顾本指南的警告,在SRS中描述了设计。这意味着,
或者将一个潜在不适当的设计作为一个需求进行描述
(因为,若要得到好的设计,所花费的时间是不够的),
或者在需求阶段花费了过多的时间(因为在SRS完成之
前整个设计分析都要完成);
采用本指南中条中的建议,用模型设计描述需求,这种
模型设计只用于辅助描述需求,而不使之成为实际的设
计。
在SRS中嵌入了一些项目要求
SRS应当是描写一个软件产品,而不是描述生产软件产品的过
程。
项目要求表达客户和开发者之间对于软件生产方面合同性事
宜的理解(因此不应当包括在SRS中)例如:
1)成本;
2)交货进度;
3)报表处理;
4)软件开发方法;
5)质量保证;
6)确认和验证的标准;
7)验收过程。
项目需求在另外文件中描述。在SRS中提供的只是关于软件
产品本身的需求。
6SRS大纲
本章着重讨论SRS的每一个基本部分,可以作为一个SRS的大纲。表1
给出该大纲目录,表2至表5给出大纲中第3章的具体需求内容。各开发
者和客户应当根据所描述的实际情况,按本指南有关规定编写自己的SRS。
前言(SRS第1章)
本章提供整个SRS综述。
目的(SRS的条)
在这一条包括下列内容:
1)描述实际SRS的目的;
2)说明SRS所预期的读者。
范围(SRS的条)
1)通常应考虑到,若要为软件选择高层次的设计,就可能需要
大量的资源(可能占整个产品开发成本的10%-20%以上)。
1前言
目的
范围
定义、缩写词、略语
参考资料
2项目概述
产品描述
产品功能
有两种选择:
2)用一个名字标识被生产的软件产品。比如:×××数据库系
统,报表生成程序等等;
3)说明软件产品将干什么,如果需要的话,还要说明软件产品
不干什么;
4)描述所说明的软件的应用。应当:
尽可能精确地描述所有相关的利闪、目的、以及最终目
标。
如果有一个较高层次的说明存在,则应该使其和高层次
说明中的类似的陈述相一致(例如,系统的需求规格说
明)。
定义、缩写词、略语(SRS的条)
本条中必须提供全部需求的术语、缩写词及略语的定义,以
便对SRS进行适当的解释。这些信息可以由SRS的附录提供。也
可以参考其他的文件。
参考资料(SRS的条)
本条应包括:
1)在SRS中各处参照的文件的全部清单,如经核准的计划任务
书,上级机关批文、合同等;
2)列出其他参考资料,如属本项目的其他已发表的文件和主要
文献等。每一个文件、文献要有标题,索引号或文件号,发
布或发表日期以及出版单位;
3)详细说明可以得到该参考文件的来源。这个信息可以通过引
用附录或其他文件提供。
项目概述(SRS第2章)
本章应描述影响产品和其需求的一般因素,本章不说明具体的需求,
而仅使需求更易于理解。
产品描述(SRS的条)
这一条是把一个产品用其他有关的产品或项目来描述。
1)如果这个产品是独立的,而且全部内容自含,应在此说明;
2)如果SRS定义的产品是一个较大的系统或项目中的一个组
成部分,那么本条应包括如下内容:
要概述这个较大的系统或项目的每个组成部分的功能,
并说明其接口;
指出该软件产品主要的外部接口。在这里,不要求对接
口详细地描述,详细描述放在SRS其他章条中;
描述所使用的计算机硬件、外围设备。这里仅仅是一个
综述性描述。
在本条的描述中,用一个方框图来表达一个较大的系统或项
目的主要组成部分、相互联系和外部接口是非常有帮助的。
本条既不用来强迫进行设计方案的描述,也不是描述在解决
问题时的设计约束。本条应对在以后具体需求一章中说明的设计
约束提供理由。
产品功能(SRS的条)
本条是为将要完成的软件功能提供一个摘要。例如,对于一
个记帐程序来说,SRS可以用这部分来描述:客户帐目维护、客户
财务报表和发票制作,而不必把功能所要求的大量的细节描写出
来。
有时,如果存在较高层次的规格说明时,则功能摘要可直接
从中取得,这个较高层次的规格说明为软件产品分配了特殊的功
能,为了清晰起见,请注意:
1)编制功能的一种方法是制作功能表,以便客户或者第一次读
这个文件的人都可以理解;
2)用方框图来表达不同的功能和它们的关系也是有帮助的。但
要牢记,这样的图不是产品设计时所需求的,而只是一种有
效的解释性的工具。
这一条不用作陈述具体需求,只是对后来SRS中具体需求一
章中为什么要描述的某些需求提供理由。
用户特点(SRS的条)
本条要描述影响具体需求的产品的最终用户的一般特点。
许多人在软件生存周期的操作和维护阶段与系统相关。而这
些人中有用户、操作员、维护人员和系统工作人员。这些人的某
些特点,象教育水平、经验、技术、专长等,都是施加于系统操
作环境的重要约束。
如果系统的大多数用户是一些临时用户,那么就要求系统包
含如何完成基本功能的提示,而不是假设用户已经从过去的会议
或从阅读用户指南中了解到这些细节。
这一条的内容不能用来陈述具体需求或强加若干特殊的设计
约束,本条应对在SRS的具体需求一章之中的某些具体需求或设
计约束的描述提供理由。
一般约束(SRS的条)
本条对设计系统阳限制开发者选择的其他一些项作一般性描
述。而这些项将限定开发者在设计系统时的任选项。这些包括:
1)管理方针;
2)硬件的限制;
3)与其他应用间的接口;
4)并行操作;
5)审查功能;
6)控制功能;
7)所需的高级语言;
8)通信协议;
9)应用的临界点;
10)安全和保密方面的考虑。
本条不陈述具体需求或具体设计约束:而对SRS的具体需求
一章中为什么要确定某些具体需求和设计约束提供理由。
假设和依据(SRS的条)
本条列出影响SRS中陈述的需求的每一个因素。这些因素不
是软件的设计约束,但是它们的改变可能影响到SRS中的需求。
例如:假定一个特定的操作系统是在被软件产品指定的硬件上使
用的,然而,事实上这个操作系统是不可能使用的,于是,SRS就
要进行相应的改变。
具体需求(SRS的第3章)
本章应包括软件开发者在建立设计时需要的全部细节。这是SRS
中篇幅最大和最重要的部分。
1)根据本指南第4章所规定的准则(如可验证性、无歧义性等),
对每一个需求细节作具体描述;
2)在SRS的前言、项目概述、附录部分的有关讨论中,要提供对
任何一个具体需求交叉引用的背景;
3)具体需求分类的方法如下:
功能需求;
性能需求;
设计约束;
属性;
外部接口需求。
本章中要注意的二点是:
1)符合逻辑的和可读的方式组织;
2)详细描述每个需求,使该需求应达到目标能够用指定的方法进
行客观的验证。
具体需求的内容
功能需求
本条描述软件产品的输入怎样变换成输出。即软件必须完成
的基本动作。对于每一类功能或者有时对于每一个功能,需要具
体描述其输入、加工和输出的需求。这通常由四个部颁组成:
1)引言
这部分描述的是功能要达到的目标、所采用的方法和技术,
还应清楚说明功能意图的由来和背景。
2)输入
这部分应包括:
详细描述该功能的所有输入数据,如:输入源、数量、
度量单位、时间设定、有效输入范围(包括精度和公差);
操作员控制细节的需求。其中有名字、操作员活动的描
述、控制台或操作员的位置。例如:当打印检查时,要
求操作员进行格式调整;
指明引用接口说明或接口控制文件的参考资料。
3)加工
定义输入数据、中间参数,以获得预期输出结果的全部操作。
它包括如下的说明:
输入数据的有效性检查;
操作的顺序,包括事件的时间设定;
异常情况的响应,例如,溢出、通信故障、错误处理等;
受操作影响的参数;
降级运行的要求;
用于把系统输入变换成相应输出的任何方法(方程式、
数学算法、逻辑操作等);
输出数据的有效性检查。
4)输出
这部分应包括:
详细描述该功能所有输出数据,例如:输出目的地、数
量、度量单位、时间关系、有效输出的范围(包括精度
和公差)、非法值的处理、出错信息;
有关接口说明或接口控制文件的参考资料。
此外,对着重于输入输出行为的系统来说,SRS应指定所有有
意义的输入、输出对及其序列。当一个系统要求记忆它的状态时,
需要这个序列,使得它可以根据本次输入和以前的状态作出响应。
也就是说,这种情况犹如有限状态机。
设计约束
设计约束受其他标准、硬件限制等方面的影响。
1)其他标准的约束:本项将指定由现有的标准或规则派生的要
求。例如:报表格式、数据命名、财务处理、审计追踪等等。
2)硬件的限制:本项包括在各种硬件约束下运行的软件要求,
例如,应该包括:硬件配置的特点(接口数,指令系统等)、
内存储器和辅助存储器的容量。
属性
在软件的需求之中有若干个属性,下面指出其中的几个(注
意:对这些决不应理解为是一个完整的清单)。
1)可用性:可以指定一些因素,如检查点、恢复和再启动等,
以保证整个系统有一个确定的可用性级别。
2)安全性:这里指的是保护软件的要素,以防止各种非法的访
问、使用,修改、破坏或者泄密。这个领域的具体需求必须
包括:
利用可靠的密码技术;
掌握特定的记录或历史数据集;
给不同的模块分配不同的功能;
限定一个程序中某些区域的通信;
计算临界值的检查和。
3)可维护性:这里规定若干需求以确保软件是可维护的。例如:
软件模块所需要的特殊的耦合矩阵;
对微型装置指定特殊的数据/程序分割要求。
4)可转移/转换性:这里规定把软件从一种环境移植到另一种
环境所要求的用户程序,用户接口兼容方面的约束等等。
5)警告:指定所需属性十分重要,它使得人们能用规定的方法
去进行客观的验证。
外部接口要求
1)用户接口:提供用户使用软件产品是地的接口需求。例如,
如果系统的用户通过显示终端进行操作,就必须指定如下要
求:
对屏幕格式的要求;
报表或菜单的页面打印格式和内容;
输入输出的相对时间;
程序功能键的或用性。
2)硬件接口:要指出软件产品和系统硬部件之间每一个接口的
逻辑特点。还可能包括如下事宜:支撑什么样的设备,如何
支撑这些设备,有何约定。
3)软件接口:在这里应指定需使用的其他软件产品(例如,数
据管理系统,操作系统,或者数学软件包),以及同其他应
用系统之间的接口。对每一个所需的软件产品,要提供名
字、助记符、规格说明号、版本号、来源等内容。对于每
一个接口,这部分应说明与软件产品相关的接口软件的目的,
并根据信息的内容和格式定义接口,这里不必详细描述任何
已有完整文件的接口,只要引用定义该接口的文件即可。
4)通信接口:这里指定各种通信接口,例如,局部网络的协议
等等。
其他需求
根据软件和用户组织的特性等,某些需求放在下面各项中描
述。
1)数据库:本项对作为产品的一部分进行开发的数据库规定一
些需求,它们可能包括:
在条中标识的信息类别;
用的频率;
存取能力;
数据元素和文卷描述符;
数据元素、记录和文卷的关系;
静态和动态的组织;
数据保存要求。
注:如果使用一个现有的数据库包,这个包应在“软件接口”中命名,并
在那里详细说明其用法。
2)操作:这里说明用户要求的常规的和特殊的操作。
在用户组织之中各种方式的操作。例如,用户初始化操
作;
交互作用操作的同期和无人操作的周期;
数据处理支持功能;
后援和恢复操作。
注:这里的内容有时是用户接口的一部分。
3)场合适应性需求:这里包括:
对给定场合、任务或操作方式的任何数据或初始化顺序
的需求进行定义。例如,栅值,安全界限等等。
指出场合或相关任务的特点,这里可以被修改以使软件
适合特殊配制的要求。
具体要求的组织
本条通常是SRS所有部分中最大并且最复杂的部分。
1)可以根据软件实现功能的基本类型,将本条分成若干段。例
如:考虑一个大的交互记帐系统,在里层可以分为操作软件
(它支持近乎实时的事务处理)、支撑软件(联机功能、磁
盘备份、装入磁带等等)以及诊断软件(诊断硬件、通信等),
外一层是应收款帐以及应付款帐等等;
2)结构细分的目的是提高SRS的可读性,而不是进行概要设计。
对于SRS中的第3章的具体需求部分的最好的组织方案取决
于所说明的软件产品的应用范围和性质。文中最后部分提供了四
种可能的组织方案。
1)大纲1中首先说明全部功能需求,然后说明四种类型的接口
要求,最后是其他需求;
2)大纲2中,把对应每个特定功能的四种接口需求和该功能需
求放在一起描述,然后说明其他需求;
3)大纲3中,与功能需求有关的全部内容放在一起首先说明,
然后是其他需求的描述。对每一种外部接口的需求重复上述
过程;
4)大纲4中,接口需求和其余的需求作为每一个功能需求的附
属部分来说明。
SRS的具体需求的组织形式必须选择可读性最好的方法来描
述。
支持信息
支持信息是指目录表,附录和索引。以便使SRS易于使用。
1)目录表和索引很重要,而且应按照可以接受的好的文件规则来
编写。
2)对一个实际的需求规格说明来说,若有必要应该编写附录。附
录中可能包括:
输入输出格式样本,成本分析研究的描述或用户调查结果;
有助于理解SRS的背景信息;
软件所解决问题的描述;
用户历史、背景、经历和操作特点;
交叉访问表。按先后次序进行编排,使一些不完全的软件需
求得以完善(参见条和条);
特殊的装配指令用于编码和媒体,以满足安全、输出、初始
装入或其他要求。
3)当包括附录时,SRS必须明确地说明附录是不是需求要考虑的
部分。
SRS大纲1
3具体需求
功能需求
功能需求1
引言输入加工输出
功能需求2
……
功能需求n
外部接口需求
SRS大纲2
3具体需求
功能需求
功能需求1
规格说明
.1引言.2输入.3加工.4输出
外部接口
.1用户接口.2硬件接口.3软件接口
.4通信接口
SRS大纲3
3具体需求
功能需求
功能需求1
引言输入加工输出
性能需求
设计约束
.1其他标准的约束.2硬件的限制…………
属性
.1安全性.2可维护性…………
其他需求
.1数据库.2操作.3场合适应性
…………
用例说明模板1(经典模板)
编者说明:
随着UML的日益普及,用例(Uca)分析技术也在需求实践中广
泛被采用。但是也有许多团队在使用该技术时,只画出了用例图,而缺少
了用例说明,其实这是一个严重的误区。而本模板就将指导你编写该说明。
1.用例名称
简要说明
[简要说明用例的作用和目的。该小节的篇幅不要太长。]
2.上下文图
SRS大纲4
3具体需求
功能需求1
引言输入加工输出
外部接口
用户接口硬件接口
软件接口通信接口
性能需求
[在此小节中,有一个只包括本用例和所有与该用例相关的Actor和
其它用例组成的,一个用例图的局部。]
3.事件流
基本流
[当Actor采取行动时,用例也就随即开始。用例总是由Actor启动
的,用例应说明Actor的行为及系统的响应,可按照Actor与系统进行对
话的形式来逐步引入用例。]
[要注意的是,用例描述应该说明系统内发生的事情,而不是事件发
生的方式与原因。如果进行了信息交换,则需指出来回传递的具体信息。
例如,只表述主角输入了客户信息就不够明确。最好明确地说主角输入了
客户姓名和地址。当然你也可以通过项目词汇表来定义这些信息,使得用
例中的内容被简化,从而不致于让用例描述陷入过多的细节内容。]
[如果存在一些相对比较简单的备选流,只需少数几句话就可以说明
清楚,那么也可以直接在这一部分中描述。但是如果比较复杂,还是应该
单独放在备选流小节中描述。]
[一幅图胜过千言万语,因此建议在这一小节中,除了叙述性文字之
外,你还可以引用UML中的活动图、顺序图、协作图、状态图等手段,对
其进行补充说明。]
备选流
第一备选流
[正如前面所述,对于较复杂的备选流应单独地说明。]
备选支流
[如果能使表达更明确,备选流又可再分为多个支流。]
第二备选流
[在一个用例中很可能会有多个备选流。为了使表达更清晰,
应将各个备选流分开说明。使用备选流可以提高用例的可读性,
并防止将用例分解为过多的层次。应切记,用例只是文本说明,
其主要目的是以清晰、简洁、易于理解的方式记录系统的行为。]
4.非功能需求
[在这个小节中,主要对该用例所涉及的非功能性需求进行描述。由
于其通常很难以在事件流中进行表述,因此单列为一小节进行阐述。这些
需求通过包括法律法规、应用程序标准、质量属性(可用性、可靠性、性
能、支持性等)、兼容性、可移植性,以及设计约束等方面的需求。在这
些需求的描述方面,一定要注意使其可度量、可验证,否则就容易流于形
式,形同摆设。]
5.前置条件
[用例的前置条件是执行用例之前必须存在的系统状态。]
6.后置条件
[用例的后置条件是用例一执行完毕系统可能处于的一组状态。]
7.扩展点
[此用例的扩展点,通常是用例图中的extent关系。]
用例说明模板2(单列表格式)
编者说明:
如果你觉得文本描述不够清晰,也可以采用如本文档模板所示的表格
式的描述方式。
用例#[用例名应是一个动词短语,应让读者一目了然地从名
字中就可以知道该用例的目标。]
使用语境[用例目标,是一个较长的描述,甚至包括触发条件。]
范围[用例的设计范围,在设计时将系统作为一个黑盒来考
虑。]
级别[概要、用户目标、子功能三者之一。]
主执行者[也就是该用例的主Actor,在此应列出其名称,并简
要描述。]
项目相关
人员利益
项目相关人员利益
[项目相关人员名称][项目相关人员取得的利
益]
…………
前置条件[也就是激发该用例,所应该满足的条件。]
后置条件[也就是该用例完成之后,将执行什么动作。]
成功保证[描述当目标完成后,环境的变化情况。]
触发事件[什么引发用例,例如时间事件。]
描述步骤活动
1[在这里写出触发事件到目标完成以及清除
的步骤。]
2[……]
3
扩展步骤分支动作
1a[引起分支的条件]
[活动或子用例名称]
技术和数
据变化
1[变化列表]
用例说明模板3(双列表格式)
编者说明:
本模板是对上一模板的补充,如果你想更好地捕捉系统的响应,那么
就可以采用本表格所示的格式。
有时,为了更好地捕获系统的响应,对于场景描述(主成功场景、扩
展场景)在上表的基础上变成如下表所示的双列:
步骤用户系统
用例说明模板4(文本式)
编者说明:
相信用过用例分析技术的,对用例应该多少细有很大的疑问,而
AlistairCockburn率先将其进行分级:概要、用户目标、子功能,如果
你对他的思想有认同,则该模板就适合于你。
1.用例名:
[用例名应是一个动词短语,应让读者一目了然地从名字中就可以知
道该用例的目标。]
2.使用语境:
[用例目标,是一个较长的描述,甚至包括触发条件。]
3.范围:
[用例的设计范围,在设计时将系统作为一个黑盒来考虑。]
4.级别:
[用来表示该用例是在描述哪个级别上的功能,通常包括概要、用户目
标、子功能三种。这三种级别的划分是AlistairCockburn在《编写有效
用例》一书是提出的。]
5.主执行者:
[也就是该用例的主Actor,在此应列出其名称,并给予简要描述。]
1.项目相关人员利益
[说明该用例对项目相关人员能够带来什么好处。]
2.前置条件:
[也就是激发该用例,所应该满足的条件。]
3.后置条件:
[也就是该用例完成之后,将执行什么动作。]
4.成功保证:
[描述当目标完成后,环境的变化情况。]
5.触发事件:
[什么引发用例,例如时间事件。]
6.主成功场景
[在这里写出触发事件到目标完成以及清除的步骤。]
[步骤编号#:动作描述]
[步骤编号#:动作描述]
……
7.扩展:
[在这里写出扩展情况,每次写一个扩展,每个扩展都应指向主场景
的特定步骤。]
[被改变步骤条件:动作或子用例]
[被改变步骤条件:动作或子用例]
……
8.技术和数据变化列表
[在这里写出场景中因技术或数据变化而引起的可能分支。]
[步骤或变化编号#:变化列表]
[步骤或变化编号#:变化列表]
……
9.相关信息
[项目所需要的所有附加信息。]
本文发布于:2023-02-28 07:15:59,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/167753975921544.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:需求说明书.doc
本文 PDF 下载地址:需求说明书.pdf
留言与评论(共有 0 条评论) |