Project

General

Profile

Actions

Task #4920

closed

[efsm][engine] Базовый инструмент для работы с EfsmModel

Added by Alexander Kamkin over 10 years ago. Updated over 10 years ago.

Status:
Closed
Priority:
Normal
Category:
-
Target version:
Start date:
05/13/2014
Due date:
% Done:

0%

Estimated time:
Detected in build:
svn
Published in build:

Description

Требуется разработать базовый класс для всех инструментов, работающих с EfsmModel - EfsmEngine (наследние ru.ispras.retrascope.basis.Engine).
Параметры тип выходных данных (EntityType) и визитор (EfsmVisitor).

Actions #1

Updated by Igor Melnichenko over 10 years ago

Не совсем понял. Чем он будет отличаться от класса Engine, учитывая, что у двух предполагаемых наследников EfsmEngin'а (симулятор и генератор) не совпадают ни входные, ни выходные типы? И зачем этим двум классам посетитель?

Actions #2

Updated by Sergey Smolov over 10 years ago

Насколько я понимаю, EfsmEngine (по аналогии с CfgEngine) - это обертка вокруг Efsm-обходчика (walker). Задача класса EfsmEngine - запустить пару "обходчик и визитор" на EfsmModel. Обходчик, соответственно, посещает все узлы EfsmModel и в каждом узле вызывает соответствующий метод визитора. Что в каждом узле делает визитор - это уже его дело.

Я не думаю, что симулятор и генератор тестов обязательно будут наследниками EfsmEngine. А вот компонент, реализующий отрисовку EfsmModel в каком-нибудь графическом формате (GraphViz, GraphMl) очень удобно делать в виде визитора EfsmModel.

Actions #3

Updated by Igor Melnichenko over 10 years ago

Картина проясняется. Тогда у меня вопрос, чем EfsmEngine будет отличаться от EfsmWalker'а :)

Actions #4

Updated by Sergey Smolov over 10 years ago

EfsmEngine создаст объект визитора и запустит на конкретном объекте Entity.

В общем, сделает все то же самое, что и ru.ispras.retrascope.engine.cfg.CfgEngine (с точностью до типов и пр.)

Рекомендую посмотреть код указанного класса и все станет понятно.

ru/ispras/retrascope/engine/cfg/printer/graphml/CfgGraphMlPrinter.java - его наследник, который умеет печатать control flow graph в формате GraphML

Actions #5

Updated by Igor Melnichenko over 10 years ago

Да, действительно стало. Спасибо :)

Actions #6

Updated by Igor Melnichenko over 10 years ago

  • Status changed from New to Resolved
  • Assignee changed from Igor Melnichenko to Alexander Kamkin

Готово.

Actions #7

Updated by Sergey Smolov over 10 years ago

А закоммитить?:-)

Actions #8

Updated by Sergey Smolov over 10 years ago

Маленькое замечание: имена для EntityType мы пишем с маленькой буквы и через дефис. Это больше соответствует духу консольных приложений, чьи возможности Retrascope реализует и будет реализовывать впредь:-)

Т.е. не "EFSM model", а "efsm", или, на худой конец, "efsm-model". Я бы остановился на первом варианте.

Actions #9

Updated by Alexander Kamkin over 10 years ago

  • Status changed from Resolved to Open
  • Assignee changed from Alexander Kamkin to Igor Melnichenko
/** Tool that works with control flow graph model.
 *
 * @author <a href="mailto:ssedai@ispras.ru">Sergey Smolov</a>
 */
public abstract class EfsmModelEngine extends Engine {
  1. Комментарий неадекватный.
  2. EfsmModelEngine -> EfsmEngine.
  3. Задачу на меня переводить не нужно.
Actions #10

Updated by Igor Melnichenko over 10 years ago

  • Status changed from Open to Resolved

Сделал.

Actions #11

Updated by Alexander Kamkin over 10 years ago

  • Status changed from Resolved to Closed
Actions

Also available in: Atom PDF