记得很多软件工程的书上都把软件比作工艺品,软件的开发就像工厂中工艺品的生产一样,需要有规范的流程管理来保证生产出的产品的质量,所以在此基础上诞生了软件工厂这门学科。但深究下去,你会发现软件的本质和工艺品的本质有很大的不同。有一点很明显,工艺品一旦生产出来,它的功能就固定下来了,不可能改变也不可能升级。而软件是根据业务需求开发出来的,需求变了,软件的功能必须相应进行改变,否则就会无法满足用户的要求而被淘汰,从而决定了软件的可持续发展是软件最重要的本质体现。所以可以这么说是否满足现在的需求,只能说明软件是否是活的,至于活得好不好,就要看软件是否容易扩展。
怎么保证软件活的好呢?这得从软件的整个生命周期中进行掌控!任何软件的开发都是从需求分析开始的,软件必须实现用户期望的功能,所以需求分析的重要性不言自明。但现在很多软件开发中的需求分析都只是做做收集用户的需求,编写成相应的文档就止步了,漏掉了最重要的一步,那就是对需求本质的分析。什么是需求的本质,这个要紧紧结合用户的业务特点进行分析。就比如我公司是做电子商务的,电子商务系统的核心就是订单,订单的本质就很像合同,其形成的过程可以像合同一样分为定义和履行两个过程。所以整个电子商务系统就可以分为前台和中台,前台的主要功能就是用户选择相关的商品,下单和付款,这样就完成了订单的定义过程,然后中台就针对这张订单进行相关的配送和出票等操作,完成订单的履行过程。这样,整个系统的功能分工就很明确了,可以有效的减少各个模块之间的耦合关系,添加功能的时候自然而然的知道要往哪些模块中加了。其次,任何复杂的需求只要分析透彻,都可以在一张A4纸上呈现出来,任何复杂的东西都是从中扩展出来的。如果不行的话,就说明没有抓住本质的东西,需要继续分析。
经过需求分析,确立了本质的东西之后,就要进行概要设计了。其中主要的工作就是进行系统的架构设计,建立系统的模型,确立模型之间的关系。这个很重要,尤其是模型之间的关系,关系确立错了,以后改起来就需要伤筋动骨了。就比如说,我公司是做机票预订的,订单和机票产品就是两个重要的模型,它们之间应该是一对多的关系,其实采用类比的方式很好理解,订单就如合同,产品就如合同上的条款,一个合同可以由很多条款组成,每个条款需要履行不同的责任。如果合同中的某些条款没有用了,就可以把它们废弃,而不必废弃整个合同,重新订立。但我公司的机票系统就把它们设计成一样的东西,这就引起了一个问题,用户预订的产品之后不需要了,需要重新预定的话,就只能把这个订单废弃,重新下订单,而不是修改订单的产品来实现。如果用户采用多种支付方式为这个订单支付时,就可能引起财务处理上的麻烦,因为需要把为废弃订单的款都退了,才能为新订单付款,不然以后财务统计时就可能出错,如果是同一张订单的话,采用多退少补的话就可以省去很多步骤。从中也可以看出分析清楚需求的本质是多么重要了。
最后来说一下编码吧,要保持软件的活力,编写高质量的代码也是必不可少的。代码就如软件的血液,好的代码可以加速血液循环,促进新城代谢,提高软件活力,坏得代码就会导致血液凝结,降低新城代谢,引起软件的慢慢死去。那怎样才能够编写出好的代码呢?可以看看《代码大全》,按照里面的方法来写代码,经过一段时间,你的代码质量自然会有提高。还有,重构也是一个必不可少的选择,因为不可能一下子就写出高质量的代码,代码都是经过一步步的改出来的,在这个过程中《重构-改善代码的设计》是个不错的选择。其次,对整个系统的功能架构有理解,才能防止随意把代码加在某些功能模块上,引起代码的混乱。
这就是听公司架构师的演讲之后的感想,写得不好,请多见谅!
分享到:
相关推荐
本书被誉为安全技术领域的“黄帝...综合论述如何在软件开发整个生命周期内建立安全屏障,对千如何设计安全的软件给出了高屋建领的指导,全面翔实,深入浅出。 对千任何关注安全软件开发的人来说,都是—本必备之书。
随着人们对软件本质的进一步认识,软件测试对于软件质量的保证已被软件企业高度重视,软件测试在软件开发中的作用也彰显出来,软件测试的地位也越来越高。 本教程是kmokd将纸质书影印而制作的电子书籍。在CSDN下载...
物联网软件本质是传统工业控制组态软件的一个后续发展,但不是简单的升级关系。 组态软件是工业控制系统上位机软件的统称,比较著名的有wincc, intouch , 力控组态王等。主要目标是配合下位机,完成工业控制项目的...
《软件工程的本质:运用SEMAT内核》由SEMAT的创始人和思想贡献者编写,阐述了软件工程的本质,介绍了SEMAT内核,分享了运用SEMAT内核解决具体问题的案例和有效性。它是SEMAT新标准的纲领性著作,也是一本引导我们...
随着人们对软件本质的进一步认识,软件测试对于软件质量的保证已被软件企业高度重视,软件测试在软件开发中的作用也彰显出来,软件测试的地位也越来越高。 本教程是kmokd将纸质书影印而制作的电子书籍。在CSDN下载...
随着人们对软件本质的进一步认识,软件测试对于软件质量的保证已被软件企业高度重视,软件测试在软件开发中的作用也彰显出来,软件测试的地位也越来越高。 本教程是kmokd将纸质书影印而制作的电子书籍。在CSDN下载...
软件开发的本质论英文版epub
软件本质中的编程挑战 比赛规则 挑战的条件如下: 只会有一位获胜者。 该奖项是我的《软件的本质》一书的两份印刷本。 要参与,他们必须编写一个由命令行执行的程序,该程序以年份作为参数。 运行时,您必须在...
软件开发的本质论英文文字版
从本书中认识到软件测试从最初到发展以及目的的系统性概述,适合测试人员好好读下
软件设计本质论--面向对象,详细的讲解,容易理解
本书被誉为安全技术领域的“黄帝内经”... 综合论述如何在软件开发整个生命周期内建立安全屏障,对于设计安全的软件给出了高屋建瓴的指导,全面翔实,深入浅出。对于任何关注安全软件开发的人来说,都是一本必备之书。
不是说这类分享没价值,而是说越是这类分享越适合具体问题,而不适合影响因素过多的事物,比如管理,比如文化,比如方法论,比如对软件本质问题的认知。我们当然可以到StackOverflow上分享某个问题的具体解决方法,...
软件本质上支持任何版本的32位和64位的windows系统,但是只在WinXP上测试过 更高版本的windows慎用。 期待高玩们的测试结果。 http://bbs.pceva.com.cn/forum.php?mod=viewthread&tid=58217 mengxp 2012/09/16
软件生命周期中不含哪个阶段、关于瀑布模型说法正确的是、下面关于软件过程模型说法错误的是、软件项目计划中不需要制定下面哪个内容的方案、开发软件的高成本和软件产品的低质量之间的矛盾,这种现象称为、产生软件...
《程序员》:基于需求的测试是软件测试的本质.pdf
软件工程的本质:运用SEMAT内核.[美]Ivar Jacobson(详细书签)
软件项目管理课件 基本概念 软件危机 软件质量 软件本质特征 软件质量保证 CMM过程成熟度