软件的本质

      记得很多软件工程的书上都把软件比作工艺品,软件的开发就像工厂中工艺品的生产一样,需要有规范的流程管理来保证生产出的产品的质量,所以在此基础上诞生了软件工厂这门学科。但深究下去,你会发现软件的本质和工艺品的本质有很大的不同。有一点很明显,工艺品一旦生产出来,它的功能就固定下来了,不可能改变也不可能升级。而软件是根据业务需求开发出来的,需求变了,软件的功能必须相应进行改变,否则就会无法满足用户的要求而被淘汰,从而决定了软件的可持续发展是软件最重要的本质体现。所以可以这么说是否满足现在的需求,只能说明软件是否是活的,至于活得好不好,就要看软件是否容易扩展。

 

     怎么保证软件活的好呢?这得从软件的整个生命周期中进行掌控!任何软件的开发都是从需求分析开始的,软件必须实现用户期望的功能,所以需求分析的重要性不言自明。但现在很多软件开发中的需求分析都只是做做收集用户的需求,编写成相应的文档就止步了,漏掉了最重要的一步,那就是对需求本质的分析。什么是需求的本质,这个要紧紧结合用户的业务特点进行分析。就比如我公司是做电子商务的,电子商务系统的核心就是订单,订单的本质就很像合同,其形成的过程可以像合同一样分为定义和履行两个过程。所以整个电子商务系统就可以分为前台和中台,前台的主要功能就是用户选择相关的商品,下单和付款,这样就完成了订单的定义过程,然后中台就针对这张订单进行相关的配送和出票等操作,完成订单的履行过程。这样,整个系统的功能分工就很明确了,可以有效的减少各个模块之间的耦合关系,添加功能的时候自然而然的知道要往哪些模块中加了。其次,任何复杂的需求只要分析透彻,都可以在一张A4纸上呈现出来,任何复杂的东西都是从中扩展出来的。如果不行的话,就说明没有抓住本质的东西,需要继续分析。

    

     经过需求分析,确立了本质的东西之后,就要进行概要设计了。其中主要的工作就是进行系统的架构设计,建立系统的模型,确立模型之间的关系。这个很重要,尤其是模型之间的关系,关系确立错了,以后改起来就需要伤筋动骨了。就比如说,我公司是做机票预订的,订单和机票产品就是两个重要的模型,它们之间应该是一对多的关系,其实采用类比的方式很好理解,订单就如合同,产品就如合同上的条款,一个合同可以由很多条款组成,每个条款需要履行不同的责任。如果合同中的某些条款没有用了,就可以把它们废弃,而不必废弃整个合同,重新订立。但我公司的机票系统就把它们设计成一样的东西,这就引起了一个问题,用户预订的产品之后不需要了,需要重新预定的话,就只能把这个订单废弃,重新下订单,而不是修改订单的产品来实现。如果用户采用多种支付方式为这个订单支付时,就可能引起财务处理上的麻烦,因为需要把为废弃订单的款都退了,才能为新订单付款,不然以后财务统计时就可能出错,如果是同一张订单的话,采用多退少补的话就可以省去很多步骤。从中也可以看出分析清楚需求的本质是多么重要了。

 

     最后来说一下编码吧,要保持软件的活力,编写高质量的代码也是必不可少的。代码就如软件的血液,好的代码可以加速血液循环,促进新城代谢,提高软件活力,坏得代码就会导致血液凝结,降低新城代谢,引起软件的慢慢死去。那怎样才能够编写出好的代码呢?可以看看《代码大全》,按照里面的方法来写代码,经过一段时间,你的代码质量自然会有提高。还有,重构也是一个必不可少的选择,因为不可能一下子就写出高质量的代码,代码都是经过一步步的改出来的,在这个过程中《重构-改善代码的设计》是个不错的选择。其次,对整个系统的功能架构有理解,才能防止随意把代码加在某些功能模块上,引起代码的混乱。

     

     这就是听公司架构师的演讲之后的感想,写得不好,请多见谅!

 

你可能感兴趣的:(软件)