1、 本科毕业论文 题 目: 软件项目中的 需求管理 姓 名: 学 院:软件 学院 系 别:软件工程 专 业:软件工程 年 级: 学 号: 指导教师 : 职称: 年 月 日 软件项目中的需求管理 1 软件项目中的需求管理 摘要 : 需求管理所关注的地方是理解软件开发组织及其客户的目标,然后将这种目标转化成潜在的功能和约束,以便这种功能和约束应用于产品、服务的开发及发展的过程。这包括理 解目标和功能的关系,同时将这种关系以及系统的功能表现一起写成需求规格说明书。 及时、不超预算地交付满足或超过顾客期望的产品,对于项目管理者来说是一个关键性的挑战。 在这篇论文中将涉及到一个实际的软件项目, 在这个 软
2、件项目中,运用需求管理中方法,从而使这 个软件项目得到了完全的成功。 关键词 : 需求,需求开发,需求管理,需求变更 软件项目中的需求管理 2 【 Abstract】 : Requirements management is concerned with understanding of the goals of the organization and its customers and the transformation of these goals into potential functions and constraints applicable to the developmen
3、t and evolution of products and services. It involves understanding of the relationship between goals, functions and constraints in terms of the specification of products, including systems behavior, and service definition. A key challenge for project managers is to deliver a quality product to the
4、customer on time, on budget, and meeting or exceeding the customers expectations. This paper will talk about a real software projects. In the project, I lead it into success by means of requirement management. 【 Key words】 : requirement ,requirement development, requirement management, requirement c
5、hange. 软件项目中的需求管理 3 目录 摘要 :. 1 【 Abstract】 . 2 引言 . 5 第一章 需求及需求管理概述 . 6 1.1.软件需求的定义 . 6 1.1.1.关于“需求”的解释 . 6 1.1.2.需求的层次 . 6 1.2.需求管理的概念 . 7 1.2.1 需求管理的概念 . 7 1.2.2.需求管理目标及 需求管理要点 . 7 1.3.小结 . 8 第二章 项目及项目背景简介 . 9 2.1. “厦门 *公司墓石 cad 设计系统”项目背景介绍 . 9 2.2. “厦门 *公司墓石 cad 设计系统”项目介绍 . 9 第三章 需求获取阶段的控制和管理 .14
6、 3.1.概述 .14 3.2.前提 .14 3.3.约定 .14 3.4.获取需求规格说明书 .15 3.4.1.调研前的准备 .15 3.4.2.调研过程 .15 3.4.3.整体调研 .16 3.4.4.具体业务调研 .16 3.4.5.对需求说明书的确认 .17 3.4.6. 总结 .17 3.5.编制开发计划 .18 3.6.小结 .18 第四章 项目开发过程中的需求管理 .20 4.1.概述 .20 4.2.选择开发策略 .20 4.3.系统原型设计开发 .21 4.4.沟通 .22 4.4.1.在软件项目开发过程中主要沟通的方面 .22 4.4.2.可以选择的沟通方式 .22 4
7、.4.3.小结 .22 4.5.变更控制 .23 4.5.1.前言 .23 4.5.2.变更产生的原因 .23 4.5.3.在软件项目中如何控制变更 .24 4.5.4.拒绝的方法 .24 4.5.5.客户提出需求变更 .25 4.5.6.版本控制 .26 4.5.7.资料留存 .26 软件项目中的需求管理 4 4.5.8.复用策略 .27 4.6.小结 .27 第五章 总结 .29 5.1.概述 .29 5.2.如何做好需求分析和变更管理 ? .29 致谢语 .32 参考文献 .33 软件项目中的需求管理 5 引言 人们常问 :“需求、设计、编程、测试四者究竟哪个重要?” 这个问题 并不好回
8、答。四者都是软件开发过程中必不可少的环节,只 做好其中一个环节并不能产生好的系统,但是做坏了其中任何 一个环节,必定对系统产生坏的影响。若站在风险管理的角度讲,我认为需求开发与管理是最重要的环节。因为需求是产品的根源,需求工作的优劣对产品的影响最大。就像一条河流,如果源头被污染了,那么整条河流也就被污染了。 Frederick Brooks在他 1987年经典文章 “No Silver Bullet”中阐述了需求的重要性: “ 开发软件系统最困难的部分就是准确说明开发什么。最困难的概念性工作是编写出详细的需求,包括所有面向用户、面向机器和其它软件系统的接口。此工作一旦做错,将会给系统带来极大的
9、损害,并且以后对它修 改也极为困难。 ” 对于一个软件项目,开发和实现用户所真正需要的产品是非常重要的。软件产品的成功与否很大程度上取决于对需求的管理。 像我下面要介绍的项目 “厦门 *公司 墓石 cad设计系统”的成功,我觉得首先就要归功于我们对它进行了有效的需求管理。 但是,谈到软件产品的需求管理 ,我们认为遇到了一个非常棘手的问题。实际上由于面对的客户和市场环境的不同,需求可以变得非常复杂 ,这种复杂往往又是动态的和难以描述的。客户的需求往往是很概括的,有时又是很具体的。客户有时会说 :“我们需要一个整体解决方案”,有时又说 :“图纸上 的作者要这样写”。显然这样的需求无法被我们完全 接
10、受。客户的要求显然是重要的,产品应该以客户为导,如何把客户的需求变成 我们 技术人员能够接受的功能说明书,相反如何在产品开发前就让客户认可最终的产品,或者使用户的需要与产品之间不应有过大的偏差。此外,软件项目的需求管理,涉及到用户、市场、产品与开发等各种职能和角色,涉及到客户的需求、项目开发的时间和资源 ; 如何平衡各方面的要求,从整体上实现客户需要的产品,对需求进行有效的管理和控制。对需求管理的方法和应用进行系统的分析,提出一些利于实际操作的方法是十分必要的。 软件项目中的需求管理 6 第一章 需求及需求管理概述 1.1.软件需求的定义 宽泛地讲,需求来源于用户的一些 “需要 ”,这些 “需
11、要 ”被分析、确认后形成完整的文档,该文档详细地说明了产品 “必须或应当 ”做什么。 IEEE软件工程标准词汇表 (1997年 )中定义需求为 : (1)用户解决问题或达到目标所需的条件或能力。 (2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或 能力 (3)一种反映上面 (1)或 (2)所描述的条件或权能的文档说明 。 1.1.1.关于“需求 ”的解释 工 EEE公布的定义 包括从用户角度 (系统的外部行为 ),以及从开发者角度 (一些内部特性 )来阐述需求。 关键的问题是一定要编写需求文档。 另外一种定义认为需求是“用户所需要的并能触发一个程序或系统开发工作的说明
12、”下面的定义则从用户需要进一步转移到了系统特性 : 需求是指明必须实现什么的规格说明。它描述了系统的行为、特性或属性,是在开发过程中对系统的约束。 上述需求定义的一种解释如下 : 所谓需求,应该是来源于用户调查 即客户的需要,来源于某个特定行业的一些抽象的提炼 ; 并参照行业规范进行业务分析的结果,考虑用户自身的特性与要求。 这些 从客户处获得的“需要”,被分析、确认后形成完整的文档,该文档详细地说明了产品“必须或应当”做什么或对于模糊的部分不做什么。而并不是通过一些零碎的邮件,或者与用户的对话,收集的一些零乱的资料,就说,我已经做好了需求,而这一种情况,恰恰就是导致失败的因素。 1.1.2.
13、需求 的层次 软件需求包括三个不同的层次 业务需求、用户需求和功能需求 (也包括非功能需求 )。 业务需求 (business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。 用户需求 (user requirement)文档描述了用户使用产品必须要完成的任 务,这在使用用 例文档或方案脚本说明中予以说明。 功能需求 (functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。所谓特性是指逻辑上相关的功能需求的集合,给 用户提供处理能力并满足业务需求。 软件项目中
14、的需求管理 7 1.2.需求管理的概念 1.2.1 需求 管理的概念 需求管理的定义如下 : 顾名思义,需求管理是完整管理模式中的一环,同其他特性诸如完整性、一致性等不可分割 ,彼此相关而成一体。一套需 求管理应当是已知系统需求的完整体现,每 部分解决方案都是对总体需求一定比例的满足 (甚至是充分满足 ),仅仅解决部分需求是没有意义的。对 关键 需求的疏忽 很可 能是灾难性的。不同的需求组合起来,构成了一套完整的需求模型。用户需求决定了系统设计所要解决的问题,所要带来的结果。可以说,需求管理指明了系统开发所要做和必须做的每一件事,指明了所有设计应该提供的功能和必然受到的制约。 用通俗 的话来说
15、,需求管理就是 : 一种获取、组织并记录系统需求的系统化方案,以及一个使客户与项目团队对不断变更的系统需求达成并 保持一致的过程。 我认为 需 求管理的目的是在顾客和将处理顾客需求的软件项目组之间建立对顾客需求的共同理解 ,并对 此需求进行有效的控制,使项目走向成功 。 需求管理的过程,从需求获取开始贯 穿 于整个项目生命周期,力图实现最终产品同需求的 最佳结合。通过对需求管理在项目进程中实施的不同任务进行分析,我们可以看出需求 管理 所起的作用。 1.2.2.需求管理目标及需求 管理 要点 需求管理的目标是 : 1 使软件需求受控,并建立供软件工程和管理使用的基线。 2 使软件计划 、产品和
16、活动与软件需求保持一致。 3 控制需求变更,保证项目进度。 需求管理要点 : 1 要明确和建立需 求来源渠道,既为了避免需求蔓延,又要避免忽视客户需求、重复劳动、和不严肃的承诺 ; 2 建立需求管理小组,对需求进行评审,如需求对系统的影响范围等 ; 3 对 需求变更 进行 管理,对于不同等级的需求,采取不同的测量 ; 4 需求文档要进行版本控制。需求亦有基线和分支,并 要和代码、文档等其它产品的基线和分支保持一致 ; 5 需求文档中的 SRS要其有唯一编号,可以通过项目号 +SRS编号,唯一定位具体的需求 ; 6 在后续的代码、文档等数据中引用需求要确保和需求文档保持一致 ; 7 需求管理小组
17、要严格控制进人设计和开发之后的需求变更,并根据变更频率,改进项 目 需求分析过程。 8 要正确对待用户提出的新的需求以及需求变更,不能老报着“顾客是上帝”的心理,一味地答应用户的新需求。 软件项目中的需求管理 8 1.3.小结 这一章主要讲述了需求和需求管理的定义,并着重解释了需求管理的概念、目标、流程等,我们可能有一些疑问 : 需求和需求管理有什么用 ? 没有开发出一行代码,在整个软件工程过程中 浪费这么多时间 岂不是无用功吗 ? 下面就需求及需求管理的重要性进行一下阐述。 首先我们要树立一个概念 : 需求是根本 ,是我们一切开发活动的依据 。 由于忽略需求过程造成的项目返工是恶性的, 后果
18、不堪设想, 大量的项目在需求 阶段就注定了它的失败。以下是 两个 需求过程不科学的典型例子 : 1 开发人员 在用户处呆了两三天就埋头开发 ; 2 用户告诉开发人员我要开发一个 xx系统,但是我很忙,你先开发 一 个让我看着 ,开发人员就盲目答应。 上面的这两种态度都意味着项目的不成功,应该 说 上面的开发人员和用户都应该对此负责。需求是开发者和用户交互的一个过程,任何一方的不投人都会导致项目的失败。当然,由于用户不是专业人士,开发者有权利告诉用户应该采用何种态度来对待项目的需求。所有最成功的项目都有一个重要的特性 : 用户非常的支持。 评判一个软件项目成功的标 准是看它是否解决了用户的问题,
19、而用户的问题就是体现为用户的需求,需求也就顺理成章的成为项目的成功标准。而需 求阶段的一个不慎都有可能导致软件实现阶段的大量返工,而需求的不慎 不是说你小 心 就可以的,因为很多需求是隐性的,连用户都不清楚自己的需求 。这时候就需要一种科学的方法来帮助软件项目组 实施需求过程 , 。 是不是我们在项目开始之前将所有的需求搞明白就可以使项目开发成功 ? 我们姑且不讨论这种做法是否可行,只假设我们做到了这一点,可不幸的是 : 客户的需求是变化的,并且是一定要变化的。怎么办 ?全盘接受 ?全盘否定 ?这两种做法 都是项目失败的种子。 解决这些问题的办法就是用需求管理的办法,顾名思义,就是要把需求“管
20、理”起来,让它为我所控制,从而顺利地完成整个项目。 可以说,软件项目中绝大多数失败是需求的失败 :或者是需求开发的失败,或者是需求管理的失败。所以,我们讨论在软件项目中进行需求管理就是十分必要的了。 以下的章节,我将结合实际中的 一 个项目来具体谈一下小组软件项目中的需求管理问题 。 软件项目中的需求管理 9 第二章 项目 及项目背景简介 2.1. “厦门 *公司墓石 cad 设计系统”项目背景 介绍 厦门 *公司员工一直以来都是使用 一套叫“雅”的设计系统进行墓石设计,该系统由该公司从日本购进,成本较高。而且由于其是由日本人开发,好多使用方法不符合 *公司习惯,致使该公司员工设计效率低下,不能很好的适应市场需求。 为了适合 *公司员工的工作需要,提高其工作效率,降低其开发成本 ,该公司迫切需要一套适合自己的开发设计系统。经过多方面考虑和挑选,最终选择委托给我们 小组 来进行新的系统的设计和开发。 2.2. “厦门 *公司墓石 cad 设计系统”项目介绍 该项目是 autocad的二次开发项目,使用 ObjectARX开发包以及 VC6.0进行开发。各 模块最终生成各自的 ARX模块 ,相对 而言 比较独立。 下面我主要介绍一下系统的总体功能以及整体工作流程。 系统总体功能如下: