纵谈软件预构(二)——需求确立

         今天从服务谈起,21世纪的今天,事事讲究服务,在IT界,服务这个概念也日渐兴起,越来越多的概念都涉及到了这个词:Service。从Web service,到SOA,Service可谓是无处不在。

         在我眼中,软件业就是一门服务行业,软件开发的目标用最简单的一句话来概括——用最短的时间开发出最好的软件,这句话是我整个“软件预构”系列的核心,重点依旧是那两个词:最快,最好!

         好了,中心确立,那现在就从这两个点展开谈起。

         先说快,谈到快,相信大家脑中都会浮现出这样一个概念——快速原型。快速原型的最大特点就在需求阶段,举个例子,在做需求时,我喜欢带着一个业务熟练的美工人员,用户每提出一个需求,我会立即要求美工用最快的速度开发出一个界面,交给用户审核,用户谈完需求时,再要求美工用最短的时间开发出一个系统的整体设计图,无论是用Photoshop,还是标准设计,总之可以递交给用户。

         有一句话叫“一图值千言”,对于用户来说,他不会关心你的内部实现结构,在他看来,界面就是程序,界面完工,基本上就意味着整个项目几近完工。因此,我很推崇一句话,叫“代码未动,界面先行”。

         最快说过,下面是最好。对于用户来说,什么是最好?你可以界面难看,可以效率略低,但是对于用户来说,如果你的软件不能满足他的功能性需求,那你的软件就一文不值。就像用户明明想要一个拼音输入法,就算你把五笔输入法做的再智能,用户也不会买账。那如何能够让软件最大限度地满足用户的功能性需求呢?我的一贯做法是文字用例,在我看来,文字用例比用例图更能清晰地反映用户的需求,也更容易让人接受,毕竟你在纸上画一个圆,有人认为是太阳,有人认为是鸡蛋。可是你在纸上写下“太阳”两个字,没有人会把这两个字念成“鸡蛋”。

         编写文字用例,要清楚地记下用户所描述的每一个步骤,然后分析每一步,询问用户如果某一步出错应当如何处理。举个例子,比如说一个足球游戏,用户这样描述一个过人的过程:

        1.运动员做假动作

        2.运动员将球向反方向踢出

        3.运动员追球

         好了,这时你就该询问用户:

        1.运动员在做假动作时摔倒了怎么办?

        2.运动员如果没有踢到球怎么办?

        也就是说任何一种情况你都要考虑到错误和异常。

        接下来要弄清楚用户的每一个概念,仍然以足球游戏做例子,用户提到了假动作这个概念,我们也许会自然地给这个词下这个概念:假装去踢球但是没有去踢。但是我们想过没有,究竟是向左踢还是向右踢,究竟是假射还是假传。因此这个概念有着很大的歧义,要明确。

        好了,要点说到这,下面总结下,记得曾经在大学时有过这样一门课:软件需求分析与设计。老师对需求下了这样一个定义,需求就是要知道用户需要什么!

        最后说下文档的问题,“软件工程”学强调步步有文档,文档的作用我个人理解无外乎二:

        1。为层与层之间的人员提供了一个向上透明访问的接口,比如说需求文档,设计人员可以不去访问具体的需求人员,更不用于客户打交道,他只需要调用需求文档这个接口就可以了。

        2.  也就是这个系列的主题,“预构”。再次回顾一下预构的含义。就是利用经验的积累而得到的洞察力去开发新的解决方案。周六去参加了一个Sun科技日,演讲者说了这样一句话,翻译成中文是这样:“开源是当今的潮流”。开源一个最大的好处就是可以把成果分享给他人学习,预构也是一样,文档交给他人,他人也可以从文档中获取经验。

         因此,我对文档的评判标准是,能让他人看懂的文档就是好文档。借用这个格式对全文进行总结:能彻底清楚客户需求的需求分析就是一个好的需求分析。

posted @ 2008-11-26 23:06  飞林沙  阅读(1587)  评论(6编辑  收藏  举报