Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / docx59 / docx177 / КурсУги (2).docx
Скачиваний:
18
Добавлен:
01.08.2013
Размер:
1.14 Mб
Скачать

2 Описание глобальных переменных

int ProcRank – переменная типа int, которая хранит в себе значение ранга процесса, выполняющегося в рамках коммуникатора MPI_COMM_WORLD. Необходима для идентификации процесса.

int ProcNum – данная переменная, типа int, содержит в себе значение числа процессов, выполняющихся в рамках коммуникатора MPI_COMM_WORLD. Она необходима для определения границы цикла for при передаче информации.

MPI_Status Status – переменная MPI типа, хранящая информацию об успешном или неудачном выполнении последней MPI операции.

3 Спецификации на программные модули

3.1 Модуль Main.Cpp

Главный модуль программы, который содержит функцию main. По своей структуре схож с классической MPI – программой, в которой в зависимости от ранга процесса (ProcRank) выполняются те или иные действия. Вначале происходит инициализация MPI, определение ранга текущего процесса и количества выполняемых процессов.

Если ранг процесса равен нулю, то вызывается функция DoClientProcess из модуля Client.cpp, иначе (ранг процесса отличен от нуля) вызывается функция DoServerProcess из модуля Server.cpp.

Затем происходит закрытие библиотеки MPI и программа завершает свою работу.

3.2 Модуль Server.Cpp

Если ранг процессора отличен от нуля, то из данного модуля вызывается функция DoServerProcess . Данная функция осуществляет подключение сервера к базе данных, соответствующей его номеру. Сервер ожидает приема SQL – запроса от клиента. После получения SQL – запроса сервер применяет его к своей базе данных и пересылает результат клиенту.

3.3 Модуль Client.cpp

Если ранг процессора равен нулю, то вызывается функция DoClientProcess, которая находиться в данном модуле. В начале работы данная функция осуществляет подключение клиента к базе данных (на данный момент пустой). Затем происходит ввод SQL – оператора пользователем и функция переходит в режим ожидания приема результатов от серверов. После приема происходит обработка полученной информации и запись результатов в базу данных клиента.

4 Схема взаимодействия модулей

Схема взаимодействия модулей программы представлена на рисунке 1. Основной код программы содержится в модуле Main.cpp. Модуль Server.cpp содержит функции работы сервера. Модуль Client.cpp содержит функции работы клиента.

Рисунок 1. Схема взаимодействия модулей

5 UML - диаграммы

5.1 Диаграмма вариантов использования

Диаграмма вариантов использования представлена в приложении Б.

Пользователь работает с программой. Он подать SQL – запрос к базам данных серверов или ввести команду exit для выхода из программы. Варианты использования связаны между собой отношением расширения (extend).

5.2 Диаграмма состояний

Диаграмма состояний представлена в приложении Б.

После запуска программа переходит в состояние инициализации, а затем в состояние ожидание команды. В зависимости от введенной команды состояние меняется на состояние завершение работы или на состояние SQL – запроса, которое сменяется состоянием вывода результатов на экран и записи результатов в базу данных, после чего программа вновь переходит в состояние ожидания команды.

5.3 Диаграмма действий клиента

Диаграмма действий клиента представлена в приложении Б.

Действия начинаются со стандартных функции инициализации MPI_init(). Далее пользователю предлагается ввести SQL запрос, который должен быть применен к базам данных. SQL –запрос отправляется серверам в виде строки функцией MPI_Send, результаты принимаются функцией MPI_Recv, выводятся на экран и записываются в базу данных клиента.

5.4 Диаграмма действий сервера

Диаграмма действий сервера представлена в приложении Б.

Вначале происходит инициализация функций MPI. Затем происходит подключение сервера к соответствующей базе данных. После получения сообщения от клиента сервер, в зависимости от типа принятой команды, либо завершает свою работу, либо выполняет SQL – запрос к своей базе данных, после чего пересылает результат клиенту.

5.5 Диаграмма последовательностей

Диаграмма последовательностей представлена в приложении Б.

Рассмотрим пример передачи данных между тремя программами (один клиент, три сервера). Клиент отравляет SQL – запрос всем серверам, после чего ожидает прием результата. Каждый сервер, получив SQL – запрос, применяет его к своей базе данных, после чего пересылает результат клиенту, который, получив его, обновляет свою базу данных.

6 Структурная схема сети

Структурная схема сети представлена на рисунке 2.

Все процессы в данной сети находятся в одной области видимости (выполняются в рамках одного коммуникатора), но они не могут напрямую взаимодействовать с базой данных другого процесса не могут. Только владелец базы данных может изменять или считывать ее содержимое. Это гарантирует защищенность данных.

Рисунок 2. Структурная схема сети

7 План отладки программы

Проект открывается файлом kyrsProj.sln. После того как проект открыт, необходимо запустить его компиляцию нажатием клавиши F7. И если компиляция прошла успешно, программа запускается и производится просмотр и отладка функций программы.

Для устранения ошибок необходимо использовать режимы пошагового прохода программы (F10) или прогона ее до точки останова (F5).

Регистрация базы данных как источника данных в ODBC позволяет проводить трассировку SQL – запросов. Это является мощным механизмом отладки, так как можно получить и проанализировать log файл, содержащий необходимую информацию.

Тестирование программы целесообразно проводить в сети с числом компьютеров не менее трех.

Соседние файлы в папке docx177