Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
12.02.2015
Размер:
1.01 Mб
Скачать

Министерство образования и науки Российской Федерации Саратовский государственный технический университет

М.Ф.Степанов

Методические указания к выполнению курсовой работы

по дисциплине

Системное программное обеспечение

для студентов специальности 210100 ("Управление и информатика в технических системах")

Одобрено редакционно–издательским Советом Саратовского государственного технического университета

Саратов 2010

Системное программное обеспечение

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

ВВЕДЕНИЕ

Курсовая работа предназначена для закрепления теоретических знаний посредством решения практических задач построения программных систем.

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

1. ЗАДАНИЕ НА ВЫПОЛНЕНИЕ КУРСОВОЙ РАБОТЫ

Разработать распределенную систему решения задач, осуществляющую решение заданной задачи обработки информации.

Разработке подлежат:

¾Программный модуль – функция языка С++ (далее функциональный программный модуль), осуществляющая вычислительные действия по решению заданной функциональной задачи.

¾Библиотека динамической загрузки, содержащая функциональный программный модуль.

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

¾Серверное приложение, осуществляющее анализ текстового представления постановки задачи пользователя, полученного от клиентского приложения, вызов функционального программного модуля в специально созданном потоке команд (нити) (функциональный поток), ожидание завершения работы функционального программного модуля, получение результатов обработки информации от функционального программного модуля, формирование сообщения для клиентского приложения с результатами работы функционального программного модуля, передача сообщения клиентскому приложению, закрытие функционального потока.

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

¾Средства криптографической защиты передаваемой по сети информации.

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

2

М.Ф.Степанов

Создание распределенной системы решения задач

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

¾ Средства аутентификации пользователя клиентского приложения. Выполнение заданий осуществляется в следующей

последовательности (этапы выполнения курсовой работы):

1.Разработка алгоритма решения функциональной задачи.

2.Разработка контрольного примера функциональной задачи для проверки работоспособности функционального программного модуля и его решение средствами системы Матлаб.

3.Разработка функционального программного модуля.

4.Разработка тестового приложения для проверки работоспособности функционального программного модуля и решение контрольного примера функциональной задачи.

5.Разработка библиотеки динамической загрузки, содержащей функциональный программный модуль.

6.Модификация тестового приложения с целью обеспечения возможности решения функциональной задачи, используя функциональный программный модуль, вызываемый из библиотеки динамической загрузки в специальном потоке команд (нити).

7.Разработка входного языка для постановки функциональных задач пользователем.

8.Построение и исследование грамматики входного языка.

9.Разработка лексического анализатора входного языка.

10.Разработка синтаксического анализатора входного языка.

11.Разработка генератора выходного представления.

12.Модификация тестового приложения с целью обеспечения возможности решения функциональных задач, поставленных на входном языке, используя функциональный программный модуль, вызываемый из библиотеки динамической загрузки в специальном потоке команд (нити).

13.Разработка архитектуры распределенной информационной системы и спецификации протокола взаимодействия её компонентов.

14.Разработка на основе ранее созданного тестового приложения серверного приложения, осуществляющего решение функциональной задачи по её текстовой постановке на входном языке, полученной по сети от клиентского приложения, используя функциональный программный модуль, вызываемый из библиотеки динамической загрузки в специальном потоке команд (нити). Ход работы (взаимодействие с клиентским приложением, трансляция постановки задачи, решение задачи функциональным программным модулем) должен протоколироваться на экранной форме и заноситься в файл протокола.

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Методические указания к выполнению курсовой работы

3

 

Системное программное обеспечение

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

15.Разработка на основе ранее созданного тестового приложения клиентского приложения (используются визуальные средства постановки задачи и отображения результатов её решения), позволяющего пользователю осуществить постановку задачи на входном языке, отправить ее серверному приложению, получить и визуализировать результаты. Ход работы должен протоколироваться на экранной форме и заноситься в файл протокола.

16.Разработка программной реализации криптографического алгоритма для защиты передаваемых по сети данных.

17.Снабжение клиентского и серверного приложения средствами криптографической защиты передаваемой по сети информации.

18.Составление программной документации в соответствии с Единой системой программной документации (ЕСПД) на разработанные компоненты распределенной информационной системы.

19.Подготовка пояснительной записки к курсовой работе.

20.Защита курсовой работы.

Распределение работ по срокам выполнения

Неделя

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

Этап

1-4

5

6

7-8

9

10

10

11

12

13

14

15

16

17

18

19

20

2. МЕТОДИКА ВЫПОЛНЕНИЯ РАБОТЫ

Изложение методики выполнения курсовой работы проводится на конкретном примере. Листинги исходных текстов всех рассматриваемых в данных методических указаниях программ приведены в приложении к методическим указаниям, оформленном в виде электронного документа

Appendix.pdf.

Рассмотрим процесс разработки системы обработки информации, осуществляющей решение дифференциального уравнения вида

x& = Ax , x Rn , A Rn ×Rn

при начальных условиях

x(t0 ) = x0

на временном отрезке t [t0 ,tk ].

2.1.Разработка алгоритма решения функциональной задачи

Пусть в качестве метода интегрирования задано использование экстраполяционного метода Адамса первого порядка, расчетные формулы

которого:

yk +1 = f ( yk )

 

&

y1 = y0 +h( y&0) /10

