Contract®의 디자인이란 무엇입니까?
Design by Contract®는 프로그램의 모든 부분에 대해 잘 정의 된 인터페이스 매개 변수 또는 계약 설정에 의존하는 소프트웨어를 개발하는 데 사용되는 방법입니다. Design by Contract®는 문서화 또는 모델링을 통해 구현되는 개념적 개발 스타일로 볼 수 있지만 실제로는 계약 내재적 계약의 암시 적 코딩이 필요한 일부 프로그래밍 언어 내에서 기본 또는 타사 메커니즘을 나타내는 데 더 널리 사용됩니다. 프로그램. Design by Contract®를 사용하는 목표는 프로그램이 개발되고 결국보다 사소한 오류를 제거하는 훨씬 더 완전한 방식으로 코딩되며, 지원 언어로 계약을 시행하면 잔여 오류를 쉽게 발견하고 캡처 할 수 있다는 것입니다. 함수와 클래스에 대한 계약을 사용하는 프로그램은 계약의 명확한 정의로 인해 다른 프로그램에서 개별 클래스를 쉽게 재사용 할 수있는 더 모듈화 된 설계를 가질 수 있습니다.
Design by Contract® 프로그래밍 철학의 기본은 실제 비즈니스 계약 개념입니다. 이 모델에서 객체 지향 프로그램의 각 메소드와 클래스는 상호 작용하는 다른 메소드 나 객체가 준수해야하는 계약을 정의합니다. 또한 각 클래스에는 클래스 불변 인이라고하는 계약이있을 수 있으며, 외부 계약이 기능을 손상시키지 않도록 내부적으로 따라야합니다.
디자인 및 코딩 중에 가장 중요한 계약의 두 부분은 전제 조건과 사후 조건입니다. Design by Contract® 모델의이 두 부분은 메소드가 호출되기 전에 프로그램의 상태와 메소드 실행이 완료된 후의 프로그램 상태를 정의합니다. 계약의 다른 부분은 구현에 따라 다를 수 있지만 다른 모듈에 대한 상호 참조, 동기화 조건 및 실행 순서 요구 사항이 포함될 수 있습니다.
각 클래스와 방법에 대한 계약을 개발함으로써 프로그램의 다른 부분의 상호 작용을 쉽게 매핑하고 예측할 수 있습니다. 어설 션 또는 기타 메커니즘을 사용하여 계약을 시행하면 계약 위반시 프로그램이 실행을 시도하지 않도록 보장 할 수 있습니다. 해당 상태에서 생성 된 출력은 기술적으로 유효하지 않기 때문입니다. 기본 언어 기능으로 구현 된 Design by Contract®는 예기치 않은 오류가 거의 발생하지 않으면 서 최종 제품이 예상대로 작동하도록 보장 할 수 있습니다.
Design by Contract® 철학을 사용하여 발생하는 일부 복잡한 문제는 코딩이 시작되기 전에 더 긴 설계 시간과보다 세분화 된 시스템 개발을 포함하며, 때로는 대규모 프로젝트에서는 어려울 수 있습니다. 보다 실질적으로 계약을 기본적으로 지원하는 프로그래밍 언어에서 사용되는 계약 유효성 검사 메커니즘은 프로그램 실행 속도를 늦출 수 있습니다. Design by Contract® 방법론을 제대로 이해하지 못하면 계약을 사용하여 기본 오류 검사를 수행하는 프로그램이 생길 수 있으며 이로 인해 릴리스 후 갑자기 충돌이 발생하기 쉬운 응용 프로그램이 발생할 수 있습니다.