软件需求说明的前世和今生

版权声明:作者:张克强。未经作者允许不得转载。 https://blog.csdn.net/zhangmike/article/details/24088385

软件需求说明

软件需求说明,也称软件需求说明书,或者软件需求规格说明,或者软件需求规格说明书, 对应的英文是Software requirements specification, 缩写是SRS。

软件需求说明是软件系统需求的规格化说明,是对将要开发系统的行为的说明。它包括功能性需求,也包括非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制。

英文维基上的最新说明如下

Software requirements specification (SRS), a requirements specification for a software system, is a complete description of the behavior of a system to be developed and may include a set of use cases that describe interactions the users will have with the software. In addition it also contains non-functional requirements. Non-functional requirements impose constraints on the design or implementation (such as performance engineering requirements, quality standards, or design constraints) .

传统软件需求说明书章节示例

根据中国大陆GB 8567-88 计算机软件产品开发文件编制指南,软件需求说明书章节如下:

 1引言
   1.1编写目的 
   1.2背景 
   1.3定义 
   1.4参考资料 
 2任务概述
   2.1目标
   2.2用户的特点 
   2.3假定与约束 
 3需求规定
   3.1对功能的规定
   3.2对性能的规定 
     3.2.1精度 
     3.2.2时间特性耍求
     3.2.3灵活性 
   3.3输入输出要求
   3.4数据管理能力要求
   3.5故障处理要求
   3.6其他专门要求
 4运行环境规定 
   4.1设备 
   4.2支持软件 
   4.3接口 
   4.4控制 

至今各组织的软件需求说明书模板虽然经过使用后历经调整,但往往仍然能够看到上述章节要求的痕迹。

相关历史

  • 1984年,IEEE发布了 Guide to Software Requirements Specifications. 参见 http://dx.doi.org/10.1109%2FIEEESTD.1984.119205
  • 1988年,中国大陆发布了GB 8567-88 计算机软件产品开发文件编制指南以及GB9385-88《计算机软件需求说明编制指南》,这几项标准中中国大陆影响深远,很好的指导了上世纪90年代的软件开发,也统治了当时中国大陆的软件工程教材。直到今天仍然有大量企业参照,而当时用例分析方法还没有流行。
  • 1986年,Ivar Jacobson,UML和统一过程的重要贡献者,将他在1967年定义爱立信AXE系统的构架时开始书写使用场境usage scenarios改名为Use Case,即是用例。
  • 1997年11月,UML被OMG全体成员一致通过,并被采纳为标准,而用例是其中的关键部分。
  • 1998年,用户故事起源于极限编程中,User stories originated with Extreme Programming (XP), whose first written description in 1998 only claimed that customers defined project scope "with user stories, which are like use cases". Rather than offered as a distinct practice, they were described as one of the "game pieces" used in the planning game. However, most of the further literature thrust around all the ways arguing that user stories are "unlike" use cases, in trying to answer in a more practical manner "how requirements are handled" in XP and more generally Agile projects. This drives the emergence, over the years, of a more sophisticated account of user stories.
  • 2001年, In 2001, Ron Jeffries proposed the well-known Three C's formula, i.e. Card, Conversation, Confirmation, to capture the components of a user story.参见https://en.wikipedia.org/wiki/User_story#History
  • 2008年,中国大陆发布了GB/T9385-2008 《计算机软件需求说明编制指南》,它是GB/T9385《计算机软件需求说明编制指南》的第一次修订,代替被废止GB/T9385-1988。

现状

到目前的2014年,在软件需求表达方式领域出现了如下三种常见情况:

  1. 仍然基于传统SRS表达方式,常见的利用word来书写
  2. 采用用例分析的表达方式,常见的利用UML工具来管理,比如Rose,EA等等
  3. 用户故事的表达方式,常见的利用条目化(工作项)工具来管理,比如卡片,Jira,VSTS,Scrumworks等

有些组织虽然仍然称呼需求文档为需求说明书(或者SRS),而实质的表达采用的是用例,这种情况归属于上述的第2种情况。这样包含用例的SRS的常见章节如下:

 1 项目概况 
   1.1  产品或系统名称 
   1.2  产品或系统用户 
   1.3  运行平台 
   1.4  词汇表 
   1.5  数据字典 
 2      性能指标和验收标准 
 3      功能需求概况 
   3.1  总体概述 
   3.2  功能模块划分 
   3.3  功能块编码 
 4      模块1 [例如]用户组织 
   4.1  模块概述 
   4.2  业务逻辑规则 
   4.3  用例图 
   4.4  用例1 [例如]用例:用户登录 
     4.4.1      描述 
     4.4.2      对应的原始需求 
     4.4.3      前提条件 
     4.4.4      事件流 
     4.4.5      用户界面 
     4.4.6      后置条件、特别要求和扩展点 
   4.5  用例2实现 
     4.5.1      描述 
     4.5.2      对应的原始需求 
     4.5.3      前提 
     4.5.4      事件流 
     4.5.5      用户界面 
     4.5.6      后置条件、特别要求和扩展点 
   4.6  外部接口 
 5      模块2 格式同第5章 
   5.1  概述 
   5.2  业务逻辑规则 
   5.3  用例图 
   5.4  用例1实现 
   5.5  用例2实现 
   5.6  外部接口 
 6      模块3…n 
 7      信息安全方面需求 
   7.1  许可证方面需求 
   7.2  身份认证和授权方面需求 
   7.3  可恢复性方面需求 
 8      其它非功能性需求 
 9      其它要求 

在最新的SWEBOK V3.0中,在这一领域仍然采用了“Software requirements specification”的说法。

但是在中文领域,软件需求说明书是无法在字面意思上涵盖:1,不采用SRS写法的用例分析;2,用户故事。

因此,提议中文领域对应词汇是“软件需求说明"或者“软件需求规格说明", 没有“书”字,这样的字面意思就能够涵盖用例和用户故事。

说明:至于表达内部事务的用户故事是否属于需求范畴,那是另一回事,毕竟多数的用户故事表达的是需求。

DoModal的前世今生

11-04

-----------------------------------------rnNO.1:首先,DoModal()会使用对话框模板名来从应用程序的资源文件中查找、载入并锁定对话款模板。如果DoModal()不能定位资源,则返回错误代码-1rnrnNO.2:然后,这个函数会调用PreModal()。PreModal会执行一些安全检查,然后为对话框查找父句柄(会通过CWnd::GetSafeOwner)。然后将结果保存在m_hWnd中。rn之后,它会调用EnabledWindow(FALSE)来冻结父窗口,强制式模态化~rnrnNO.3:然后他会准备将一个MFC对象粘贴到对话框中,通过AfxHookWindowCreate(注意MFC安装的CBT钩子)。然后调用CWnd::CreateDlgIndirect()。这个函数是没有在MSDN中记录的~所以要靠你自己看源代码领悟rn如果CreateDlgIndirect成功,DoModal就调用CWnd::RunModalLoop开启消息泵,这个消息泵一直等到用户按下OK或者Cancel。OnOK和OnCancel都会自己调用EndDialog,然后EndDialog又调用CWnd::EndModalLoop。rn干掉RunModalLoop之后,DoModal会调用SetWindowPos隐藏已经被废掉的窗口,然后用EnabledWindow(TRUE)来激活父窗口,然后再调用SetActiveWidnow确保父窗口被激活rnrnNO.4:最后,DoModal会调用DestroyWindow销毁窗体,然后调用PostModal,这个函数会通过Detach分离C++对象和Windows句柄(CWnd的知识),然后将m_hWndTop设置为NULL。rn然后在释放一些资源,清理一些东西,然后就返回RunModalLoop的返回值~rnrn--------------------------------------rn以上就是DoModal的运行机制,请结合MFC的源代码~代码在DLGCORE.CPP中rn

征友启事——前世今生

07-02

