最近一直在做SCIS(Software College Information System)项目的需求,把其间的一些感触记录下来,一方面帮助自己做一下知识和经验的沉淀,同时也跟大家分享一下收获,一举两得。

SCIS项目之需求开发心得_需求管理

  1. 软件需求其实不外乎三件事情,捕获需求(或者称为识别需求)、描述需求和管理需求变更,因为我们目前处于项目初期所以没有涉及需求变更管理。当前的两件事情就是捕获需求和描述需求。
  2. 项目组在需求开发过程中采用RUP方法论中的技术和手段,主要是用例建模和用例规约文档,其他的还有UI原型以及词汇表。项目组成员在初期学习了不少UML和用例建模方面的技术和资料,然而需求开发的结果确有些走样,在下面的第3点,我分析和总结了其中的问题。
  3. 需求文档写的再好或者用例模型画得再漂亮,这只是一个形式。而问题的关键是我们能否捕获对用户真正有价值的需求,因此需求捕获和需求描述两者之间其实是一个内容与形式的关系。当然形式要服务与内容,即使需求描述的再准确、再规范,如果需求本身是用户不需要的,这显然也是没有意义的。因此,需求捕获或者说需求的识别才是问题的关键,当然,关键问题搞定了,需求描述这种形式上的东西就是锦上添花了。团队在项目初期没有把大部分精力放在内容上,而是放在了形式上,导致需求比较空泛或者没有太多实用价值。
  4. 既然需求捕获这么重要和关键,那么如何做好这个工作呢?需求捕获的技巧或能力我感觉基本上都属于软技能的范畴,包括的技术手段比如:和客户沟通、收集业务资料、分析业务资料。可是大多数软件需求的教课书上都没有提到一个很重要的技能,就是研究和学习已有的系统。比如,我们的SCIS项目需要用户身份验证,其实互联网上各种论坛、博客或者Email系统都有身份验证功能,从这些已有的系统我们在使用和操作的时候,就可以把相应的需求整理出来。这其实就是一个经验的问题,一方面新手可能缺乏项目经验,另一方面新手可能没有很多系统使用和应用的经验,也就是说见的不多识的不广,或者即使见多识广也未必会在用的过程对系统留心。任何一个软件系统,即使市面上没有完全一模一样的产品,也必然会存在部分相似的产品,这些部分相似的地方都是我们可以借鉴的,这本身就是需求捕获,或者说的高深一些就算是需求模式吧。其实这些软技能才是真正对需求开发最有价值的东西。
  5. 当然,捕获需求过程中最重要的一点就是我们要时常提醒自己——某某功能到底会不会给用户带来潜在的价值。如果不能带来价值,我们把它写进需求里就没有意义。当然,如果我们觉得没有价值,可是用户觉得很有价值,这样我们也不必太固执己见了,毕竟有人买单,这种情况就不在讨论的范围之内了。