Нусмв состояния и переходы - PullRequest
1 голос
/ 30 мая 2019

Я хочу сформулировать эту проблему в NuSMv: enter image description here

  • Пользователь может находиться в одном из этих трех состояний: U-потребность, U-использование, U-sad (представляющий пользователя, которому нужна услуга, начинает использовать, и он / она доволен качеством этого или он начинает пользоваться, и ему / ей грустно из-за плохого качества его обслуживания соответственно.

  • Услуга может находиться в одном из следующих трех состояний: S-предложение, S-хорошо, S-плохо; ; (представляет сервис, который не используется, сервис, предлагающий хорошее качество или услуга, предлагающая плохое качество соответственно).

  • Набор событий: поиск, использование, остановка, мониторинг, обнаружение-p, лекарство-p, представляющее поиск службы, начало использования службы, прекращение использования службы, мониторинг качества, обнаружение проблемы в службу и устранить проблему соответственно.

  • это мой код SMV:

     MODULE main
     VAR
    
    
     Service: {S-offer,S-good,S-bad};
     User:{U-need,U-using,U-sad};
     Event:{look,use,stop,monitor,detect-p,remedy-p};
    
      ASSIGN
    
          init(Event) := look; 
          init(User) := U-need;
          init(Service) := {S-offer,S-good};
    
    
        next(Event) := case
    
        (Event = look) &  (Service=S-offer) : look;
        (Event = look) &  (Service=S-good) : use;
        (Event = use) &  (Service=S-good) : monitor;
        (Event = monitor) &  (Service=S-good) : {monitor,stop,detect-p};
        (Event = detect-p)  : remedy-p;
        (Event = remedy-p)  : monitor;
    
        TRUE:Event;
    
                 esac;
    
    
        next(User) := case
    
        (Event = look) &  next(Event)=look : U-need;
        (Event = look) &  next(Event)=use : U-using;
        (Event = use) &  next(Event)=monitor : U-using;
        (Event = monitor) &  next(Event)=monitor : U-using;
        (Event = monitor) &  next(Event)=stop : U-need;
        (Event = monitor) &  next(Event)=detect-p : U-sad;
        (Event = detect-p ) &  next(Event)=remedy-p :  U-using; 
    
                    TRUE:User;
    
                 esac;
          next(Service) := case
    
        (Event = look) &  next(Event)=look : S-offer;
        (Event = look) &  next(Event)=use : S-good;
        (Event = use) &  next(Event)=monitor : S-good;
        (Event = monitor) &  next(Event)=monitor : S-good;
        (Event = monitor) &  next(Event)=stop : S-offer;
        (Event = monitor) &  next(Event)=detect-p : S-bad;
        (Event = detect-p ) &  next(Event)=remedy-p :  S-good; 
    
                    TRUE:Service;
    
                 esac;
    

-Я хочу подтвердить, что этот код представляет проблему, которую я описал выше - Я представляю как события, так и состояния служб и пользователей как переменные, это правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...