软件项目需求开发过程实践之软件需求说明书

软件需求说明书为谁而编写?把这个问题搞清楚是非常有意义的。

先讲个故事。

在软件项目开始时,需求及架构设计人员把需求和架构方案讲给开发人员听,开发人员还在设计“他那辆车”,没有听明白?需求及架构设计人员接着写出一些列文档后,开发人员还在设计稍作调整“他那辆车”,沟通出现了问题了吗?项目完成后,最后结果仍是开发人员所设计的,已经变形的“他那辆车”。

问题的源头当然在需求,需求人员又如何把需求调研结果无损的分享给“相关人员”呢?其他原因,例如项目团队学习等不在本文中分析了。

首先,我们先回顾软件工程中的需求分类和需求层次。

需求的分类

  • 软件需求就是系统必须完成的事,以及必须具备的品质。具体来说,软件需求包括功能需求、非功能需求和设计约束三个方面的内容;
  • 业务需求是指反映组织机构或客户对系统、产品高层次的目标要求,通常问题定义本身就是业务需求;
  • 用户需求是指描述用户使用产品必须要完成什么任务、怎么完成的需求,通常是在问题定义的基础上进行用户访谈、调查,对用户使用的场景进行整理,然后建立的从用户角度的需求;
  • 系统需求是从系统的角色来说明软件的需求,它包括了用特性说明的功能需求,质量属性及其他非功能需求,还有设计约束。

需求的层次

需求包括三个不同的层次:业务需求、用户需求和功能需求,也包括非功能需求。

在需求调研、需求分析、编写需求说明书时,上述需求分类和层面都应涉及,否则,将缺项,让人无法了解全面。如下表1“业务流程需求”为例所示,用户层次及角色至少分为8个层面,他们的需求及视角很多都不同。

表1

在需求调研中,表1中,很难访谈到领导层,其他各层也很难面面俱到,而写出来的需求说明书,这些人也看不到,或者说也不可能看,就是项目团队中的开发人员也很少看。这样,软件界的需求故事不停的上演。

图1

如何解决这些问题呢?

首先,必须写需求说明书,而且写成相关各个用户层次都能看到各自关注内容,满足现有业务需求,并高于现有的业务,也就是业务建模。只有这样,需求变更才恢复到本来的面貌,而不是理解偏差出现的变更。

下面列表是早期写的需求说明书目录内容截取,需求内容非常的多。例如:用户有很多待建流程,如果逐一展开写到文档中,先不说写的工作量,还有谁看呀!

调整思维后,需求说明书目录截图发生较大的变化,不是以往点、面的模式描述需求,而是立体模型方式描述需求,需求建模。而需求建模需要需求开发人员能力很多,例如属于这个方案业务专家或者管理方案的专家。

需求分析真的需要丰富的经验,领域专家。企业管理方面呢?是不是需要企业老总呢?企业管理专家又是谁?谁能指点流程能力、执行力、效率、效益……。所以,从各个视角关注流程是非常必要的,而且,要体现这些,需要在需求说明书中编写。

软件需求说明书参考模版如下列表所示。

总之,软件需求仅按用户需求直译方式去理解并开发,哪将是恶梦的刚刚开始。真正的需要是去伪求真的,真的需求不可能是由普通用户(业务接口人)能全部提供的,层次不够,覆盖面不够,真的来源于业务领域知识、国家政策法规、企业规章制度,以及社会及其信息化发展方向。把这些内容都体现到需求说明书中,就方便各层领导阅读了,也提供普通员工和开发人员的认识层次了。通过次需求说明书,开发人员知道并理解做什么,减少,最好防止“一千个人心中有一千个哈姆雷特”的情况发生。

项目经验之谈分享,精力有限,难免有误,仅供参考,欢迎讨论、再补充完善。

时间: 2024-08-05 15:01:31

软件项目需求开发过程实践之软件需求说明书的相关文章

软件项目需求开发过程实践之业务建模用例图

本次软件工程项目是重建办公业务流程管理平台,需要在继承原370个流程基础上,还需要提供快速流程开发能力,并要求体现出流程管理的规范性,以及流程的执行力.效率.效益,最终为企业管理创新提供流程再造的能力. 在项目前期及需求分析阶段,开发人员致力于"降低成本",以最小的代价完成项目,其可预见性的软件产品是经过系统平台升级的,并经过改良的第二个办公业务流程管理平台.按客户验收要求,"只能打60分,是不能给予验收". 在软件开发中,需求工作致力于解决"产品好卖&q

开篇:软件项目的整个流程 - IT软件人员学习系列文章

这段时间闲来无事,就在总结以前的项目经验,然后写成博客的形式以进行记录.本文就对<IT软件人员学习系列文章>做个开篇吧. 对于IT软件的开发来说,无外乎B/S.C/S和Android.iOS(后两项也是C/S).在B/S领域,无外乎PHP.JAVA和ASP.NET这几大阵营.而在C/S领域,JAVA的开发比较复杂,需要编写一些重复的和底层的代码,相比C#的可视化和相似的语法,还是微软的开发工具和语言比较容易上手. 但是,我们今天讲的不是代码,而是整个软件流程,这个属于软件工程的范畴.我们知道,

