《《编写需求》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《编写需求》PPT课件.ppt(26页珍藏版)》请在三一办公上搜索。
1、2023/7/31,软件需求工程Software Requirements Engineering(SRE)第二部分 软件需求开发第 十 章 编写需求文档,龚 永 罡,2/26,学习目标,在学完本章内容之后,你应该能够:理解文档编写的重要意义和作用;掌握编写需求文档的方法;学会使用SRS模板。掌握数据字典的定义过程。,3/26,10.0 需求文档的作用,作为需求分析师,很可能经常会发现自己处于进退维谷的境地前有业务目标,后有IT系统。这两方面都具有规模大、不易改变和灵活性差的特点,制定业务目标的人员和开发系统的人员不一定了解彼此的工作内容和成果。如果你无法足够详细而清晰地将干系人的需求用书面的
2、形式表达出来,则表明你没有完成捕获项目要求的任务。,4/26,10.0 需求文档的作用,前景和范围文档包含了业务需求;用例文档包含了用户需求;根据系统需求和用例产生功能需求文档;根据用户需求和系统需求编写质量属性和外部接口需求等非功能需求文档。,P112,5/26,10.0 需求文档的作用,表示软件需求的三种方法:用结构化和自然语言编写文本型文档。建立图形化模型,这些模型可以描绘转换过程、系统状态和它们之间的变化、数据关系、逻辑流或对象类和它们的关系。编写形式化规格说明,这可以通过使用数学上精确的形式化逻辑语言来定义需求。,P112,6/26,10.1 软件需求规格说明,SRS(软件需求规格说
3、明 Software Requirement Specification)也称为功能规格说明、产品规格说明、需求文档或系统规格说明;SRS 精确地阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件;SRS 不仅是系统测试和用户文档的基础,也是所有子系列项目规划、设计和编码的基础;SRS 应该尽可能完整地描述各种条件下的系统行为;SRS 不应该包括设计、构造、测试或工程管理细节。,P112,7/26,10.1 软件需求规格说明,不同的读者使用SRS来达到不同的目的客户、市场部、销售人员需要了解他们期望的产品是怎样的;项目经理根据它估计项目的进度、工作量和所需资源;开发团队根据它来了解需
4、要开发什么样的产品;测试小组使用SRS来制定测试计划、测试用例和测试过程;软件维护和支持人员根据SRS了解产品的功能;文档编写人员根据SRS和用户界面设计来编写用户手册和帮助屏幕;培训人员根据S R S和用户文档编写培训材料。公司律师要确保该需求符合相关法律法规分包商根据SRS来进行工作,当然这些工作必须合法。,P113,8/26,10.1 软件需求规格说明,编写SRS的要点SRS作为产品需求的最终成果必须包括所有的需求。任何未写入SRS中的需求,将不能作为协议的一部分,并且不能在产品中出现。所有的参与者必须根据已通过评审的需求来安排工作,以避免不必要的返工和误解。高质量需求文档必须具有完整性
5、、一致性、可修改性、可跟踪性和可读性的特征。,P113,9/26,10.1 软件需求规格说明,编写SRS的要点必须在实现每个需求集之前将需求集纳入基线。可以采用反复地或者渐增的方式来编写SRS,这取决于如下几个因素:是否可以一开始就确定所有的需求;编写SRS的人是否参加系统开发;计划发行的版本数量。,P110,10/26,10.1 软件需求规格说明1)需求的标识,为了保证SRS的可跟踪性和可修改性的质量标准,必须唯一标识每个软件需求。下面的标识方法有不同的优缺点需要根据具体情况进行选择:序列号:赋予每个需求一个唯一的序列号层次型编码:对需求中主要的部分进行层次化编号,然后对于每个部分中的单一功
6、能需求用一个简短文字代码加上一个序列号来识别。层次型文本标签。层次化文本标签是结构化的,具有语义上的含义,1)并且不受增加、删除或移动其它需求的影响。,P113,11/26,10.1 软件需求规格说明2)处理不完整性,由于缺少特定需求的某些信息,将出现需求不确定的问题。在解决不确定性之前,必须与客户商议、检查外部接口描述或者构建一个原型。使用“待确定”(to be determined,TBD)符号来标记这些尚未确定的需求。在实现一个需求集之前,必须解决所有TBD问题。,P115,12/26,10.1 软件需求规格说明 3)用户界面和 SRS,用户界面的设计编入SRS中既有好处也有坏处。由于屏
7、幕图像和用户界面构架是系统设计,而不是用户需求,所以对它的关注可能使需求走入歧途。也限制了开发人员的发挥。但是探讨屏幕图像和用户界面有助于精化需求并使用户对系统有亲和感和现实感,有助于用户需求的表述和交流。一个合理的权衡点是,在SRS中加入用户界面组件的概念草图,而在实现时并不一定要精确地遵循这些草图模型。,P115,13/26,10.2 SRS 模板,高级汉语词典:施工时浇筑混凝土用的成组模型板铸造时放模型和砂箱用的底板,软件开发组织应该在它们的项目中采用一种或多种标准的SRS的模板。,IEEE标准8301998是一个结构好,适用性强、使用灵活的SRS模板。图9-1是根据IEEE 830标准
8、改写并扩充的软件需求规格说明模板。,P116,14/26,9.2 SRS 模板,1.引言1.1 目 的1.2 文档约定1.3 预期的读者和阅读建议 1.4 项目范围 1.5 参考资料,X X X系统需求规格说明书,2.总体描述2.1 产品前景2.2 产品功能2.3 用户类和特征2.4 运行环境2.5 设计和实现上的限制2.6 用户文档,图10-1 软件需求规格说明书模板,P117,15/26,9.2 SRS 模板,系统特性3.1 系统特性X 描述和优先级3.X.2 激励/响应序列3.X.3 功能性需求外部接口需求 3.1 用户界面 3.2 硬件接口3.3 软件接口3.4 通信接口,X X X系
9、统需求规格说明书,其他非功能需求5.1 性能需求5.2 防护性需求5.3 安全性需求5.4 软件质量属性其它需求附录A:术语表附录2:分析模型附录3:待确定问题清单,图10-1 软件需求规格说明书模板(续1),P117,16/26,10.3 编写需求文档的原则,没有模板的开发组织是不成熟的软件组织,没有熟练掌握模板的软件人员是不成熟的软件开发人员。编写优秀的需求文档没有现成固定的方法,最好是根据组织和个人的经验和项目情况,对模板进行修改,采用应用模板、适用为主;优化模板、实用为本的原则编写文档。,P123,17/26,10.3 编写需求文档的原则,使语句和段落简短明了;采用主动语态的表达方式;
10、尽量使用术语表来表达术语;需求声明具有一致的风格;明确特定的参与者;恰如其分的需求详细程度;尽量使用列表、数字、图表来表示信息;强调最重要的信息;避免使用有歧义的语句。,P123,18/26,10.4 需求改进示例,高质量的需求陈述表现在:完整性、正确性、可行性、必要性、具有优先级、无歧义和可验证性。由于不具有这些特征的需求将会引起混淆,导致将来的返工,因此,必须尽快找出并纠正这些问题。例1例5 针对一些需求报告存在的问题,进行了剖析,提出了改进意见,给出了正确结果。,P126,19/26,10.5 数据字典,数据字典:一个定义应用程序中使用的所有数据元素和结构的含义、类型、长度、格式、度量单
11、位、精度以及允许取值范围的数据逻辑的描述。数据字典可以把不同的需求文档和分析模型紧密结合在一起。如果所有的开发人员在数据字典上取得一致意见,那么就可以缓和集成性问题。,20/26,10.5 数据字典1)数据字典中的描述对象,基本数据元素:基本数据元素是不可分解的或没有必要进一步分解的元素。基本数据的定义可确定其数据类型、大小、允许取值的范围等等。典型的原数据元素的定义是一行注释文本,并以星号作为界限:请求标识号=*6位系统生成的顺序整数,以1开头,并能唯一标识每个请求*,21/26,10.5 数据字典1)数据字典中的描述对象,组合结构项。一个数据结构或记录包含了多个数据项。如果数据结构中的项是
12、可选的,就把它用括弧括起来,例如:请求的化学制品=化学制品标识号+数量+数量单位+(供应商名称)这个结构确定了与请求一种特定化学制品相关的所有信息。供应商名称是可选的,因为提出请求的人并不关心化学制品是从哪个供应商处购买来的。每个出现在结构中的数据项都必须写入数据字典。结构中还可以包含其它结构。,22/26,10.5 数据字典1)数据字典中的描述对象,重复项。如果一个项的多个实例将出现在数据结构中,就把该项用花括弧括起来。如果你知道可能允许的重复次数,就用“最小值:最大值”这种形式写在括号之前,例如:请求=请求标识号+产品编号+1:10 请求的化学制品 这个例子表明,一个化学制品的请求至少应包
13、含一种化学制品,但不能多于10种。每个请求也包括一个单一的请求标识号和一个产品编号,它们的格式将在数据字典的其它地方定义。,23/26,10.5 数据字典1)数据字典中的描述对象,选择项。如果一个原数据项元素可以取得有限的离散值,就把这些值列举出来,例如:数量单位“克”|“千克”|“个”表明了数量单位的文本串只允许种取值。注释提供了数据项定义的信息。,24/26,10.5 数据字典2)数据字典的描述内容与格式,按照软件工程的要求,在数据字典中需要对所有的数据元素、数据结构、数据流、数据存储分别进行描述。这样一来,会有许多内容重复。可以把它们归纳到数据结构(组合项)或数据存储(也是一种复合型数据结构)进行统一描述,其描述内容与格式如下例所示。,25/26,10.5 数据字典2)数据字典的描述内容与格式,图9-2 数据字典模板,26/26,体 会文档的编写能力体现了你需求的捕获能力、归纳能力、协调能力;体现了系统分析员软件的开发经验、能力和对未来系统的判断、控制与实现能力。,