`
fangang
  • 浏览: 870209 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
311c4c32-b171-3767-b974-d26acf661fb2
谈谈用例模型的那些事儿
浏览量:38227
767c50c5-189c-3525-a93f-5884d146ee78
一次迭代式开发的研究
浏览量:68533
03a3e133-6080-3bc8-a960-9d915ed9eabc
我们应当怎样做需求分析
浏览量:408535
753f3c56-c831-3add-ba41-b3b70d6d913f
重构,是这样干的
浏览量:88496
社区版块
存档分类
最新评论

我们应当怎样做需求分析

阅读更多
又到新年了,日历又要从2011年翻到2012年了,这使我有太多的感慨,进而勾起了对太多往事的回忆。过去的10年,毫无疑问是中国软件业发展最快的10年。当我们刚刚毕业的时候,还在使用VB、PB开发一些简单的数据库应用,而现在却几乎看不到它们的踪影,换来的是诸如J2EE和.NET这样的大型web应用。而这期间,RUP、XP、敏捷开发、持续集成••••••一个接一个的新概念层出不穷,令人眼花缭乱。现在想来,恍如隔世。

但更令我印象深刻而难以忘怀的,是我亲自经历的、亲眼目睹的、道听途说的一个又一个的软件项目,它们有的获得了成功,但更多的是令人沮丧的失败。套用一下大文豪托尔斯泰体:幸福的家庭都是一样的,不幸的家庭却各有各的不幸;幸福的软件项目都是一样的,不幸的软件项目却各有各的不幸;或者说,成功的软件项目都是一样的,失败的项目却各有各的问题。我常常在想,我们的项目开发到底怎么了,进而把它们一个一个的剥开来深入分析,竟然触目惊心。它们有的是需求的问题,有的是客户关系的问题,还有设计的问题、技术的问题、时间管理的问题、人员培养的问题••••••但归根到底更多的还是需求的问题。需求分析既是一份体力活儿,更是一份技术活儿,它既是人际交往的艺术,又是逻辑分析与严密思考的产物。正是我们在需求分析过程存在的巨大隐患,最终导致了那么多项目的失败。也许你认为我在危言耸听,好吧,我来举几个典型事例分析分析吧。

我的第一个故事来自大名鼎鼎的东软。我在2005年接一个项目的时候,听说这个项目之前是东软做的。当时东软在做这个项目的时候,整个过程经历了10多次结构性的大变更,局部性的调整更是不计其数。据说某天早上,客户对某个功能不满意,他们不得不对几百处程序进行修改。之后客户对修改的内容还是不满意,又不得不将几百处修改重新改回来。最后这个项目导致的结果是,整个这个项目组的所有成员都离开了东软,并似乎从此不愿涉足软件开发领域。多么惨痛的教训啊!我常常听到网友抱怨客户总是对需求改来改去,但客户对需求改来改去的真正原因是什么呢?当我们对客户的需求没有真正理解清楚时,我们做出来的东西客户必然不满意。客户只知道他不满意,但怎样才能使他满意呢?他不知道,于是就在一点儿一点儿试,于是这种反复变更就这样发生了。如果我们明白了这一点,深入地去理解客户的业务,进而想到客户的心坎儿上去,最后做出来的东西必然是客户满意的。记住,当客户提出业务变更的时候,我们一定不能被客户牵着走,客户说啥就是啥。我们要从业务角度深入的去分析,他为什么提出变更,提得合不合理,我有没有更合理的方案满足这个需求。当我们提出更加合理的方案时,客户是乐于接受的,变更也变得可控了。

第二个故事来自我自己的项目,一个早期的项目。在这个项目中,客户扔给了我们很多他们目前正在使用的统计报表,要我们按照报表的格式做出来。这些报表都是手工报表,许多格式既不规范,又很难于被计算机实现。这些报表令我耗费了不少脑细胞,直到最终项目失败都没法完成。这件事留给我的深刻教训是,不能客户怎么说软件就怎么做。客户提出的原始需求往往是不考虑技术实现,基于非计算机管理的操作模式提出来的。他们提出的很多需求常常比较理想而不切实际,毕竟人家是非技术的。但我们作为技术人员,需求分析必须实事求是的、基于技术可以实现的角度去考虑。那种“有条件要上,没有条件创造条件也要上”的鲁莽行事,结果必然是悲惨的。所以我们必须要基于技术实现去引导客户的需求。同时,计算机信息化管理就是一次改革,对以往手工管理模式的改革。如果我们上了信息化管理系统,采用的管理模式却依然是过去的手工模式,新系统的优势从何而来呢?因此,我们做需求就应当首先理解现有的管理模式,然后站在信息化管理的角度去审视他们的管理模式是否合理,最后一步一步地去引导他们按照更加合理的方式去操作与管理。

2007年,我参与了一个集团信息化建设的项目。这个项目中的客户是一个庞大的群体,他们分别扮演着各种角色。从机构层次划分,有集团领导、二级机构人员、三级机构人员;从职能角色划分,有高层领导、财务人员、生产管理员、采购人员、销售人员,等等。在这样一个复杂场景中,不同人员对这个项目的需求是各自不同的。非常遗憾的是,我们在进行需求分析的时候没有认真分析清楚所有类型人员的需求。在进行需求调研的时候,总是集团领导带领我们到基层单位,然后基层单位将各方面的人员叫来开大会。这样的大会,各类型的人员七嘴八舌各说各自的需求,还有很多基层人员在大会上因为羞涩根本就没有提出自己的需求。这样经过数次开会,需求调研就草草收场。我们拿着一个不充分的需求分析结果就开始项目开发,最终的结果可想而知。直到项目上线以后,我们才发现许多更加细节的业务需求都没能分析到,系统根本没法运行,不得不宣告失败。一个软件项目的需求调研首先必须要进行角色分析,然后对不同的角色分别进行调研。需求调研的初期需要召开项目动员大会,这是十分必要的。但真正要完成需求分析,应该是一个一个的小会,1~3个业务专家,只讨论某个领域的业务需求,并且很多问题都不是能一蹴而就完成的,我们必须与专家建立联系,反复沟通后完成。需求分析必须遵从的是一定的科学方法,而不是盲目的大上快上。

我的最后一个故事可能典型到几乎每个人都曾经遇到过。我们的项目从需求分析到设计、开发、测试都十分顺利。但到了项目进行的后期,快到达最后期限时,我们将我们的开发成果提交给客户看,客户却对开发结果不满意,提出了一大堆修改,而且这些修改工作量还不小。怎么办呢?加班、赶工,测试时间被最大限度压缩。最后项目倒是如期上线了,但大家疲惫不堪,并且上线以后才发现许多的BUG。需求分析不是一蹴而就的,它应当贯穿整个开发周期,不断的分析确认的过程。以上这个事例,如果我们提早将开发成果给客户看,提早解决问题,后面的情况就将不再发生。这就是敏捷开发倡导的需求反馈。敏捷开发认为,需求分析阶段不可能解决所有的需求问题,因此在设计、开发、测试,直到最终交付客户,这整个过程都应当不停地用开发的成果与客户交流,及时获得反馈。只有这样才能及时纠正需求理解的偏差,保证项目的成功。

以上的故事各有各自的不幸,各自都在不同的开发环节出现了问题。但经过深入的分析,各自的问题最终都归结为需求分析出现了问题。为了使我们今后的软件项目不会重蹈覆辙,似乎真的有必要讨论一下我们应该怎样做需求分析。

我们应当怎样做需求分析
我们应当怎样做需求调研:初识
我们应当怎样做需求调研:拜访
我们应当怎样做需求调研:研讨会
我们应当怎样做需求调研:需求研讨
我们应当怎样做需求调研:迭代
我们应当怎样做需求调研:需求捕获(上)
我们应当怎样做需求调研:需求捕获(下)
我们应当怎样做需求分析:功能角色分析与用例图
我们应当怎样做需求分析:业务流程分析(上)
我们应当怎样做需求分析:业务流程分析(下)
我们应当怎样做需求分析:用例说明
我们应当怎样做需求分析:查询报表分析
我们应当怎样做需求分析:子用例与扩展用例
我们应当怎样做需求分析:行动图和状态图
我们应当怎样做需求分析:业务领域分析
我们应当怎样做需求分析:原文分析法
我们应当怎样做需求分析:领域驱动设计
我们应当怎样做需求分析:非功能需求
我们应当怎样做需求确认:需求列表
我们应当怎样做需求确认:一个需求列表的实例
我们应当怎样做需求确认:快速原型法
我们应当怎样做需求确认:需求规格说明书
我们应当怎样做需求确认:评审与签字确认会

(续)
分享到:
评论
6 楼 zdc524 2015-08-31  
保存了了,需要好好学习
5 楼 左手打右手 2014-12-02  
赞一个 正在朝这个方向靠近
4 楼 mj 2013-04-08  
真是说进了的程序员的心坎,我的QQ 825724052,写上备注,希望能够和你沟通共同学习。
3 楼 sunlongan666 2013-01-16  
正想看看怎么做项目需求
2 楼 JoeyQin 2012-07-28  
楼主的引言停煽情嘛。
小弟也是面临了同样的困惑,才寻觅而来。
看到楼主的系列文档,如获至宝,先学习了。
1 楼 ffychina 2012-02-05  
我们都是那个年代的程序员啊,因此我也特别能体会楼主的心境,从vb,delphi再转型到j2ee,我们就这样一眨眼地过来了,现在对我们来说,做软件项目最重要的就是需求分析,这是游走于技术与业务之间的桥梁,没做好需求这一步,带来的就是项目无尽的痛苦和绝望。需求分析可以反复讨论,推敲,放再多的时间在这上面也不过分,通过工具去做需求分析,效果会更好,推荐Rational,EnterpriseArchitect。

相关推荐

    我们应该怎样做需求分析

    需求分析

    我们应当怎样做需求分析:业务流程分析收集.pdf

    因此,我们需要耐心、细致地进行需求分析,确保每个环节都考虑到位。 业务流程分析的目标是识别出哪些流程可以被软件模拟,哪些应该在系统外部由人工完成。例如,在一个企业信息化管理系统中,系统可能需要模拟企业...

    我们应当怎样做需求调研.pdf

    幸福的软件项目都是一样的,不幸的软件项目却各有各的不 幸;或者说,成功的软件项目都是一样的,失败的项目却各有 各的问题。在众多问题中,需求分析无疑是最大...真的有必要坐下来讨论一下,我们应该怎样做需求分析。

    校园网需求分析

    在建设校园网之前,我们应首先做好校园网的需求分析,明白我们应该做什么、怎么做。校园网需求分析包括:用户业务需求分析,网络性能需求分析, 流量需求分析,网络扩张需求分析,网络安全需求分析,网络管理求求分析等等...

    软件的需求分析需求分析

    通过需求分析,我们可以明确软件应该做什么,而不只是如何去做。这有助于避免后期开发过程中的返工,节省时间和资源。 在进行需求分析时,有以下几个主要步骤: 1. 收集需求:与利益相关者进行沟通,了解他们的...

    资深需求分析师经验总结

    功能需求定义了系统应该做什么,而非功能需求则关注于系统应该如何表现,比如性能、安全性等方面的要求。 #### 三、需求工程 需求工程是一个系统化的过程,用于定义、协商、分析、验证和管理需求。这一过程包括...

    高级需求分析师总结

    **知识点生成:高级需求分析师总结** ### 需求的概念与需求分析的重要性 需求分析是软件开发周期中至...只有当需求分析做得扎实、细致,才能避免后期的大量返工和资源浪费,保证软件项目按期、按质、按预算顺利完成。

    需求分析.pdf

    ### 软件需求分析概览 #### 一、需求分析的重要性 软件需求分析是软件工程中的关键步骤之一,它确保了最终开发出的产品能够满足用户的真实需求。本篇文章将基于给定的文件《需求分析.pdf》来详细介绍需求分析的...

    如何做好需求分析

    #### 四、为什么要做需求分析 1. **决策性**:通过市场调研和用户反馈,决定是否需要开发某个产品。这一步骤对于项目立项至关重要。 2. **方向性**:良好的需求分析能够帮助团队明确目标和方向,确保所有成员都在同...

    《有效需求分析》精读笔记.pdf

    《effective需求分析》精读笔记作者金句:我们不是在画活动图,而是在做流程分析;不是在画类图,而是在厘清数据关系;不是在画用例图,而是在识别场景……左脑喜欢逻辑,右脑喜欢故事;最好的陈述一定是起于故事,...

    测试需求分析方法-如何做测试需求分析

    在软件测试过程中,测试需求分析是一项至关重要的任务,它直接影响到测试用例设计的质量和测试覆盖率的准确性。测试需求分析的目的是确保测试活动能够全面、有效地覆盖软件的所有关键功能和性能要求,从而发现并修复...

Global site tag (gtag.js) - Google Analytics