`
laolinshi
  • 浏览: 41391 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

软件的本质

 
阅读更多

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

 

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

    

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

 

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

     

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

 

分享到:
评论

相关推荐

    安全软件开发之道 构筑软件安全的本质方法

    本书被誉为安全技术领域的“黄帝...综合论述如何在软件开发整个生命周期内建立安全屏障,对千如何设计安全的软件给出了高屋建领的指导,全面翔实,深入浅出。 对千任何关注安全软件开发的人来说,都是—本必备之书。

    软件工程设计案例

    通过对软件本质特征的理解和软件工程主要研究内容的掌握,可以更好地应对软件开发中的挑战,推动软件技术的持续进步。未来,随着互联网技术的发展,软件工程将继续探索更加高效、灵活的开发模式和技术手段。

    [详细完整版]4软件工程.pdf

    软件危机的产生源于多方面的原因,主要包括开发人员对软件本质的理解不足、软件开发过程的无序以及软件规模和复杂性的增加。开发人员常常忽视软件的完整性,导致计划不周详、编程草率,不重视维护工作,这是危机产生...

    软件项目管理.pdf

    软件本质上是一种知识产品,其开发过程和质量难以准确估计和度量。此外,软件系统的复杂性和持续变化的特点也给项目管理带来了额外的挑战。软件项目管理者在面对这些特殊情况时,需要运用专业的知识和技能,运用适当...

    软件关于软件工程的一些讨论,希望对你有所帮助,谢谢

    ### 软件本质特征与虚拟机构造 从软件的本质特征出发,可以将软件看作是构建在物理硬件之上的多层抽象结构,这种结构被形象地称为“虚拟机”。虚拟机的每一层都代表了一个特定的抽象级别,从最底层的操作系统内核,...

    《软件测试理论与实践》part1——在CSDN下载频道首发

    随着人们对软件本质的进一步认识,软件测试对于软件质量的保证已被软件企业高度重视,软件测试在软件开发中的作用也彰显出来,软件测试的地位也越来越高。  本教程是kmokd将纸质书影印而制作的电子书籍。在CSDN下载...

    软件工程概论-清华大学PPT讲义

    总结来说,清华大学的这门《软件工程概论》课程提供了对软件本质、分类、发展和工程实践的全面理解,对于学习者深入掌握软件开发的核心原理和技术具有很高的价值。通过学习,可以了解到如何有效地管理软件项目的各个...

    软件工程的本质 运用SEMAT内核(陈忠 译)

    《软件工程的本质:运用SEMAT内核》由SEMAT的创始人和思想贡献者编写,阐述了软件工程的本质,介绍了SEMAT内核,分享了运用SEMAT内核解决具体问题的案例和有效性。它是SEMAT新标准的纲领性著作,也是一本引导我们...

    资源是教材《软件工程——方法与实践》的课后习题答案

    - **无形性**:软件本质上是一组指令集合,无法通过物理形态感知。 - **高成本**:软件开发往往需要大量的人力投入,尤其是高级技术人员的成本。 - **包括程序和文档**:除了可执行的程序代码外,还包括了必要的文档...

    软件工程复习课件

    1. **正确理解软件本质**:需摒弃“软件即程序”的狭隘认知,软件应当被视为包含程序、数据与文档在内的完整配置。此外,软件开发被视为一项需要组织管理、团队协作的工程项目,而非个人技巧的展现。 2. **采用现代...

    基于计算机网络安全技术的软件开发系统设计与发展.pdf

    计算机软件本质上是一种网络存在的形式,网络化对计算机软件开发技术的发展具有重要的意义。网络化为计算机软件开发技术提供了便利服务,因此,计算机软件的开发技术是网络化的开发技术。网络化不仅能够提供各种便利...

    软件工程课件教案1软件工程学概论.ppt

    为解决软件危机,需要转变对软件本质的认识,不再将其简单等同于程序。国际电气和电子工程师协会(IEEE)将软件定义为包括程序、方法、规则、文档和相关数据的集合。技术措施,如采用软件工程方法和工具,以及组织...

    现代软件工程复习资料

    软件进化发展是指软件本质地应该灵活且可改变。CMMI 是指Capability Maturity Model Integration的缩写,它定义了每一过程域。团队软件过程是指每个项目都是通过使用一个定义要完成的任务的“脚本”来“开展”的。 ...

    软件工程导论课习题

    1. **正确认识软件本质**:软件不仅仅是代码,还包括需求分析、设计、测试等多个环节。 2. **采用工程化方法**:将软件开发视为一个工程项目,采用严格的管理和组织手段。 3. **推广成熟的技术与方法**:利用经过...

Global site tag (gtag.js) - Google Analytics