정보처리기사/소프트웨어 설계

계약에 의한 설계(Design by Contract)

glorypang 2025. 10. 27. 23:23
728x90
반응형
SMALL

개념 한 줄 요약

계약(Contract) = 클라이언트와 컴포넌트(서비스 제공자) 사이의 명시적 약속
오퍼레이션마다 선행조건(Pre), 결과조건(Post), 불변조건(Invariant)을 명세·검증한다.

명세 구성요소

  • 선행조건 (Precondition)
    오퍼레이션 호출 전에 참이어야 할 조건.
    → 만족 책임은 호출자(클라이언트).
  • 결과조건 (Postcondition)
    오퍼레이션 종료 후 반드시 참이어야 할 결과.
    → 책임은 제공자(컴포넌트).
  • 불변조건 (Invariant)
    오퍼레이션 수행 전·후 항상 유지되어야 할 클래스/모듈의 규칙.
    → 상태 일관성 보장.

왜 쓰나 (효과)

  • 명확한 책임 분리(누가 무엇을 보장하는가)
  • 버그 조기 발견(계약 위반 지점이 즉시 드러남)
  • 변경 용이성(사양이 코드와 함께 살아 움직임)
  • 문서화 자동화(테스트 가능한 스펙)
728x90
반응형
LIST