软件项目接单_互联网软件开发项目接单平台

软件开发项目范围.质量因素对进度的影响: 软件开发项目比其他任何建设项目都会有更经常的变更,大概是因为软件程序是一种"看不见"又"很容易修改"的东东吧,用户是想改就改,造成需求的蔓延,项目经理有时还不知如何拒绝,加上要说"我能"的心理因素,一般都会答应修改.这样集少成多,逐渐影响了项目进度. 如果某项工作在进度上表面上达到目标了,但经检验其质量没有达到要求,则必然要通过返工等手段,增加人力资源的投入,增加时间的投入,实际上是拖延了进度.不管是从横

项目接单丨软件项目接单丨IT软件外包接单

汇新云主要采用共享经济的理念和智能匹配的模式,实现IT软件在线研发,在线交易,IT软件供应链服务, 解决idea的商务模式创新,软件工程化设计,软件研发,软件测试,产业投资等需求,打造全球化的IT软件协同生态链平台. 汇新云限时免费入驻产品经理活动开始了!倒计时:60天汇新云聚集了各大有实力的产品经理,大家可以相互交流学习! 寻找有实力的产品经理倒计时:59天你还在等什么呢?平台链接:http://www.huixinyun.com/入驻链接:http://www.huixinyun.com/U

&lt;&lt;软件需求最佳实践------SERU过程框架原理与应用&gt;&gt;读书笔记一(全书浅览)

这一学期上了软件需求分析这门课,在老师的建议下自己选择了这本需求最佳实践作为精读课本.大概的阅览了整本书后发现,作者引用各种实例与隐喻意图让读者更好的理解这本书的内容,而且每一部分内容都有一条精炼的SERU诫语来作为一个小结.在我看来,这本书确实对于我们软件需求分析的初学者来说确实是不可多得的“良本“. 全书分为三大部分,其中第一部分:“原理.模型与误区“涵盖前三章的内容.这部分作者主要分析并提及了影响软件项目实施,并导致软件出现“危机”的根本原因,即需求分析阶段. 主要是让我们认识到软件需求在

浅谈软件项目开发过程中的主要项目风险及对策

软件项目成果的需求分析方和软件项目的承担者都十分关心这样的一个问题:什么样的因素会导致软件项目的失败?与项目有关的因素的改变将对按时.按经费预算交付符合预定质量要求的软件成果产生什么样的影响?这些都属于软件项目开发过程中考虑的风险问题. 软件项目的风险是指在软件开发过程中可能出现的不确定因而造成损失或者影响,如资金短缺.项目进度延误.人员变更以及预算和进度等方面的问题.风险关注未来的事情,这意味着,软件风险涉及选择及选择本身包含的不确定性,软件开发过程及软件产品都要面临各种决策的选择.风险是介于

软件项目与过程管理第八周作业

内容:软件项目与过程管理课程内容总结 经过八周时间的学习,软件项目与过程管理课程已经逐渐接近了尾声.通过这八周的学习,我对软件项目与过程管理课程有了更深的理解. 一.关于团队项目. 团队项目是本次软件项目与过程管理课程中最重要的一部分.我们团队项目是作业管理系统.在项目开发的整个过程中,我们在项目经理的带领下,项目团队的每一个成员团结合作.相互沟通,团队成员之间相互学习彼此的优点和技术,在每个成员的共同努力下,基本完成了此次软件开发项目. 通过这次团队项目, 我的总结如下: 1.在项目的开发过程

2017.07.07 IT项目管理笔记整理 第八章 软件项目质量管理

软件质量的特性:1.正确性 2.可靠性 3.效率 4.完整性 5.使用性 6.维护性2. 测试性 8.灵活性 9.移植性 10复用性 11.共运行性 软件质量的6个特性用于评价: 1功能性 2.可靠性 3.易用性 4.效率 5.可维护性 6.可移植性 软件质量保证的目标:1通过适当的监控系统及其开发过程来保证软件质量.2确保软件及其开发过程与已定的标准和规程要求完全一致3保证软件及时发现产品.过程和标准的任何不足并提醒管理者注意,以便及时弥补 软件质量保证组织的职责: a对所有开发计划和质量计划

团队开发_软件项目风险管理

一.说明 软件项目的风险管理是对软件项目的预测和估计,在一定程度上影响着软件的开发进度和完成的效果.因此, 软件的风险管理是特别重要的,以下是我们小组讨论之后,对团队开发的项目的软件风险的估计. 二.软件风险表 编号 风险名称 发生概率 损失(人/两天) 危险度(两天) 1 计划过于乐观,没有在规定的时间内完成spring计划的要求 60 3 1.8 2 设计欠佳,需要重新设计界面 30 2 0.6 3 由于个别成员临时有事,导致在其工作无法进行,从而影响项目的进度 30 4 1.2 4 在软件