软件和未来的发展趋势

1) 为什么软件需要如此长的开发时间

2) 为什么开发成本居高不下

3) 为什么将软件交付客户使用之前,我们无法找出所有的错误

4) 为什么维护已有的程序需要花费高昂的时间和人力代价?

5) 为什么软件开发和维护的过程仍旧难以度量

6) 为什么大部分公司或个人,依然满足于疲于奔命的现状

而解决这些问题的“道”和“术”,就需要深入去研究软件以及软件开发过程。一方面,需要一套可以解决实际问题的理论体系和可落地的实践方法;另一方面,需要公司从上到下的思想意识的转变,软件产品研发过程不仅仅只是代码的编写,要构建有竞争力的软件产品,需要借助成熟的软件工程理论和方法,以及无数的实践经验和模式。只有站在前辈和巨人的肩膀上,才能走得更快、更好、更远。

软件及未来的发展趋势

什么是软件,按照百度百科的描述“是一系列按照特定顺序组织的计算机数据和指令的集合”。而且特别强调软件不仅仅指计算机上运行的电脑程序,也包括相关的文档。在本书中把软件定义拆分为3个关键点:1)指令的集合;2)数据结构;3)软件描述信息。

软件存在的价值就是可以满足人类(用户)的实际需要,如控制硬件、处理文档等,而最终一定是通过特定的“实体”体现出来的。这个“实体”绝对多数时候是指硬件实体,但随着技术的进步,也可以通过类似波的方式去直接与大脑交互,但深入分析,特定波的产生也是通过硬件去控制和产生的。所以,依然可以归结到软件通过控制硬件对用户产生实际效果。其他类似数据分析,数据处理等软件,最终数据的显示或打印等人类可见形式提供用户决策能力。越是涉及复杂数据流或业务流的系统,软件处理路径就越长,系统复杂度就越高,而对用户产生影响的硬件(比如显示数据的显示器或大屏)反而表现的标准和简单。

1) 系统软件:一整套服务于其他程序的程序。

2) 应用软件:解决特定业务需要的独立应用程序。

3) 工程/科学软件:带有“数值计算”算法特征类的程序。

4) 嵌入式软件:嵌入某个产品或系统中,实现和控制面向最终使用者和系统本身的特性和功能。

5) 产品线软件:为多个不同用户的使用提供特定功能。

6) Web应用软件:以 络为中心的软件,可以以SaaS方式存在。

7) 人工智能软件:利用非数值算法解决计算和直接分析无法解决的复杂问题。

我个人更加喜欢从软件系统或模块的层次位置或功能去归类,

1) 系统及平台软件:支撑其他软件运行的软件,偏向于资源分配和调度的功能。比如,操作系统,K8S平台,大数据平台。

2) 中间件软件:为应用提供特定功能的软件,可以独立的部署和运行。比如,数据库,消息队列,鉴权系统,人工智能服务。

3) 模块软件:为构建应用提供相关的框架或功能,不可独立的部署和运行。比如,Spring,Http通信库,JDBC驱动。

4) 应用软件:提供满足业务需求功能的软件。比如,Word,ERP,门户 站。

从这个角度去看软件,后续软件的三大趋势是:

1)系统软件归一化,比如,操作系统归一到Linux,资源调度系统归一到K8S。

2)构建丰富的中间件软件和模块软件,将更多软件应用层相似功能沉淀到中间软件或模块软件。

3)对应用层功能进行更细粒度的分解,将更多业务功能封装成细粒度可复用的模块,通过积木式的方式(最好是非编程方式,可视化拖拽效果更佳),按照业务需求快速搭建应用系统

总之,让应用软件的开发或构建,可以实现像硬件一样,根据业务功能进行系统、中间件或模块的选型,并通过快速的组合完成软件构建。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月9日
下一篇 2022年1月9日

相关推荐