Моделирование и реализация программного обеспечения

 

Оглавление


ВВЕДЕНИЕ

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

ОСНОВНАЯ ЧАСТЬ

1. Постановка задачи

2. Моделирование и реализация ПО

2.1 Архитектура ПО

2.2 Описание основных функциональных модулей

2.2.1 Интерфейс пользователя

2.2.2 Прикладной компонент

2.2.3 Организация сетевого взаимодействия

2.3 Реализация ПО

3. Руководство пользователя

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ


ВВЕДЕНИЕ


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

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

Таким образом, вычислительная сеть, объединяющая ресурсы нескольких компьютеров, позволяет каждому из них использовать всю совокупность этих ресурсов.

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

На протяжении последних десяти лет специалисты по вычислительной технике работают над усовершенствованием приложений клиент-сервер. В результате были построены приложения, поддерживающие совместную работу множества пользователей с единственным источником данных в сети.

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

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



ТЕОРЕТИЧЕСКАЯ ЧАСТЬ


Согласно онлайновому словарю компьютерных терминов, клиент-сервер - это вид распределенной системы, в которой есть сервер, выполняющий запросы клиента, причем сервер и клиент общаются между собой с использованием того или иного протокола.

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

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

Понятие архитектуры клиент-сервер в системах управления предприятием связано с делением любой прикладной программы на три основных компонента или слоя. Этими тремя компонентами являются:

компонент представления (визуализации) данных;

компонент прикладной логики;

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

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

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

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

Итак, работа сервера - слушать соединение, и это выполняется с помощью специального создаваемого серверного объекта (сокета), который равен: сокет = IP + номер_порта. Работа клиента - попытаться создать соединение с сервером, что выполняется с помощью специального клиентского объекта (сокета). Как только соединение установлено, соединение превращается в потоковый объект ввода/вывода, и с этого момента можно рассматривать соединение как файл, который Вы можете читать, и в который Вы можете записывать данные. Единственная особенность, файл может обладать определенным интеллектом и обрабатывать передаваемые Вами команды.

Сокет(гнездо, разъем) (сокет=IP+ПОРТ) - это программная абстракция, используемая для представления терминалов соединений между двумя машинами. Для такого соединения, существует сокет на каждой машине, и можно представить себе виртуальный кабель соединяющий две машины, каждый конец которого вставлен в сокет.

Как известно в операционной системе Windows связь между разными процессами производится при помощи сокетов (Sockets). Соединяя вместе два сокета, можно передавать данные между разными процессами (локальными и удаленными). Реализация сокетов обеспечивает инкапсуляцию протоколов сетевого и транспортного уровней. Интерфейс , используемый при этом взаимодействии, называется Sockets API. Он представлен библиотекой WinSock и java.net.*.


ОСНОВНАЯ ЧАСТЬ


1.Постановка задачи


Разработать клиент серверное-приложение на основе TCP\IP соединения.

Организовать работу удаленного генератора псевдослучайных последовательностей. Функции в программе: одно целое число в диапазоне, массив чисел в диапазоне.

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

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

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

В работе используются библиотека java.net.*; разработанная компанией Sun, которая упрощает разработку по технологии клиент - сервер.


2. Моделирование и реализация ПО


2.1 Архитектура ПО


Приложение реализовано по технологии клиент-сервер с использованием сокетов Windows, соответственно разрабатываются приложения: клиента и сервера. Приложение «Сервер» запускается в одном экземпляре и выполняет прослушивание заданного порта на предмет подключения клиента. После запроса на подключение сервер устанавливает соединение с клиентом и обрабатывает его запросы. Приложение «Клиент» может быть запущено в нескольких экземплярах.Клиенты подключаются к серверу и посылают ему запросы псевдослучайных последовательностей. Принятые от сервера последовательности отображаются в главном окне. Схема работы программного обеспечения представлена на рисунке 1.






Запрос числа




Рис.1


.2 Описание основных функциональных модулей


