요구사항을 상태 차트 코드에 주석으로 포함

상태 차트에 특정 상태나 상태 전이가 충족시키는 요구사항이 있는 경우, 이러한 요구사항을 상태 차트에 대해 생성된 코드에 주석으로 포함시킬 수 있습니다.

시작하기 전에

이 기능은 C, C++ 또는 Java 코드에 사용할 수 있습니다.
주: 이 기능은 일반 상태 차트 구현에만 적용됩니다.

프로시저

요구사항을 상태 차트 코드에 주석으로 포함시키려면 다음을 수행하십시오.

  1. 브라우저에서 요소 아래 요구사항을 작성하고, "추적" 종속성을 작성하거나 앵커를 사용하여 요구사항을 요소에 연결함으로써 요구사항을 상태 또는 상태 전이와 연관시키십시오.
  2. 관련 구성의 기능 창을 열고 설정 탭에서 '요구사항을 코드에 주석으로 포함' 옵션을 선택했는지 확인하십시오. (이 설정은 CG::Configuration::IncludeRequirementsAsComments 특성 값을 제어합니다.)
  3. 코드를 생성하십시오.

결과

다음은 특정 상태와 연관된 요구사항에 대한 주석을 포함하여 상태에 대해 생성된 코드와 샘플 상태 차트입니다.

IOxfReactive::TakeEventStatus Printer::rootState_processEvent() {
    IOxfReactive::TakeEventStatus res = eventNotConsumed;
    switch (rootState_active) {
        case Idle:
        {
            if(IS_EVENT_TYPE_OF(OMNullEventId))
                {
                    popNullTransition();
                    pushNullTransition();
                    rootState_subState = GettingPaper;
                    rootState_active = GettingPaper;
                    /*
                    state GettingPaper
                    Realizes requirement Printer must be able to load paper for printing #:
                    
                    */
                    
                    //#[ state ROOT.GettingPaper.(Entry) 
                    getPaper();
                    //#]
                    res = eventConsumed;
                }
            
        }
        break;
        case GettingPaper:
        {
            if(IS_EVENT_TYPE_OF(OMNullEventId))
                {
                    popNullTransition();
                    pushNullTransition();
                    rootState_subState = Printing;
                    rootState_active = Printing;
                    /*
                    state Printing
                    Realizes requirement Printer must be able to print the received data after paper is loaded #:
                    
                    */
                    
                    //#[ state ROOT.Printing.(Entry) 
                    print();
                    //#]
                    res = eventConsumed;
                }
            
        }
        break;
        case Printing:
        {
            if(IS_EVENT_TYPE_OF(OMNullEventId))
                {
                    popNullTransition();
                    pushNullTransition();
                    rootState_subState = Idle;
                    rootState_active = Idle;
                    res = eventConsumed;
                }
            
        }
        break;
        default:
            break;
    }
    return res;
}

피드백