Chapter 23 구조와 동작
- 소프트웨어는 두 방식으로 가치를 만든다.
- 현재 소프트웨어가 하는 일
- 미래에 새로운 일을 시킬 수 있는 가능성
동작을 규정하는 방식
- 입출력 쌍
- ex) 이 정도 시급과 근무 시간이면, 세율을 고려할 때 급여와 세금 신고액은 다음과 같다.
- 불변 조건
- ex) 정부가 제공하는 모든 재정 지원 혜택 합계는 모든 공제액 합계와 같아야 한다.
동작의 가치
- 동작은 가치를 만든다
- 소프트웨어를 실행하는 데 1달러의 전기료가 들고 이용자들에게 10달러를 청구할 수 있다면 비즈니스가 성립하는 것
- 이론상 비즈니스는 영원히 운영될 수 있지만 모든 것은 변한다.
- 더 나은 소프트웨어가 되려면 어떻게 해야할까?
- 10달러를 넣을 때마다 100달러를 내놓는 기계로 하려면?
- 시스템을 더 가치 있게 만들기 위해서 굳이 시스템의 동작을 바꿀 필요가 없다.
- “선택 가능성”
- 1달러-당-10달러 기계에 얼마를 쓰든 10달러-당-100달러 또는 1달러-당-20달러 시스템이 될 수 있는 가능성이 있는 것에 더 많은 돈을 지불할 것이다.
- 다음에 무엇을 할 수 있는지에 대해 선택할 수 있는 기회를 만들면 이미 돈을 번 것
- 선택 가능성이 줄어들면 소프트웨어가 만드는 가치도 줄어든다.
- 옵션은 소프트웨어로 만들어내는 경제적인 마법이며 확장할 기회를 만든다.
- 환경의 변동성이 클수록 옵션의 가치는 더 커진다.
- 옵션을 통해 선택 가능성을 늘릴 필요가 있다.
- 선택 가능성을 앗아가는 요소는 아래의 예가 있다.
- 핵심 직원의 퇴사 (생산력 저하)
- 고객과 거리가 멀어짐
- 변경에 따른 비용 증가
시스템 구조와 기회
- 시스템의 구조는 동작에 영향을 미치지 않지만 미래의 기회를 만든다.
- 문제는 구조가 동작처럼 또렷하게 드러나지 않는다는 사실이다.
- 선택 가능성을 유지하고 확장하기 위해 구조를 개선해야 하지만 실제 개선했는지 여부는 알 수 없다.
- 코드가 더 변경하기 쉬워졌다고 확신할 수 있는가?
- 구조 변경과 동작 변경은 모두 가치를 만들어내지만 근본은 다르다.
- 한 마디로 “가역성” 즉 되돌릴 수 있는 능력이다.