Task #4920
closed
[efsm][engine] Базовый инструмент для работы с EfsmModel
Added by Alexander Kamkin over 10 years ago.
Updated over 10 years ago.
Description
Требуется разработать базовый класс для всех инструментов, работающих с EfsmModel - EfsmEngine (наследние ru.ispras.retrascope.basis.Engine).
Параметры тип выходных данных (EntityType) и визитор (EfsmVisitor).
Не совсем понял. Чем он будет отличаться от класса Engine, учитывая, что у двух предполагаемых наследников EfsmEngin'а (симулятор и генератор) не совпадают ни входные, ни выходные типы? И зачем этим двум классам посетитель?
Насколько я понимаю, EfsmEngine (по аналогии с CfgEngine) - это обертка вокруг Efsm-обходчика (walker). Задача класса EfsmEngine - запустить пару "обходчик и визитор" на EfsmModel. Обходчик, соответственно, посещает все узлы EfsmModel и в каждом узле вызывает соответствующий метод визитора. Что в каждом узле делает визитор - это уже его дело.
Я не думаю, что симулятор и генератор тестов обязательно будут наследниками EfsmEngine. А вот компонент, реализующий отрисовку EfsmModel в каком-нибудь графическом формате (GraphViz, GraphMl) очень удобно делать в виде визитора EfsmModel.
Картина проясняется. Тогда у меня вопрос, чем EfsmEngine будет отличаться от EfsmWalker'а :)
EfsmEngine создаст объект визитора и запустит на конкретном объекте Entity.
В общем, сделает все то же самое, что и ru.ispras.retrascope.engine.cfg.CfgEngine (с точностью до типов и пр.)
Рекомендую посмотреть код указанного класса и все станет понятно.
ru/ispras/retrascope/engine/cfg/printer/graphml/CfgGraphMlPrinter.java - его наследник, который умеет печатать control flow graph в формате GraphML
Да, действительно стало. Спасибо :)
- Status changed from New to Resolved
- Assignee changed from Igor Melnichenko to Alexander Kamkin
Маленькое замечание: имена для EntityType мы пишем с маленькой буквы и через дефис. Это больше соответствует духу консольных приложений, чьи возможности Retrascope реализует и будет реализовывать впредь:-)
Т.е. не "EFSM model", а "efsm", или, на худой конец, "efsm-model". Я бы остановился на первом варианте.
- 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 {
- Комментарий неадекватный.
- EfsmModelEngine -> EfsmEngine.
- Задачу на меня переводить не нужно.
- Status changed from Open to Resolved
- Status changed from Resolved to Closed
Also available in: Atom
PDF