2022年需求文档书写方法实 .pdf

上传人:H****o 文档编号:40338415 上传时间:2022-09-09 格式:PDF 页数:9 大小:80KB
返回 下载 相关 举报
2022年需求文档书写方法实 .pdf_第1页
第1页 / 共9页
2022年需求文档书写方法实 .pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《2022年需求文档书写方法实 .pdf》由会员分享,可在线阅读,更多相关《2022年需求文档书写方法实 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 项目需求说明书一 引言1、编写目的说明编写这份项目需求说明书的目的,指出预期的读者。2、背景说明:(1)待开发的软件系统的名称。(2)本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络。(3)该软件系统同其他系统或其他机构的基本的相互来往关系。3、定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。4、参考资料列出用得着的参考资料,如:(1)本项目的经核准的计划任务书或合同、上级机关的批文。(2)属于本项目的其他已发表的文件。(3)本文件中各处引用的文件、资料、包括所要用到的软件开发标准。列出这些文件资料的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资

2、料的来源。二 任务概述 1、目标叙述该项软件开发的意图、应用目标、作用范围以及其它应向读者说明的有关该软件开发的背景材料。解释被开发软件与其它有关软件之间的关系。如果本软件产品是一项独立的软件,而且全部内容自含,则说明这一点。如果所定义的产品是一个更大的系统的一个组成部分,则应说明本产品与该系统中其他各组成部分之间的关系,为此可使用一张方框图来说明该系统的组成和本产品同其他各部分的联系和接口。2、用户的特点列出本软件的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长,以及本软件的预期使用频度。这些是软件设计工作的重要约束。3、假定和约束列出进行本软件开发工作的假定和约束,例如经费

3、限制、开发期限等。三 需求规定1、对功能的规定用列表的方式(例如 IPO 表即输入、处理、输出表的形式),逐项定量和定性地叙述对软件所提出的功能要求,说明输入什么量、经怎样的处理、得到什么输出,说明软件应支持的终端数和应支持的并行操作的用户数。2、对性能的规定 (1)精度说明对该软件的输入、输出数据精度的要求,可能包括传输过程中的精度。(2)时间特性要求说明对于该软件的时间特性要求,如对:响应时间。更新处理时间。数据的转换和传送时间。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 9 页 -2 解题时间。等的要求。(3)灵活性说明对该软件的灵活性的要求,即当需求发生某些变化时,该

4、软件对这些变化的适应能力,如:操作方式上的变化。运行环境的变化。同其他软件的接口的变化。精度和有效时限的变化。计划的变化或改进。对于为了提供这些灵活性而进行的专门设计的部分应该加以标明。3、输入输出要求解释各输入输出数据类型,并逐项说明其媒体、格式、数值范围、精度等。对软件的数据输出及必须标明的控制输出量进行解释并举例,包括对硬拷贝报告(正常结果输出、状态输出及异常输出)以及图形或显示报告的描述。4、数据管理能力要求说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按可预见的增长对数据及其分量的存储要求作出估算。5、故障处理要求列出可能的软件、硬件故障以及对各项性能而言所产生的后果和对故障

5、处理的要求。6、其它专门要求如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性、可靠性、运行环境可转换性的特殊要求等。四 运行环境规定1、设备列出运行该软件所需要的硬件设备。说明其中的新型设备及其专门功能,包括:(1)处理器型号及内存容量。(2)外存容量、联机或脱机、媒体及其存储格式,设备的型号及数量。(3)输入及输出设备的型号和数量,联机或脱机。(4)数据通信设备的型号和数量。(5)功能键及其他专用硬件。2、支持软件列出支持软件,包括要用到的操作系统、编译(或汇编)程序、测试支持软件等。3、接口说明该软件同其他软件之间的接口、数据通信协议等。4、控制说明控制该软件的运

6、行的方法和控制信号,并说明这些控制信号的来源。五 数据要求1、数据的逻辑描述对数据进行逻辑描述时可把数据分为动态数据和静态数据。所谓静态数据,指在运行过程中主要作为参考的数据,它们在很长的一段时间内不会变化,一般不随运行而改变。所谓动态数据包括所有在运行中要发生变化的数据以及在运行中要输入、输出的数据。进行描述时应把各数据元素逻辑地分成若干组,列如函数、源数据或对于其应用更为恰当的逻辑分组。给出每一数据元的名称(包括缩写和代码)、定义(或物理意义)度量单位、名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 9 页 -3 值域、格式和类型等有关信息。(1)静态数据列出所有作为控制或参

