소프트웨어 시스템은 이해관계자에게 행위와 아키텍처를 제공한다. 행위 이해관계자가 요구한 내용을 만족하는 코드를 작성하는 것을 행위라고 한다. 요약하자면 행위는 기능이다. 이들은 요구사항을 기계에 구현하고 버그를 수정하는 일이 자신의 직업이라고 믿는다. 슬픈 일이지만 그들은 틀렸다. 아키텍처 소프트웨어는 부드러운 제품이다. 언제나 변경이 가능하고 유연해야 한다. 소프트웨어 개발 비용 증가는 변경사항의 범위에 달려있는데, 변경사항이 클수록, 시간이 오래 지날수록 개발 비용은 증가한다. 아키텍처는 변경하기 어려운 부분. 소프트웨어 큰 틀이라고 이해할 수 있다. 문제는 당연히 시스템 아키텍처다. 아키텍처가 특정 형태를 다른 형태보다 선호하면 할수록, 새로운 기능을 이 구조에 맞추는 게 더 힘들어진다. 따라서 아..
아키텍처
목표 좋은 소프트웨어 설계 목표는 필요한 시스템을 만들고 유지보수하는데 최소한의 비용과 인력이 투입되는 것이다. 만약 새로운 기능이 추가되는데 점점 더 많은 인력 또는 비용과 시간이 필요하다면 무언가 잘못되고 있는 것이다. 사례 연구 엉망진창이 되어 가는 신호 시스템을 급하게 만드는 것 코드와 설계의 구조를 깔끔하게 만들려는 생각을 전혀 하지 않을 경우 무엇이 잘못되었나? 현대의 개발자도 이와 비슷한 경주를 하며, 토끼와 유사한 과신을 드러낸다. 물론 개발자가 잠을 자는 것은 아니다. 오히려 정반대다. 현대의 대다수 개발자는 뼈 빠지게 일한다. 하지만 그들의 뇌는 잠에 취해 있다. 훌륭하고 깔끔하게 잘 설계된 코드가 중요하다는 사실을 알고 있는 바로 그 뇌가 잠자고 있다. 시장에 출시하는 것이 먼저니까 ..