(仅供参考)10-- 软件项目需求管理
- 格式:pdf
- 大小:838.93 KB
- 文档页数:53


视角
软件项目中的需求管理研究
摘要:软件需求是每个软件项目开发的基础,也是每个软 件项目成败的关键。所以,软件项目管理中的需求管理尤为重要,
本文针对当前软件需求管理中出现的问题进行了分析并提出了
相应的解决措施,为软件项目的顺利开提供了有益的指导。
关键词:软件项目,需求,管理
引言
~个软件项目启动的原因是由于软件需求的存在。无论采
用何种软件生存周期模型,软件需求是每个软件开发过程的基
础。需求是一个软件项目的开端,也是项目建设的基石。有资
料表明,软件项目中4O%~60%的问题都是在需求分析阶段埋
下的隐患。软件开发中返工开销占开发总费用的4O%,而其中
70%~80%的返工是由需求方面错误所导致的。在以往失败的 软件项目中,80%是由于需求分析的不明确造成的。因此,一
个软件项目成功的关键因素之一就是对需求分析的把握程度。
而项目的整体风险往往表现在需求分析不明确、业务流程不合
理。所以需求管理是软件项目管理的重要一环。
1、需求管理及其特点
1.1什么是需求管理
需求是指和客户一起建立并不断更新的对各项软件工作所达 成的协议。它是系统需求的一部分,在系统的软件部分实现。给
定需求作为软件开发的初始输人,需要进行精确的描述和优化等
过程,即需求分析,分析的结果以文档形式给出。作为需求分析 的输出实际上就是需求管理的输人。需求分析是开发技术行为最
38 jj f2rIlI-I.11 关键的第一步,而需求管理就是为了管理和控制需求分析的结果,
并确保软件项目的开发活动始终与它保持一致。需求管理的目的
是在客户和遵循客户需求的软件项目之间建立一种共识。这意味
着用户的需求应该是合理可行的,项目的目标应能满足用户的需 求。需求管理活动就是建立并维护这种共识。
1.2需求管理的复杂性
软件需求是整个软件开发项目的最关键的一个输入,和传
统的生产企业相比较,软件的需求具有模糊性、不确定性、变
化性和主观性的特点,它不像生产汽车、电脑等硬件的需求, 是有形的、客观的、可描述的、可检测的,软件需求是软件项
1.需求工作涉及到哪些内容
首先需求包括了产品需求,用户需求,软件需求。产品需求关注的是产品的标准化和通用化,会对收集到的用户需求进行分类和优化,结合业界标准系统模型进行抽象并通用化。用户需求反映的是用户面临的问题域,根据问题域用户期望的能够达到的解决效果;而对于软件需求则是用软件工程的语言结构化和文档化的对用户需求和产品需求的描述。
需求工作涉及到需求开发和需求管理。需求开发涉及到需求调研,需求收集,需求分析,需求开发等工作,其中的重点有业务流程,数据字典,业务规则,界面原型。对于基于面向对象的开发方法则涉及到业务用例,系统用例(涉众,基本流,扩展流,业务规则,界面,操作)等诸多内容。需求管理工作涉及到需求的状态管理,变更管理,需求的跟踪,需求的验证和确认等重要内容。
在我们需求分析和开发中,最容易忽视的主要有两点,一个就是缺乏需求分析和开发的过程,把用户需求直接作为了软件需求,没有需求建模和抽象的过程。另外一点就是对于性能,安全,易用性,可维护性和扩展性等非功能性需求没有考虑,导致开发出来的系统是一个不好用的半成品。CMMI把需求管理放到2级,需求开发放到3级,实际上真正的提高需求人员的需求分析和开发能力才是解决需求问题之道。需求分析开发做不好,需求变更或追踪管的再好也没有用处,在这点上一定不能本末倒置。
2.做好需求分析需要具备哪些知识
需求分析岗位主要承担的是系统分析员的工作,做需求分析的人员要有软件工程基础知识的积累,而且最好有一定的软件开发经验积累。自己做过设计开发工作的才能够体会到如何才能够把系统做好,如何更好的把软件需求和后续实现更好的衔接起来。有一本《软件需求》的书讲的很系统,从事需求工作的都值得仔细阅读。对于采用面向对象的需求开发和分析方法的,一定要熟悉RUP统一过程和用例分析和建模。
对于管理软件都离不开其涉及到的业务领域,因此要做好需求分析工作必须要熟悉管理软件所涉及到的业务领域,对业务领域相关的标准模型进行分析和研究,对业界的一些标准和最佳实践进行熟悉。比如做供应链管理系统和软件应该熟悉业界标准的SCOR模型,做ERP的应该结合现在的业界比较大的厂商的ERP产品进行学习,对于研发管理系统可以结合PACE和IPD等等。只有熟悉了业务领域才可能在需求调研和分析的时候提供很多有建设性的意见,或者说需求分析人员不是被用户牵着走,而是真正的可以引导用户。
软件需求与需求管理
在软件开发过程中,需求的确定和管理是非常重要的一环。一个好的软件需求能够明确开发的目标,指导开发工作,并最终满足用户的期望。本文将介绍软件需求的定义、分类和重要性,并探讨需求管理的方法和工具。
一、软件需求的定义和分类
软件需求是指对软件系统功能、性能和约束的描述,是对软件开发的目标和范围的明确表达。根据不同的分类标准,软件需求可以分为功能需求、非功能需求和约束需求。
功能需求是指软件系统需要实现的具体功能,例如登录、添加、删除等。非功能需求是指系统性能、可用性、可靠性等方面的要求,例如响应时间、用户界面友好性等。约束需求是指对软件开发过程和结果的限制条件,例如成本、时间、技术平台等。
二、软件需求的重要性
良好的软件需求具有以下重要性:
1. 指导开发工作:软件需求清晰明确地描述了系统应该达到的目标和功能,能够指导开发人员在整个开发过程中的工作。
2. 减少开发风险:通过明确定义需求,可以减小需求变更的风险,避免不必要的开发返工,节约时间和成本。 3. 提高用户满意度:软件需求的准确描述能够确保开发出满足用户期望的软件系统,提高用户的满意度和使用体验。
4. 避免功能冗余:通过精确地描述功能需求,能够避免重复或不必要的功能开发,提高软件系统的效率和性能。
三、需求管理的方法和工具
为了有效地管理软件需求,可以采用以下方法和工具:
1. 需求收集:通过与用户的沟通和交流,收集用户的需求和期望。可以采用面谈、问卷调查、焦点小组讨论等方式进行需求收集。
2. 需求分析:对收集到的需求进行分析和整理,明确功能需求和非功能需求,识别约束条件和优先级。
3. 需求规格说明:将需求以书面形式进行规格说明,包括功能描述、性能要求、约束条件等。可以使用需求规格说明书、用例图、流程图等工具进行描述。
4. 需求验证和确认:与用户进行沟通,确保需求的准确性和完整性。可以通过原型演示、验收测试等方式进行需求验证和确认。
软件管理需求
为什么习软件需求?
先来讲述⼀个真实的故事:
⼀天,⼩明和家⼈在吃晚饭的时候,对他的母亲、奶奶、姑姑说:他的裤⼦左腿(⽐右腿)长了3厘⽶,希望剪掉。
他的姑姑在晚饭后把⼩明的裤⼦左腿剪短3厘⽶;
他的母亲在睡前也把⼩明的裤⼦左腿剪短3厘⽶;
他奶奶在第⼆天早上把⼩明的裤⼦左腿剪短3厘⽶;
第⼆天,⼩明穿着这条裤⼦⾼⾼兴兴上学去......
这个故事的甲⽅⼩明提出了明确的需求,委托给⼄⽅(家庭项⽬组),但由于沟通不⼒,在各组员积极的⼯作下,充分完成了任务。
有这个例⼦可以看到,⼄⽅并没有跟踪项⽬的完成状态,完成的组员没有汇报,其他组员没有验证需求,导致多裁剪了6厘⽶。这个⽰例应
⽤到软件中也是⼀样的。那这个案例给我们什么样的启⽰呢?软件需要基线化,要有管理,否则需求的实现是盲⽬的、不受控制的。软件需求的实现要跟踪、记录和标识。
要测量、验证软件需求。
那么后续相关测试模型,⽐如V模型和W模型,都是以需求分析展开的,所以,有必要学习软件需求。
作为测试⼈员,有必要知道,在软件需求管理⽅⾯,我们应该充当什么⾓⾊,软件需求对我们的⼯作有什么样的影响。
除了满⾜客户的显式需求,作为软件开发者还要挖掘隐式需求。
总览整个项⽬⽣命周期,因为在需求阶段引发的缺陷,要⽐设计和编码阶段引发的缺陷还要多。
需求的定义
来看IEEE对需求的定义:解决⽤户问题或达到⽤户⽬标所需要的条件或能⼒。为遵循合同、标准、规格或其他要求的正式⽂档,系统必须满⾜或拥有的条件或能⼒。
按⽂档表现中的条件或能⼒,也就是需求⽂档(SRS)强调的做什么(What),⽽不是如何做(How)。简单来讲,要从两⽅⾯来考虑需求:⽤户⾓度,这也是系统的外部⾏为。
开发者⾓度,内部特性。对于需求来说,它是有层次的:业务需求,反映了组织机构或客户对系统、产品⾼层次的⽬标需求。在项⽬视图与范围⽂档中予以说明,⽐如在签订合同中的说明。⽤户需求,描述了⽤户使⽤产品必须完成的任务,这在使⽤实例⽂档或⽅案脚本,在⼀些说明中进⾏说明,⽐如说⽤例交互图。