代码改变世界

OOA&D实践之路——真实案例解析OO理论与实践(五、需求分析之前的故事)

2008-12-13 11:13  T2噬菌体  阅读(6485)  评论(18编辑  收藏  举报

查看本系列全部文章:
《OOA&D实践之路——真实案例解析OO理论与实践》索引贴

高质量软件的第一要素

      到目前为止,我们做了很多工作,但是我一直在强调这些都还不是需求分析。在很多人心目中,软件开发的第一件事就是先做需求分析。那么我们为什么不这样做呢?这牵扯到一个关键的问题:我们都希望开发高质量的软件,而本系列文章的重点也是如何通过OO实践开发高质量软件,那么什么是高质量软件?
      对于这个问题,也许很多人会说,是灵活的、是易于修改和扩展的、是可维护性高的、是用户体验好的、是文档完整的、是代码规范的、是性能处理优秀的……好吧,我承认,这些都是高质量软件必不可少的元素,但是,还有一个更重要的要素,就是:软件必须做客户希望它做的事。你的软件再灵活、编码再规范,客户不关心,客户最关心的是软件是不是完成了他期待的功能,可以做他希望软件做的事。所以,高质量软件的第一要素就是:让软件做客户希望它做的事。
      知道了这点,就知道为什么第一步不是做需求分析了,因为需求分析的重点不是“让软件做客户希望它做的事”,而是“将需求分解归纳成开发人员容易进行领域分析和设计的信息片段”。所以,需求分析是开发人员面的东西,而不是客户面的东西。作为开发人员,我们要首先站在客户的角度看问题,而不能总是站在开发人员角度,和客户隔着一条河对话。我们要走过去,去河的另一岸。

回顾我们的工作
      现在来总结一下我们目前所做的工作,你会发现,我们所做的全部工作,其目的就是让软件做客户希望它做的事。
      我们首先总结出特性列表,然后通过分析和询问降低了风险,同时修改了特性列表,最后从做出一张用例图,使得从全局角度对系统进行一个概览。所有这一切,其实都是开发人员在“努力变成客户”,或说努力让自己站在客户的角度看系统,真正了解客户想让希望做什么。因为,最好的理解需求的方式就是理解客户想让系统做什么。

我们在哪里?看看地图吧
      做了这么多工作,是不是有点迷失方向的感觉?似乎我们已经迷失在OO从林中,不知现在身在何处。好的,那我们看看“OO地图”吧,一方面搞清楚我们在什么地方,另一方面看看我们后续有哪些路要走。



      以上就是实践中的大致开发流程。一般来说,开发大致分为两个阶段:前一阶段我们要站在用户角度,搞清用户想要系统做什么;后一阶段要回到开发人员角度,进行分析、设计、编码、测试等一系列操作。而我们现在正处在两个阶段的交界处。
      一般在迭代阶段提倡使用迭代与增量的方式进行开发。至于这样有什么好处,以及OO如何于迭代增量方式结合这些问题,我们将在下一篇文章中结合我们的案例详细讨论。

重点总结
      1.高质量软件的第一要素是:软件做客户希望它做的事。
      2.在开发初期,我们要尽量站在客户角度。
      3.理解需求的最好方法是明白客户希望软件做什么。
      4.开发流程大约分为两个阶段:搞清用户想要系统做什么和迭代开发。