TIL

두 가지 가치에 대한 이야기

소프트웨어의 두 가지 가치

소프트웨어의 첫 번째 가치는 바로 ‘행위’(behavior)다. 프로그래머는 기능 명세서나 요구사항 문서를 구체화하고 기계가 일을 하도록 코드를 작성한다.

많은 프로그래머가 이러한 활동이 자신이 해야 햘 일의 전부라고 생각한다.

소프트웨어의 두 번째 가치는 ‘구조’(structure)이다. ‘software’는 부드러운(soft) 제품(ware)라는 뜻이다. 소프트웨어는 행위를 변경할 일이 있더라도 그 과정이 부드러워야 한다. 변경 사항을 적용하는 게 어렵다면 hardware라고 불렸을 것이다.

이러한 변경 사항을 적용하는 데 드는 어려움은 변경되는 범위에 비례해야 하며 변경 사항의 형태와는 관련이 없어야 한다.

소프트웨어 개발 비용의 증가를 결정 짓는 주된 원인은 바로 변경 사항의 범위와 형태의 차이에 있다. 시스템에 새로운 요구 사항이나 변경된 요구 사항은 변경 사항의 범위를 제시하지만, 개발자는 변경 사항을 적용하는 데 어려움을 겪는데 이는 시스템의 형태와 요구 사항의 형태가 맞지 않기 때문이다.

따라서 아키텍처는 형태에 독립적이어야 하고 그럴수록 더 실용적이다.

아키텍처를 위해 투쟁하라

기능의 긴급성이 아닌 아키텍처의 중요성을 설득하는 일은 소프트웨어 개발팀이 마땅히 책임져야 한다. 소프트웨어 개발자인 우리도 시스템의 이해관계자이며 소프트웨어를 안전하게 보호할 책임이 있다.

아키텍처가 후순위가 되면 시스템을 개발하는 비용이 더 들고, 시스템의 변경이 현실적으로 불가능해진다. 이런 상황이 발생했다면 개발팀이 충분히 투쟁하지 않았다는 뜻이다.