Трассировка обхода сценарного КА » History » Version 4
Sergey Groshev, 06/25/2010 03:02 PM
1 | 1 | Sergey Groshev | h1. Трассировка обхода сценарного КА |
---|---|---|---|
2 | |||
3 | h2. Что есть на данный момент |
||
4 | 4 | Sergey Groshev | |
5 | 1 | Sergey Groshev | * Реализована трассировка для старых UTT. |
6 | * Состояния, начало и конец переходов, запуск и завершение сценариев трассирует обходчик. |
||
7 | 2 | Sergey Groshev | * Значения итерационных переменных трассируются сгенерированным кодом по мере их вычисления. При этом в трассе возможны незавершённые переходы, у которых оттрассированы не все описанные в коде сценарного метода итерационные переменные (вообще говоря, они не являются переходами). |
8 | * Ранее вызовы дуг всегда выполняли next + call; затем для нужд проекта спрямителя были реализованы вызовы call, а для нужд проекта netfsm - вызовы next. Старые обходчики (dfsm, ndfsm) используют только вызовы старого образца. |
||
9 | 1 | Sergey Groshev | * stable переменные хранятся в одной структуре с итерационными, то есть, вообще говоря, привязаны не к состоянию, а, например, к сохранённой в обходчике дуге. |
10 | |||
11 | h2. Что нужно |
||
12 | 4 | Sergey Groshev | |
13 | 1 | Sergey Groshev | * Реализовать трассировку обхода сценарного КА средствами Aspectrace (в аспекте "fsm") совместно с или вместо старой трассировки. |
14 | * Реализовать библиотечный метод, получающий указатели на @ScenarioFunctionDesc@ и структуру данных, содержащую значения итерационных переменных, и осуществляющий трассировку (UTT & Aspectrace) всех значений итерационных переменных. При этом в структуре @ScenarioFunctionDesc@ должно добавиться поле, содержащее ссылку на соответствующий @StructTypeDesc@. |
||
15 | 3 | Sergey Groshev | * Вся трассировка должна выполняться кодом обходчика. Для устранения из трасс незавершённых переходов следует отказаться в обходчике от вызовов старого образца, а делать всегда отдельно next и отдельно call. При вызове next обычная трассировка не производится (но может производиться какая-то другая). При вызове call трассируется сообщение @transition_start@, затем трассируются значения итерационных переменных, затем выполняется собственно вызов, затем трассируется сообщение @transition_end@. |
16 | 1 | Sergey Groshev | * _Пересмотреть концепцию и реализацию @stable@ переменных._ |