偶然复杂度(Accidental complexity)是指计算机软件开发过程中所引入不必要的复杂度。偶然复杂度不是待求解问题的本质,相对而言, 本质复杂度和待求解问题的本质有关,是无法避免的。偶然复杂度一般是因为选用求解问题的方法时所引入的。有时偶然复杂度可以归因于像无效的规划等错误,不过有时偶然复杂度是求解问题时伴随产生的副作用。例如因为内存用完而产生的复杂度是一种偶然复杂度,但只要决定使用计算机求解问题,就会存在这种复杂度。好的软件架构、设计及实现可以将偶然复杂度降到最低,过多的偶然复杂度是一个反面模式的例子。复杂度是软件系统客观存在的属性,与软件系统组成元素,种类,数量,状态有关,同时元素之间互动,信息交换的频度有关。这些是系统本身的复杂度,而系统的实现映射到计算机里面,也会带来偶然的复杂度。偶然复杂度是指随着软件开发过程中引入的偶然的、任意的、附属的以及非必要的复杂度。偶然复杂度具有无序性、不确定性、非常规性、随机等特点。降低偶然复杂度需要做好软件架构设计和通过软件项目管理,降低软件开发的干扰。