Основанием для разработки являются требования курсовой работы за второй год обучения на отделении программной инженерии.
Программа реализована как часть интерактивного web-приложения, обеспечивающего удаленный доступ к научному вычислительному комплексу, обеспечивающему распределенные компьютерные эксперименты для моделей многокомпонентных шлаковых расплавов большой размерности. ИИС «Шлаковые расплавы» разрабатывалась с применением свободно-распространяемого программного обеспечения. При реализации web-приложения использована среда разработки Apache Cocoon Для хранения данных используется СУБД PostgreSQL. Описываемый модуль реализован на языке Java[2].
Основными компонентами архитектуры ИИС являются вычислительные приложения, реляционная база данных, web-сервер, web-клиент, формат обмена данными между web-сервером и вычислительными модулями.
Удаленный доступ к ИИС, управление ходом компьютерного эксперимента и работой с базой данных обеспечивает web-приложение, на основе среды Apache Cocoon 2.1, которая архитектурно располагается между базой данных и сервером приложений J2EE (Java 2 Enterprise Edition) Apache Tomcat и представляет собой среду для публикации динамического web-контента на основе технологии конвейерной обработки данных[3].
В рамках ИИС имеется информационная модель предметной области, которая позволяет автоматизировать многомерный анализ больших массивов данных о свойствах и структурных характеристиках оксидных расплавов. Различные срезы данных позволяют выявлять практически значимые зависимости между различными измерениями гиперкуба данных[4].
Результаты компьютерных экспериментов записываются в текстовые файлы, формирующиеся в соответствии с дескрипторами информационной модели. Структура и месторасположение файлов определяет legacy application MD_MELT. На рис.1 представлена файловая структура результатов моделирования одного состава системы.
Использование текстовых файлов для хранения данных в приложении «MD_MELT» имеет несколько неоспоримых преимуществ перед более сложными альтернативами, такими как DBM-файлы или системы управления базами данных.
Ниже перечислены некоторые из основных преимуществ текстовых файлов:
данные, хранящиеся в текстовых файлах, являются переносимыми. Их можно без всяких проблем использовать практически на любой компьютерной платформе;
текстовые файлы можно редактировать с помощью обычного текстового редактора, а также распечатать на бумаге без привлечения каких-либо специальных средств;
текстовые файлы данных очень просто создавать, а также вносить в них первоначальные данные;
текстовые файлы данных могут быть легко импортированы в программы электронных таблицы, текстовые процессоры или СУБД. Практически все известные приложения могут импортировать данные, хранящиеся в текстовых файлах.
Рис.1. Файловая структура результатов моделирования состава
Однако традиционный метод организации данных в текстовых файлах не позволяет их эффективное использование для хранения сложно-структурированных данных, получаемых в результате моделирования, требующих специализированной обработки. Ниже перечислены проблемы использования файлов для хранения данных в приложении «MD_MELT».
Структура записи файлов является уникальной для рассматриваемого приложения. И поэтому для извлечениянекоторой информации из файла данных, необходимо знать структур записи файла с точностью до бита. Каждая программа, работающая с файлом, должна содержать структуру данных, соответствующую структуре этого файла. Поэтому при изменении структуры файла требуется изменятьструктуру программы и осуществлять её перекомпилляцию. Такая ситуации характеризуется как зависимость программ от данных.
Программный комплекс «MD_SLAGMELT» требует проведения совокупного анализа результатов комплексных экспериментов для выявления теоретически и практически значимых статистических зависимостей. Множество файлов, разрозненных по различным каталогам файловой структуры, существенно затрудняет сбор и централизованную обработку данных. Даже такая операция, как сортировка множества по некоторому значению, в текстовом файле требует реализации приложения, считывающего данные из файла во внутренний формат хранения (в переменные или массивы) для последующей обработки встроенными средствами используемого языка программирования.
Перечисленные недостатки использования текстового хранилища данных являются следствием устаревших технологий, используемых для вывода данных в приложении «MD_MELT». Требования, предъявляемые новой программной среде, обуславливают необходимость перехода с дескрипторной модели данных на реляционную. Реляционный формат хранения обеспечивает автоматизацию статистической обработки данных благодаря встроенным средствам баз данных, а также существенно упрощает процесс формирования документов различных форматов, требуемых для взаимодействия с программами научной визуализации[5].
В текущей версии ИИС для хранения начальных условий и результатов КЭ используется БД «EXPERIMENTS». Для каждого блока свойств температурно-концентрационных зависимостей в БД создана соответствующая реляционная таблица
Конвертация данных из текстового в реляционный формат
Для конвертации температурно-концентрационных характеристик из текстовых файлов в реляционные таблицы реализовано Java-приложение «SMINF-READER».
Приложение построчно считывает данные из файла, проводит их синтаксический анализ, распознает дескрипторы. В соответствии с каждым дескриптором данные преобразуются во внутренний формат хранения, после чего записываются в соответствующие реляционные таблицы базы данных.
Процесс конвертации данных их текстового формата в реляционный приведен на рис.2. Процедура readSm_infToDB() на входе получает файл данных, номер текущего эксперимента и количество температурных точек. Производится синтаксический анализ файла.
При распознавании данных соответствующих дескрипторам структуры исходного файла вызывается процедура addParamsToDB(). Данная процедура обеспечивает запись параметров в таблицу БД. Внутренняя функция getParamsAsString() переводит параметры для всех температурных точек во внутренний формат хранения – текстовую строку. Полученная строка является входным параметром для соответствующей хранимой процедуры БД.
Рис.2. Компоненты процесса конвертации данных из текстового формата в реляционный
С каждой таблицей в реляционной БД связаны хранимые процедуры, обеспечивающие синтаксический разбор строки с данными и запись полученных параметров в соответствующую реляционную таблицу для заданной температурной точки. На рис.3.приведен фрагмент представления одной из реляционных, который показывает структуру хранения данных для всех экспериментов.
Рис.3. Фрагмент реляционной таблицы «Pressure»
Ниже приведены требования к программе «SMINF-READER».
1. Требования к функциональным характеристикам
Требования к выполняемым функциям:
По запросу администратора информационного ресурса поиск и обработка информации в текстовых файлах при появлении файлов в соответствующей директории
Обеспечение генерации информационного потока из файлового хранилища данных, в формате, требуемом подсистемой хранения
Требование к входным данным:
Паспортные данные эксперимента.
Формат файла – *.txt.
Требования к выходным данным:
Установленная среда ©MySQL Workbench™.
Установленный компонент Connector/J версии 5.1.19.
2. Требования к надежности
Программа должна обрабатывать все исключительные ситуации, такие как:
Ошибки во входных данных.
Отсутствие подключения к интернету.
3. Условия эксплуатации
Квалификация эксплуататора программы – инженер, технолог-металлург, разработчик в области компьютерного материаловедения, аспирант, студент.
4. Требования к информационной и программной совместимости
В системе должны быть установлены следующие продукты:
Java™ SE Development Kit 7u3,
©MySQL Workbench™ версии 5.2.39
Connector/J версии 5.1.19
которые поддерживается платформой Microsoft® Windows® 7 SP1
5. Основные технические требования приведены в табл.1.
Требования к составу и параметрам технических средств Таблица 1
Необходимый процессор |
Рекомендуемый процессор |
Необходимое ОЗУ |
Рекомендуемое ОЗУ |
Прочие требования |
32-разрядный (x86) или 64-разрядный (x64) процессор с тактовой частотой 1 гигагерц (ГГц) |
32-разрядный (x86) или 64-разрядный (x64) процессор с тактовой частотой 1,6 гигагерц (ГГц) или выше |
1 гигабайт (ГБ) (для 32-разрядной системы) или 2 ГБ (для 64-разрядной системы) оперативной памяти (ОЗУ) |
1,5 гигабайт (ГБ) (для 32-разрядной системы) или 2,5 ГБ (для 64-разрядной системы) оперативной памяти (ОЗУ) |
графическое устройство DirectX 9 с драйвером WDDM версии 1.0 или выше |
*Или минимум, требуемый операционной системой, какой бы она ни была.
Требования к программной документацииВ процессе разработки должны быть созданы следующие документы:
Текст программы (ГОСТ 19.401-78*)
Пояснительная записка (ГОСТ 19.404-79)
Программа и методика испытаний (ГОСТ 19.301-79*)
Руководство оператора (ГОСТ 19.505-79*)
В табл.2 -4 приведены описание и функциональное назначение классов, а также описание и функциональное назначение методов, полей и свойств.
Описание и функциональное назначение классов Таблица 2
Класс |
Назначение |
Main.java |
Класс, отвечающий за загрузку файла в корневую папку документа и содержащий точку запуска программы |
Length.java |
Класс, отвечающий за архитектуру длин связей |
MathModel.java |
Класс, отвечающий за временное хранение характеристик проведенного эксперимента |
MeanValuesWithEps.java |
Класс, отвечающий за архитектуру средних значений и их погрешностей |
Pressure.java |
Класс, отвечающий за архитектуру давления |
SSF.java |
Класс, содержащий часто вызываемые методы |
Описание и функциональное назначение методов, полей и свойств Таблица 2
Main.java
Поля |
||||||||||
Имя |
Мод. доступа |
Тип |
Назначение |
|||||||
conn |
private static |
Connection |
Служит для соединения с базой данных |
|||||||
mathModel |
private static |
MathModel |
Является временным хранилищем для температурно-концентрационных характеристик |
|||||||
Свойства |
||||||||||
Имя |
Мод. доступа |
Тип |
Назначение |
|||||||
setConn |
public static |
void |
Изменение параметров соединения |
|||||||
Методы |
||||||||||
Имя |
Мод. доступа |
Тип |
Аргументы |
Назначение |
||||||
addParamsToDB |
public static |
void |
- |
Перенос температурно-концентраци-онных характеристик в базу данных |
||||||
main |
public static |
void |
String |
Главная программная функция |
Length.java
Поля |
|||||||||
Имя |
Мод.доступа |
Тип |
Назначение |
||||||
temperature |
private |
float |
Хранение температурной характеристики |
||||||
allLengths |
private |
ArrayList |
Хранение значений длин связей |
||||||
Свойства |
|||||||||
Имя |
Мод. доступа |
Тип |
Назначение |
||||||
getTemperature |
public |
float |
Получение температурной характеристики |
||||||
getAllLengths |
public |
ArrayList |
Получение значений длин связей |
||||||
Конструкторы |
|||||||||
Имя |
Мод. Доступа |
Аргументы |
Назначение |
||||||
Length |
public |
String, int |
Чтение и присвоение значений полям из строки |
MathModel.java
Поля |
|||||||
Имя |
Мод. Доступа |
Тип |
Назначение |
||||
elements |
private |
String[] |
Хранение названий элементов фигурирующих в результатах эксперимента |
||||
number |
private |
int |
Хранение количества элементов фигурирующих в результатах эксперимента |
||||
meanValuesWithEps |
private |
MeanValuesWithEps |
Хранение средних значений и их погрешностей |
||||
length |
private |
Length |
Хранение значений длин связей |
||||
pressure |
private |
Pressure |
Хранение значений давления |
||||
Свойства |
|||||||
Имя |
Мод. доступа |
Тип |
Назначение |
||||
getMeanValuesWithEps |
public |
MeanValuesWithEps |
Получение средних значений и их погрешностей |
||||
getLength |
public |
Length |
Получение значений длин связей |
||||
getPressure |
public |
Pressure |
Получение значений давления |
||||
Конструкторы |
|||||||
Имя |
Мод. Доступа |
Аргументы |
Назначение |
||||
MathModel |
public |
BufferedReader |
Построение из файлового потока |
MeanValuesWithEps.java
Поля |
|||||||
Имя |
Мод. Доступа |
Тип |
Назначение |
||||
average_temperature |
private |
float |
Хранение значения средней температуры |
||||
average_temperature_eps |
private |
float |
Хранение значения погрешности средней температуры |
||||
full_energy |
private |
float |
Хранение значения полной энергии |
||||
full_energy_eps |
private |
float |
Хранение значения погрешности полной энергии |
||||
potential_energy |
private |
float |
Хранение значения потенциальной энергии |
||||
potential_energy_eps |
private |
float |
Хранение значения погрешности потенциальной энергии |
||||
kinetic_energy |
private |
float |
Хранение значения кинетической энергии |
||||
kinetic_energy_eps |
private |
float |
Хранение значения погрешности кинетической энергии |
||||
electronic_energy |
private |
float |
Хранение значения электронной энергии |
||||
electronic_energy_eps |
private |
float |
Хранение значения погрешности электронной энергии |
||||
magnetic_field |
private |
float |
Хранение значения магнитной энергии |
||||
Свойства |
|||||||
Имя |
Мод. доступа |
Тип |
Назначение |
||||
getAverage_temperature |
public |
float |
Получение значения средней температуры |
||||
getAverage_temperature_eps |
public |
float |
Получение значения погрешности средней температуры |
||||
getFull_energy |
public |
float |
Получение значения полной энергии |
||||
getFull_energy_eps |
public |
float |
Получение значения погрешности полной энергии |
||||
getPotential_energy |
public |
float |
Получение значения потенциальной энергии |
||||
getPotential_energy_eps |
public |
float |
Получение значения погрешности потенциальной энергии |
||||
getKinetic_energy |
public |
float |
Получение значения кинетической энергии |
||||
getKinetic_energy_eps |
public |
float |
Получение значения погрешности кинетической энергии |
||||
getElectronic_energy |
public |
float |
Получение значения электронной энергии |
||||
getElectronic_energy_eps |
public |
float |
Получение значения погрешности электронной энергии |
||||
Конструкторы |
|||||||
Имя |
Мод. доступа |
Аргументы |
Назначение |
||||
MeanValuesWithEps |
public |
String |
Чтение и присвоение значений полям из строки |
Pressure.java
Поля |
||||||
Имя |
Мод. Доступа |
Тип |
Назначение |
|||
sum_i |
private |
float |
Хранение значения sum_i |
|||
sum_i_eps |
private |
float |
Хранение значения sum_i_eps |
|||
walls |
private |
float |
Хранение значения walls |
|||
walls_eps |
private |
float |
Хранение значения walls_eps |
|||
sum_ij |
private |
float |
Хранение значения sum_ij |
|||
sum_ij_eps |
private |
float |
Хранение значения sum_ij_eps |
|||
td |
private |
float |
Хранение значения td |
|||
td_eps |
private |
float |
Хранение значения td_eps |
|||
Свойства |
||||||
Имя |
Мод. доступа |
Тип |
Назначение |
|||
getSum_i |
public |
float |
Получение значения getSum_i |
|||
getSum_i_eps |
public |
float |
Получение значения getSum_i_eps |
|||
getWalls |
public |
float |
Получение значения getWalls |
|||
getWalls _eps |
public |
float |
Получение значения getWalls _eps |
|||
getSum_ij |
public |
float |
Получение значения getSum_ij |
|||
getSum_ij_eps |
public |
float |
Получение значения getSum_ij_eps |
|||
getTd |
public |
float |
Получение значения getTd |
|||
getTd _eps |
public |
float |
Получение значения getTd _eps |
|||
Конструкторы |
||||||
Имя |
Мод. Доступа |
Аргументы |
Назначение |
|||
Pressure |
public |
String |
Чтение и присвоение значений полям из строки |
SSF.java
Методы |
||||
Имя |
Мод. Доступа |
Тип |
Аргументы |
Назначение |
skip |
private |
int |
String[], int |
Пропуск «пустых» строк в массиве строк |
Список источников и литературы
Воронова Л.И., Воронов В.И. Информационно-исследовательская система "MD-SLAG-MELT". – Свидетельство о государственной регистрации программы для ЭВМ № 2012615018 от 5.06.2012
Герберт Шилдт Java. Полное руководство. 8-е издание, 2012 Издательство: Вильямс ISBN: 978-5-8459-1759-1 1104 с.
Воронова Л.И., Григорьева М.А. Реализация web-приложения для ИИС «Шлаковые расплавы». - Программные продукты и системы, № 1(89), 2010, с.109-112.
Воронова Л.И., Григорьева М.А. Разработка информационной модели физико-химических свойств расплава для исследовательского программного комплекса MD-SLAGMELT. - Межотраслевая информационная служба, № 2, 2011, с.30-36
Воронова Л.И., Григорьева М.А., Воронов В.И. Разработка методов компьютерного моделирования наноструктуры многокомпонентных расплавов. - Фундаментальные исследования, № 8-3, 2011, с. 617-622.