7、考用的静态数据元素。(2)动态输人数据列出动态输入数据元素(包括在常规运行中或联机操作中要改变的数据)。(3)动态输出数据列出动态输出数据元素(包括在常规运行中或联机操作中要改变的数据)。(4)内部生成数据列出向用户或开发单位中的维护调试人员提供的内部生成数据。(5)数据约定说明对数据要求的制约。逐条列出对进一步扩充或使用方面的考虑而提出的对数据要求的限制(容量、文卷、记录和数据元的个数的最大值)。对于在设计和开发中确定是临界性的限制更要明确指出。2、数据的采集(1)要求和范围按数据元的逻辑分组来说明数据采集的要求和范围,指明数据的采集方法,说明数据采集工作的承担者是用户还是开发者。具体的内容

8、包括:输入数据的来源例如是单个操作员、数据输入站,专业的数据输入公司或它们的一个分组。数据输入(指把数据输入处理系统内部)所用的媒体和硬件设备。如果只有指定的输入点的输入才是合法的,则必须对此加以说明。接受者。说明输出数据的接受者。输出数据的形式和设备列出输出数据的形式和硬设备。无论接受者将接收到的数据是打印输出,还是CRT上的一组字符、一帧图形,或一声警铃,或向开关线圈提供的一个电脉冲,或常用介质如磁盘、磁带、穿孔卡片等,均应具体说明。数据值的范围。给出每一个数据元的合法值的范围。量纲。给出数字的度量单位、增量的步长、零点的定标等。在数据是非数字量的情况下,要给出每一种合法值的形式和含意。更

9、新和处理的频度。给出预定的对输入数据的更新和处理的频度。如果数据的输入是随机的,应给出更新处理的频度的平均值,或变化情况的某种其他度量。(2)输入的承担者说明预定的对数据输入工作的承担者。如果输入数据同某一接口软件有关,还应说明该接口软件的来源。(3)预处理对数据的采集和预处理过程提出专门的规定,包括适合应用的数据格式、预定的数据通信媒体和对输入的时间要求等。对于需经模拟转换或数字转换处理的数据量,要给出转换方法和转换因子等有关信息,以便软件系统使用这些数据。(4)影响说明这些数据要求对于设备、软件、用户、开发单位所可能产生的影响,例如要求用户单位增设某个机构等。名师资料总结-精品资料欢迎下载

10、-名师精心整理-第 3 页,共 9 页 -4 你的工程应该有个好的起点。一个小组要带领客户进入需求启发阶段而且你要写软件需求说明书。这份说明有些大,但客户会很重视,所以说明必须得到赞同。现在你正在设计其中的一个特性,已经发现了需求的一些问题。你可以用多种不同的方式解释需求15;需求 9 的说明正好与需求21 相反,你因该相信哪一个?需求24 非常含糊,你根本不明白它的意思;你不得不花上一个小时与2 位开发人员讨论需求30,只因为你们对其各有各的理解;并且,唯一能够澄清这些问题的客户没有给你们答复。你被迫破解众多需求的含义,并且你能预料到,如果你错了,你要做大量的重复工作。许多软件需求说明书(S

11、RS)写得非常糟糕。任何产品的质量需要其原始材料的质量保证,糟糕的软件需求说明书不可能产出优秀的软件。不幸的是,几乎没有开发人员受过与需求的抽象、分析、文档、质检有关的教育。而且,没有非常多的好需求可以借鉴学习,部分原因是很少有工程可以找到一个好的借鉴,其他原因是公司不愿意将其产品说明书放在公共区域。这篇文章描述了高质量需求叙述和说明的几个特性(特点)。我们将用这些观点检查一些有缺陷的需求,带着痛楚重新编写。而且我会谈一些如何编写好的需求的提示。你也许想通过这些质量标准评估你的工程需求。对于修订,也许迟了,但你会学到一些有用的东西,并帮助你的小组在下次编写出更好的需求。不要期望能够编写出一份能