很久以前开始做这样的梦,那种感觉似远似近,是乎好熟悉,但却又不能看清其中。我想人都有潜意识里的某种熟悉,模糊不清,怎么也探不清其中奥秘。 rnrn 我梦见,我的前世是在古代的某个朝代,我的父亲是朝中重要的议政大员,我是家中的独生女,过着衣食无忧的大小姐生活,身边还有很多下人围着,跟其它小姐一样,我琴棋书画样样通,而且生得水灵漂亮,我是父亲的掌上明珠,但我也免不了成为政冶的牺牲品,很早,父亲就把我许给了朝中一位亲王的儿子。我心中苦于无耐,但又无能为力,两家商量好在我20岁时完婚。 rnrn 正当我18岁时,不料有一次父亲无意中得罪了另一位皇亲,从此结下仇怨,这就是我们家中落的开始,终于有一天,父亲被皇上抄家了。记得那是一个晚上,我正要睡下,外面来了很多官兵,到我们家见人就杀,把我父亲抓了起来,捆走了,把剩下的下人,家人全都杀了,只见当时房子烧起来了,我站跑出来见此景,没有任何思想的呆在原地,动也不动的看着眼所发生的一切。正当一个官兵快砍向我的时候,我闭上眼睛,接受死的来临! rnrn 当我睁开眼时,我已经被一条强有力的胳膊抱着,遗憾的是我至始至终,都没有看清他的脸,熟悉陌生的感觉,只觉得自已认识他,而且很爱他,但我叫不出他的名字,他带我走了,我们去了很远的地方,再也没有再回来了。很多次梦里都会兵荒马乱的,场景危险而乱,总是在我有危险的时候,他就会出现,他就会带我离开,我从未看清他的脸,也不知道他的名字,但总觉得自已很爱他,这种感觉说不清楚的熟悉。 rnrn 很多次,我总想努力看清他的面孔,在梦里问问他叫什么名字?而我们之间到底又是什么关系呢?如果真有前世,我想我是幸福的,因为总有他在守护着我,在梦里我总是那么安心踏实,一点也不害怕。人都会在遇到某件事,某个人,会产生那么一两秒熟悉的感觉,这是人们常说的“似曾相识”总是在做某件事情的时候,意识里好像从前在同一个地方,同一些人,做过同一样的事情,也许是人潜意识里留下的某种片段吧!而它从未间断过.....rnrnrn如果有缘和你相见,我心已足!

RISC与CISC的前世今生

07-10

当代的RISC体系架构在嵌入式市场中占有绝对的优势,早在几年前,RISC体系架构彻底打败了Pentium Pro,由此无免统领了嵌入式架构的江山。目前业界存在三大RISC体系架构,他们分别是ARM、PowerPC和MIPS。ARM是迄今为止业内最流行的嵌入式处理器,他们的产品遍及各种电子工具和小巧的消费类电子产品。你可以翻一下自己的口袋或包包。从里面随便摸出几个电子产品,在塑料外壳和液晶屏幕里面,至少就会有一个是基于ARM的嵌入式处理器产品。例如你随身的Blackberry黑莓手机,或者是心爱的NDSL游戏机,他们都是基于ARM处理器的产品。rnrn对于ARM来说,有着非常庞大的合作伙伴群和许可授权商。而Intel方面则有着基于x86架构的UMPC、MID和智能手机产品。不过业内很多人都认为他们像是Pentium Pro的继任者,企图要挑战SGI和DEC这类巨人般的公司。不过对于RISC阵营来说现在并不能笑看天下。今天的Intel已经今非昔比,它拥有遍及世界的晶圆工厂,细致的市场阶层定位,庞大的产品线,Intel再也不能作为一个笑话,它将有能力结束某些产品和厂商的历史。rnrnAtom处理器,研发代号为“Silverthorne”,它的目标就是与众多嵌入式RISC架构处理器厂商相竞争。Intel最想要的就是ARM和它旗下庞大的市场与合作伙伴。因此,下面,让我们来看看这场处理器大战的序幕。

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试