지난 몇 년 동안, 많은 저자들이 ... 고급 소프트웨어 아키텍처를 특징 짓는 패턴을 제시했습니다 ... 이상적인 세계에서 모든 시스템은 하나 이상의 이러한 고급 패턴의 예가 될 것입니다. 그러나 이것은 그렇지 않습니다. 실제로 실제로 우세한 아키텍처는 아직 논의되지 않았습니다 : BIG BALL OF MUD .
MUD의 BALL BALL은 우연히 구조화되고, 펼치고, 조잡하고, 덕트 테이프 및 bailing 와이어, 스파게티 코드 정글입니다. 우리는 모두 그들을 보았다. 이러한 시스템은 규제되지 않은 성장과 반복적이고 편리한 수리의 명백한 징후를 보여줍니다. 정보는 시스템의 먼 요소들 사이에서 무차별 적으로 공유되며, 거의 모든 중요한 정보가 전체적으로 복제되거나 복제되는 시점까지 공유됩니다. 시스템의 전체 구조는 잘 정의되지 않았을 수 있습니다. 그랬다면 인식을 넘어서 침식되었을 수 있습니다. 건축적인 감성의 조각을 가진 프로그래머는 이러한 혼란을 피했습니다. 건축에 대해 걱정하지 않고 아마도 실패한 제방에 구멍을 뚫는 일상적인 일의 관성에 익숙한 사람들 만 그러한 시스템에서 일하기에 만족합니다 ...
시스템이 왜 MUD BALL OF MUD가됩니까? 때때로, 추악한 시스템이 THROWAWAY CODE 에서 나옵니다 . THROWAWAY CODE는 한 번만 사용한 다음 폐기하기위한 빠르고 더러운 코드입니다. 그러나 이러한 코드는 일반적인 구조와 문서가 없거나 존재하지 않더라도 종종 자체의 수명을 갖습니다. 작동하지만 왜 고쳐야합니까? 관련 문제가 발생하면이를 해결하는 가장 빠른 방법은 처음부터 적절한 일반 프로그램을 설계하는 대신이 작업 코드를 신속하게 수정하는 것입니다. 시간이 지남에 따라 간단한 프로그램은 BUD BALL OF MUD를 낳습니다.
잘 정의 된 아키텍처를 가진 시스템조차도 구조적 침식이 발생하기 쉽습니다. 성공적인 시스템이 요구하는 변화하는 요구 사항에 대한 끊임없는 공격은 점차 그 구조를 약화시킬 수 있습니다. PIECEMEAL GROWTH 는 시스템 요소가 제어 할 수없는 방식으로 점차적 으로 퍼지면서 한때 깔끔한 시스템이 자라게되었습니다 .
그러한 찌그러짐이 계속 줄어든다면, 시스템의 구조는 심하게 손상되어 버려 져야합니다. 부패하는 이웃과 마찬가지로 하향 나선이 발생합니다. 시스템이 이해하기가 점점 어려워 지므로 유지 관리 비용이 많이 들고 더 어려워집니다. 훌륭한 프로그래머는 거기서 일하기를 거부합니다. 투자자는 자본을 인출합니다. 그러나 이웃과 마찬가지로 이러한 종류의 쇠퇴를 피하고 심지어 뒤집을 수있는 방법이 있습니다. 우주의 다른 어떤 것들과 마찬가지로, 엔트로피 힘을 대항하려면 에너지 투자가 필요합니다. 소프트웨어 gentrification 도 예외는 아닙니다. 소프트웨어에서 엔트로피를 정지시키는 방법은 소프트웨어를 리팩토링하는 것입니다. 리팩토링에 대한 지속적인 노력은 시스템이 MUD BALL OF MUD에 포함되지 못하게 할 수 있습니다.
- ... 진흙의 가장 효과적인 적 중 하나는 햇빛입니다. 복잡한 코드를 정밀 조사 화살표에 적용하면 리팩토링, 복구 및 재활을위한 단계를 설정할 수 있습니다. 코드 검토 는 코드를 일광에 노출시키는 데 사용할 수있는 메커니즘 중 하나입니다.