12、体现需求应具备的所有特性的SRS。无论你怎么细化、分析、评论和优化需求,都不可能达到完美。但是,如果你牢记这些特性,你就会编写出更好的需求,生产出更好的产品。高质量需求叙述的特性我们如何从一些有问题的需求中分辨出好的软件需求?这一节将分别介绍需求叙述应体现的6 个特性,下一节将从整体上介绍SRS文档应具备的特性。判断每个需求是否具备应有的特性的一种方式是由持有不同观点的工程资金管理人所作的正规检查。另一种有力的方法是在编写代码前依据需求编写测试例子。测试例子能够明确显现在需求中描述的产品行为(特性),能够显现缺陷、冗余和含糊之处。正确:每个需求必须精确描述要交付的功能。正确性依据于需求的来源,

13、如真实的客户或高级别的系统需求说明书。一个软件需求与其对应的系统需求说明书相抵触是不正确的(当然,系统需求说明书本身可能不正确)。只有用户的代表能够决定用户需求的正确性,这就是为什么在检查需求时,要包括他们或他们的代理的关键所在。不包括用户的需求检查就会导致开发人员的:“这是没意义的”,“这可能是他们的意思”等众所周知的猜测。可行性:在已知的能力、有限的系统及其环境中每个需求必须是可实现的。为了避免需求的不可行性,在需求分析阶段应该有一个开发人员参与,在抽象阶段应该有市场人员参与。这个开发人员应能检查在技术上什么能做什么不能做,哪些需要需要额外的付出或者和其他的权衡。名师资料总结-精品资料欢迎

14、下载-名师精心整理-第 4 页,共 9 页 -5 必要性:每个需求应载明什么是客户确实需要的,什么要顺应于外部的需求,接口或标准。每个需求源于你认可、具有权说明需求的原始资料,这是考虑必需的另外情形(译注,此句翻译不顺,请参照原文:Another way to think of“necessary”is that each requirement originated from a source you recognize as having the authority to specify requirements)。跟踪每个需求回溯到出处,如用例,系统需求,规章,或来自其他用户的意见。如果

15、你不能标识出处,可能需求只是个镀金的例子,没有真正的必须。优先权:为了表明在一个详细的产品版本中应包含哪些要点,需要为每个需求,特征,或用例分配实现的优先权。客户或其代理都应有强烈的责任建立优先权。如果所有的需求都被视为同等重要,那么由于在开发中,预算削减,计划超时或组员的离开导致新的需求时,项目经理将不能起到作用。优先权的作用是提供给客户的价值,实现的相关费用,实现相关联的有关技术风险。我是用 3 种级别的优先权:高优先权表明需求必须体现在下一个产品版本中,中优先权表明需求是必须的,但是如果需要可以推迟到晚一些的产品版本中,低优先权表明有它很好,但我们必须认识到如果没有充足的时间或资源,它可

16、以被放弃掉。明确:需求叙述的读者应只能从其得到唯一的解释说明,同样,一个需求的多个读者也应达成共识。自然语言极易导致含糊。要避免使用一些对于SRS作者很清楚但对于读者不清楚的主观词汇,如:用户友好性,容易,简单,快速,有效,几个,艺术级,改善的,最大,最小等等。每写一个需要都应简洁,简单,直观的采用用户熟知的语言,不要采用计算机术语。检查需求模糊的有效方式包括需求说明书的正规检查,根据需求写测试,建立用户的假想来说明产品某个特定部分预期的特性。可证实:看你是否能够做出测试计划或其他验证方式,如检查和实证,来决定在产品中每个需求是否正确的实现。如果需求是不可验证的,决定需求是不是正确的实现就成了

17、判断的事。需求之间不一致,不可行,不明确也能导致不可证实。任何需求如果说产品将要支持什么也是不可证实的。高质量需求说明的特征一个完整的SRS不仅是包括长长的功能性需求列表,还包括外部接口描述和一些诸如质量属性,期望性能的非功能性需求。下面描述了高质量的SRS的一些特性。完整:不应该遗漏要求和必需的信息。完整性也是一个需求应具备的。发现缺少的信息很难,因为根本不存在。在 SRS中将需求以分层目录方式组织,将帮助评审人员理解功能性描述的结构,使他们很容易指出遗失的东西。在需求抽象时,相对于系统功能,你过多的注意用户的业务,将导致在需求的全局观和引进不是真正必需的需求上显得不足。在需求抽象上,应用用

