커맨드는 매개변수, 반환값, 동작 방식의 명세를 도메인 모델 클래스로 정의합니다. 이 명세는 작업 호출 시 충족되어야 할 선행 조건(precondition), 작업 호출 후 충족되어야 할 후행 조건(postcondition)으로 구성됩니다. 가령 createOrder() 시스템 작업의 명세는 다음과 같이 정의됩니다.
작업 |
createOrder(소비자 ID, 결제 수단, 배달 주소, 배달 시각, 음식점 ID, 주문 품목) |
반환값 |
orderId, … |
선행 조건 |
• 소비자가 존재하고 주문을 할 수 있다. • 주문 품목은 음식점의 메뉴 항목에 들어 있다. • 배달 주소/시각은 음식점에서 서비스할 수 있다. |
후행 조건 |
• 소비자 신용카드는 주문 금액만큼 승인 처리되었다. • 주문은 PENDING_ACCEPTANCE 상태로 생성되었다. |
선행 조건은 주문하기 시나리오의 전제(given)를, 후행 조건은 주문하기 시나리오의 결과(then)를 나타냅니다. 시스템 작업 호출 시 먼저 선행 조건을 확인한 후, 후행 조건을 만족시키는 액션을 수행합니다.