Функциональный модуль «Клиент».

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

Функциональный модуль «Сервер».

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


.2.1 Интерфейс пользователя

Для взаимодействия с пользователем в приложении используется оконный интерфейс. В текстовом, консольном режиме.

Главное меню приложения клиента на рисунке 2.


Рис.2


Нужное меню выбирает от 1 до 4. Номер функции отправляется серверу, он обрабатывает ее и высылает результат клиенту.


.2.2 Прикладной компонент

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


.2.3. Организация сетевого взаимодействия

Сетевое взаимодействие происходит посредством передачи и приема данных через сокеты, связывающие клиента и сервера. После установления соединения с сервером клиент по запросу пользователя передает запрос последовательности чисел. Формат запроса приведен ниже:

Ввод последовательности ->запись в переменные на сервере.

Выбор нужного действия -> передача нужной функции на сервер ->ответ от сервера.


2.3 Реализация ПО

приложение программный модуль сетевой

Алгоритм программы клиента рисунок 4.


Рисунок 4

Алгоритм программы сервера рисунок 5.


Рисунок 5


Работа с сокетами представлена классами ServerSocket. Класс, используемый сервером, чтобы слушать входящие соединения и Socket- используемый клиентом для инициирования соединения. Как только клиент создает соединение по сокету, ServerSocket возвращает ему с помощью метода accept() соответствующий объект Socket на сервере, по которому будет происходить связь со стороны сервера. Начиная с этого момента, появляется соединение Socket к Socket, и можно считать эти соединения одинаковыми, т.к. они действительно одинаковые.

3. Руководство пользователя


Для удобства пользователю предоставляется русскоязычное меню. Нужно выбрать нужный вариант из списка и следовать дальнейшему меню.

Вводить параметры для запроса последовательности псевдослучайных чисел и нажимать кнопку «Enter». В окне должны отображаться получаемые от сервера псевдослучайные числа.



Заключение


В ходе выполнения курсовой работы были созданы приложения клиента и сервера, демонстрирующие использование технологии «клиент-сервер» на примере удаленного генератора псевдослучайных последовательностей.

Программа написана на языке Java в среде программированияEclipse. Тестирование показало правильность работы приложения. Разработка и тестирование производились в ОС Windows 7.

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


Список использованных источников


. Шилдт, Герберт. Полный справочник поJava, 7-е издание.: Пер. с аннгл. - М.: Издательский дом «Вильямс», 2012.

. Камалян А.К., Кулев С.А., Назаренко К.Н. и др. Компьютерные сети и средства защиты информации: Учебное пособие /Камалян А.К., Кулев С.А., Назаренко К.Н. и др. - Воронеж: ВГАУ, 2003.

. Б. Страуструп. «Язык программирования java Специальное издание.», 2009 г.

. Компьютерные сети: Учебный курсJDK7 - М.: Издательский отдел «Русская редакция», 1999.



Приложение


Сервер

java.io.*;

import java.net.*;class Server