18、例方法会发挥很好的作用。能够从不同角度察看需求的图形分析模型也可以检查出不完整性。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 9 页 -6 如果你知道已缺少一些信息,使用TBD(to be determined)标准标志可以突出这些缺陷,当你在构建产品的相关部分时,就可以从一个给定的需求集中解决所有的缺陷。一致性:一致性需求就是不要于其他的软件需求或高级别的系统(商业)需求发生冲突。需求中的不一致必须在开发开始前得到解决。只有经过调研才能确定哪些是正确的。修改需求时一定要谨慎,如果只审定修改的部分,没有审定于修改相关的部分,就可能导致不一致性。可修改性:当每个需求的要求修改了

19、或维护其历史更改时,你必须能够审定SRS。也就是说每个需求必须相对于其他需求有其单独的标示和分开的说明,便于清晰的查阅。通过良好的组织可以使需求易于修改,如:将相关的需求分组,建立目录表,索引,以及前后参考(照)。可追踪:你应能将一个软件与其原始材料相对应,如高级系统需求,用例,用户的提议等。也能够将软件需求与设计元素,源代码,用于构造实现和验证需求的测试相对应。可追踪的需求应该具有独立标示,细密和结构化的编写,不应过大,不应是叙述性的文字和公告式的列表。需求质量的评审这些有关需求质量的特性的描述在理论上都是非常好的,但一个好的需求到底是个什么样子的呢?为了体现得更切合实际,我们做个小练习。下

20、面有几个从实际的工程选出的需求,依据上面的质量标准,评估每个需求,看看有什么问题,然后用更好的方式重写。我将对每个例子都提出自己的分析和改进的建议。也欢迎你提出不同的见解。我所占优的只是我知道每个需求的出处。因为你我都不是真正的客户,我们只能猜测每个需求的意图。例 1“产品应在不少于每60 秒的正常周期内提供状态信息”这个需求是不完整的:状态信息是什么,如何显示给用户。这个需求有几处含糊。我们在谈论产品的哪部分?状态信息间隔真的假定为不少于60 秒?,甚者每 10 年显示一条新的状态信息也可以?也许它的意图是消息间隔不应超过60 秒,那么1 毫秒是不是太短?“每”这个词导致了不确定性。问题的后

21、果,就是需求的不可证实。弥补缺陷,重写需求的一种方法:1、状态信息11 后台任务管理器因该以误差上下不超过10 秒的 60 秒间隔,在用户界面的指定位置显示状态信息12 如果后台进程处理正常,那么应该显示任务已完成的百分数/比13 任务完成时,应显示相关的信息14 后台任务出错应该显示错误信息为了分别测试和追踪,我将其分成了多个需求。如果将几个需求串接在一节中,在构造和测试时就很容易漏掉一个。例 2“产品应瞬间在显示和隐藏不可打印字符间切换”计算机在瞬间不能做任何事,所以这个需求不切实可行。它的不完整性表现在没有声明触发状态切换的条件。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,

22、共 9 页 -7 软件要在某些条件下更改自己?或者用户为了模仿更改要做一些动作?而且,在文档中改变显示的范围是多大:选中的文本,整个的文档,或其他的?这也是个模糊的问题。不可打印字符合隐藏字符一样吗?或者是一些属性标志或一些控制字符?问题的后果,就是需求的不可证实。象这样编写需求也许更好一些:“用户能够在一个由特定触发条件激活处于编辑的文档中在显示和隐藏所有HTML标记间切换”。现在就很清楚,不可打印字符是HTML 标记。由于没有定义触发条件,需求对设计没有约束力。只有设计人员选定了触发条件后,你才能编写测试验证触发的正确操作。例 3“HTML分析器可以产生HTML标记错误报告,帮助HTML入

23、门者快速解决错误”。单词“快速”使其模糊,没有加进错误报告的定义也是其部完整。我不知道,你怎么验证这个需求。找一个自称为HTML的入门者,看看能不能根据错误报告快速解决错误?试试这个:“HTML分析器可以产生一个错误报告,错误报告包含有在被分析文件中出错的HTML 文本和行号以及错误的描述。如果没有错误,就不会产生错误报告”。现在我们知道了,什么会被加到出错报告中,但是出错报告是个什么样子,则留由设计人员决定。我们还指定了一个例外:如果没有发现错误,不产生错误报告。例 4“如果可能,主管号码应通过联机校验,而不是通过主全体主管号码列表校验”。真感到绝望,什么是“如果可能”:如果技术上可行?如果

24、主全体主管号码列表可以联机获得?要避免象“应该”的这类不确切的词。客户是需要这个功能性还是不需要。我曾看过一些需求说明书,采用诸如:应,将,应该/将要等一些词描述优先级的细微差别。但我更喜欢用“应”清楚的说明需求的意图,指明优先级。这是修改后的:系统应校验输入的主管号码而不通过联机的主全体主官号码列表。如果在列表中没有发现主管号码,将会显示一条错误信息,也不接受指令。在理解各个已完成的糟糕需求上,开发人员将会遇到的难题是:开发人员与客户将会在审核需求,未达成共识前发生激烈的争论。详细检查大的需求文档不是一件轻松的事情。我清楚有人做过,而且他们花在检查上的每一分钟都是值得的。相对于开发阶段和用户

25、的抱怨电话,在这个阶段修补缺陷是便宜的,编写质量需求的方针编写优秀的需求是没有公式化的方法的。这需要大量的经验,要从你在过去的文档中发现的问题学习。请在组织软件需求文档时,严格遵从这些方针。句子和段落要短。采用主动语气。使用正确的语法,拼写,标点。使用术语,要保持一致性,并在术语表或数据字典中定义它们要看需求是否被有效的定义,可以以开发人员的观点看看。在内心将“当你们做完了找我”这句加到文档尾部,看看能不能是你紧张起来。换句话说,你是否需要SRS的编写者的额外解释帮助开发人员很好的理解需求,以便于设计和实现?如果是的话,在继续工作前,需求还需要细化。名师资料总结-精品资料欢迎下载-名师精心整理

26、-第 7 页,共 9 页 -8 需求编写者还要努力正确地把握细化程度。要避免包含多个需求的长的叙述段落。有帮助的提示是编写独立的可测试的需求。如果你认为一小部分测试可以验证一个需求的正确,那么它已经正确的细化了。如果你预想到多种不同类的测试,几个需求可能已挤到了一起,需要拆分开。密切关注多个需求合成了单个需求。一个需求中的连接词“和”/“或”建议几个需求合并。不要在一个需求中使用“和”/“或”。通篇文档细节上要保持一致。我曾看见过多个需求说明书前后不一致。如:“对于红色合法的颜色代码应是R”及“对于绿色合法的颜色代码应是G”就有可以以分散的需求分离开,而“产品应能对来自语音编辑指示做出反应”应

27、作为一个子系统,不应作为单个的功能性需求。避免在 SRS中过多的申述需求。在多处包含相同的需求可以使文档更易于阅读,但也会给文档的维护增加困难。文档的多份文本要在同一时间内全部更新,避免不一致性。如果你遵从了这些方针,你能够尽早地经常正式或非正式的审查需求,这些需求对于产品的构造,系统测试以及最后的客户满意,都会成为好的奠基石。并且要记住,没有高质量的需求,软件就象一盒巧克力,你永远不知道你会得到什么。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 9 页 -9 软件需求的定义 IEEE软件工程标准词汇表(1997 年)中定义需求为:(1)用户解决问题或达到目标所需的条件或权能(

28、Capability)。(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。(3)一种反映上面(1)或(2)所描述的条件或权能的文档说明。需求的层次下面这些定义是需求工程领域中常见术语的定义说明。软件需求包括三个不同的层次业务需求、用户需求和功能需求也包括非功能需求。业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。用户需求(user requirement)文档描述了用户使用产品必须要完成的任务,这在使用实例(use case)文档或方案脚本(scenario)说明中予以说明

29、。功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。所谓特性(feature)是指逻辑上相关的功能需求的集合,给用户提供处理能力并满足业务需求。软件需求各组成部分之间的关系如图所示。作为补充,软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的操作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。所谓约束是指对开发人员在软件产品设计和构造上的限制。质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。值得注意的一点是,需求并未包括设计细节、实现细节、项目计划信息或测试信息。需求与这些没有关系,它关注的是充分说明你究竟想开发什么。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 9 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