Part 3 이론

Part 3 이론

  • 언제 소프트웨어 설계 결정을 시작해야 하는가?
  • 언제 소프트웨어 걸계 결정을 중단하고 시스템의 동작을 변경해야 하는가?
  • 다음 결정은 어떻게 내릴것인가?

Chapter 22 요소들을 유익하게 관계 맺는 일

  • 소프트웨어 설계는 인간관계 속에서 벌어지는 활동
  • 요소
    • 요소에는 경계가 있다
    • 계층 구조
  • 관계 맺기
    • 호출하고/호출받는 관계
    • 호출
    • 발행
    • 대기
    • 참조
  • 유익하게
    • 시스템에는 필요하지만 기계를 위한 명령어가 아닌 일종의 중간 요소를 만들면 그 중간 요소들이 서로에게 도움이 되기 시작
  • 요소들을 유익하게 관계 맺는 일
    • 설계란? 구성하는 요소들과 그들의 관계 그리고 그 관계에서 파생되는 이점이 바로 설계
  • 시스템 구조
    • 요소 계층 구조
    • 요소 사이의 관계
    • 이러한 관계가 만들어내는 이점

Chapter 23 구조와 동작

  • 소프트웨어의 가치를 만드는 두가지 방식
    • 현재 소프트웨어가 하는 일
    • 미래에 새로운 일을 시킬수 있는 가능성
  • 동작을 규정하는 방식
    • 입출력 쌍
    • 불변 조건
  • 동작은 가치를 만든다
  • 더나은 기계에 도달하는 방법
    • 선택 가능성 (옵션)
  • 옵션의 멋진점
    • 환경의 변동성이 클수록 옵션의 가치가 더 커진다
  • 선택 가능성을 앗아가는 요소?
    • 핵심 직원의 퇴사
    • 고객과 거리가 멀어진다
    • 변경에 따른 비용이 치솟는다
  • 구조 변경과 동작 변경은 모두 가치를 만들어낸다
  • 동작의 문제는 바로 드러나지만 구조의 문제는 잘 드러나지 않는다
  • 동작 변경과 구조 변경의 차이점 가역성

Chapter 24 경제 이론: 시간 가치와 선택 가능성

  • 돈의 본성

    • 오늘의 1달러가 내일의 1달러보다 더 가치가 있기 때문에 버는 것은 빨리하고 쓰는 것은 가능한 뒤로 미룬다
    • 혼란스러운 상황에서는 어떤 물건에 대한 옵션이 물건 자체보다 낫기 때문에 불확실성에 맞서는 옵션을 만든다
  • 순현재 가치(Net present value)

  • 옵션 그릭스(option greeks)

Chapter 25 오늘의 1달러가 내일의 1달러보다 크다

  • 많고 적음의 의미? 돈에 대해선 아래의 두가지에 달림
    • 시점
    • 확실성
  • 돈의 시간 가치는 코드 정리를 먼저 하기보다는 나중에 하는것을 권장

Chapter 26 옵션

  • 옵션은 선택 가능성을 뜻한다
  • 가치에 대한 예측이 불확실할수록 바로 구현하는 것보다 옵션이 지닌 가치가 더 커진다

Chapter 27 옵션과 현금흐름 비교

  • 비용(코드정리) + 비용(코드 정리 후 동작 변경) < 비용(바로 동작 변경)
  • 자기 관리로서의 코드 정리는 어느정도 정당화 될수 있다

Chapter 28 되돌릴 수 있는 구조 변경

  • 구조 변경은 대체로 되돌리수 있다
  • 동작 변경은 되돌리기 어렵다
  • 결정을 되돌릴수 있게 만드는것이 중요하다

Chapter 29 결합도

  • 변경 감염 특성을 결합도라고 한다
    • 한 요소를 변경하면 다른 요소도 함께 변경해야 하는 경우 두 요소는 특정 변경과 관련하여 서로 결합되어 있는것
  • 결합도 분석은 단순히 소스코드를 보는것만으로 부족
    • 하나의 커밋에서 어떤 파일이 쌍으로 나타나는 경향확인
  • 경합도(종속성)의 두가지 성질
    • 일대다
    • 연쇄작용
  • 결합도는 소프트웨어 비용을 좌우한다

Chapter 30 콘스탄틴의 등가성

  • 소프트웨어 개발 비용의 70%가 유지보수에 들어간다
  • 시스템의 가치는 어제의 추측이 아닌 오늘의 현실에서 드러난다
  • 콘스탄틴의 등가성

Chapter 31 결합도와 결합도 제거

  • 결합도는 잘 보이지 않는다
  • 동작 변경하려다가 알아차린다
  • 결합도가 있어야 하는 이유
    • 방금전 까지 문제가 되지 않았다
  • 한 종류의 코드 변경에 대한 결합도를 줄일수록 다른 종류의 코드 변경에 대한 결합도가 커진다

Chapter 32 응집도

  • 결합된 요소들은 둘을 포함하는 같은 요소의 하위 요소여야 한다
  • 결합되지 않은 요소는 이 더미가 아닌 다른 곳으로 이동해야 된다

Chapter 33 결론

  • 비용
  • 수익
  • 결합도
  • 응집도

참조