软件需求说明
此条目论述以部分区域为主,未必有普世通用的观点。 (2014年5月8日) |
软件需求说明(英语:Software requirements specification),也称软件需求说明书、软件需求规格说明、软件需求规格说明书,缩写是SRS。软件需求说明是软件系统需求的规格化说明,是对将要开发系统的行为的说明。软件需求说明是在商业需求规格(或称为利益相关者需求规格,StRS)产生后再建立的模型。它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制,也可能会包括用例,叙述在理想情形下,使用者使用软件的方以及需要提供给的界面。
软件需求说明是客户和供应商(或承包商)协议的基础,说明软件产品应该有的机能(若是由行销所驱动的专案,会是行销部门以及开发部门进行这些讨论)。软件需求说明是在具体的系统设计阶段之前,严谨的需求评估。这也是预估产品成本、风险以及时程的实务性基础[1]。若适当的使用软件需求说明,可以预防软件专案的失败[2]。
软件需求说明文件会列出专案开发上,充份且必要的需求资讯[3]。在推导需求的过程中,开发者需要对要开发的产品非常清楚,有透澈的了解。这是靠专案团队和客户在产品开发过程中很详细且持续的沟通达成的。
软件需求说明可能是承包商可交付资料项目说明中的一项[4],也有可能是其他组织要求文件中的一部分。 软件需求说明多半是由技术写作人员、系统架构师或程序员所撰写[5]。
传统的软件需求说明书
中国大陆对软件需求说明是根据 GB8567-88《计算机软件产品开发文件编制指南》进行编写的,虽然此标准到2008年就已经废止,但其影响深远,至今各组织的软件需求说明书模板虽然经过使用后历经调整,仍然有明显的该标准痕迹,可以说形成了传统的软件需求说明书的写法。
相关历史
- 1984年,IEEE发布了Guide to Software Requirements Specifications. [6]。
- 1988年,中国大陆发布了GB8567-88《计算机软件产品开发文件编制指南》以及GB9385-88《计算机软件需求说明编制指南》[7],这几项标准中中国大陆影响深远,很好的指导了上世纪90年代的软件开发,也统治了当时中国大陆的软件工程教材。直到今天仍然有大量企业参照,而当时用例分析方法还没有流行。
- 1986年,UML和统一过程的重要贡献者Ivar Jacobson,将他在1967年定义爱立信AXE系统的构架时开始书写使用场境usage scenarios改名为Use Case(用例),即是用例。
- 1997年11月,UML被OMG全体成员一致通过,并被采纳为标准,而用例是其中的关键部分。
- 1998年,用户故事起源于极限编程中,
- 2008年,中国大陆发布了GB/T9385-2008 《计算机软件需求说明编制指南》 [8],它是GB/T9385《计算机软件需求说明编制指南》的第一次修订,代替被废止GB/T9385-1988。
近状
到2014年为止,在软件需求表达方式领域出现了如下三种常见情况:
- 仍然基于传统SRS表达方式,常见的利用word来书写
- 采用用例分析的表达方式,常见的利用UML工具来管理,比如Rose,EA等等 [9]
- 用户故事的表达方式,常见的利用条目化(工作项)工具来管理,比如卡片,Jira,VSTS,Scrumworks等
有些组织虽然仍然称呼需求文档为需求说明书(或者SRS),而实质的表达采用的是用例,这种情况归属于上述的第2种情况。
在最新的SWEBOK V3.0[10]中,在这一领域仍然采用了“Software requirements specification”的说法。
但是在中文领域,“软件需求说明书”是无法在字面意思上涵盖“不采用SRS写法的用例分析”和“用户故事”的。
说明:至于表达内部事务的用户故事是否属于需求范畴,那是另一回事,毕竟多数的用户故事表达的是需求。
需求异味
需求也会有类似代码异味的情形,需求异味(requirements smell)是指需求规格上的问题,需求不一定不对,但会在实现上造成困难[11]。
需求异味的例子包括有主观语言、模糊的副词及形容词、最高级以及否面叙述等[11]。
相关条目
参考资料
- ^ Bourque, P.; Fairley, R.E. Guide to the Software Engineering Body of Knowledge (SWEBOK). IEEE Computer Society. 2014 [17 July 2014]. (原始内容存档于2014-12-28).
- ^ Software requirements specification helps to protect IT projects from failure. [19 December 2016]. (原始内容存档于2018-01-30).
- ^ Pressman, Roger. Software Engineering: A Practitioner's Approach. Boston: McGraw Hill. 2010: 123. ISBN 9780073375977.
- ^ DI-IPSC-81433A, DATA ITEM DESCRIPTION SOFTWARE REQUIREMENTS SPECIFICATION (SRS). everyspec.com. 1999-12-15 [2013-04-04]. (原始内容存档于2017-12-09).
- ^ Donn Le Vie, Jr. "Writing Software Requirements Specifications (SRS)" (页面存档备份,存于互联网档案馆). 2010.
- ^ 830-1984 - IEEE Guide to Software Requirements Specifications
- ^ GB9385-88 计算机软件需求说明编制指南
- ^ GB/T9385-2008 《计算机软件需求说明编制指南》. [2014-04-19]. (原始内容存档于2014-04-19).
- ^ 张秋余 杨玥 王雪 王鹏 贾志龙 基于用例的需求建模方法 《计算机工程与设计》 2006年19期
- ^ Guide to the Software Engineering Body of Knowledge V3.0 SWEBOK V3.0. [2014-04-19]. (原始内容存档于2014-04-13).
- ^ 11.0 11.1 Femmer, Henning; Méndez Fernández, Daniel; Wagner, Stefan; Eder, Sebastian. Rapid quality assurance with Requirements Smells. Journal of Systems and Software. 2017, 123: 190–213. S2CID 9602750. arXiv:1611.08847 . doi:10.1016/j.jss.2016.02.047.