4、软件复杂性应对与混沌工程实践

软件复杂性应对与混沌工程实践

1. 软件复杂性的类型与特点

1.1 偶然复杂性

偶然复杂性是软件开发过程中难以避免的。目前,没有已知的可持续方法来降低它。虽然可以通过暂停新功能开发,对之前编写的软件进行重构来降低偶然复杂性,但这存在问题。因为编写代码时所做的妥协与重构时的妥协并无本质区别,而且世界在变化,我们对软件行为的期望也在改变。编写新软件来降低偶然复杂性往往会产生新形式的偶然复杂性,这些新形式可能在一段时间内更易接受,但可接受性也会很快过期。大型重构还常受到“第二系统效应”的影响,后续项目本应因首个项目的经验而更好,但往往变得更大、更复杂。此外,降低偶然复杂性的方法都不可持续,因为它们需要将时间和注意力等有限资源从新功能开发中转移出来,这与组织的发展优先级相冲突。所以,作为编写代码的副产品,偶然复杂性会不断累积。

1.2 本质复杂性

本质复杂性是软件中为实现特定功能而有意增加的额外开销。软件工程师编写新功能会使软件变得更复杂。例如,一个简单的内存键值数据库,若要提高其可用性,可采取多种措施,如将其放入云端、添加多个节点实现冗余、使用一致性哈希分布数据、将数据持久化到磁盘、在不同区域复制集群等。但要同时提高其可用性和简化它是几乎不可能的。添加新功能(或安全性属性,如可用性和安全性)必然会增加软件的复杂性。综合来看,用简单系统替代复杂系统的前景并不乐观,因为偶然复杂性会随工作不断累积,本质复杂性会由新功能驱动,软件要取得进展,复杂性就会增加。

2. 应对软件复杂性的策略

2.1 拥抱复杂性

既然复杂性会导致不良结果且无法消除,那么应采取两步策略。第一步是拥抱复杂性而非回避它。软件中我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值