需求管理之被遗忘的需求

先说一个小笑话。有一个生产队队长,他对专家说:“如今我们生产队的地越来越多,牛越来越忙只是来了。我想要这么一种牛,他吃的草和普通牛一样多,可是干的活是普通牛的十倍。

”专家说:“这种牛是能够造出来的,如今有基因project。”队长说:“好吧,你给这造几头这种牛。”于是专家找到了生物实验室。让生物实验室的人搞一个基因project,把牛造出来。

于是project浩大,投资无法保证,合作多半是不愉快的收场。

现实世界里非常多人分析需求的过程就相似于这位专家。他们把注意力放在用户提出的功能点上。而对用户的实际需求没有兴趣。有不少软件公司和程序猿,事实上都在做相似的基因project。假设这个专家把注意力放在生产队长的业务需求上,而不是太在乎他提出的功能点。他会说:“我认识一个卖拖拉机的,能够带你去看看。”

软件的维护为什么这么痛苦。一个非常重要的原因在于:需求已经被遗忘了。

需求是对用户具有直接商业价值的活动。而不应该牵涉到不论什么的功能实现方式。实现同一个需求能够使用多个方案。每一个方案有自己的功能方式,在某个方案中至关重要的功能点,或许在还有一个方案中根本无关紧要。

瀑布式的开发过程,首先是由一批懂得用户业务的专家去调查用户的需求,分析出这个系统应该具有哪些功能,形成一个非常关键的文件——《xxx系统需求规格说明书》。客户认可了这个《说明书》,在上面签字盖章,增加合同附件,到时候项目验收就以此为准。

这时候。需求就已经分解成了一个个功能点,从这时候開始,需求本身就渐渐被人们遗忘。设计人员环绕着这些功能点进行工作,考虑用什么样的技术手段把功能点制造出来。

功能点的制作细节形成了另外一份关键的文件——《xxx项目设计规格说明书》。这个《设计规格说明书》交给程序猿去进行编码。

这种做法在开发中已经形成了非常大的问题。

首先。面对这种《需求规格说明书》,设计人员已经无法知道最初的需求是什么。假如这个《需求规格说明书》中的功能点没有出现互相矛盾的情况。而他们串起来却和用户的需求不同。设计人员没办法发现这种情况。编码人员也无法发现。

假如測试也是依据这个《需求规格说明书》来做的。測试人员也发现不了。直到最后客户看见这个程序展如今他们面前。

需求的分析须要在随后的过程中不断得到反馈,传统的过程不是没有反馈,而是反馈的时间太长了。

其次,因为设计人员已经无法知道主要的需求是什么,也就无法对业务进行建模。

这种需求分析是以开发者的须要为核心的,可是结果恰恰妨碍了开发者对需求的理解。

假设开发者对用户的业务过程不甚了解,他们仅仅有一种选择:不要试图去了解需求了,直接依照这些功能点做吧。

于是,他们建立的对象模型就不是以需求为核心的。而是以功能、界面为核心的。我见到过非常多这种系统,开发者确实有非常高的抽象思维水平,程序中设计了非常巧妙的控制器和界面,能够非常方便的进行开发和变更。只有业务层的对象非常简陋,一旦发生实际业务的变更。仍然十分辛苦。

更大的困难发生在维护程序的时候。

假设有一个移动通信公司须要制造一个系统,用来解决手机用户入网的问题。这个需求有以下几个要点:

1:用户付钱,得到一个SIM卡和一个号码,把这个SIM卡装到手机里就能够通话。

2:营业员收的钱要记录下来,提供给稽核人员,现金和帐目必须是平的。

3:用户付的话费要划入他自己的帐户,能够打印票据。
     4:用户要在入网合同上签字,然后营业员把合同归档。

这几个要点都是和通信公司的商业利益直接相关的。没有牵涉到不论什么系统实现方式。

假设不考虑通信公司内部的业务规范,实现方案能够有几十种,以下列举两种:

1:SIM卡发给营业员。用户入网的时候。选择一个号码。然后付钱。

营业员把SIM卡号码和电话号码输入系统,在交换网络上进行注冊,这个SIM卡就能够通话了。

然后各种费用记入各人帐户,合同归档。

2:SIM卡在下发给营业员之前。先在交换网络上和注冊。而且已经预先设置了一定的话费。

用户选择了这个号码,付钱之后直接SIM卡拿走就能够打电话了。

营业员事后再输入用户的合同资料,费用计入各人帐户。合同归档。

这两种方案在实现过程上是不同的。因此具有不同的功能点。比方另外一种方案中的SIM卡在出售之前是能够进行通话的,所以必须对这种号码的通话费用进行监控。这个功能在第一种方案中是根本不须要的。而且两种方案在帐目的核对方式上差别也是比較大的。这两种方案是不同的功能点的集合。他们完毕的是同一个业务需求。

系统在开发阶段假设没有保留用户的业务需求情况,而是仅仅留下一个功能点的列表。会给维护人员带来成非常大的困难。维护人员无法从这样一堆功能点中发现最初的需求是什么样子。

各位能够试试,假设我们忘记上面的四个需求要点。仅仅看以下的某个实现方案。从这个复杂的实现过程中。我们非常难知道用户如今的需求究竟是什么。一旦需求发生了变化,这些功能点就会出错,或者是功能点的时序发生意料不到的错误,或许帐目核对不上了,或许是用户拿走的SIM卡不能打电话了。

看不见需求在哪里,不知道手里这段代码会触动需求的哪根神经。维护人员的痛苦大部分来源于此。

“不要紧,客户记得自己的需求。

”可是客户通常不懂技术,即使他们懂技术,他们也不知道系统是怎样实现的。

假设开发者依靠客户提出新需求的解决方式,结果就是让软件project变成“生物project”。到最后是钱基本花光,人基本累死,甲乙两方感情基本破裂。

软件开发必须划分成几个过程,可是各个步骤应该有一个统一的核心——业务需求。

在需求调查阶段要搞清楚用户的业务需求,为了达到这个目的。能够提问回答,能够对用户进行跟踪採訪,或者做一个demo给用户看看,终于的目的是为了搞清楚用户在做什么事。遇到了什么问题,程序应该去解决什么问题,这就是这一阶段的工作。

然后開始进行设计,设计系统的逻辑结构和物理结构,逻辑结构要符合需求的概念。各个对象互相调用要能够实现需求中的业务过程。同一时候物理结构划分合理,符合实际的分布状况,能够达到要求的的性能,业务过程的物理执行方式合理高效。

这一阶段仍然是以业务需求为核心。

接下来是编码。

首先是编写一些基础设施,比方网络通信、数据库、文件的读写、分布式计算,这些基础设施和业务需求没有什么关系,有非常多现成的框架,借助这些框架我们能够尽快度过这个黑暗的阶段。

然后编写业务对象,这时候业务需求中的一些概念逐步出如今代码中。接着这些业务对象串接起来,实现业务过程,如今业务需求又回到了人们的视野其中。

业务需求是什么,怎样实现,在这里一目了然。最后将这些过程在UI或者接口中调用。将功能提供给用户或者别的系统。

測试更是要环绕着业务需求来进行,正常的业务流程应该产生正常的结果,假设缺少某个资源,或者输入了不合适的数据。应该出现业务含义明白的异常。而且系统的业务对象是处在一个独立的层次上,与UI和基础设施没有非常大的关联,这样能够方便的採用自己主动化的測试方法。

这种系统维护起来一定少非常多痛苦。

时间: 2024-08-07 08:36:58

需求管理之被遗忘的需求的相关文章

需求管理之勇于直面需求变更

软件系统开发过程中的需求变更问题 作为软件开发人员或者软件系统客户,相信我们都遭遇过因为需求变更而需要修改系统的情况,一般说来客户会要求改变界面,改变操作方式,甚至改变业务,说,当时我是那样要求的,不过现在我们的业务调整了-这时需要中断正在进行的工作,需要查证以往的资料,需要修正计划,需要- 需求包括业务需求.用户需求和功能需求.业务需求(Business Requirement )反映了组织机构或客户对系统.产品高层次的目标要求,用户需求(User Requirement )描述了用户使用产品

外包管理、需求管理、组织级与大项目管理

一.外包管理 1.外包的形式有哪五种?什么是利益关系?    1)活动外包    2)服务外包    3)内包    4)合包    5)利益关系,这是一种长期的合作关系,双方先为此关系进行投资,再根据预先拟定的协议分享利益,共同承担风险,同时共享利益.如果利益无法是实现,供应商不会因他们的努力与投入而获得任何报酬. 2.外包管理的目标是什么?要实现这个目标,对外包管理提出哪四个方面的要求?    软件外包管理总的目标是用强有力的手段来管理同时进行的总舵外包项目,满足进度,质量,成本的要求.  

4月13日作业 外包管理、需求管理、组织级项目与大型项目管理

