Автор: Пользователь скрыл имя, 08 Апреля 2012 в 14:17, курсовая работа
В первые годы существования Всемирной паутины пользователи общались преимущественно через электронную почту, но отправлять письма было неудобно и даже нерационально, если оба собеседника одновременно находились в Интернете. Все изменилось, когда появились первые программы мгновенного общения или, менее официально, мессенджеры или интернет-пейджеры.
Введение 5
1 Аналитический обзор литературы
1.1 Анализ предметной области
1.2 Сравнительная характеристика существующих аналогов 8
1.3 Постановка задачи 10
2 Модели, положенные в основу ПС
2.1 Функциональные модели
2.2 Разработка спецификации требований к программному средству 13
3 Разработка программного средства
3.1 Обоснование выбора среды разаработки
3.2 Особенности реализации
3.3 Разработка программной архитектуры
4 Тестирование программного средства
5 Методика работы с программным средством 20
Заключение
Список использованных источников
Приложение A. Листинг программного средства
Графической технологией, лежащей в основе WPF является DirectX, в отличие от Windows Forms, где используется GDI/GDI+[2]. Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX.
XAML представляет собой XML, в котором фактически реализованы классы .NET Framework. Так же реализована модель разделения кода и дизайна, позволяющая кооперироваться программисту и дизайнеру. Кроме того, есть встроенная поддержка стилей элементов, а сами элементы легко разделить на элементы управления второго уровня, которые в свою очередь разлагаются до уровня векторных фигур и свойств/действий.
3.2 Особенности реализации
ICQ – клиент реализован на базе протокола OSCAR.
OSCAR — открытый (с 5 марта 2008 года), но не свободный сетевой протокол, обеспечивающий обмен мгновенными и оффлайновыми текстовыми сообщениями. В данный момент используется для двух систем: AIM (компания AOL, управляемая Time Warner) и ICQ (компания Mail.Ru).
OSCAR. "Open System for Communication in Realtime" (рус. "Открытая система для общения в реальном времени") - внутреннее название проекта (в отличие от внешнего маркетингового названия) используется для определения протокола обмена мгновенными сообщениями.
FLAP – это низкоуровневый протокол передачи данных, который облегчает разработку высокоуровневых, дейтаграмно-ориентированных слоев по передачи данных. Он использует TCP-соединения между клиентами и серверами.
Байт FLAP-идентификатора всегда 0х2А. FLAP datagram sequence number – используется для выявления ошибок.
FLAP channel – это идентификатор, используемый для определения различных типов данных во FLAP-пакете, для передачи данных через один и тот же TCP-сокет. В некотором роде это аналог TCP/UPD номеров портов. В OSCAR используются пять видов каналов:
0x01 – договор о новом соединении;
0х02 – SNAC-пакет;
0х03 – ошибка FLAP-уровня;
0х04 – договор о завершении соединения;
0х05 – оставаться в сети.
Наиболее часто используется канал 0х02, так как только по нему могут передаваться SNAC-пакеты.
SNAC – это базовый модуль передачи данных между клиентом и сервером. SNAC-слой находится выше FLAP-слоя, он является содержимым поля данных FLAP-а, передается только по каналу 0х02. Формат SNAC:
Нет никакой информации о длине данных в SNAC. Она должна быть определена из заголовка FLAP-а.Флаги являются одним из главных свойств пакета данных. Например, первый бит двухбайтового флага устанавлявается, если да данного id запроса было послано более одного SPAC.
TLV (type-length-value – тип-длина-значение) – очень удобный и эффективный метод для передачи данных в организованном формате, особенно строк переменной длины. 16 бит кода типа, 16 бит значения длины данных, сами данные:
TLV-блоки могут находиться внутри SNAC-блоков, но это не обязательно. Иногда их располагают непосредственно во FLAP-поле с данными, но чаще внутри SNAC. TLV-блоков в SNAC может быть несколько. Введение этих блоков было большим прорывом, ведь стало удобно посылать несколько строк или значений различной длины одним пакетом, например как {0x0011, 0x000c, "afritz@iname.com"}.
3.3 Разработка программной архитектуры
Сам проект состоит из двух подпроектов: Core и ICQLite. Первый отвечает за базовые функции ICQ, авторизацию, передачу данных и прочую бизнес-логику. ICQLite – содержит классы и окна, используемые для построения пользовательского интерфейса.
3.3.1 Core
Основной класс – Session, представляет собой ICQ сессию. Он агрегирует в себе классы-менеджеры ConnectionManager, SSIManager, MessageManager, StatusManager, и т.д. Ниже будут рассмотрены некоторые из них. Класс содержит методы InitializeLogger, Logon, Logoff, AddBuddy, RemoveBuddy, ActivateBuddyList, SendAuthorizationRequest и многие другие (все они располагаются в папке ObjectManagers проекта), которые далее оперируют с методами менеджеров. Также в нем имеются множество событий, которые срабатывают при происхождении каких-либо действий, на которые можно назначить обработчики событий из пользовательского интерфейса для его обновления.
AuthorizationManager – отвечает за авторизацию, содержит методы LoginToService, ProcessIncomingPacket, SendAuthorizationRequest, ProcessLoginResponse и др.
ConnectionManager – класс, отвечающий за установку соединения с сервером. Содержит методы CreateNewConnection, DeregisterConnection, CreateNewChatConnection, CreateNewFileTransferConnectio
Если рассмотреть подробнее методы классов-менеджеров, то можно заметить, что во многих происходит построение TLV-блоков с данными, которые потом обворачиваются в SNAC-пакеты и отправляются на сервер.
Различные SNAC-и описаны как классы в папке SNACs, также там представлены методы работы с ними.
Класс Logging отвечает за логгирование поступивших и отправленных пакетов, что намного упрощает разработку и отладку проекта.
Также имеются классы с описанием делегатов для событий и аргументов различных событий.
3.3.2 ICQLite
В данном подпроекте реализован пользовательский интерфейс приложения. В нем используется концепция событийно-ориентированного программирования. Это значит, что в коде явным образом выделяется главный цикл программы, тело которого состоит из двух основных частей: выборки события и обработки события. Понятно, что недопустимы для приложения длительные выполнения обработчиков событий, поэтому многие операции выполняются в фоновом потоке. Но тут встает проблема обновления пользовательского интерфейса результатами обработки, ведь технология WPF не позволяет изменять UI из потоков, не являющихся основным. Решение – ставить обработчики событий в очередь на выполнение главному потоку методом Dispatcher.Invoke(…).
Первое окно, видимое пользователю при запуске приложения – класса LoginWindow, в нем имеются поля для ввода номера ICQ и пароля, в нем же происходит отправка на сервер этих данных. При успешно прошедшей авторизации это окно загружает окно с контактами класса ContactListWindow, а само закрывается.
ContactListWindow отображает контакты, расформированные по группам, в виде дерева элементов. В главном меню окна имеется возможность добавить контакт – за это отвечает окно AddContactWindow. Каждый контакт из списка контактов имеет контекстное меню, в нем присутствуют опции отображения информации о контакте (AboutWindow) и удаления контакта из серверного списка контактов.
При двойном щелчке на контакте открывается окно с чатом для данного контакта. При повторном двойном щелчке на нем же – то же самое окно повторно выходит на передний план.
ChatWindow. Имееет RichTextBox для ввода текста, а сама переписка отображается выше, с датой отправки сообщения. CheckBox внизу позволяет управлять отправкой сообщения по нажатию клавиши Enter, либо по нажатию кнопки “Send”.
Если окно ChatWindow c перепиской с определенным контактом не было открыто, либо было закрыто, а этот контакт отправил сообщение пользователю, то напротив него в списке контактов отображается значок в виде сообщения, по нажатию на который он пропадает, и открывается окно с чатом.
4 ТЕСТИРОВАНИЕ ПРОГРАММНОГО СРЕДСТВА
Для данного программного средства было использовано и функциональное тестирование:
Тестовые сценарии приведены в таблице 1.
№ | Название модуля | Последовательность действий | Ожидаемый результат |
1 | Авторизация | 1. Заполнить обязательные поля на форме авторизации 2. Нажать на кнопку авторизации | 1. Проверить наличие проверки на обязательные поля 2. Проверить факт авторизации
|
2 | Добавление контакта | 1. Заполнить поля на форме 2. Нажать на кнопку добавления | 1. Проверить удалось ли добавить новый контакт |
3 | Список контактов | 1. Удалить контакт
| 1. Проверить удален ли контакт.
|
4 | Список контактов | 1. Посмотреть информацию о контакте
| 1. Проверить достоверность информации о контакте |
5 | Чат | 1. Отправить сообщение для пользователя, находящегося онлайн | 1. Проверить дошло ли сообщение до собеседника 2. Проверить достоверность дошедшего сообщения |
6 | Чат | 1. Отправить сообщение для пользователя, находящегося оффлайн | 1 Проверить дошло ли сообщение до собеседника 2 Проверить достоверность дошедшего сообщения |
7 | Чат | 1. Отправить сообщение другим контактом для контакта, находящегося онлайн | 1 Проверить дошло ли сообщение до контакта 2 Проверить достоверность дошедшего сообщения |
7 | Чат | 1. Отправить сообщение другим контактом для контакта, находящегося оффлайн | 1 Проверить дошло ли сообщение до контакта 2 Проверить достоверность дошедшего сообщения |
Таблица 1 – Тестовые сценарии
5 МЕТОДИКА РАБОТЫ С ПРОГРАММНЫМ СРЕДСТВОМ
Login-форма cодержит поля для ввода логина (ICQ номера), пароля.
Рисунок 4.1Login – форма
По нажатию кнопки “Sign In” происходит отправка данных на сервер, выполняется авторизация пользователя в сети. При неудаче выводится сообщение о типе ошибки.
Также обновляется статус и проценты выполненной на сервере работы по авторизации:
Рисунок 4.2Статус авторизации
Рисунок 4.3 Общий вид программы
Контакты отображаются по названиям групп, внутри них – списки контактов, зеленый индификатор – контакт находится в сети, красный – оффлайн. Двойным щелчком по контакту открывается окно чата.
В окне чата реализована поддержка оффлайн сообщений (отображаются серым цветом). Есть форма для ввода текста, и форма для отображения переписки. Также можно включить отсылку сообщения по нажатию клавиши Enter.
Если окно чата закрыто, а сообщение от собеседника пришло, в списке контактов отображается значок письма. По двойному щелчку окно с чатом открывается, а он пропадает (заменяется на онлайн/оффлайн значок).
Рисунок 4.4Окно чата
Рисунок 4.5 Общий вид программы (Пришло сообщение)
Рисунок 4.5 Информация о пользователе
Добавление контакта идет в отдельном окне, после контакт лист заново перерисовывается. Удаление происходит при выборе данной опции из контекстного меню контакт-листа, после чего он также заново перерисовывается.
Рисунок 4.6 Добавление контакта
ЗАКЛЮЧЕНИЕ
В результате выполнения данной курсовой работы был получен программный продукт, названный "ICQLite". Было проведено исследование .NET Framework, которая использовалась при создании программного средства, а также протокола OSCAR.
В результате проделанной работы были усвоены основные приемы и навыки объектно-ориентированного программирования с использованием языка программирования высокого уровня C#. Применялись такие базовые концепции как: наследование, полиморфизм, инкапсуляция.
Программа реализует cредство мгновенного обмена сообщениями (англ. Instant messenger, способ обмена сообщениями через Интернет в реальном времени через службы мгновенных сообщений (Instant Messaging Service, IMS))
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
[1] Крупник А. Изучаем С#. Питер, 2001. – 480 c.
[2] Глинн Д. Платформа .NET 3.0 для профессионалов, 2008. – 1024c.
[3] Агуров П.В. C#. Сборник рецептов М.: ООО «Бином-Пресс», 2006. – 512 c.
[4] Шилдт Г. C#: учебный курс, 2007. – 768 c.
[5] Джейсон П. Visual C# 2.0. NET Полное руководство. СПб. : Питер Ком, 2004. – 288 с.
[6] Фролов А., Фролов Г. C#. Визуальное проектирование приложений. М.: ООО «Бином-Пресс», 2006. – 512 c.
[7] Кариев Ч.А. Разработка Windows-приложений на основе Visual C#, 2005. – 1000 c.
[8] Буч Г. Объектно-ориентированный анализ и проектирование. Диалог-МИФИ, 2006. – 800 c.
[9] Бадд Т. Объектно-ориентированное программирование в действии. Диалог-МИФИ, 2005. – 650 c.
[10] Виейра Р. Программирование баз данных. Диалог-МИФИ, 2005. – 1020 c.
Обозначение | Наименование | Дополнительные сведения | |||||||||
| Текстовые документы |
| |||||||||
|
|
| |||||||||
БГУИР КП 1–40 01 01 328 ПЗ | Пояснительная записка | 54 с. | |||||||||
|
|
| |||||||||
|
|
| |||||||||
| Графические документы |
| |||||||||
|
|
| |||||||||
ГУИР 751003 328 ПД | Схема работы системы | Формат А1 | |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
|
|
|
БГУИР КР 1-40 01 01 328 Д1 | ||||||
|
|
|
|
| |||||||
|
|
|
|
| |||||||
Изм. | Л. | № докум. | Подп. | Дата |
ICQ-клиент Ведомость курсового |
| Лист | Листов | |||
Разраб. | Чеушев А.В. |
|
| Т |
|
| 54 | 54 | |||
Пров. | Макаренко А.В. |
|
| Кафедра ПОИТ гр. 751003 | |||||||
|
|
|
| ||||||||
|
|
|
| ||||||||
|
|
|
|