互联网的进步迅速,软件的构造逐渐从简单变得繁复,遭遇了许多新的挑战。我们该如何面对这些变化?接下来,让我们共同讨论一下。
业务演变之繁
电商起初业务清晰,但后来演变为复杂的经济体系,业务范围变得模糊不清。以阿里巴巴为例,其业务持续扩张,新增业务难以预料。系统规模也从最初的一个扩展至上万个,逻辑错综复杂。淘宝从单纯的购物平台,发展到集金融、物流等多功能于一体的综合性平台,各个系统之间的关系错综复杂。
发布要求之变
过去软件停机也能更新,可如今它已成为社会运行的基础,必须保证不间断、持续进步。金融交易软件一旦停机更新,可能会引起交易秩序混乱,所以不仅需要系统稳定,还得确保业务不间断,否则会对用户和企业造成损失。
互联网服务优势
在互联网时代,软件扮演了至关重要的角色,它借助计算机的力量完成了人力难以达成的工作,比如在线支付,为大众带来了前所未有的服务。然而,这种模式存在不足,为了迅速满足需求,频繁地修补漏洞,却使得软件的架构迅速老化。
产品化设计思路
通过模型抽象化及配置能力的增强,我们提高了工作效率,实现了产品化。自五彩石项目起,阿里巴巴便以此理念为基础进行架构设计和持续优化。其电商平台推广活动的配置系统,能够迅速适应各种促销需求,适用于多样化的业务场景。
插件技术剥离
插件技术把繁杂多变的逻辑从主流程中分离出来,加以拓展。以电商平台的应用为例,比如购物车、收藏夹等,都可以以插件的形式存在。这样做便于后续功能的增加和调整,同时不会对主流程的稳定运行造成影响。
应对不确定性挑战
当前软件研发遇到的是确定性的难题,虽然需求有明确的范围可以进行抽象建模,但阿里的业务却缺乏明确的界限,它持续地发展和变化。因此,软件工程需要从关注外部边界转向关注内部核心,就像深度学习不设定具体问题领域,只确保结构稳定,软件工程同样需要锁定一个稳定的内核。从逻辑推理的角度来看,传统方法主要依赖归纳法,但在面对不确定的领域,应该以演绎法为主,归纳法为辅。
依据抽象归纳原理构建的软件系统,随着业务不断扩展,需要添加越来越多的补丁,最终可能面临被完全重建的命运。业务的实现依赖于数据在组件系统中的流转。因此,我们应当回归到业务的根本,采用对象化的设计方法,使业务能够持续成长、继承和演变。这样,新业务既能独立发展,又能遵守核心规则。
你认为现在软件设计如何最好地应对未知情况?欢迎在评论区发表你的看法。同时,别忘了点赞并转发这篇文章!