1 minute read

코드가 동작하기도 전에 동작을 보장하도록 노력해보자

  • 개발자(IDE 의존) 영역
    • 타입 정의
    • enum보다 인터페이스 이용
    • 정적 분석
      • IDE 활용 가능
      • 피드백: IDE의 경고
        • 대부분의 IDE에서 경고, 오류 감지
          • ex) String name = 264;
        • IDE에 따라서는 경고가 없을 수 있음, 이 경우 컴파일 타임에 분석해야 함
      • 기타 플러그인 사용
  • 컴파일러 영역
    • 정적분석
      • 피드백: 컴파일 에러
    • 컴파일러에 대해 이해도가 높을 수록 통제할 수 있는 영역이 커짐, 단 현실에서 프로젝트 참여 인원 모두가 같은 이해도를 갖기엔 시간대비 효용성이 부족해 보일 수 있음.
  • 런타임 영역
    • 동적 분석
      • 피드백: 테스트 코드를 실행시켜 커버리지를 늘림
    • 분기를 완전탐색 할 수 있도록 테스트 하면 되지만 도메인 복잡도가 증가함에 따라 테스트 개발비용과 유지비용이 증가하게 되어 결국 좋은 품질을 위한 테스트코드의 이점이 사라질 수 있음(도메인 복잡도에 의하여 복잡도가 증가한 테스트코드는 누가 테스트 할 것인가?).
영역 구분 정적 동적 구분 초기개발비용 유지보수비용
개발자 영역 정적 높음 낮음
컴파일러 영역 정적 높음 낮음
런타임 영역 동적 낮음 높음

  • 고정된 개발비용 대비 분석 구분
    • 개발비용이 같다면 정적분석이 가능하도록 구현하여 유지보수비용을 줄이는게 적절할 수 있습니다. 소프트웨어 특성상 모든 것이 변할 수 있다는 가정 자체는 변함이 없기 때문에, 고려해야 할 환경 조건이 같다면 유지보수비용을 줄여 총 비용을 줄이는 방향으로 개발하는 것이 타당할 수 있습니다.

시간이 갈수록 초기개발비용보다 유지보수비용이 점차 증가함

  • 소프트웨어 수명주기에 따른 초기개발비용과 유지보수비용
    • 소프트웨어의 수명주기가 짧다면(지속적으로 버전업이 될 필요가 없다면) 시간에 의존하지 않으므로 유지보수비용에 대해 don’t care 가 됩니다. 따라서. 런타임영역을 고려하여 개발비용을 줄이는 방향으로 프로그래밍 하는것이 적절할 수 있습니다.
    • 주기적인 버전업, 유지보수가 필요한 경우는 시간이 지남에 따라 유지보수비용이 소모됨에 따라 초기개발비용보다 낮은 유지보수비용에 초점을 맞추어 개발하는 것이 적절할 수 있습니다.

Tags:

Updated: