「InfoQ」怎样才能实现软件架构的“代代相传”?


作者 | 付晓岩
软件设计面对的环境日趋复杂 。 对这种日趋复杂、难以驾驭的状况 , 很多软件人希望能有所改善 。 而标准化对提升架构设计效率和提高软件开发成功率很有裨益 。 本文探讨架构演进的另一个趋势 , 就是行业级标准化 。
软件设计面对的环境日趋复杂 。 背后原因不仅有技术发展本身带来的复杂性 , 而且也有规模增大带来的复杂性 。
从最初面向小型群体、具体领域的程序设计 , 到面向上亿用户、交叉需求的生态构建 , 软件设计似乎走上一条以复杂应对复杂的发展之路 。 我们看到 , 从方法到概念都日趋复杂 。
一开始 , 很多软件的早期版本较为清晰 , 后来逐渐走向“大泥球”模式 。 最终 , 它们“活成了我们最讨厌的样子” 。
“技术债务”成为软件生命周期中的常见问题 , 所以 , 对软件设计方法尤其是架构方法的探索始终未停 。 这些探索与软件工程方法的演进互相作用 。
对这种日趋复杂、难以驾驭的状况 , 很多软件人希望能有所改善 。 众所周知 , 标准化对提升架构设计效率和提高软件开发成功率很有裨益 。 在架构方法发展的过程中 , 关于这个方面的标准化努力也一直在缓慢推进 。 这个标准并非指软件开发标准 , 比如国内的 GB8567-88 , 而是指能直接应用于具体开发的设计参考 , 比如行业级标准化模型 。
本文探讨架构演进的另一个趋势 , 就是行业级标准化 。
1
为何行业级标准化发展缓慢?
行业级标准化之所以较难达成 , 是因为背后有许多复杂因素 。
首先 , 这是一项带有公益性质的工作 。 一旦做成功 , 大家都受益 , 但推动者的付出与其收益之间不成比例 , 要靠一定的“奉献”精神支撑 。
其次 , 标准达成需要统一众多观点 。 而这种统一并非可以强制达成 , 标准本身的建立过程就会比较缓慢 。 时间一久 , 甚至不了了之 。
最后 , 即便建立标准 , 更新维护的主体通常也难以确定和维持 , “保鲜”难度大 。
如此困难之事 , 为何今日应该重提?这又涉及另外两个原因 , 而它们却是今后软件或者数字化的发展方向 。
1. 软件在生产、生活中的基础性地位还不够
我们现在常说 , 软件、互联网改变了人类社会 , 但实际上 , 并非所有行业和生活场景都充分线上化了 。 事实是 , 大部分行业中 , 软件的基础性地位还没有达到人们通过宣传所“认为”的水平 , 并且 , 软件行业总产值也没在 GDP 中有很高占比 。
这表明 , 软件还未像工业制成品那样深入到社会的各个角落 , 软件生产也没像工业生产那样成为广泛的社会性生产 。
根据埃文斯数据公司 (Evans Data Corporation) 2019 年最新的统计数据显示 , 2018 年全球共有 2300 万软件开发人员;到 2019 年底 , 这个数字将达到 2640 万 , 而到 2023 年 , 这个数字是 2770 万 。 其中 , 它对软件开发人员的定义很广泛 , 甚至包括技术作家 。
与之相比 , 2018 年 , 世界各国青壮年和逐渐进入的劳动年龄段 (15 至 64 岁) 人口总数约为 49.6 亿(数据来源于互联网) 。 也就是说 , 无论是从行业规模还是劳动人口的数量来讲 , 软件行业仍处在上升阶段 , 还没有成为一个像农业或者工业那样可作为时代标志的行业 , 数字经济仍在发展初期 。
从这种状况 , 我们可以推想 , 多数对于行业级标准化的真实“焦虑”可能只存在于少数软件从业者心里 , 还没真正上升为企业“焦虑” , 更未成为行业“焦虑” 。
所以 , 在开发中 , 尽管我们在项目管理中反复强调一些项目级的标准化要求 , 但这些要求没有真正走出项目以外 , 没有真正成为企业级、行业级的要求 , 所以行业级标准化的进程也必然缓慢 。
但是 , 数字经济的发展速度正在加快 , 不少人认同未来的企业可能都是科技企业 。 软件会成为主要的生产工具 , 这也许会改变经济数据的统计口径 , 从而让数字经济规模得到更准确的计量 。