游子吟

致力于.Net,致力于企业信息化工程!
Harvest = Hope + Struggle

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  前不久,看到一篇文章:“软件的质量是做出来的,而不是测试出来的”,他列举了很多实例,从机械制造到建筑行业再到IT行业,说明了软件“做”的重要性,总之一个中心:只要你精耕细作,一行code 一行code地去推敲,软件质量就一定能得到充分保证。
  看了这篇文章,掩面沉思了很久,总觉得有失偏颇。软件测试,在软件开发周期中,是最后一道关口,这道关口固然很很重要,把握得好,产品出厂以后,bug 就少,系统就越稳定。但是软件,从需求调研、需求分析、概要设计到细部设计到开发到测试,是一个庞大的系统工程,如果忽略了哪一个环节,都将带来重大的损失,就象一场足球比赛,守门员是球门前最后的守护者,他的份量固然重要,但是片面的强调守门员的重要性,而忽略了前锋、中路、后卫的配合,再强的守门员可能都无济于事。一款优秀的软件也是如此,每一个环节必须充分的交流、沟通和配合,如果片面强调一环,而忽略其它,都不可能“优”起来。当然,这所有的环节,不可能放到天平上去称量,根据不同性质、不同类型的软件,它的侧重点可能也有所不同,比如,一个球队,如果这支球队是防守型的,那么它球员的选择、平时的训练、球场上的技战术安排,可能都围绕着防守来展开;反之,如果是一支进攻型的队伍,一切的重点,可能都是以围绕进攻为主。就软件开发的各个过程来讲,我认认为“优秀的软件是设计出来的,而不是做不出来的”。
  软件设计包括:需求调研、需求分析、概要设计、细部设计等方面,从这个范畴来看,它的重要性也不言而喻了,再则,从行业分工、薪酬待遇也可见一斑。
  需求调研,说到这里,可能很多人会纳闷,设计与需求调研能搞到一块儿吗?请注意我的前提:优秀的软件,要打造一款优秀的软件产品,我认为从事需求调研的人员,必须是具有丰富的软件经验和熟练的业务的知识,才能把用户真正想要的的东西,了解全、了解透,同时把当地的法律法规,行业准则,市场状况,都溶入到需求之中,这才算是一个完整的需求,这才能给后面的分析、设计人员更充分的信息,做好构架设计与详细设计。比如,要做一套财务软件,如果你不懂财务制度,不了解会计准则,这款财务软生产出来的市场前景是难以想象的;再比如,要做一套外贸软件,国家进出口贸易法,贸易准则,这些也是少不了的;还有一些行业的潜规则,比如财务软件,很多公司要求能做两套帐,一套真帐(用于公司管理),一套假帐(用于报关报税,备查),如果你实现不了,他就不埋单。但是这些在需求调研时,用户一般是不会告诉你的,需要我们的需求调研人员去了解,去挖掘。但是现状却不容乐观,很多项目团队,没有充分认识到需求调研的重要性,随便派一个文秘或者文员去与用户交流,把用户说的,一字不漏地带回来,就算完成了需求调研。其实,这远远不够,很多用户不知道计算机是怎么工作,也不知道完成这个功能,需要哪些信息,所以他告诉你的,可能就是一些琐碎、零散的东西,很多东西他们还想当然地认为你是知道的,这恰恰是我们不明确的,这个时候,就需求利用我们的技术和经验去挖掘,去确认。更有胜者,你的经验够强,还可以给用户提出一些指导性的意见,帮助他们梳理流程,改正日常工作中的缺点和漏洞,这样既利于软件开发,也利于用户提高,以达到真正双赢之目的。
  需求分析,是把用户需求变成软件需求的一个过程,与需求调研这两个过程是相辅相承的,在调研过程中要分析,在分析的过程中也要再调研。把一个一个的业务模型清楚在搭建出来,业务逻辑,操作流程,都疏理清楚。
  架构设计与详细设计,就不言而喻了,这个环节的负责人员一般都身兼百家之长,熟悉很多语言的精髓,知道软件发展的趋势,他们能根据这些特性,规划新一代产品,做出非常好的产品来。软硬件环境、开发平台的选择、子系统的划分、输入、输出、接品及作业流程的规划,数据库、用例实现图、序列图、活动图都将在这个过程中产生。

  而软件开发,仅仅是将详细设计出来的功能,一个一个地用既定的语言,在既定的平台上实现出来而已。不需要太多的创新,也不用思考业务逻辑和用户的操作流程,按需求一步一步地完成就可以了。当然,很多详细设计可能不够详细,程序员还要考虑的就是程序的算法。除此之外,单元测试也必不可少,要求把那些显而易见的bug 全部消灭到单元测试阶段,这个测试是白盒测试,也最容易发潜在的问题所在,是程序必须履行的职责。就象机械行业要生产一根杆子,要经过粗车、精车、磨等几个主要工序,操作人员,每完成一道工序,都必须要自已先检验一下,是否符合要求了,而不是完全要靠检验人员来帮他检验。

      由此可见,设计在软件的整个开发周期中,占据了多大的份量,它决定了一个产品的前景,一个产品的生命力,决定了一个产品适用性、方便性、安全性、稳定性,有很多项目,半途夭折,或者被愕杀在摇篮中,就是因为它的设计没有做好,前期的准备工作没有做充分。还有很多公司,从调研、分析、设计、开发到最后的测试,都是一个人完成,这些过程中的文档,就只有程序源码,其余的东西,全都在他的脑子里,这样的过程,其实是相当危险的。所以要想软件“优”起来,要想软件有生命力、让用户满意,就多用用我们的脑子吧,一切以设计为重。

posted on 2008-10-14 08:18  巴山游子  阅读(696)  评论(3编辑  收藏  举报