Требования к подпроекту "Java" (версия 0.5)

advertisement
Требования к подпроекту “Java”
проекта «Лабораторный практикум по вычислительной математике»
Является конкретизацией требований к проекту практикума в целом
Содержание
0 Введение.............................................................................................................................2
0.1 Перечень лабораторных работ ..................................................................................2
0.2 Общие требования и терминология .........................................................................2
0.3 Технические требования ...........................................................................................3
1 Численные методы ............................................................................................................3
2 Хранение данных ..............................................................................................................3
3 Оконный интерфейс ..........................................................................................................3
3.1 Работа с файлами в интерфейсе ................................................................................3
3.2 «Общий интерфейс» ..................................................................................................4
3.3 Дерево документов ....................................................................................................4
3.4 «Общий документ» ....................................................................................................5
4 Формы редактирования и выбора....................................................................................6
5 Графики и их опции ..........................................................................................................6
6 Справочная система ..........................................................................................................6
Перечень изменений документа
Дата
07.07
.2006
Верс
ия
0.1
Автор
Евдоки
мов
22.07
.2006
0.2
Евдоки
мов
22.10
.2006
0.3
Евдоки
мов
23.05
.2008
0.4
Евдоки
мов
27.07
.2008
0.5
Евдоки
мов
Описание изменений
Измененные
разделы
Создание документа из требований к все
подпроекту
“C++”,
выделение
общих
требований в отдельный документ; спец.
требования для Java
Расширение и структуризация описания 3, 0
графического интерфейса (и работы с файлами
в нем)
Изменение
(расширение)
набора
лаб, 0
распределение по разработчикам, отражение
изменений в общих требованиях; тех.
требования
Уточнение названий и требований, удаление все
информ.
для
разработчиков,
выделение
нереализованных,
но
запланированных
требований
Преобразование понятия общего документа; 3
уменьшение нереализованных требований
Требования к подпроекту “Java” практикума по вычислительной математике. Версия 0.5
1
0 Введение
0.1 Перечень лабораторных работ
№
(Внутреннее)
общее имя пары
лаб
1 Операции
над
функциями
(с
дискретизацией)
2 Приближение
(дискретных)
функций
3 Алгебраические
(в т.ч. сеточные)
уравнения
4 Обыкновенные
дифференциальн
ые уравнения
Полное название лабы
Название для HTMLсправки (средней длины)
(Краткое)
имя лабы (код)
№1а Погрешности вычислений:
ряды
№1б
Численное
дифференцирование
№3 Численное интегрирование
Погрешности вычислений:
ряды, производные
Погрешности
(Errors)
Дифференцирова
ние (NumDiff)
Интегрирование
(Integr)
Интерполяция
(Interp)
Среднеквадратич
ное приближение
(Fit)
СЛАУ (SLAE)
№2
Табличное
задание
и
интерполяция функций
№6 Переопределенные системы
уравнений. Метод наименьших
квадратов
№4
Системы
линейных
алгебраических уравнений
№12
Решение
сеточных
уравнений. Уравнение Пуассона
№5 Нелинейные алгебраические
уравнения и системы
№7 Задача Коши для нелинейных
систем
обыкновенных
дифференциальных уравнений
Численное
интегрирование
Интерполяция функций
Переопределенные
системы
Линейные
системы
уравнений
Уравнение Пуассона
Нелинейные
системы
уравнений
Задача Коши для ОДУ
Уравнение
Пуассона (Poisson)
СНАУ (SNAE)
Задача Коши для
ОДУ (ODEIVP)
0.2 Общие требования и терминология
Все лабы проекта должны иметь возможность запуска в трех версиях:
а) в полнофункциональной версии внутри «общего интерфейса» (каждая лаба
представляется в виде внутреннего окна или вкладки в окне общего интерфейса);
б) в полнофункциональной версии в собственном окне;
в) в Web-версии – для каждой лабы в виде отдельного Интернет-приложения
(апплета), не включающего ряд функций. В Web-версии отсутствуют, прежде всего,
функции работы с файлами и, как следствие, сравнение результатов разных вариантов
расчета.
Обязательным требованием является использование во всех версиях каждой лабы
одного и того же кода (но ни в коем случае не копии кода).
В Web-версии отсутствуют (или реализуются не полностью) следующие функции,
описанные в требованиях к проекту в целом:
0 Общие требования
0.1 Зависимости выходных от входных параметров. – Нет.
0.2 Сохранение зависимостей в текстовый файл. – Нет.
0.3 Показ/сохранение (компактных) таблиц. – Нет.
1 Требования к программам. Хранение данных
1.1 Хранение всех данных варианта расчета в XML-файле. – Частично: нет сохранения
XML-файла; загрузка XML-файла (с данными по умолчанию) – при загрузке апплета.
1.2 Хранение в настроечном файле опций, редактируемых пользователем. – Нет.
1.3 Использование понятия «рабочей директории лабы». – Нет: поскольку все файлы
только загружаются, но не сохраняются, рабочая директория совпадает с директорией
загрузки апплета.
3 Оконный интерфейс
3.4 Отсутствие в главном меню пунктов, важных для выполнения расчета. – Меню
отличается от рассмотренного отсутствием меню «Файл».
Требования к подпроекту “Java” практикума по вычислительной математике. Версия 0.5
2
3.5 Заставка при загрузке программы – Не применимо (при запуске отдельной лабы
заставки не показывается).
0.3 Технические требования
Программы разрабатываются под Java 5 и запускаются под любой операционной
системой (не содержат зависимых от платформы модулей). Из установленного в системе
дополнительного программного обеспечения требуется только Java Runtime Environment
версии не старше 1.5 и HTML-броузер (любой). Используемые программные технологии
обсуждаются в разделах соответствующих модулей.
1 Численные методы
2 Хранение данных
3 Оконный интерфейс
Все требования данного раздела относятся к не-Web-версии программы.
3.1 Работа с файлами в интерфейсе
Файлом варианта во всех лабах является XML-файл с расширением *.var. Он имеет
сложную структуру, зависящую от лабы, но для всех лаб в начале этого файла имеются
свойства «название» (полное название варианта) и «тип» (внутренний код лабы,
необходимый для распознания того, кто может открывать данный файл).
Первым способом открытия варианта лабы является пункт меню «Файл /
Открыть…», показывающий броузер файловой системы. Броузер открывается по
умолчанию в директории лабы (или в корневой директории labs, если открытие
происходит из общего интерфейса, в котором не открыто ни одного документа). В
дальнейшем броузер открывается в той директории, откуда был открыт файл в последний
раз. Следует заметить, что пользователь может хранить свои файлы вариантов не только в
директории лабы (если его не интересуют возможности «дерева документов» – см. раздел
3.3). Если открытие происходит из конкретной лабы (запущенной в собственном окне), то
проверяется соответствие лабы типу варианта (тип является свойством, записанным
внутри файла). В противном случае (открытие из общего интерфейса, см. раздел 3.2)
ищется нужная лаба, после чего вариант открывается в новом документе этой лабы.
При сохранении варианта под другим именем (пункт меню «Файл / Сохранить
как…») показывается броузер файловой системы, в котором пользователю уже
предлагается некоторое имя. Директория, в которой броузер сохранения файлов
открывается в первый раз, является рабочей директорией лабы – даже в том случае, если
сохраняемый вариант был открыт из другого места (а в дальнейшем броузер открывается
в той директории, куда был сохранен файл в последний раз). Имя в броузере содержит
прежнее имя файла, а в начале имени перед ‘-’ ставится целое число, равное текущему
числу файлов вариантов в данной директории плюс единица (это позволяет обеспечить
как уникальность имен, так и дельнейшую сортировку вариантов в последовательности их
создания – см. раздел 3.3). Если вариант получен из «варианта по умолчанию», то
предлагаемое для него имя файла не меняется. А если прежнее имя варианта представляет
собой число n, то предлагаемое имя файла является числом 10*n (без ‘-’).
После нажатия пользователем в броузере кнопки «Сохранить» перед ним возникает
еще одно окно с текстовым полем, в котором по умолчанию написано старое название
варианта, либо часть имени файла после ‘-’ (см. выше). Отредактированный
пользователем текст из этого поля (после нажатия кнопки «ОК») сохраняется в качестве
Требования к подпроекту “Java” практикума по вычислительной математике. Версия 0.5
3
свойства «название» (и, соответственно, показывается в заголовке документа, см. раздел
3.2)
При сохранении варианта под другим именем файл зависимостей данного варианта
(если он существует) тоже копируется под новым именем. (Зависимости сохраняются из
лаб автоматически в процессе расчетов и помещаются в файл с расширением *.txt, имя
которого совпадает с именем файла варианта.)
3.2 «Общий интерфейс»
«Общим интерфейсом» называется все, что относится не к конкретной лабе, а к
общему для всех окну-«контейнеру» лаб. Общий интерфейс определяет способ запуска
лаб и их вариантов, операции над набором вариантов, а также показ лаб/вариантов в
отдельных частях основного окна, которые могут представлять собой либо внутренние
окна, либо вкладки. Такие внутренние окна или вкладки (вместе со своим содержимым и
логикой работы) называются документами. Союз «или» здесь означает что общий интерфейс
может выглядеть по-разному (окна или вкладки) в зависимости от настройки или от единственного
изменения в коде.
Документы могут открываться, закрываться и становиться активными (в каждый
момент активным может быть только один документ). Документы имеют заголовок,
который формируется из (краткого) имени лабы и (полного) названия варианта (которое
дописывается перед именем лабы, но отсутствует, если вариант является вариантом по
умолчанию). В заголовках документов (как и в дереве лаб, см. раздел 3.3) названия
вариантов берутся не из имени файла варианта, а из его свойства «название».
Общий интерфейс работает с конкретными лабами как с плагинами, загружая
необходимый программный код через имя класса, прописанное в специальном файле
meta.xml (находящийся в директории, заданной как в файле варианта, так и в XML-файле
дерева лаб). Это позволяет не только обеспечить гибкое расширение набора лаб, но и
уменьшает время загрузки общего интерфейса (при его загрузке основной объем
программного кода – сами лабы – не загружается).
3.3 Дерево документов
Общий интерфейс имеет дерево, расположенное в его левой части и
предназначенное для открытия документов (соответствующих лабам). Дерево на верхнем
уровне содержит иерархию лаб, читаемую из XML-файла (перечень лаб по категориям:
«Операции над функциями», «Приближение функций», «Алгебраические уравнения»,
«ОДУ», «УМФ»), а на нижнем уровне оно содержит все имеющиеся варианты для каждой
лабы. Список вариантов получается сканированием файлов директории лабы и рабочей
директории лабы, причем список сортируется по именам файлов. Поддерживаются как лабы
данного подпроекта (Java), так и внешние программы (лабы подпроекта C++), запускаемые вне общего
интерфейса в собственном окне; во втором случае сканируется только одна (рабочая) директория лабы.
При двойном щелчке на варианте лабы в дереве открывается (активируется)
документ соответствующей лабы с загрузкой туда выбранного варианта. В случае, если
лаба уже открыта (с любым вариантом), открытия нового окна документа не происходит,
вместо этого новый вариант показывается в прежнем окне. При выделении варианта(ов),
из контекстного меню доступна операция удаления варианта(ов) (вместе с
соответствующими файлами зависимостей), операция закрытия варианта(ов), а также
операция открытия варианта в новом документе/окне (если вариант один) и операция
сравнения вариантов (если их много). Если вариант удаляется, пользователю сначала
выдается предупреждение/просьба подтвердить удаление (если удаляется несколько
вариантов – выдается только один раз на всех). Если закрывае(ю)тся измененный(ые)
вариант(ы), или если в окне с измененным вариантом открывается другой вариант, то
пользователю выдается предложение сохранить изменения. То же касается и закрытия
вариантов через меню (или через панель инструментов, или через Ctrl+F4, или через крестик внутреннего
окна), однако следует заметить, что в этом случае измененные до закрытия варианты хранятся в дереве (но
Требования к подпроекту “Java” практикума по вычислительной математике. Версия 0.5
4
не на диске) в измененном состоянии; так что для окончательной отмены изменений в них следует
перезагрузить список вариантов данной лабы (выделив заново узел дерева, соответствующий лабе).
При двойном щелчке на лабу в дереве общего документа открывается
(активируется) документ этой лабы (при этом загружается «вариант по умолчанию»). При
выделении лабы, из контекстного меню доступны операции закрытия и сравнения всех
вариантов лабы, а остальные операции (открытия и открытия в новом окне) относятся к
«варианту по умолчанию».
Работа с внешними программами-лабами отличается от работы с лабами данного подроекта в
нескольких аспектах. Открытие другого варианта той же лабы приводит к открытию в том же окне.
Закрытие варианта внешней лабы из общего интерфейса не всегда приводит к закрытию окна программы
(хотя оно дает возможность повторного открытия варианта, как и в случае внутренних лаб).
3.4 «Общий документ»
Общий интерфейс имеет один специальный «общий документ», предназначенный, а
основном, для сравнения разных вариантов расчета одной лабы. Окно общего документа
разделено на две вкладки: «Интегральные данные» и «Зависимости». В обеих вкладках в
верхней части имеются два раскрывающихся списка, один из которых соответствует
входным параметрам, другой – выходным (для разных вкладок набор входных и
выходных параметров совершенно различен).
Во вкладке «Интегральные данные» списки входных и выходных параметров
имеют иерархическую структуру, повторяющую структуру полей объекта Data варианта
(точнее, подмножества полей). Ниже списков показывается график зависимости
выходного параметра от входного, а сбоку от него таблица значений входного и
выходного параметра, первым столбцом которой является имя варианта расчета (во
всплывающей подсказке к ячейкам – полное название варианта), вторым столбцом –
«Вход», третьим – «Выход». (График показывается только в том случае, когда выбраны числовые
параметры; это замечание имеет смысл, если показ нечисловых параметров будет реализован). После
открытия панели сравнения (на заданном наборе вариантов) в списке выходного
параметра по умолчанию выбирается параметр «Время расчета» (имеющееся во всех
возможных лабах), а выбор пункта по умолчанию в списке входного параметра
определяется так, чтобы число различных значений параметра в наборе вариантов было
максимальным (в идеале, все его значения должны быть различны). Такой алгоритм
позволяет автоматически догадываться о том, какой параметр варьировал пользователь в
разных вариантах. Если какие-либо значения других (не выбранных) входных параметров
различны, то ниже списка пользователю показывается предупреждение о том, что
сравнение вариантов некорректно. Кроме того, в последнем (четвертом) столбце
«Различия» вышеуказанной таблицы в процессе выполнения этого же алгоритма пишутся
названия невыбранных входных параметров, значения которых в данном варианте
отличаются от их базового значения (базовое – то, которое имеется в большинстве
вариантов). Поскольку теоретически перечень отличающихся параметров может быть длинным,
необходимо проверить работоспособность всплывающей подсказки или иного способа увидеть все
содержимое ячейки.
Во вкладке «Зависимости» выбираемый из списка входной параметр соответствует
оси X (по умолчанию первый столбец файла), а выходной параметр соответствует оси Y
(по умолчанию второй столбец). Если в качестве оси X выбран первый столбец,
предполагается монотонность его значений, в противном случае предполагается фазовая
диаграмма (но ее точки тоже соединяются линиями). Зависимости от номера точки (от
нулевого столбца) никогда не показываются. Названия параметров для показа в списках
берутся из заголовков столбцов файла (любого файла, т.к. они одинаковы для разных
вариантов).
При сравнении зависимостей из разных файлов (см. раздел 3.1) они показываются
как кривые на одном графике, а ниже размещается легенда. В легенде первым столбцом
является «Вариант» (всплывающая подсказка к ячейкам этого столбца – полное название
варианта), а в остальных столбцах варианту сопоставляется настройки внешнего вида
Требования к подпроекту “Java” практикума по вычислительной математике. Версия 0.5
5
кривых (цвета и тип линии и символа) и интегральные параметры кривых (число точек «N
точек», а также см. ниже). Следует заметить, что число точек–строк файла и значения
столбца X (в т.ч. минимальное/максимальное) в сравниваемых вариантах могут
различаться. В случае, если файл зависимостей для какого-либо варианта отсутствует, для
него отсутствует кривая на графике и строка в легенде. Может возникнуть ситуация, когда ни
один из сравниваемых вариантов не имеет зависимостей, то есть во вкладке «Зависимости» ничего не
показывается.
При наличии в лабе точного решения одной и той же легенде соответствует два
графика: первый – сами зависимости (плюс точное решение, которое тоже отражается в
легенде), второй – погрешности, то есть модуль разности между зависимостями и точным
решением (второй график лучше размещать ниже первого, но не сбоку). В данном случае
(для зависимостей с точным решением) легенда рядом со столбцом «N точек» имеет
дополнительные столбцы «Макс. ошибка» и «Ср. ошибка», где выводится, соотвественно,
максимальное значение кривой на втором графике и площадь под этой кривой, отнесенная
к (Xmax – Xmin). 1) Площадь на самом деле лучше подсчитать как сумму всех значений кривой,
отнесенную к их числу. 2) Точное решение в варианте расчета сохраняется как формула (не содержащая
неизвестных параметров), поэтому для построения точного решения на графике необходимо
воспользоваться стандартным парсером формул, взять минимальное и максимальное значение оси X, а
расстояние между точками взять таким, чтобы на экране оно соответствовало одному пикселю (на кривой
точного решения «символы» не показываются, точки соединяются только линиями).
4 Формы редактирования и выбора
Формы редактирования организуются иерархически (вложены друг в друга),
автоматически управляются через данные из файла варианта (но с возможностью
программного вмешательства в компоновку форм); они также могут автоматически
заменяться при выборе разных пунктов из списков в родительских формах
редактирования. Это соответствует требованию №1.3 к проекту в целом («Обновление
лабы преподавателем без обращения к программистам»). Это требование не относится к
лабе «ОДУ».
Все формы (относящиеся к одной вкладке) показываются на одной панели, поэтому
изменения в них применяются сразу, то есть возможность слежения за изменениями и их
отмены отсутствует (изменения можно «Отменить», заново загрузив нужный файл
варианта). Отслеживается лишь измененность всего варианта – при этом
активируется/деактивируется пункт меню «Файл/Сохранить».
5 Графики и их опции
6 Справочная система
Требования к подпроекту “Java” практикума по вычислительной математике. Версия 0.5
6
Download