- •Таганрог 2007
- •Содержание
- •Введение
- •Глава 1. Проблема математического сопровождения психологического исследования
- •1.1. Экспериментальная психология как набор инструментов и принципов психологического исследования
- •1.2. Математическое обеспечение психологического исследования
- •1.3. Обзор существующих аналогов
- •1.4. Выводы
- •Глава 2. Проектирование информационной системы
- •2.1. Постановка технического задания
- •2.2. Используемые программные технологии
- •2.3. Архитектурное проектирование программного средства
- •2.4. Обоснование выбора средств разработки
- •2.5. Проектирование интерфейсов
- •2.5.1. Проектирование внутренних интерфейсов
- •2.5.2. Проектирование пользовательского интерфейса
- •2.6. Реализация и эксплуатация программного средства
- •2.7. Модернизация программного средства
- •Глава 3. Безопасность и экологичность проекта
- •3.1. Анализ безопасности
- •3.1.1. Описание трудового процесса при использовании программного средства
- •3.1.2. Анализ и оценка напряженности трудового процесса пользователя
- •3.1.3. Разработка защитных и профилактических мероприятий
- •3.1.4. Анализ надежности программного средства на этапе эксплуатации
- •3.2. Анализ экологичности
- •Глава 4. Экономическое обоснование проекта
- •4.1. Актуальность разработки
- •4.2. Расчет затрат на разработку программного средства
- •4.3. Расчет капитальных вложений
- •4.4. Расчет и сопоставление эксплуатационных расходов
- •4.5. Сводные экономические показатели по разработке программы
- •Заключение
- •Список использованных источников
- •Приложение а Анкета для выявления предпочитаемых математических методов, используемых в психологических исследованиях
- •Приложение б Частота использования различных математических методов в психологических исследованиях
- •Последовательность действий для получения алгоритмов математических процедур из моделей Simulink
- •Для создания кода на языке Си соответствующего построенной модели, нужно установить необходимые параметры моделирования среды Simulink.
- •Приложение г Пример работы с Dll, содержащей математическую процедуру обработки данных
- •Приложение д
- •Приложение е Последовательность действий для создания эталонных файлов, применяемых для верификации алгоритмов математических процедур в создаваемых программой кмс Dll
2.5. Проектирование интерфейсов
В данном разделе, нами будут рассмотрены вопросы проектирования интерфейсов программного продукта. Существуют два уровня проектирования интерфейсов: проектирование пользовательских интерфейсов и проектирование внутренних интерфейсов.
2.5.1. Проектирование внутренних интерфейсов
Основой нашей программы составляет Dll, которая содержит создаваемые и используемые нами математические процедуры. Эта Dll создается программой КМС, верифицируется программой ТМС и используется в программе МОПИ. Далее мы опишем интерфейс нашей Dll.
Dll экспортирует две функции, с помощью которых можно создать экземпляр класса System, который предоставляет доступ к COM-интерфейсу, через который можно использовать содержащуюся в Dll математическую процедуру:
-
CreateSystem. Функция, создающая в программе экземпляр класса System.
BOOL CreateSystem (System **sys);
Параметры:
sys – указатель на указатель на виртуальный класс System.
Возвращаемое значение - true, если экземпляр класса System создан и false – если нет.
-
DestroySystem. Функция, удаляющая в программе экземпляр класса System.
void DestroySystem(System *sys);
Параметры:
sys – указатель на виртуальный класс System.
Класс System предназначен для управления математической процедурой, содержащейся в Dll:
class System
{
public:
virtual void __stdcall Initialize() = 0;
virtual void __stdcall UnInitialize() = 0;
virtual void __stdcall Operate(LPVOID *pin, LPVOID *pout) = 0;
virtual void __stdcall Reset() = 0;
virtual void __stdcall ModelName(char** MN) = 0;
virtual void __stdcall ModelInfo(char** MI) = 0;
virtual void __stdcall GetNumberInput(int* NumberIn) = 0;
virtual void __stdcall GetNumberOutput(int* NumberOut) = 0;
virtual void __stdcall GetInputInfo(unsigned n, rtS* S) = 0;
virtual void __stdcall GetOutputInfo(unsigned n, rtS* R) = 0;
};
Описание функций класса System:
-
void Initialize();
Функция инициализации модели.
-
void UnInitialize();
Функция деинициализации модели.
-
void Operate(LPVOID *pin, LPVOID *pout)
Функция обмена данными с моделью:
pin – указатель на входные значения;
pout – указатель на выходные значения.
-
void Reset();
Функция приведения внутреннего состояния модели в исходное состояние.
-
void ModelName(char** MN);
Функция, возвращающая имя модели. MN – строка, содержащая имя модели.
-
void ModelInfo(char** MI);
Функция, возвращающая описание модели. MI – строка, содержащая описание модели.
-
void GetNumberInput(int* NumberIn);
Функция, возвращающая количество входов модели. NumberIn – число используемых входов.
-
void GetNumberOutput(int* NumberOut);
Функция, возвращающая количество выходов модели. NumberOut – число используемых выходов.
-
void GetInputInfo(unsigned n, rtS* S);
Функция, возвращающая параметры входных сигналов:
n – номер входного сигнала, параметры которого должны быть получены;
S – структура типа rtS, содержащая информацию о входном сигнале, с номером n.
-
void GetOutputInfo(unsigned n, rtS* R);
Функция, возвращающая параметры выходных сигналов:
n – номер выходного сигнала, параметры которого должны быть получены;
S – структура типа rtS, содержащая информацию о выходном сигнале, с номером n.
В экспортируемых функциях используется структура rtS, предназначенная для получения из Dll параметров входных и выходных сигналов. Она используется как возвращаемое значение в функциях GetInputInfo и GetOutputInfo.
rtS {
int TypeSignal;
int FormatSignal;
int Size [2];
};
Структура, содержащая информацию о входных сигналах:
-
TypeSignal – тип используемого сигнала (в соответствии с таблицей 2.1);
-
FormatSignal – формат используемого сигнала (в соответствии с таблицей 2.2);
-
Size [2] – массив, содержащий информацию о размерности сигнала, первый элемент обозначает количество строк, второй – столбцов. При формате данных Scalar массив имеет размерность [1;1]. При формате данных Vector одно из значений должно быть равным 1, а другое - быть большим 1. При формате данных Matrix – оба элемента должны быть больше 1. Если массив заполнен нулями, значит, задан несуществующий номер входа или выхода. Выравнивание для структуры равно 8 байтам.
Таблица 2.1 – Соответствие типов данных сигнала в Simulink значениям элемента TypeSignal структуры rtS
Тип данных в С++
|
Значения, возвращаемые TypeSignal |
char |
1 |
unsigned char |
2 |
short |
3 |
unsigned short |
4 |
int |
5 |
unsigned int |
6 |
float |
7 |
double |
8 |
Если возвращаемое значение равно 0, то был задан номер несуществующего сигнала.
Таблица 2.2 – Соответствие форматов сигнала в Simulink значениям элемента FormatSignal структуры rtS
Тип данных в С++
|
Значения возвращаемые FormatSignal |
Scalar |
1 |
Vector |
2 |
Matrix |
3 |
Если возвращаемое значение равно 0, то был задан номер несуществующего сигнала.
Для доступа к входным и выходным значениям математической процедуры необходимо знать принцип размещения выходных значений Dll в памяти. Размещение элементов вектора в памяти. Первая строчка – адреса, вторая – элементы.
+ se*1 … + se*(N-1)
a |
a |
… |
a |
где , + se*1, …, + se*(N-1)– адреса элементов вектора;
N – размер вектора;
se – размер одного элемента вектора;
a, a, … , a - элементы вектора.
Размещение элементов матрицы [N;M] в памяти. Первая строчка – адреса, вторая – элементы.
+ 1*se … +(M-1)*se
a |
a |
… |
a |
+ 1*M*se + 1*M*se+1*se … + 1*M*se+(M-1)*se
a |
a |
… |
a |
………………………………………………………
+ (N-1)*M*se + (N-1)*M*se+1*se … + (N-1)*M*se+(M-1)*se
a |
a |
… |
a |
где , + 1*se , …, +(M-1)*se, …, + (N-1)*M*se+(M-1)*se – адреса элементов матрицы;
M – количество столбцов матрицы;
N – количество строк матрицы;
se – размер одного элемента матрицы;
a, a, … , a, … a - элементы матрицы.
Например, матрица размером [2;2] должна быть размещена в памяти следующим образом:
+1 +2 +3
-
a
a
a
a
1 строка 2 строка
+(1*M+0)*se
+(0*M+1)*se +(1*M+1)*se
Теперь рассмотрим механизм обмена данными с Dll. Для передачи данных в Dll и приема данных в систему используется функция Operate. В качестве ее параметров используется указатель на массив указателей на первые элементы передаваемых сигналов. В качестве примера на рисунке 2.7 показана передача данных в Dll c тремя входами разных форматов (1-скаляр, 2-вектор, 3-матрица). Пример работы с Dll приведен в приложении Г.
Рисунок 2.7 – Механизм обмена данными с Dll