{min;max;mas[];;static ServerSocketsSocket = null;static Socket cAccepted= null;static ObjectInputStream Input = null;static ObjectOutputStream Output = null;

publicintgetIndexMas(int index)

{mas[index];

}void setMin(int min)

{.min = min;

}void setMax(int max)

{.max = max;

}()

{;

}()

// Функция для генерации случайной последовательности в заданном диапазоне

{= (int)((double)Math.random() / 1 * (max+1 - min) + min);

}(intsize)

// Функция создающая массив определенной длинны и инициализирующая его значения в заданном диапазоне

{= new int[size];(inti = 0; i<mas.length; i++)[i] = (int)((double)Math.random() / 1 * (max+1 - min) + min);

}static void main(String[] arg) throws IOException

{obj = new Server();{.out.println("Старт");= new ServerSocket(1719);

// Создание сокета сервера для заданного порта= sSocket.accept();

// Выполнение метода, который обеспечивает подключение сервера к клиенту.out.println("Клиент подключился\n\n");

Input = new ObjectInputStream(cAccepted.getInputStream());

// Создаемпотокввода= new ObjectOutputStream(cAccepted.getOutputStream());

// Создаемпотоквывода(true)

{c = (Integer)Input.readObject();

switch(c)

{1 :

{

// Принимаем от пользователя минимальный и максимальный диапазоны

obj.setMin((Integer)Input.readObject());.setMax((Integer)Input.readObject());

break;

}2 :

{

// Генерируем число в заданном диапазоне

obj.generateNumber();.writeObject(obj.getGenerateNumber());

break;

}3 :

{

// Генерируем и отправляем массив

int size = (Integer)Input.readObject();.generateNumberMas(size);(inti = 0; i< size; i++)

{.writeObject(obj.getIndexMas(i));

};

}4 :

{.close(); // Закрываетсяпотокввода.close(); // Закрывается поток вывода

cAccepted.close(); // Закрывается сокет.close(); // Происходит отключение сервера от клиента.out.println("Клиент отключился");

return;

}

}

}

} catch(Exception e)

{

} {

{.close(); // Закрывается поток ввода.close(); // Закрывается поток вывода.close(); // Закрывается сокет.close(); // Происходит отключение сервера от клиента

} catch(Exception e) {.printStackTrace(); // Вызывается метод исключения е

}

}

}

}

Клиент:

import java.io.*;java.net.*;

importjava.util.*; // Пакет для работы с сокетами

public class Client

{static Scanner sc = new Scanner(System.in);

// sc - объект для считывания с клавиатуры;

// Сокет через которыйсоединяемся с сервером

privateintgenerateNumber;void setGenerateNumber(intgenerateNumber)

{.generateNumber = generateNumber;

}

publicintgetGenerateNumber()

{;

}static void main(String[] arg)

{obj = new Client();

{

System.out.println("Выполняю соединение с сервером");

cSocket = new Socket("127.0.0.1",1719);.out.println("Установленосоединение");c = (cSocket.getOutputStream());

// Созданиепотокавыводаs = (cSocket.getInputStream());

// Созданиепотокавводаda;

{

{.out.println("\nВведитедиапазонзначений [1]");.out.println("Сгенерировать число в заданном диапазоне [2]");.out.println("Сгенерировать массив [3]");.out.println("Отсоедениться: [4]");.out.print("Ввод: ");

da = sc.nextInt();

}while( da>4 || da<1 );.writeObject(da);(da)

{1 : .out.print("\nВведитеминимальное: ");= sc.nextInt();.writeObject(min);

// Отправляем сервер минимальное число из диапазона.out.print("Введите максимальное: ");

intmax = sc.nextInt();.writeObject(max);

// Отправляем сервер максимальное число из диапазона

break;2 :.setGenerateNumber((Integer)s.readObject());

// Принимаем от сервера сгенерированное число.out.println("Ответ от сервера: "+obj.getGenerateNumber()); // Выводим число на экран;3 :.out.print("Введите размерность массива: ");

intsize = sc.nextInt();.writeObject(size);

// Отправляем серверу размер массива, который он должен создать, а потом заполнить случайными числами

int mas[] = new int[size];

System.out.println("Ответ от сервера, массив: ");

for(int i = 0; i <size; i++)

// Принимаем от севера по одному символу из массива.

{[i] = (Integer)s.readObject();.out.print(mas[i]+" ");

}.out.println();;4:

{.close(); // Закрывается поток ввода.close(); // Закрывается поток вывода.close(); // Закрываем сокет;

}: break;

}

}while(true);

}(Exception e){.printStackTrace();

}

}

}


Оглавление ВВЕДЕНИЕ ТЕОРЕТИЧЕСКАЯ ЧАСТЬ ОСНОВНАЯ ЧАСТЬ 1. Постановка задачи 2. Моделирование и реализация ПО 2.1 Архитектура ПО 2.2 Опи

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