仓库源文

.. Kenneth Lee 版权所有 2016-2020

:Authors: Kenneth Lee :Version: 1.0

使用软件的四种方法


我们不少人都在写程序,身边不少写程序的人对构架设计不以为然,他们认为没有架构设 计,他们仍然做出了不错的软件,为了让这样的人理解这个问题,我要建立一个“使用软件 ”的概念空间。

软件有四种使用方法:

第一种,在看不见软件的情况下使用软件。比如电梯,你按下一个键,电梯决定向什么方 向走,这背后其实由软件控制着,这是使用软件的第一种方法,你感知不到软件,但软件 在为你提供服务。

第二种,在看得见软件的情况下使用软件,比如Office,你知道你自己面对着一个软件( 比如Word),然后你基于这个软件提供的UI来使用这个软件。

第三种,通过写软件来使用软件,比如Unix系统的维护,你写bash脚本,写Python脚本, 或者在Windows下你写PowerShell脚本,来维护Unix或者Windows操作系统。这种情况下, 你也是在写软件,但操作系统本身不是你写的,你仍是在使用这个软件。

最后一种,通过修改软件来使用软件,比如开源软件,或者芯片套片提供商的SDK。你在开 发这个软件本身,但其实你并非在建立这个软件,你仍在使用这个软件。我看到一些云提 供商使用Linux,他们OS团队不过区区十几人,这些人在干什么呢?他们的工作其实并非在 开发Linux,他们的工作是负责把Linux中他们用不上的流程统统打上Shortcut,这样,他 们的解决方案就会比别人更有竞争力,所以虽然他们也在修改代码,但这种修改和通过修 改配置文件来配置目标软件没有任何区别,这仍是一种“使用软件”。

使用软件并非开发软件,在中国,真的“开发”软件的公司是很少的,很多不过是在“使用” 软件。使用软件你成功了,然后你以为那是你的本事,然后你总觉得这些经验也可以指导 你做这个操作系统,那个数据库,还对构架设计方法不屑一顾,这就是你们为什么总不能 开发出这些看来技术上已经没有任何障碍的东西来。

架构设计,控制的是软件没有成长起来之前,如何保证现有的投资先可以养活未成气候的 软件,以及软件成长起来后,如果控制它自己不会被自己的逻辑挤死。所以,如何保持软 件的活性就是软件构架的第一步,这都要有意识地进行控制,不懂这种控制,如果没有遇 到竞争,一般软件都还可以活下去(因为毕竟死了也可以回退到前面的版本,或者针对场 景进行分支处理),但如果面对强有力的竞争,它就活不下去了,就会走向灭亡。这种时 候,我们才会真正体会到软件架构的重要性。