yk +1 = yk +h(3y&k y&k 1) / 2, k >1

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

4

М.Ф.Степанов

Создание распределенной системы решения задач

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

где h - шаг интегрирования.

Разработаем алгоритм решения функциональной задачи и запишем его на псевдокоде.

1. Создать обнулить вещественный массив at с числом элементов

N=(tk t0) / h +2 .

2.Создать вещественный массив ax с числом элементов n ×N .

3.Установить x = x0 .

4.Установить t =t0 .

5.Установить номер шага k =0.

6.Сохранить текущие значения at[k] =t , ax[k] = x .

7.Вычислить dx1 = f (x) .

8.Вычислить x = x +h ×(dx1) /10 (начальный шаг методом Эйлера).

9.Цикл пока t tk

10.Вычислить dx = f (x) .

11.Вычислитьx = x +h ×(3×dx dx1) / 2.

12.Установить t =t +h .

13.Сохранить текущие значения at[k] =t , ax[k] = x .

14.Установить dx1 = dx .

15.Конец цикла

16.Завершить работу.

2.2.Разработка контрольного примера функциональной задачи для проверки работоспособности функционального программного модуля и его решение средствами системы МАТЛАБ

В качестве контрольного примера функциональной задачи примем следующий вариант численных значений исходных данных функциональной задачи:

n =3

 

 

0

1

0

 

 

 

1.9

 

 

 

A =

 

0

0

1

 

,

x(t0 ) =

 

0

 

, t0

= 0 , tk

=10 , h = 0.01.

 

 

 

 

 

 

 

2.6

 

 

 

 

 

0

 

 

 

 

 

1.5

3.7

 

 

 

 

 

 

 

Для решения контрольного примера используется тестовая программа на входном языке системы МАТЛАБ (см. листинг 1).

Результаты решения контрольного примера (выполнения тестовой программы на входном языке системы МАТЛАБ), приведены на рисунке 1.

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Методические указания к выполнению курсовой работы

5

 

Системное программное обеспечение

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Рис. 1. Результаты решения контрольного примера в системе МАТЛАБ

2.3. Разработка функционального программного модуля

Исходными данными в данной задаче являются параметры дифференциального уравнения (матрица A ), начальные условия x0 ,

интервал анализа [t0,tk ], шаг интегрирования h .

Искомым результатом в данной задаче являются массивы чисел ax и at , представляющие собой значения вектора x в моменты времени t .

Имя создаваемого функционального программного модуля должно включать аббревиатуру имени автора. Например, автор – Михаил Федорович Степанов, тогда имя модуля может быть, например,

MFSmodule.

Для удобства взаимосвязи с функциональным программным модулем разработаем структуру данных, включающую как постановку задачи, так и результаты ее решения. Например, см. листинг 2.

Теперь достаточно передать указатель (ссылку) на экземпляр приведенной структуры функциональному программному модулю. Однако действия по выделению и освобождению памяти под используемые в ней массивы остаются за использующим её приложением. Поэтому

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

6

М.Ф.Степанов

Создание распределенной системы решения задач

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

целесообразнее создать класс, методы которого осуществляют соответствующие действия при необходимости. Например, см. листинги 3- 4. Исходный код функционального программного модуля приведен на листингах 5-6.

2.3.Разработка тестового приложения для проверки работоспособности функционального программного модуля и решение контрольного примера функциональной задачи

Тестовое приложение TaskSolve должно предоставлять возможность постановки задачи и визуализации результатов работы функционального программного модуля.

На рисунках 2 – 4 приведены соответствующие экранные формы. Считывание исходных данных задачи, заданных пользователем в полях экранной формы, формирование экземпляра класса TTask, содержащего атрибуты поставленной задачи, вызов функционального программного модуля, получение и визуализация результатов решения задачи осуществляется функцией обработки щелчка на кнопке "Решить задачу!", исходный программный код которой приведен на листинге 7.

При этом используются функции setTask(), viewResultSolveTask(),

исходный программный код которых приведен на листингах 8, 9.

На листинге 10 приведен фрагмент заголовочного файла программного кода экранной формы. Красным цветом отмечен программный код, который следует внести вручную. Остальные фрагменты программного кода создаются автоматически дизайнером экранной формы среды С++ Builder.

Для контроля за временем решения задачи на экранной форме добавлены компоненты TEdit, ProgressBar. Подсчет времени в миллисекундах осуществляется с помощью системной функции

GetTickCount().

Результаты решения контрольного примера с помощью приложения TaskSolve приведены на рисунках 5 – 7.

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Методические указания к выполнению курсовой работы

7

 

Системное программное обеспечение

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Рис. 2. Экранная форма приложения проверки функционального программного модуля. Страница исходных данных

Рис. 3. Экранная форма приложения проверки функционального программного модуля. Страница визуализации графиков

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

8

М.Ф.Степанов

Создание распределенной системы решения задач

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Рис. 4. Экранная форма приложения проверки функционального программного модуля. Страница протокола

Рис. 5. Исходные данные для решения контрольного примера

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Методические указания к выполнению курсовой работы

9

 

Системное программное обеспечение

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Рис. 6. Результаты решения контрольного примера

Рис. 7. Страница протокола решения контрольного примера

_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

10

М.Ф.Степанов

Соседние файлы в папке Системное программирование