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

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 – запроса, которое сменяется состоянием вывода результатов на экран и записи результатов в базу данных, после чего программа вновь переходит в состояние ожидания команды.