软件困局

软件困局

本文将尝试阐述软件危机的原因。

软件,是人们为了告诉电脑要做什么事而编写的,电脑能够理解的一串指令,有时也叫代码、程序。----计算机科学

软件是计算机系统中与硬件相互依存的一个部分,它是包括程序、数据及其相关文档的完整集合。----软件工程

 

计算机科学是什么?

    计算机科学是系统性研究 信息 计算 的理论基础以及它们在 计算机 系统中如何实现与应用的实用技术的学科。
         对象:逻辑算法及算法环境
         方法:数学及逻辑学

软件工程学是什么?

    软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。
         对象:软件开发过程及结果
         方法:工程学

一般理解:

    很多人认为软件工程基于计算机科学信息科学就如传统意义上的工程学之于物理化学一样。

 

本人理解:

      由于软件关注问题的动态性和使用的编程语言的语义性,使软件工程不同于传统工程学。
      首先,软件产成品具有的语义性,且具有著作权;
      其次,软件设计方案,相比传统工程学设计方案,对实现方法约束力更弱,而且在实现过程中需要实现者进行二次创造;
      最终,软件类似于文学作品的这种对于实现者智能的依赖,造成了软件危机,即生产效率很难因为大规模人力投入而提高。

 

原因阐述:

      软件开发特性:

      软件开发使用具有语义学特性的编程语言进行书写,书写结果通过翻译或者解释的方法在特定运行环境中运行,书写结果或其翻译产物、运行环境描述、操作方法描述等补充信息共同构成完整的软件。
      编程语言的语义性决定了软件源代码的著作性。
      开发人员对于编程语言和开发环境的把握能力,对软件的品质有着决定性作用。

     软件工程学与传统工程学的比较:

         以下将化学工程学(例如材料工程学)、土木工程学(例如建筑工程学)、机械工程学(例如车辆工程学)等称为“传统工程学”;传统工程学中的特殊情况后文将有额外描述(例如自动化机床和3D打印技术)。

     传统工程学:

     化学工程学(例如材料工程学)、土木工程学(例如建筑工程学)、机械工程学(例如车辆工程学)有标准化的行业通用描述方案,例如:套装图纸和拆图方案、化学公式和化学计算方案。
     传统工程学描述方案主要描述的是静态对象和静态对象的形成过程(例如加工工艺步骤)。
     传统工程学描述方案对于人机交互过程的描述较少(例如车辆说明书对于驾驶方法描述较少)。
     传统工程学的著作性体现为知识传递时使用的文献著作,例如:学科教材。
     图纸和技术方案描述文稿一般不能作为著作权,例如:图纸著作权。

      软件工程学:

     软件工程学仅在部分领域内形成了描述方案,但是尚未形成全行业通用的标准化的描述方案。
     软件工程学除了描述静态对象(例如数据结构),也会重点描述动态对象(例如排序算法)。
     软件工程学对人机交互过程描述较多(例如软件操作手册)。
     软件工程学的结果物具有很强的著作性。

     软件工程学与传统工程学关键差异:

           传统工程学描述方案对实施过程一般都有较强的约束力,实现过程一般不需要更多的语义性表达;
           软件工程学描述方案一般不对编程语言做强约束,实现过程需要根据所用编程语言进行再次语义化;

自动化机床和3D打印技术,具有典型软件工具特性。
首先,自动化机床和3D打印技术的灵活性使得产成品具有极大的动态性;
另外,自动化机床和3D打印技术输入具有相当程度的语义性的指令,进行自动化的工作,这些输入的指令很类似于软件语言。

 

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