debugging/tions
Среда построена таким образом, чтобы максимально облегчить процесс построения проекта, моделирование свойств и поведения объектов и систем. Основное ее достоинство в том, что она является интерпретатором, то есть посредством кнопок СтопToolbar_Control или ШагToolbar_Control можно остановить вычисления в любой момент. После этого возможно просматривание любых переменных, коррекция их значений и движение дальше уже с исправленными значениями без перезапуска системы. Так же, как переменные, можно изменить текст модели и продолжить вычисления. Можно исправить на ходу структуру схемы.
Исправляя текст модели можно использовать знаки // в начале строки или заключая текст в скобки /* */. Эти знаки выключают часть модели из работы.
Следует иметь в виду, что если в тексте имиджа переменная встречается в левой части присвоений дважды и более раз, то в окне Данные отобразится в конце шага ее последнее значение, промежуточные значения будут для отладки недоступны. В этом случае для контроля промежуточных значений используйте другие переменные, дублируя вычисления, или вставляйте в текст модели функцию StopStop. Промежуточные значения также можно увидеть, записывая их в матрицуMatrix, индекс которой непрерывно при записи увеличивается или выводя на экран пользовательское сообщениеMessageBox о значении переменной.
Особую осторожность следует соблюдать с приставкой ~ перед переменной (см. Порядок вычисленийCalculate_order). Приставка означает, что значение переменной немедленно на этом же шаге будет доступно другим элементам схемы, поэтому часть ситуаций может оказаться невизуализировано для вас и надо предпринять особые усилия для их просмотра и контроля.
Частое недоумение порождают ситуации, вызванные случаем, когда с переменной соединено несколько связей. Следует четко отдавать себе отчет в том, какие переменные посылают (записывают) информацию, а какие ее получают. В общем случае будет правильно, если запись в ячейку производится только в одном месте. Неоднократную запись производите в том случае, если вам это действительно необходимо и вы точно понимаете суть своих действий (см. уравнения и присвоенияequations_and_assignments). Контроль за этим можно осуществить в окне Информация о переменныхProject).
Среда имеет окно сообщений об ошибкахMessage_Window, заглядывая туда вы сможете получить некоторую информацию о ходе процесса вычислений, которую порождает сама система. Рекомендуем чистить содержание окна сообщений время от времени.
В случае возникновения ошибки среда выдает сообщение не только в окно сообщений, но и сразу на экран, требуя вашей реакции - остановить процесс, продолжать, не замечать более данную ошибку (см. Свойства средыInformation___Misc). Можно управлять фильтром выдачи таких сообщений. Но отключение контроля среды за возникновением ошибок.реакций может привести к неверным результатам работы модели, ответственность в этом случае за результат берет на себя пользователь.
Посредством стандартных имиджей NumberViewclass_NumberView, MatrixViewclass_MatrixView, Osc2Dclass_OSCSpace2D и ряда других можно наблюдать за ходом моделирования через отображение чисел, матриц, строк, двухмерных и трехмерных графиков. Визуализация резко упрощает процесс отладки. В окне Переменные можно в левом столбике отметить любые строки, тогда в отдельном окне WatchWatch_window при работе схемы Вы будете наблюдать изменения выбранных переменных. Это прием быстрой визуализации. Посмотреть на значение переменной можно также, указав на имидж (двойной щелчок), выбрав строку меню Посмотреть переменные.
Контролировать переменные вам поможет редактор текстаText_editor модели. Знакомые ему функции и ключевые слова он опознает и отображает стилем и цветом. Набрав текст (не забудьте нажать кнопку Компилировать), посмотрите в окне ПеременныеClass_property_Vars на имена переменных, которые создались для вашей модели. Убедитесь в правильности различения их компилятором. Особое внимание ключевым словам и зарезервированным переменным (pi, dt, _enable, color, if, sin, ...), латинским и прописным буквам, сходным друг с другом по начертанию, пробелам. Обратите внимание на цвет имен переменных (см. диалог редактирования переменныхClass_property_Vars)
Основная рекомендация состоит в том, что собирать модель следует последовательно, двигаясь от простого к сложному.
Прежде всего нарисуйте проект так, как вы его себе представляете. Постепенно в дальнейшем прописывайте части проекта глубже, наделяя их свойствами. Но первоначальный план вам поможет придерживаться какой-то общей стратегии. Поможет определиться с тем, какие структуры данных вам понадобятся. Рисунок, набросок проекта может в дальнейшем изменяться.
Придерживайтесь объектности в формулировании системы. Установите, как из объектов в дальнейшем будет складываться система в целом. Объектный подход - независимость моделей отдельных объектов друг от друга - даст вам выигрыш в последующих ваших действиях, когда вы начнете модернизировать систему для решения различных задач.
Далее постепенно само определится - какие объекты вам понадобятся. Создайте отдельный проект для синтеза каждого из объектов. Опишите главное свойство объекта. Запустите вычисления и на графиках, визуально убедитесь в правильности его работы. Только после этого можете еще усложнить модель и снова проверьте ее работу.
Удобно управлять всеми параметрами через управляторы Sliderclass_Slider или NumberInclass_NumberIn. Установите их как можно больше и подпишите - получится удобный отладочный стенд, возможно он будет прототипом пользовательского интерфейса. Когда будете писать текст модели поясняйте комментариями названия переменных в окне Переменные, общий комментарий в окне Общее и комментарии о механизмах имиджа в окне Текст. Старайтесь, чтобы вид имиджа и имя напоминали вам о его содержании.
Когда отдельные имиджи будут готовы и отлажены по отдельности, только тогда пытайтесь собрать их в виде схемы. Проверьте правильность их взаимодействия. Упростить этот процесс вам помогут механизмы временного отключения связей, механизм сообщений, флаги включения и выключения функций, переменные _enableDefault_Vars (_disableDefault_Vars), которые можно использовать в тексте любого имиджа. Управляя ими, вы можете включать и выключать в работу схемы отдельный имидж.
Посредством знаков // в начале строки или обрамляя часть текста в скобки /* */, можно временно отключать часть текста модели из работы, комментаря его.
Целесообразно исследовать построенную вами схему на причинно-следственные зависимостиgraph_of_dependences.
Не спешите, идите по шагамToolbar_Control, проверяя значения переменных на каждом шаге.
Собрав блок из имиджей и убедившись в правильности его работы, соберите следующий. Можно отлаженный блок объявить единым имиджем (имидж, имеющий схему). Это свойство иерархииProject существенно облегчает в дальнейшем сборку. При сборках придерживайтесь ряда правил: максимальное количество связей должно оставаться внутри имиджа, имидж с имиджем должны взаимодействовать как можно меньшим количеством связей. Сущность чаще всего самодостаточна. Это правило дает вам ориентир в рациаональном формировании имиджей - объектов. Проводите границы объектов, минимизируя разрезы связей.
Объект должен быть сформулирован так, чтобы его не приходилось менять, если изменится система, или вам понадобится решить новую задачу. Это свойство конструктивизмаProperties_of_model. В сущности, самое выгодное - это изготовление конструктора (набора имиджей - объектов). Если конструктор создан удачно, любые задачи будут решаться быстрым построением из готовых моделей схемы путем проведения связей. Вынесите среду для общения объектов (необъекты) в отдельный имидж - Имиджи могут взаимодействовать между собой через "эфир", посредством сообщений. Можно вовсе избежать связей, система будет легко менять собственную структуру. Но прежде отрепетируйте посылку и прием сообщения от имиджа к имиджу на отдельной схеме.
Не прячьте связи друг за друга. Не прячьте имиджи друг за другаZ_order. Это усложняет визуальный контроль. Потом, когда все будет готово, прибрать внешний вид схемы не составит труда и не потребует большого времени. Имиджи легко переставляются, а связи легко "переламываютсяEdit_scheme".
Пишите любые комментарии на полях схемы, подписывайте ее куски, пишите здесь же свои идеи по отладке или оставленные на потом. На каждом листе проекта советуем вам расположить собственный стандартный штамп для записей. Он послужит вам и вашим коллегам по коллективной разработке проекта в организации работ для согласований, при документировании исправлений. Удобно писать в нем свои замечания, отмечать предисторию. После готовности штамп удаляется мгновенно со всех листов.
Допустим, что система готова. Запустив схему на счет, можно наблюдать за ходом ее работы в различных окнах. Теперь ее можно "украсить". Сделайте удобный интерфейс для управления нужными параметрами. Используйте различные приборы для отображения информации из стандартных библиотек. Расположите их в различных окнах, как удобно. Используйте двухмерную и трехмерную графику. Визуализация облегчает понимание работы пользователю, а трехмерная графика дает естественную среду восприятия хода событий. Используйте для ввода данных продвинутые технологии - списки, матрицы, видеограммы, drag&dropclass_DragObjects.
Вы ставите эксперимент на готовой схеме. Возможно, что эксперимент достаточно длительный, и времени в течении дня вам не хватает. Запишите состояниеModeling___Save_state всех переменных кнопкой Записать состояние в файл. На следующий день кнопкой Загрузить состояниеModeling___Load_state "вспомните" значения всех переменных и продолжите эксперимент. Более того, так как записать состояние можно когда угодно и сколько угодно, используйте этот механизм для создания контрольных точек эксперимента или серии экспериментов. Всегда есть желание после некоторой ситуации пройти два или более различными путями, чтобы отобрать потом лучшие варианты поведения. Запомните ситуацию в файле. Пройдете одним путем и запомните снова результат. Загрузите старое состояние и снова пройдите с другим управлением. Сравните результаты. Можно организовать целое дерево состояний эксперимента и затем демонстрировать его заказчику, загружая избранное.
Большую помощь в отладке вам окажут кнопки Иерархия библиотекlibrary_Window и Иерархия проектаProject_hierarhy_Window. Здесь можно отыскать любую переменную, которую вы использовали в проекте, отследить конфликты записи в одну и ту же ячейку, определить "пользователей" переменной. Здесь же можно организовать поиск переменной или контекста.
Рекомендуем вам почаще записывать проект - меню Файл, Записать всеFile___Save_all. Делайте также копии проектаFile___Save_project_as. Сделав копию можно быть уверенным, что если дальнейшие действия будут неудачными, всегда можно вернуться к предыдущему варианту.
Собрать отдельные части проекта можно (слить проект).
Пишите проще, понятнее текст модели. Места текст занимает немного. А экономия на комментариях и неоправданные изощрения приведут к непропорциональным сложностям по отладке и при модернизации системы.
Минимизируйте сложность своего проекта. Помните! Сложность проекту придают связи.
Created with the Personal Edition of HelpNDoc: Easily create EBooks