软件项目需求开发过程实践之软件需求说明书
软件需求说明书为谁而编写?把这个问题搞清楚是非常有意义的。
先讲个故事。
在软件项目开始时,需求及架构设计人员把需求和架构方案讲给开发人员听,开发人员还在设计“他那辆车”,没有听明白?需求及架构设计人员接着写出一些列文档后,开发人员还在设计稍作调整“他那辆车”,沟通出现了问题了吗?项目完成后,最后结果仍是开发人员所设计的,已经变形的“他那辆车”。
问题的源头当然在需求,需求人员又如何把需求调研结果无损的分享给“相关人员”呢?其他原因,例如项目团队学习等不在本文中分析了。
首先,我们先回顾软件工程中的需求分类和需求层次。
需求的分类
- 软件需求就是系统必须完成的事,以及必须具备的品质。具体来说,软件需求包括功能需求、非功能需求和设计约束三个方面的内容;
- 业务需求是指反映组织机构或客户对系统、产品高层次的目标要求,通常问题定义本身就是业务需求;
- 用户需求是指描述用户使用产品必须要完成什么任务、怎么完成的需求,通常是在问题定义的基础上进行用户访谈、调查,对用户使用的场景进行整理,然后建立的从用户角度的需求;
- 系统需求是从系统的角色来说明软件的需求,它包括了用特性说明的功能需求,质量属性及其他非功能需求,还有设计约束。
需求的层次
需求包括三个不同的层次:业务需求、用户需求和功能需求,也包括非功能需求。
在需求调研、需求分析、编写需求说明书时,上述需求分类和层面都应涉及,否则,将缺项,让人无法了解全面。如下表1“业务流程需求”为例所示,用户层次及角色至少分为8个层面,他们的需求及视角很多都不同。
表1
在需求调研中,表1中,很难访谈到领导层,其他各层也很难面面俱到,而写出来的需求说明书,这些人也看不到,或者说也不可能看,就是项目团队中的开发人员也很少看。这样,软件界的需求故事不停的上演。
图1
如何解决这些问题呢?
首先,必须写需求说明书,而且写成相关各个用户层次都能看到各自关注内容,满足现有业务需求,并高于现有的业务,也就是业务建模。只有这样,需求变更才恢复到本来的面貌,而不是理解偏差出现的变更。
下面列表是早期写的需求说明书目录内容截取,需求内容非常的多。例如:用户有很多待建流程,如果逐一展开写到文档中,先不说写的工作量,还有谁看呀!
调整思维后,需求说明书目录截图发生较大的变化,不是以往点、面的模式描述需求,而是立体模型方式描述需求,需求建模。而需求建模需要需求开发人员能力很多,例如属于这个方案业务专家或者管理方案的专家。
需求分析真的需要丰富的经验,领域专家。企业管理方面呢?是不是需要企业老总呢?企业管理专家又是谁?谁能指点流程能力、执行力、效率、效益……。所以,从各个视角关注流程是非常必要的,而且,要体现这些,需要在需求说明书中编写。
软件需求说明书参考模版如下列表所示。
总之,软件需求仅按用户需求直译方式去理解并开发,哪将是恶梦的刚刚开始。真正的需要是去伪求真的,真的需求不可能是由普通用户(业务接口人)能全部提供的,层次不够,覆盖面不够,真的来源于业务领域知识、国家政策法规、企业规章制度,以及社会及其信息化发展方向。例如参考我早先的博客《信息化建设适应当前改革的思考——简化流程与信息透明》,关注社会及企业发展的视角。把这些内容都体现到需求说明书中,就方便各层领导阅读了,也提供普通员工和开发人员的认识层次了。通过次需求说明书,开发人员知道并理解做什么,减少,最好防止“一千个人心中有一千个哈姆雷特”的情况发生。
项目经验之谈分享,精力有限,难免有误,仅供参考,欢迎讨论、再补充完善。
参考:
百度百科.“软件需求”
使用云技术升级改造现有应用系统的思考 2013.11 肖永威
面向集团客户的云计算运营平台概述——之云计算运营平台方案(一) 2013.12 肖永威
软件项目需求开发过程实践之软件需求说明书相关推荐
- 软件项目成本估算中,软件项目外包人月费用一个月是按几天算?
问:软件项目成本估算中,软件项目外包人月费用一个月是按几天算?21.75天?20.83天或其他 ? 答:通常在估算软件项目成本时,对于软件项目外包的人月费用是按21.75天计算的.
- 软件项目中如何开展有效的需求评审
1.需求评审的重要性 在软件项目中,需求分析是最开始的工作,同时也是最重要的工作.需求分析如果做得不够详细或者是偏离用户需求或者是存在缺陷的话,往往会给项目带来灭绝性的灾难,不重视需求过程的项目团队将 ...
- [项目管理]工业工程理论在软件项目中的实践
摘要:结合工业工程理论,对公司现有软件项目开发流程进行总结分析,优化项目管理流程.提升项目作业效率. 关键词:工作研究:流程分析:降低成本 引言 本人在IT行业从事软件开发工作,经过本学期工业工程伦理 ...
- 关于“功能点分析-成功软件项目的测量实践”
看这本书完全是因为看<软件工程项目管理:功能点分析方法与实践>留下一堆疑问的结果.把它从图书馆借出来都快两星期了,却只是翻翻,认真程度远远不如前面那本书.不是这本书不好,而是结构不容易让我 ...
- 软件项目接单渠道丨软件公司项目接单平台
互联网这些年发展的速度,想必大家也都看到了.所有的东西发展太快就会有利有弊,需要后期的一个处理,互联网发展生活扩展了视野和思维,骗子多了,软件多了,平台多了,个人信息感觉不安全了.每个事情都会物极必反 ...
- 某软件项目进行到测试阶段,某软件项目已经到了测试阶段,但是由于用户订购的硬件设备没有到货而不能实施测试...
2015上-周雅雯(cnitpm.com) 15:20:35 某软件项目已经到了测试阶段,但是由于用户订购的硬件设备没有到货而不能实施测试.这种测试活动与硬件之间的依赖关系属于( ). A.强制性依赖 ...
- 缺陷分析在软件项目中的实践
有人曾说过:人可以犯错,但绝不能再而三.软件开发中,开发人员经常犯错,主要是没找到根因.有效的缺陷分析可以帮助发现问题.制定改善措施,促进项目健康运营.常见的分析方法:帕累托分析.5why.鱼骨图.找 ...
- 管理信息系统案例分析_7.软件需求最佳实践笔记 | 需求分析与建模(一)
一.需求分析与建模的要点与误区 需求分析到底做什么 需求分析的任务并不是分析系统如何实现用户的需要,这是对需求分析最常见的误解.需求分析实际上是业务分析,也就是选择一种业务导向的线索将零散的需求串起米 ...
- 软件项目 风险管理用到的实践_软件项目风险管理方案
软件项目风险管理方法 软件项目风险管理方法 在上世纪 60 年代, 西方世界的软件危机使人们 开始清醒得认识到软件开发过程的高复杂性,许多学 者致力于通过软件标准化,并提出一系列软件过程模 型,将系统 ...
- 浅谈软件项目开发过程中的主要项目风险及对策
软件项目成果的需求分析方和软件项目的承担者都十分关心这样的一个问题:什么样的因素会导致软件项目的失败?与项目有关的因素的改变将对按时.按经费预算交付符合预定质量要求的软件成果产生什么样的影响?这些都属 ...
最新文章
- Linux大文件传输(转)
- 华为的创新——计划制定和调整水平
- lambda表达式的使用 || Lambda Express 口诀: 拷贝小括号,写死右箭头,落地大括号||default || @FunctionalInterface||静态方法实现
- 基础知识(十)C++常用函数.txt
- 为什么推荐你使用 logback 取代 log4j
- 不懂函数式?用mobx来写react应用吧
- cookie和session的使用和区别
- php 邮件乱码,解决PHP mail发送UTF-8中文邮件乱码
- win7查看隐藏文件_win7系统如何隐藏文件 win7系统隐藏文件步骤【介绍】
- python中eval函数怎么用_python3中eval函数用法简介
- Robotframework基础篇(一):使用ride编辑器
- 「万达董事会大换血」背后 | 一点财经
- cross-request插件下载
- 数据仓库之维度表和事实表
- oracle启用amm,Oracle11g自动内存管理(AMM)相关的初始化参数
- Oracle 状告 Google 侵犯专利
- 第一次开水果店怎么进货,水果店进货攻略
- spark dataframe和dataSet用电影点评数据实战
- Network Security JumpStart
- 架构的概念(系统架构,技术架构,应用架构)
热门文章
- 扒一扒贝索斯的接班人,为何选他挑起大梁?
- 国内学术期刊名录·2012 年版
- 集成电路及计算机科学专业学什么,集成电路属于什么专业大类 什么学科
- SQL案例学习-员工考勤记录
- 【系统分析师之路】系统分析师冲刺习题集(企业信息化)
- 数学建模:层次分析法实例以及代码
- linux cpu bench,Linux下一种简单易行的cpu benchmark方法
- 联想服务器没有安装iis组件,win10没有iis怎么安装_手把手教你安装iis的详细步骤...
- 一个门外汉的产品设计漫谈
- python背景怎么自定义铃声_【Python成长之路】如何用2行代码将抖音视频设置成我的手机铃声...