面向对象之需求分析要略

 面向对象之需求分析要略

 

      这里不想讨论经典的需求分析理论,只是提出些经验性的工作过程供读者参考。
      笔者多次主持软件架构体系设计,有很多机会接触到很多客户的决策者,也有机会与项目管理人员、开发人员并肩协作。在这个过程中对用户经常关心的问题、经常提出的需求及其原因有所了解与领悟。借此机会就需求调研与系统架构设计之间的关系简单地谈谈个人的看法。虽然有些看法难登大雅之堂,但也算是出于经验的一隅之见吧。
      需求调研人员在实践工作中经常会遇到一些棘手的问题。由于用户需求杂乱零散甚至是自相矛盾,导致进退维谷无所适从的难堪局面。尤其是在项目交付的过程中,会突然冒出大批的需求与变更,甚至会导致前功尽弃的结果,这是令许多需求人员困惑与尴尬的局面。
      软件项目的入手点一般是从需求调研开始,目的是确定项目内容及主要的实现边界。需求调研的结果应当生成“需求分析报告”,它对项目过程会起到举足轻重的参照与制约作用。在这里,不过是要以中小项目的需求分析为目标,浅谈一下这类项目在需求分析方面的一些特点与切身体会。其目的在于强调需求分析与面向对象设计之间的内在联系,即如何通过需求分析的手段,达到面向对象设计的具体过程。相对于面向对象需求理论来说,这些不过是些粗浅的感悟。
      需求分析的方法论一般是建立在相对正规的(客户能够支付成本)分析过程,对于大型项目来说参照这种方式执行属于一般性规范,如果对中小项目也要采用这种规范的需求调研模式,未必就是一个可以被有效执行的方式。
      很多中小企业虽然都知道需求分析的必要性,但它们并不认同为此付出相应的成本。在中小企业的项目中,需求分析与项目设计经常是捆绑在一起执行。需求分析是个高成本的投入过程,所以导致很多软件开发商不得不尽量压缩需求分析的成本。这种做法往往会给后面的实现、交付过程留下先天不足的隐患。要想在中小企业的软件开发市场上立足,不仅要承认这种客观的现实,还要摸索出中小企业需求分析工作的夜店与经验,只能这样才能有效化解需求分析成本不足、过程漫长的被动局面。
中小企业用户对需求分析所能提供的资金、时间都是很有限的,在多数情况下所能得到只是局部的、断续的、离散的素材,要想从中得到相对精准的项目的涵盖范围与设计目标,其中也有一些值得总结的经验与值得借鉴的方法。要想把握好这些基本要点并不是一件容易做到的事情,要特别注重对规律的总结。在项目过程中,永远不要指望用于需求分析的时间会很充裕,所以效率与效果就会更加重要,高质量的需求分析是保证项目实施过程顺利进行的必要前提。
      对于编程来说,我们可以通过书本与上机实践达到自我学习的目的,但对需求分析来说,书本上的方法并不能脱离真实的实践过程而再现,所以实践就成了提升需求分析能力的唯一途径。能够迅速构造出符合应用要求的需求报告(或需求规格说明书)并不是短期内就能达到的境界。
      这里所介绍的方法虽然没有太多的新意,但这些都是基于久经沙场的实战验证。恰当地把握这些方法就能尽快地就项目边界、任务难度、开发周期、实施方案等一系列关键问题做出基本符合实际的判断。
      提示:在面向对象的设计过程中,要想实现对控件的有效封装并取得较好的效果,就必须要实现对原始命题的分析、归纳与抽象。这也是需求分析的一个重要层面。在这里所强调的思路与方法,对于各种控件的封装同样适用。这一点在此后的过程中将会针对各种命题反复应用并付诸实现。

posted @ 2009-04-20 15:43  我的javaIT  阅读(168)  评论(0编辑  收藏  举报