의료와 수송, 발전 등 복잡한 시스템에선 큰 문제가 발생할 수 있다. 복잡한 시스템에서 오류가 발생하기 쉬운 이유에 대해 시카고의대 리처드 쿡 교수가 정리한 내용이 있어 눈길을 끈다.
보통 복잡한 시스템 내 큰 장애는 여러 작은 결함이 겹쳐 발생한다. 하지만 쿡 교수는 이런 문제를 완전히 없애는 건 불가능하다고 말한다. 시스템을 설계할 때에는 한정된 시간 속에서 요구 조건을 충족하는 시스템을 설계하는 걸 요구한다. 따라서 눈에 띄는 장애를 일으킬 큰 결함은 설계 단계에서 제거할 수 있지만 눈에 띄는 장애를 일으키지 않는 작은 결함은 시스템에 계속 남는다. 이런 작은 결함을 제거하려면 오랜 시간과 많은 비용이 필요하다.
또 복잡한 시스템은 시스템 일부가 완전히 작동하지 않아도 작동하도록 중복성을 갖게 설계한다. 따라서 작은 장애가 발생해도 정상 작동하는 것처럼 보이기 때문에 작은 결함을 발견하는 건 상당히 어렵다.
또 작은 문제로 인해 초래된 큰 장애는 장애 발생 이후 대응에도 문제가 발생한다. 예를 들어 큰 장애가 여러 작은 결함에 의해 발생했음에도 엔지니어는 근본 원인을 탐구하지 않는다. 돌이켜 보면 이런 장애가 사전에 예상할 수 있었을 것이라는 생각도 버그 수정에 방해가 되고 있다.
결국 시스템 설계자는 실제 문제를 접할 기회를 늘려 복잡한 시스템 결함을 적절하게 수정해야 결함을 줄일 수 있다는 설명이다. 관련 내용은 이곳에서 확인할 수 있다.