软件项目的需求开发和管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
需求开发与管理是软件项目中一项十分重要的工作,据调查显示在众多失败的软件项目中,由于需求原因导致的约占到45%,因此,需求工作将对软件项目能否最终实现产生至关重要的影响。如何从各种各样的应用专业领域中特别是直接从最终用户处捕获需求,并完整、准确地予以描述与分析,需求工程成为研究的热点之一。
本文通过对需求工程的基本概念、需求开发和管理中的主要风险和对策进行研究和总结,希望在实践中加以应用,真正做好需求的开发和管理工作。
关键字:软件项目、需求工程、需求分析、需求开发、需求管理、X围管理、X围变更控制
目录
1软件需求和需求工程3 1.1软件需求的基本概念3
1.2软件需求的重要性3
1.3需求工程的基本概念4
1.4需求开发过程域4
1.5需求管理过程域5
1.6需求工程的一些感悟5
2需求开发和管理的主要风险6
3需求开发和管理的主要对策6 3.1建立需求开发和管理工作机制需考虑的几个因素7 3.2需求开发和管理流程7
3.2.1需求调查7
3.2.2细化用户需求8
3.2.3撰写需求说明书8
3.2.4需求确认9
3.2.5需求跟踪10
3.2.6需求变更控制10
4总结13
软件项目的需求开发和管理
1软件需求和需求工程
1.1 软件需求的基本概念
在IEEE软件工程标准词汇表(1997年)中定义软件需求为:
1)用户解决问题或达到目标所需的条件或能力。
2)系统或系统部件要满足合同、标准、规X或其它正式规定文档所需
具有的条件或能力。
3)一种反映上面1)或2)所描述的条件或权能的文档说明。实通俗的
讲,“需求”就是用户的需要,它包括用户要解决的问题、达到的目
标、以及实现这些目标所需要的条件,它是一个程序或系统开发工
作的说明,表现形式一般为文档形式。
所以我们可以理解,软件需求来源于用户的一些“需要”,这些“需要”被分析、确认后形成完整的文档,该文档详细地说明了产品“必须或应当”做什么。
1.2 软件需求的重要性
软件需求是整个产品链的源头,需求工作的优劣将直接影响到产品的设计,生产,销售和维护的全过程。就像一条河流,如果源头被污染了,那么整条河流也就被污染了。Frederick Brooks在他的经典文章“No Silver Bullet”是这样描述需求的重要性的:开发软件系统最困难的部分就是准确说明开发什么。最困难的概念性工作是编写出详细的需求,包括所有面向用户、面向机器和其它软件系统的接口。此工作一旦做错,将会给系统带来极大的损害,并且以后对它修改也极为困难。
1.3 需求工程的基本概念
1)把所有与需求直接相关的活动通称为需求工程。
2)需求工程中的活动可分为两大类,一类属于需求开发,另一类属于需求
管理。
3)需求工程的结构图
图1:需求工程结构图
1.4 需求开发过程域
1)需求开发的目的是通过调查与分析,获取用户需求并定义产品需求。
2)需求调查的目的是通过各种途径获取用户的需求信息(原始材料),产生
《用户需求说明书》。
3)需求分析的目的是对各种需求信息进行分析,消除错误,刻画细节等。
常见的需求分析方法有“问答分析法”和“建模分析法”两类。
4)需求定义的目的是根据需求调查和需求分析的结果,进一步定义准确无
误的产品需求,产生《产品需求规格说明书》。系统设计人员将依据《产
品需求规格说明书》开展系统设计工作。
1.5 需求管理过程域
1)需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需
求与其它工作成果的一致性,并控制需求的变更。
2)需求确认是指开发方和客户共同对需求文档进行评审,双方对需求达成
共识后作出书面承诺,使需求文档具有商业合同效果。
3)需求跟踪是指通过比较需求文档与后续工作成果之间的对应关系,建立
与维护“需求跟踪矩阵”,确保产品依据需求文档进行开发。
4)需求变更控制是指依据“变更申请-审批-更改-重新确认”的流程处理
需求的变更,防止需求变更失去控制而导致项目发生混乱。
1.6 需求工程的一些感悟
1)不论是合同项目还是自主研发的产品,都必须开展需求开发和需求管理
活动。
2)开发者对待需求工程的态度可分“被动型”、“主动型”和“领先型”三种,
只有后两种才有可能开发出成功的产品。
a)“被动型”是指开发者被动地对待需求工程中的各项活动,能少干则
少干,能偷懒则偷懒。他们认为需求是用户的事情而不是自己的事
情。开发过程中经常发生需求变更,导致产品迷失方向,不是半途
而废就是陷入半死不活的状态。
b)“主动型”是指开发者积极地开展需求工程中的各项活动。他们把获
取准确的需求当作自己的职责,会想尽一切办法克服需求开发和需
求管理过程中的困难,而不是找借口推卸责任。俗话说“良好的开端
是成功的一半”,“主动型”需求工程是开发成功产品的必备条件。
c)“领先型”是需求工程的最高境界。开发者发掘了连用户自己都没有
意识到的需求,导致用户跟着新产品跑而不是新产品围着用户转,
这叫引导消费。需求工程做到这个份上,才能使产品立于不败之地,
长盛不衰。
2需求开发和管理的主要风险
由于需求分析的参与人员、业务模式、投资、时间等客观因素的影响和需求本身具有主观性和可描述性差的特点,因此,需求分析工作往往面临着一些潜在的风险。这些风险主要表现在:
1)用户不能正确表达自身的需求。这种情况往往会增加需求分析工作难
度,分析人员需要花费更多的时间和精力与用户交流,帮助他们梳理思
路,搞清用户的真实需求。
2)业务人员配合力度不够。有的用户日常工作繁忙,他们不愿意付出更
多的时间和精力向分析人员讲解业务,这样会加大分析人员的工作难度
和工作量,也可能导致因业务需求不足而使系统无法使用。
3)用户需求的不断变更。由于需求识别不全、业务发生变化、需求本身错
误、需求不清楚或对应政策法规发生了变化等原因,需求在项目的整个
生命周期都可能发生变化,一旦发生了需求变化,就不得不修改设计、
重写代码、修改测试用例、调整项目计划等等,需求的变化就像是万恶
之源,为项目的正常的进展带来不尽的麻烦。
4)忽略了用户的特点分析。分析人员往往容易忽略了系统用户的特点,系
统是由不同的人使用其不同的特性,使用频繁程度有所差异,使用者受
教育程度和经验水平不尽相同。如果忽略这些的话,将会导致有的用户
对产品感到失望。
3需求开发和管理的主要对策
首先需要建立一个有效的工作机制,只有建立了工作机制,才能保证需求工作按照既定方案执行,需求开发和管理的参与者才会在一种有序的状态下工作。其次才是充分运用工作机制和个人能力去获取问题、分析问题、编写需求文档和进行需求管理。