4月13日作业外包管理.需求管理.组织级项目与大型项目管理 一.外包管理 1.外包的形式有哪五种?什么是利益关系? 1.活动外包 2.服务外包 3.内包 4.合包 5.利益关系 利益关系:这是一种长期合作关系,双方先为此关系进行投资,再根据预先拟定的协议分享利益,共同承担风险,同时共享利益.如果利益无法实现供应商不会因他们的努力与投入而获得任何报酬. 2.外包管理的目标是什么?要实现这个目标,对外包管理提出哪四个方面的要求? 外包管理的目标是用前有力的手段来管理同时进行的众多外包项目,满足进度.

信管师培训之第十一节课作业(外包管理+需求管理+组织级与大项目管理)

一.外包管理 1.外包的形式有哪五种?什么是利益关系? 企业现行采用的主要外包形式如下: (1).活动外包 (2).服务外包 (3).内包 (4).合包 (5).利益关系. 利益关系(benfit-based relationship):这一种长期合作关系,双方先为此关系进行投资,再根据预先拟定的协议分享利益,共同承担风险,同时共享利益. 2.外包管理的目标是什么?要实现这个目标,对外包管理提出哪四个方面的要求? 软件外包管理总的目标是用强有力的手段来管理同时进行众多外包项目,满足进度.质量.成

2016年4月13日作业(外包管理、需求管理、组织级项目管理与大型项目管理)

一.外包管理1.外包的形式有哪五种?什么是利益关系? 答:活动外包.服务外包.内包.合包.利益关系: 利益关系,这是一种长期合作关系,双方先为此关系进行投资,再根据预先拟定的协议分享利益,共同承担风险,同事共享利益.如果利益无法实现,供应商不会因他们的努力与投入获得任何报酬.2.外包管理的目标是什么?要实现这个目标,对外包管理提出哪四个方面的要求? 答:软件外包管理总的目标是用强有力的手段来管理同时进行的众多外包项目,满足进度.质量.成本的要求. ①慎重选择合格的软件承包商. ②互相同意对方的承

轻量级过程改进之需求管理

需求管理在于管理产品研发过程中的客户需求,建立项目相关干系人对需求的共同理解,维护需求与所开发产品之间的一致性,并控制需求的变更.需求管理的重要性不言而喻,在前面讲到的项目启动.项目计划以及接下去要讲的项目监控这几个改进域中,客户需求都是我们开发工作的输入和基础,研发团队存在的意义也是围绕着客户的需求,以满足客户需求.提高客户满意度为工作的目标,项目管理团队更是如此.本文主要阐述在项目需求管理过程中涉及的主要规程.可能存在的问题.分析这些问题并提出相应的改进措施. 一. 需求管理的规程 关于需求

万字干货:手把手教你做需求管理

通过这篇文章,总结自己在工作实践中需求管理的方法论--普拉姆方法.总结这个方法论的特点是,用最轻量化的投入,与他人协作,并管理需求,推动需求上线.这套方法论组合了项目管理.敏捷开发的知识,希望能对大家有所帮助.本文适合0-2岁产品经理阅读,产品大牛.敏捷管理大师请绕过. 本文大纲如下: 1. 为什么要做需求管理? 1.1 我们的工作是否像救火 1.2 需求管理是什么? 1.3 宗旨是什么? 1.4 结尾 2. 需求管理中的干系人和角色 2.1 什么是干系人 2.2 需求管理中的角色 2.3 如何

【四】流程2:需求管理创建需求

创建需求 首页需求管理模块(需在创建项目时选中启用需求管理才能看到): 需求规格说明书是我们开展测试的依据,可以首先对其进行分解,一个项目可以包含多个需求,一个需求可以包含多个测试需求(如系统测试,单元测试,接口测试等) 创建测试需求规格 创建测试需求 一 产品需求规格 点击上图的产品需求规格,跳转到产品需求规格页面,改页面已树形式显示一个项目包含的需求层级关系 点击新建产品需求规格: 在规格下面可以创建产品需求:

第十二讲:软考中高项12_外包管理、需求管理、组织级与大项目管理

一.外包管理1.外包的形式有哪五种?什么是利益关系? 活动外包.服务外包.内包.合包.利益关系 利益关系是一种长期的合作关系,双方先为此关系进行投资,再根据预先拟定的协议分享利益,共同承担风险. 2.外包管理的目标是什么?要实现这个目标,对外包管理提出哪四个方面的要求? 外包管理总的目标是用强有力的手段来管理同时进行的众多外包项目,满足进度.质量.成本的要求. 对外包管理提出四个要求: 慎重选择合格的软件承包商 相互同意对方的承诺 需要经常保持交流 根据合同的承诺跟踪承包商实际完成的情况和成果