




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章软件需求说明书的编写,Mr.Tang,学习目标,一、需求分析概述二、需求说明书的目的要求三、软件需求说明书内容要求与编写要点四、软件需求说明书编写示例,一、需求分析,需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么?”这个问题。软件需求规格说明是分析任务的最终产物,通过建立完整的信息描述、详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出对目标软件的各种需求。需求分析的出发点是可行性报告,通过需求分析使用户要求的功能具体化。需求分析的结果是软件需求规格说明书。主要部分是详细的数据流图,数据词典和主要(关键)功能的逻辑处理描述。通过复审的需求说明书既是软件设计的基础,也是软件项目最后鉴定、验收的依据。,5.1.1需求分析阶段的具体任务,1)确定对系统的综合要求2)分析系统的数据要求3)导出系统的逻辑模型4)修正系统开发计划5)开发原型系统,1)确定对系统的综合要求,(1)系统功能要求应该划分出系统必须完成的所有功能。(2)系统性能要求如,联机系统的响应时间、系统需要的存储容量以及后援存储、重新启动和安全性等方面的考虑都属于性能要求。(3)运行要求表现为对系统运行时所处环境的要求,例如,支持系统运行的系统软件是什么,采用哪种数据库管理系统,需要什么样的外存储器和数据通信接口等。(4)将来可能提出的要求应该明确地列出那些虽然不属于当前系统开发范畴,但是根据分析将来很可能会提出来的要求。这样做的目的是在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦需要时能比较容易地进行这种扩充和修改。,2)分析系统的数据要求,对系统的数据要求分析是软件需求分析的一个重要任务。分析系统的数据要求通常采用建立概念模型的方法。复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系。利用数据字典可以全面准确地定义数据,为了提高可理解性,也可利用图形工具辅助描绘数据结构。,根据对系统的综合要求和数据要求的结果可以导出系统的详细的逻辑模型,通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型。,3)导出系统的逻辑模型,4)修正系统开发计划,根据在分析过程中获得的对系统的深入、细致的了解,可以比较准确地估计系统的成本和进度,修正以前制定的开发计划。,5)开发原型系统,在计算机硬件和许多其他工程产品的设计过程中经常使用原型系统。建造原型系统可以检验关键设计方案的正确性及系统是否真正满足用户的需要。用户试用了原型系统以后能够指出系统的哪些特性是他们喜欢的,哪些是他们不能接受的以及他们还需要哪些新的功能。根据经过实践检验的用户需求而开发出来的系统,更可能真正满足用户的需要。,5.1.2需求分析的步骤,通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目的之一就是把数据流和数据存储定义到元素级。为了达到这个目的,通常从数据流图的输出端着手分析,这是因为系统的目标是产生这些输出,输出数据确定了系统必须具有的基本的组成元素。,1)沿数据流图回溯,沿数据流图从输出端往输入端回溯,应该能够确定每个数据元素的来源,与此同时也就初步定义了有关的算法。与用户和其他有关人员交流,可以划分系统中更多的数据元素。通常把分析过程中得到的有关数据元素的信息记录在数据字典中,把对算法的简明描述记录在IPO图中。通过分析而补充的数据流、数据存储和处理,应该添加到数据流图的适当位置上。,IPO图实例,2)用户复查,IPO图数据流图是帮助复查的极好工具。从输入端开始,分析员借助数据流图以及数据字典和简明的算法描述向用户解释输入数据是怎样一步一步地转变成输出数据的。追踪数据流图和复查系统的逻辑模型这两个步骤实质上构成一个循环。,为了追踪更详细的数据流,分析员应该把数据流图扩展到更低的层次。通过功能分解可以完成数据流图的细化。随着分析过程的进展,经过问题和解答的反复循环,分析员越来越深入具体地定义了目标系统,最终得到对系统数据和功能要求的满意了解。,3)细化数据流图,在可行性研究阶段分析员根据当时对系统的认识,草拟了一份开发计划经过需求分析阶段的工作,分析员对目标系统有了更深入、更具体的认识,因此可以对系统的成本和进度作出,更准确的估计,在此基础上应该对开发计划进行修正。,4)修正开发计划,经过分析确定了系统必须具有的功能和性能,定义了系统中的数据并且简略地描述了处理数据的主要算法。下一步应该把分析的结果用正式的文档记录下来,作为最终软件配置的一个组成成分。根据需求分析阶段的基本任务,在这个阶段可能应该完成下述四份文档资料:系统规格说明、数据要求、用户系统描述、修正的开发计划。,5)书写文档,分析过程的最后一步是按照技术标准对需求分析阶段的工作成果进行正式的技术审查和管理复审。,6)审查和复审,编写软件文档实际上就是对软件开发进行规范,软件需求规格说明书为软件客户和软件开发者提供连接的桥梁。对软件客户,可以精确地描述他们想获得什么样的产品,对软件开发者,可以准确地理解客户需要什么样的产品。,5.2需求说明书的目的要求,在软件产品完成目标方面为客户和开发者之间建立共同协议创立一个基础。提高开发效率。为成本计价和编制计划进度提供基础。,5.2.1需求说明书的目的,为确认和验证提供一个基准。便于移植。作为不断提高的基础。,cont.需求说明书的目的,需求说明书是对要完成一定功能、性能的软件产品、程序或一组程序的说明。对需求说明书的描述有两项基本要求:必须描述一定的功能、性能;必须用确定的方法叙述这些功能、性能。应该认识到需求说明书在整个软件开发规范所规定的有关阶段都起作用。正因为如此,需求说明书的编写者必须特别注意不要超出这种作用的范围。这意味着需求说明书必须正确地定义所有的软件需求;除非有设计上的特殊限制,需求说明书中一般不描述任何设计、验证或项目管理细节。,5.2.2需求说明书的基本要求,根据需求说明书的基本要求,需求说明书应该具有如下特点:1无歧义性2完整性3可验证性4一致性5可修改性6可追踪性7运行和维护阶段的可使用性,5.2.3需求说明书的特点,所谓无歧义,就是对每一个需求只有一种解释。要求对最终产品的每一个特性用某一术语描述;若某一术语在某一特殊的行文中使用时具有多种歧义,那么对该术语的每种含义要作出解释并指出其适用场合。需求说明书通常是用自然语言编写的,使用自然语言的需求说明书起草者必须特别注意消除其需求的歧义性。最好使用形式化需求说明语言。,1无歧义性,如果一个需求说明书能满足下列要求,则该需求说明书就是完整的:包括全部有意义的要求,无论是关系到功能的、性能的、设计约束的,还是关系到属性或外部接口方面的需求。对所有可能出现的输人数据的响应予以定义,要对合法和非合法的输入值的响应做出规定。要符合需求说明书要求,如果个别章节不适用,则在需求说明书中要保留章节号。填写需求说明书中的全部插图、表、图示标记和参照,并且定义全部术语和度量单位。,2完整性,可验证性指需求说明书中描述的每一个需求都是可以验证的。当且仅当在某一性能价格比可取的有限处理过程,人或机器能通过该过程检查软件产品能否满足需求时,才称这个需求是可以验证的。,3.可验证性,一致性指需求说明书中各个需求的描述不矛盾。,4一致性,如果一个需求说明书的结构和风格在需求有必要改变时是易于实现的、完整的、一致的,那么这个需求说明书就是可以修改的。可修改性要求需求说明书具备以下条件:具有一个有条不紊的易于使用的子文档名称组织,具有目录表,索引和明确的交叉引用表。没有冗余,即同一需求不能在需求说明书中出现多次。冗余本身不是错误,但是容易发生错误。冗余可增加需求说明书的可读性,但是在一个被更新时容易出现问题。例如,假设一个明确的需求在两个地方详细列出,后来发现这个需求需要改变,若只修改一个地方,于是需求说明书就变得不一致了。不管冗余是否必须,需求说明书一定要包含一个详细的交叉引用表,以便需求说明书具备叫修改性。,5可修改性,如果每一个需求的源流是清晰的,在进一步产生和改变文件编制时,可以方便地引证每一个需求,则该需求说明书就是可追踪的。可以采用如下两种类型的追踪方法:向后追踪(即向已开发过的前一阶段追踪)。向先前文件或本文件前面的每一个需求进行追踪。向前追踪(即是向由需求说明书派生的所有文件追踪),向需求说明书中具有惟一的名字和参照号的每一个需求进行追踪。,6可追踪性,当需求说明书中的一个需求表达另一个需求的一种指派或者是派生时,向前、向后的追踪都要提供。例如:从总的用户响应时间需求中分配给数据库操作响应时间。识别带有一定功能和用户接口的需求的报告格式。支持法律或行政上需要的某个软件产品(例如,计算税收)。在这种情况下,要指出软件所支持的确切的法律或行政文件。当软件产品进入运行和维护阶段时,需求说明书的向前可追踪性显得特别重要。当编码和设计文件作修改时,重要的是要查清这些修改所影响的全部需求。,需求说明书必须满足运行和维护阶段的需要,包括软件最终替换。维护常常是由与原来开发无联系的人来进行的。局部的改变(修正)可以借助于好的代码注释来实现。对于较大范围的改变。设计和需求文件是必不可少的,这里隐含了两个作用:需求说明书必须是可修改的。需求说明书中必须包括一个记录,它记录那些应用于各个成分的所有具体条文。要求在需求说明书中清楚地写明功能的来源和目的,因为对功能的来源和引入该功能的目的不清楚的话,通常不可能很好地完成软件的维护。,7运行和维护阶段的可使用性,编制需求说明书最显而易见的方法是用自然语言来描述。尽管自然语言是丰富多彩的,但不易精确,容易引起歧义,还是用形式化的方法比较好。1形式化说明方法2生产工具3表达工具,5.2.4需求说明书的编制工具,在需求说明书中是否使用形式化方法要依据下列因素:程序规模和复杂性。客户合同中是否要求使用。需求说明书是否是一个合同工具或仅仅是一个内部文件。需求说明书文件是否成为设计文件的根据。具有支持这种方法的计算机设备。,1形式化说明方法,软件产品生产中有多种生产工具。比如,计算机的字处理器就是非常有用的生产辅助工具。一个需求说明书通常有若干作者,可能经历若干版本,并且要进行多次重新组织子文档名称,因此使用生产工具是必要的。,2生产工具,在需求说明书中有许多词汇,特别是许多名词和动词,专门涉及到系统的实体和许多活动,所以需求说明书需要若干表达工具。此外,可以使用若干种形式化方法,以便允许自动处理需求说明书子文档名称;可以用一些表格或图示法来显示需求。用详细分层体系自动检查需求说明书的需求,这里每一个分层自身是完全的,但是也可以扩展为下一层或是上一层的一个组成成分。,3表达工具,需求说明书的基本点是它必须说明由软件获得的结果,而不是获得这些结果的手段。编写需求说明书必须描述的基本问题是:功能所设计的软件要做什么。性能是指软件功能在执行过程中的速度、可使用性、响应时间、各种软件功能的恢复时间、吞吐能力、精度、频率等。强加于实现的设计限制在效果、实现的语言、数据库完整性、资源限制、操作环境等方面所要求的标准。属性可移植性、正确性、可维护性及安全性等方面的考虑因素。外部接口与人、硬件、其他软件和其他硬件的相互关系。编写需求说明书应当避免把设计或项目需求写入需求说明书之中,应当对说明需求设计约束与规划设计两者有清晰的区别。,5.2.5在表达需求时应注意的问题,1避免在需求说明书中嵌入设计2避免在需求说明书中嵌入一些项目要求,在表达需求时应注意的问题,在需求说明书中嵌入设计说明,会过多地约束软件设计,并且人为地把具有潜在危险的需求放人需求说明书中。需求说明书必须描述在什么数据上、为谁完成什么功能,在什么地方产生什么结果。需求说明书应把注意力集中在要完成的服务目标上。通常不指定如下的设计项目:把软件划分成若干模块。给每一个模块分配功能。描述模块间的信息流程或者控制流程。选择数据结构。,1避免在需求说明书中嵌入设计,把设计完全同需求说明书隔离开来始终是不现实的。安全和保密方面的周密考虑可能增加一些直接反映设计约束的需求。例如:在一些分散的模块中保持某些功能。允许在程序的某些区域之间进行有限的通信。计算临界值的检查和。通常应考虑到,若要为软件选择高层次的设计,就可能需要大量的资源(可能占整个产品开发成本的1020以上)。有两种选择:在需求说明书中描述了设计。这意味着,或者将一个潜在不适当的设计作为一个需求进行描述或者在需求阶段花费了过多的时间。用模型设计描述需求,这种模型设计只用于辅助描述需求,而不使之成为实际的设计。,cont.避免在需求说明书中嵌入设计,需求说明书应当是描写一个软件产品,而不是描述生产软件产品的过程。项目要求表达客户和开发者之间对于软件生产方面合同性事宜的理解(因此不应当包括在需求说明书中),例如,成本、交货进度、报表处理、软件开发方法、质量保证、确认和验证的标准、验收过程。项目需求在另外的文件中描述。在需求说明书中提供的只是关于软件产品本身的需求。,2避免在需求说明书中嵌入项目要求,软件产品的开发过程中,在项目的开始阶段不可能详细说明某些细节,在开发过程中可能发现需求说明书的缺陷、缺点和错误等,所以可能要对需求说明书进行改进。在需求说明书的改进中,应注意如下事项:尽管可以预见校正版本的开发以后不可避免,但对需求还必须尽可能完全、清楚地描述。一旦最初识别出项目的变化,应引入一个正式的改变规程来标识、控制、追踪和报告项目的改变。,3需求说明书的改进问题,软件开发的过程是从开发者和客户双方同意开发什么样的软件协议开始的。这种协议要使用需求说明书的形式,应该由双方联合起草。这是因为:其一,客户通常对软件设计和开发过程了解较少,不能指望完全靠客户写出可用的需求说明书;其二,开发者通常对于客户的问题和意图了解较少,不与或者很少与客户交流,也不可能写出一个令人满意的系统需求。,4需求说明书的编制者应该与客户交流,53需求说明书的内容要求与编写指南,软件需求说明书的编制是为了使用户和软件开发者双方对软件的初始规定有一个共同的理解,为待开发软件提出准确而详尽的要求,包括功能、性能、数据和运行环境等,为下一阶段的概要设计提供目标和依据。在需求描述中,对软件的功能描述占据着核心地位。功能描述部分以数据流图为核心,再加上对组合的和基本的数据元素的属性和对存储数据的概念信息结构的描述、对数据加工动作的说明、对软件其他方面需求的描述,如,性能、运行环境、系统的输入输出数据格式等,这样就构成对系统及其数据的完整描述信息。,Cont.需求说明书的内容要求与编写指南,这样来组织软件需求说明书的子文档名称:首先,陈述软件设计说明书的编写目的、项目背景、术语定义等作为前言;其次,说明产品的功能、用户特点、一般约束、假设和依据作为对项目的概述;接着重点描述具体功能,这里最好用CASE工具;随后说明外部接口需求、性能需求、数据需求、软件属性需求及其他需求等。设计软件需求说明书的目录如下,可看出软件需求说明书由三个部分组成。项目名称栏目填上具体的项目名称。,对于项目的范围要作明确的规定,最重要的是用一个名字标识被生产的软件产品。比如,XXX数据库系统,报表生成程序等;如果需要的话,还要说明软件产品将干什么,不干什么;其次,还要描述所说明的软件的应用,要尽可能精确地描述所有相关的利益、目的以及最终目标,如果有一个较高层次的说明存在,则应该使其和高层次说明中的类似的陈述相一致(例如,系统的需求规格说明)。对需求中用到的全部术语、缩写词及略语等,必须提供明确的定义,以便对需求说明书进行适当的解释。这些信息可以由需求说明书的附录提供,也可以参考其他的文件。需求阶段的定义十分重要,如果定义得当,可以省掉以后喋喋不休的解释,在需求中明确的定义将有助于尽早澄清一些误解。还要列出需求说明书的文件依据和参考资料,具体包括:在需求说明书中各处参照的文件的全部清单,如,经核准的计划任务书,上级机关批文、合同等。本项目的其他已发表的文件。本文件中各处引用的文件、资料,包括所要用到的软件开发标准。每一个文件、文献要有标题、索引号、文件编号、发表日期和出版单位。详细说明可以得到该参考文件的来源。这个信息可以通过引用附录或其他文件提供。,532项目概述在软件需求说明书的项目概述中应描述影响产品和其需求的一般因素,这部分不说明具体的需求,而仅使需求更易于理解。包括产品描述、产品功能、用户特点、一般约束、假设和依据等五个方面内容。将之形成一个子文档,子文档序号为R2。,产品描述是把一个产品用其他有关的产品或项目来描述。如果这个产品是独立的,而且全部子文档名称自含,应在此说明。如果需求说明书定义的产品是一个较大的系统或项目中的一个组成部分,那么本条应包括如下子文档名称:要概述这个较大的系统或项目的每一个组成部分的功能,并说明其接口。指出该软件产品主要的外部接口。在这里,不要求对接口详细地描述,详细描述放在需求说明书其他章条中。描述所使用的计算机硬件、外围设备。这里仅仅是一个综述性描述。在本部分的描述中,用一个方框图来表达一个较大的系统或项目的主要组成部分、相互联系和外部接口是非常有帮助的。本部分既不用来强迫进行设计方案的描述,也不是描述在解决问题时的设计约束。本条应对在以后具体需求一章中说明的设计约束提供理由。,1.产品描述,产品功能是为将要完成的软件功能提供一个摘要。例如,对于一个记账程序来说,需求说明书可以用客户账目维护、客户财务报表和发票制作来描述,而不必把功能所要求的大量的细节描写出来。有时,如果存在较高层次的规格说明时,则功能摘要可直接从中取得,这个较高层次的规格说明为软件产品分配了特殊的功能,为了清晰起见,请注意:编制功能的一种方法是制作功能表,以便客户或者第一次读这个文件的人都可以理解。用方框图来表达不同的功能和它们的关系也是有帮助的。但要牢记,这样的图不是产品设计时所需求的,而只是一种有效的解释性的工具。这一部分不用作陈述具体需求,只是对后来需求说明书中具体需求中要描述的某些需求提供理由。,2产品功能,3用户特点,用户特点要描述影响具体需求的产品的最终用户的一般特点。许多人在软件生存周期的操作和维护阶段与系统相关。而这些人中有用户、操作员、维护人员和系统工作人员。这些人的某些特点,像教育水平、经验、技术、专长等,都是施加于系统操作环境的重要约束。针对每类用户,可以提供如下的信息:用户分类,如,学校的学生、建筑工程师、项目经理等。用户工作的任务,直接用户的职责。用户在业务方面的知识,如,可以按新手、熟练工、专家来划分。其他用户特征,如,教育程度、语言技能、年龄段等。用户的来源很广,有时甚至想像不到,几乎任何人都可以成为用户。如果系统的大多数用户是一些临时用户,那么就要求系统包含如何完成基本功能的提示,而不是假设用户已经从过去的会议或从阅读用户指南中了解到这些细节。,4一般约束,一般约束是设计系统时,对限制开发者选择的其他项作一般性描述。而这些项将限定开发者在设计系统时的任选项。这些包括:管理方针。硬件的限制。与其他应用间的接口。并行操作。审查功能。控制功能。所需的高级语言。通信协议。应用的临界点。安全和保密方面的考虑。本部分不陈述具体需求或具体设计约束,而对需求说明书的具体需求要确定某些具体需求和设计约束提供理由。,5假设和依据,假设和依据列出影响需求说明书中陈述的需求的每一个因素。这些因素不是软件的设计约束,但是它们的改变可能影响到需求说明书中的需求。例如,假定一个特定的操作系统是在被软件产品指定的硬件上使用的,然而,事实上这个操作系统是不可能使用的,于是,需求说明书就要进行相应的改变。,533具体需求,这部分应包括软件开发者在建立设计时需要的全部细节。这是需求说明书中篇幅最大和最重要的部分。根据所规定的准则(如,可验证性、无歧义性等),对每一个需求细节作具体描述。具体需求分类的方法如下:功能需求。性能需求。属性需求。外部接口需求。要按符合逻辑的和可读的方式组织,详细描述每一个需求,使得该需求应达到能够用指定的方法进行客观的验证。,由于功能需求通常是需求说明书所有部分中最大并且最复杂的部分。因此对这些需求的组织是一件很麻烦的事情,可以根据软件实现功能的基本类型,将条目分成若干段。例如,考虑一个大的交互记账系统,在里层可以分为操作软件(它支持近乎实时的事务处理)、支撑软件(联机功能、磁盘备份、装入磁带等)以及诊断软件(诊断硬件、通信等),外一层是应收款账以及应付款账等。要强调的是,结构细分的目的是提高需求说明书的可读性,而不是进行概要设计。对于需求说明书中的具体需求部分的最好的组织方案取决于所说明的软件产品的应用范围和性质。在指南中提供了四种可能的组织方案。这只是个建议的方案,不必把它当作教条套用。,大纲1中,首先说明全部功能需求,然后说明四种类型的接口要求,最后是其他需求。大纲2中,把对应每个特定功能的四种接口需求和该功能需求放在一起描述,然后说明其他需求。大纲3中,与功能需求有关的全部子文档名称放在一起首先说明,然后是其他
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上市企业市值管理办法
- 电玩城库存管理办法
- 上海返乡人员管理办法
- 自然角区域管理办法
- 融资业务贷款管理办法
- 综合部材料管理办法
- 个人活期账户管理办法
- 粮油厂分级管理办法
- 中国设备租赁管理办法
- 上海灯光设置管理办法
- 理发店安全知识培训课件
- 测绘法规与管理课件
- 2025年潍坊市中考数学试题卷(含标准答案)
- 2024重庆护士三基考试真题卷(附答案)
- 并购整合方案模板(3篇)
- 2025-2026学年人教鄂教版(2017)小学科学四年级上册教学计划及进度表
- 2025-2026学年秋季第一学期学校德育工作安排表
- 《汽车电工与电子技术基础》课件(共七章节)
- 浙教版2025-2026学年八年级上科学第1章 对环境的察觉 单元测试卷
- 产科护理SBAR交班模式
- DB61∕T 1576-2022 矩形钢管混凝土组合桁梁桥技术规范
评论
0/150
提交评论