Реферат по предмету "Информатика, программирование"


Разработка программы приема и передачи сообщений в локальной сети Microsoft

Разработкапрограммы передачи и приёма сообщений в локальной сети Microsoft
Насегодняшний день существует довольно большое число программ отправки и принятиясообщений для локальных сетей под управлением на платформах от компаний Microsoft, таких как семейство Windows 9x (95, 98, ME, XP) и Windows NT4, Windows2000, разнообразных какпо алгоритмам, так и по используемым протоколам. Основной задачей, на которуюследует ориентироваться при выборе подобных программ, является величинабюджета, и как следствие, расходы на дополнительную закупку оргтехники(серверы, дополнительные сети, концентраторы).
Поэтому такиепрограммы разделяются на 2 типа:
- Программыклиент-сервер, то есть передача сообщений осуществляется через выделенныйсервер.
- Программыдля одноранговых сетей, не требующие выделенного сервера.
К первым средствам передачи сообщений можноотнести такие программы, как Microsoft Messenger, AOL ICQ, различные чаты ителеконференции.
Второй тип программ менее функционален, ноэкономически оправдан даже для небольшого бюджета и требует гораздо меньшесистемных ресурсов.
Однако существующие на данный момент программывторого типа являются незаконченными по своим первоначальным идеям их создания.
Целью настоящего проекта явилось создание многофункциональнойпрограммы получения и отправки сообщений по локальной сети. Программаразрабатывалась в локальной сети общежития МИЭТ (SWAMP), насчитывающей 400компьютеров на сегодняшний момент. В процессе создания использовались менеефункциональные, но аналогичные по разработке программы Winpopup и Traypopup.
Эскизный проект
Описание протоколов, используемых принаписании дипломной работы
Стремительное развитие электронной техники илокальных сетей обусловило необходимость создания современного программногообеспечения, и как следствие, необходимость разработки быстрых и удобных виспользовании средств обмена информации, в частности, протоколов.
Протоколы представляют собой набор условий(правил), которые регламентируют формат и процедуры обмена информацией междудвумя или несколькими независимыми устройствами или процессами. Протокол имееттри важнейших элемента: синтаксис, семантику и синхронизацию (timing). Синтаксис протоколаопределяет поля, например, может быть 16-байтовое поле для адресов, 32-байтовоеполе для контрольных сумм и 512 байт на пакет. Семантика протокола придает этимполям значение: например, если адресное поле состоит из всех адресов, это «широковещательный»пакет. Синхронизация – количество битов в секунду – это скорость передачи данных.Она важна не только на самых низких уровнях протокола, но и на высших.
В общих чертах, протокол – это принятый наборстандартов, устанавливающих порядок общения компьютеров. В этом разделерассматриваются протоколы, доступные в операционных системах семейства Windows, как и когда каждый изпротоколов используется, а также приведено краткое описание каждого протокола.
Встроенные основныепротоколы Windows:
·          Network Basic Input/Output System (NetBIOS)
·          NetBIOS Extended User Interface (NetBEUI)
·          Transmission Control Protocol (TCP/IP)
·          NWLink Internetwork Packet Exchange/Sequenced packet Exchange(IPX/SPX)
Теперь рассмотрим каждый из них.
NetBIOS
NetBIOS предоставляет механизмыработы основных функций Windows, таких как просмотр и межпроцессное общениемежду сетевыми серверами. Данный протокол является очень быстрым, требующийсовсем небольшого количества служебной информации, поэтому он используется Windows для основных операций. Ксожалению, NetBIOS не имеет возможностей для маршрутизации и поэтому не может бытьиспользован в качестве основного протокола для сетей, в которых нужны такиевозможности.
NetBEUI
NetBEUI – простой транспортныйпротокол сетевого уровня, предназначенный для поддержки сетей NetBIOS. Как и NetBIOS, NETBEUI не предназначен длямаршрутизации, так что он тоже не может использоваться в большой сети.Преимущества NetBEUI – это его скорость и защищённость от ошибок, простота примененияи небольшие требования к ресурсам. К недостаткам можно отнести отсутствиесредств маршрутизации. Почти полное отсутствие поддержкиплатформенно-независимых операций и слишком малое количество средств для поисканеполадок.
NetBEUI можно использовать тольков небольшой сети. К примеру, в локальной сети общежития МИЭТ, где используютсясредства маршрутизации, применение данного протокола является нецелесообразным.
TCP/IP
Протокол TCP/IP на сегодняшний день чащевсего используется для работы в сети. Именно этому протоколу Интернет обязансвоим быстрым ростом. TCP/IP – самый гибкий транспортный протокол, позволяющийохватывать большие сетевые пространства. Кроме того, он предоставляетвозможности для поддержки платформенно-независимых приложений, маршрутизации, атакже поддерживает протоколы SNMP, DHCP, службы WINS и DNS.
TCP/IP может быть использован влюбой сети, но не рекомендуется для маленьких сетей из-за своих требований кресурсам. С его помощью можно организовывать большие многоранговые сети.
NWLink(IPX/SPX)
NWLink – это реализация фирмой Microsoft набора протоколов IPX/SPX, используемых фирмой Novell в сетях NetWare. Этот протокол включен вNT для возможности общения ссерверами NetWare. С помощью этого протокола клиенты сетей Microsoft могут пользоватьсяресурсами серверов Netware и наоборот
Операционные системы семейства Windows используют NWLink для работы с клиентами исерверами NetWare. Кроме того, клиентам и серверам NetWare требуется служба File And Printer Sevice For NetWare для работы с файлами ипринтерами семейства Windows.
NWLink используется в сетях, вкоторых находятся серверы NetWare, или там, где требуются средства маршрутизации,но не хватает ресурсов для использования протокола TCP/IP.
/>
Рис. 1.1. Пример настройки сетевого окружения OC семейства Windows

Обзор аналогичных программ принятия иотправки сообщений
Наиболее используемыми на сегодняшний моментявлются две следующие программы, не требующие больших системных ресурсов.
1)        Winpopup.
Входит в стандартную поставку Windows. В отличие от Winpopup, в программе, представленнойв данной дипломной работе, окна отправки и принятия сообщений являютсянезависимыми, что очень удобно для быстрых переговоров: в окне отправкисообщения пишется текст, а получение сообщений происходит в другом окне и междуданными окнами можно свободно переключаться. В программе Winpopup такой независимости нет,поэтому для просмотра входящего сообщения приходится отменять отправлениясвоего текста получателю, что является очень неудобной особенностьюстандартного средства отправки и приёма сообщений Windows 9x. Что примечательно, встандартной поставке Windows NT нет аналога Winpopup, поэтому даннаяпрограмма может являться хорошим сервисом для локальных сетей, состоящих изкомпьютеров этой операционной системы.
2)        Traypopup.
Основноепреимущество этой программы перед прародителем (как и основное отличие) состоитв том, что в окошке посылки сообщения есть кнопка Select, которая показываетсписок всех компьютеров, присутствующих в сети. Это удобно, потому что не нужновспоминать имя пользователя в том виде, как оно записано в настройках сети.Также при вызове программы в окне редактирования адреса получателя выставляетсяимя получателя предыдущего сообщения.
Второеотличие от стандартной программы – она не сидит в Панели Задач, апрячется в третьей, к часам, что экономит место, с одной стороны, но неопытномупользователю будет сложно отыскать её среди иконок других программ, с другойстороны. Из недостатков – часто «вылетает» при приёме сообщения, а также неможет справиться с количеством сообщений, больших 30.
Другиеаналогичные программы не рассматриваются в связи их громоздкостью и большимитребованиями к ресурсам.
Технический проект
Общая структура системы
Программа отправки и получения текстовыхсообщений в локальной сети.
Используяпочтовые слоты (mailslots) и функции NetBIOS, данная программа полностью совместима с такимистандартными утилитами как WinPopup, net send. Добавлен ряд полезных новшеств,функций и возможностей, такие как история сообщений, быстрые ответы, поддержкабольшинства ОС Microsoft, быстрый список, поддержка сетевых групп.
Почтовыйслот (mailslot)
Почтовые слоты – это механизмодносторонней пересылки данных между процессами по сети. Почтовые слоты могутиспользоваться для циркулярной рассылки сообщений целой группе компьютероводного домена, однако, с другой стороны, нет никакой гарантии доставкипосланных данных по нужному адресу, а также не предусмотрено извещениеотправителя об их получении.
Любой процесс, который создаёт почтовыйслот для приёма данных, называется сервером слота. Даже если само посебе приложение является клиентом и получает данные от приложения-сервера, поотношению к созданному почтовому слоту оно представляет собой сервер. Дляданного слота любой компьютер может быть сервером, но читать из слота данные (илиобращаться к нему другим способом, например, через наследование) может толькопроцесс, который его создал.
Всякий процесс, которому известно имяслота, может посылать ему данные. Процессы, которые посылают данные на почтовыйслот, называются клиентами слота.
Рассмотрим структуру построения почтовогослота, а также процедуры, используемые при написании данного дипломногопроекта, и опишем их.
Создание почтового слота.
Для создания слота в приложениииспользуется функция CreateMailSlot():
HANDLE CreateMailslot (
LPCTSTR lpName,       
DWORD nMaxMessageSize,  
DWORD lReadTimeout,        
LPSECURITY_ATTRIBUTESlpSecurityAttributes);
Первый параметр – это указатель на ASCII‑строку, содержащуюимя создаваемого почтового слота. Слоты создаются только на локальномкомпьютере, поэтому полное имя слота выглядит следующим образом:
\\.\mailslot\[путь]имя
В именах почтовых слотов поддерживаетсяпсевдокаталоговая структура. Для лучшей организации почтовых слотов в их именахможно указывать пути в каталогах.
Функция CreateMailSlot также принимает вкачестве параметров максимальный размер сообщений, время задержки для операцийчтения и необязательную защитную структуру. Вместо значения задержки можноуказать MAILSLOT_WAIT_FOREVER для блокирования операций чтения на слоте до получения сообщениябез ограничения времени.
Если функция CreateMailSlot() завершается успешно, онавозвращает ключ для нового слота. В случае ошибки возвращается значение INVALID_HANDLE_VALUE, для получения кодаошибки можно воспользоваться функцией GetLastError().
Создание типичного почтового слота можетбыть реализовано следующим образом:
Hslot: = CreateMailSlot(«\\\\.\mailslot\\MySlot\MsgSlot»,
300,
MAILSLOT_WAIT_FOREVER,
NULL);
IfhSlot=INVALID_HANDLE_VALUE then
Begin
ShowMessage (‘CreateMailSlotError’, GetLastError());
Halt(0);
End;
Для изменения времени задержки операцийчтения после создания слота используется функция SetMailSlot(). Кроме того, дляполучения такой информации о слоте, как максимальный размер сообщения, размерследующего сообщения в очереди и количество сообщений в очереди, можноиспользовать функцию GetMailSlotInfo().
Чтение из почтового слота
Для чтения из слота используется функция ReadFile(), которая завершаетсвою работу после получения сообщения, независимо от того, сколько байтнеобходимо прочитать.
Кроме того, с помощью функции GetMailSlotInfo() можно узнатьколичество сообщений, ожидающих в очереди слота, и размер следующего сообщения.
Запись в почтовый слот
Для записи сообщения в слот необходимосначала открыть его ключ с помощью функции CreateFile(), а затемвоспользоваться функцией WriteFile() для посылки сообщения. Ключ слота закрываетсяфункцией CloseHandle().
При вызове CreateFile() необходимо указать имяслота, которому посылается сообщение. Указанное имя допускает циркулярнуюрассылку данных всем слотам с такими же именами на компьютерах домена.
Для локального компьютера имя слотавыглядит следующим образом:
\\.\mailslot\[путь] имя
Для удалённого компьютера имя слота имеетследующий вид:
\\имя_удалённого_компьютера\mailslot\[путь]имя
Для рассылки сообщений всем слотам содинаковыми именами на компьютерах домена необходимо указать следующее имя:
\\имя_домена\mailslot\[путь] имя
Для рассылки всем компьютерам в доменеболее высокого иерархического уровня используется следующее имя:
\\*\mailslot\[путь] имя
Кроме того, при вызове функции CreateFile() можно выбрать режим GENERIC_WRITE, режим совместногоиспользования FILE_SHARE_READ или режим создания OPEN_EXISTING.
После успешного завершения функции CreateFile() ключ, который онавозвращает, можно использовать в функции WriteFile() для посылки сообщенийна слот.
Закрытие слота.
По окончании работы с почтовым слотом кгонеобходимо закрыть вызовом функции CloseHandle() для освобождения ассоциированных с нимсистемных ресурсов. По завершении процесса все ключи слотов, ассоциированные спроцессом, закрываются автоматически. После их закрытия почтовый слотуничтожается, а все данные в его буфере теряются.
Протокол NetBIOSи его команды
При написании программы с использованиемпротокола NetBIOS используется блок управления сетью – Net Control Block (NCB). В таблице 1проиллюстрирована структура NCB, длина и значение каждого поля. Все поля блока NCB перенесены в WinAPI, соответственно,программирование на Delphi с использованием команд NetBIOS является достаточнотривиальной задачей.
Визуальные компоненты Delphi, используемые приразработке данного дипломного проекта.
TMainMenu позволяет поместитьглавное меню в программу. При помещении TMainMenu на форму это выглядит, какпросто иконка. Иконки данного типа называют «невидимыми компонентом», посколькуони невидимы во время выполнения программы. Создание меню включает три шага:(1) помещение TMainMenu на форму, (2) вызов Дизайнера Меню через свойство Itemsв Инспекторе Объектов, (3) определение пунктов меню в Дизайнере Меню.
TPopupMenuпозволяетсоздавать всплывающие меню. Этот тип меню появляется по щелчку правой кнопкимыши на объекте, к которому привязано данное меню. У всех видимых объектовимеется свойство PopupMenu, где и указывается нужное меню. Создается PopupMenuаналогично главному меню.
TLabel служит для отображениятекста на экране. Вы можете изменить шрифт и цвет метки, если дважды щелкнетена свойство Font в Инспекторе Объектов. Видно, что это легко сделать и во времявыполнения программы, написав всего одну строчку кода.
TEdit – стандартный управляющийэлемент Windows для ввода. Он может быть использован для отображения короткогофрагмента текста и позволяет пользователю вводить текст во время выполненияпрограммы.
TMemo – иная форма TEdit.Подразумевает работу с большими текстами. TMemo может переносить слова,сохранять в ClipBoard фрагменты текста и восстанавливать их, и другие основныефункции редактора. TMemo имеет ограничения на объем текста в 32Кб, этосоставляет 10–20 страниц. (Есть VBX и «родные» компоненты Delphi, где этотпредел снят).
TButton позволяет выполнитькакие-либо действия при нажатии кнопки во время выполнения программы. В Delphiвсе делается очень просто. Поместив TButton на форму, Вы по двойному щелчкуможете создать заготовку обработчика события нажатия кнопки. Далее нужнозаполнить заготовку кодом:
procedureTForm1. Button1Click (Sender: TObject);
begin
ShowMessage(‘Test’);
end;
TCheckBox отображает строку текстас маленьким окошком рядом. В окошке можно поставить отметку, которая означает,что что-то выбрано.
TListBox нужен для показапрокручиваемого списка. Классический пример ListBox’а в среде Windows – выборфайла из списка в пункте меню File | Open многих приложений. Названия файловили директорий и находятся в ListBox’е.
TComboBox во многом напоминаетListBox, за исключением того, что позволяет водить информацию в маленьком полеввода сверху ListBox. Есть несколько типов ComboBox, но наиболее популяренспадающий вниз (drop-down combo box), который можно видеть внизу окна диалогавыбора файла.
TScrollbar– полосапрокрутки, появляется автоматически в объектах редактирования, ListBox’ах принеобходимости прокрутки текста для просмотра.
TGroupBox используется длявизуальных целей и для указания Windows, каков порядок перемещения покомпонентам на форме (при нажатии клавиши TAB).
TBitBtn – кнопка вроде TButton,однако на ней можно разместить картинку (glyph). TBitBtn имеет несколькопредопределенных типов (bkClose, bkOK и др), при выборе которых кнопкапринимает соответствующий вид. Кроме того, нажатие кнопки на модальном окне(Form2. ShowModal) приводит к закрытию окна с соответствующим модальнымрезультатом (Form2. ModalResult).
TSpeedButton– кнопкадля создания панели быстрого доступа к командам (SpeedBar). Пример – SpeedBarслева от Палитры Компонент в среде Delphi. Обычно на данную кнопку помещаетсятолько картинка (glyph).
TScrollBox – позволяет создать наформе прокручиваемую область с размерами большими, нежели экран. На этойобласти можно разместить свои объекты.
TTimer – таймер, событие OnTimer периодическивызывается через промежуток времени, указанный в свойстве Interval. Периодвремени может составлять от 1 до 65535 мс.
Требования, предъявляемыек программе отправки и приёма сообщений.
Теперь можно уточнить постановку задачи:требуется написать систему, обеспечивающую выполнение следующих функций:
-           реализациясредств обмена информацией, используя вышеописанные протоколы;
-           использованиефункций для удобной работы приёма и отправки сообщений;
-           выдачаданных пользователям по их запросам.
Система должна работать под управлением Windows 95, реализована в средеразработки Delphi 5. Система должна состоять из двух компонент – ядро реализациисредств обмена информацией и пользовательская оболочка.Выбор платформы проектирования, обоснование
В качествеоперационной среды, в которой реализовался данный дипломный проект, былавыбрана среда Windows9x(WindowsNT).Причины этого следующие:
·  Распространенностьэтих ОС, в связи с чем получается охват большого числа возможных пользователей;
·  Возможностьработы с большими массивами данных, реализация чего в других средахпредставляет нетривиальную и трудновыполнимую задачу;
·  Удобствографического интерфейса дает возможность при минимизации затрат на егореализацию максимизировать удобство работы пользователя с программой. Интерфейсинтуитивно понятен и стандартизован, соответственно пользователь не потратитмного времени на освоение программы и в дальнейшем количество возможных ошибокв его действиях будет минимизировано.
·  32-разрядностьсистем Windows9xи WindowsNT увеличивает скоростьработы с соответствующими числами.
В качествесреды программирования была выбрана среда Borland Delphi5, сочетающая в себе как всепреимущества всех средств, относящихся к RAD, так и свои собственныепреимущества:
·  Простотаи надежность создания и отладки программы;
·  Использованиевсех преимуществ операционных систем Windows’95 и WindowsNT, включая 32-разрядность,многозадачность, удобный интерфейс и прочее;
·  Использованиеобработки исключений (exceptions), что позволяет повысить надежность работыпрограммного продукта;
Наличие и доступность большого количествакомпонент, реализующих многие стандартные функции.
Учитывая специфику задачи и возможностиоперационной системы, разрабатываемая система должна подчиняться следующимтребованиям.
Конфигурациятехнических средств
Требования к составу и параметрам техническихсредств:
-           i48666 MHz процессор (Pentium или выше рекомендуется);
-           4MBоперативной памяти;
-           1Мбсвободного пространства на жестком диске;
– Сетевой адаптер;
Необходимое программное обеспечение:
– Windows’95или Windows NT 4 и выше;
– Поддержка протокола TCP/IP.
Рабочийпроект
Интерфейспрограммы
Главная формасодержит следующие компоненты:
– Основноеменю, состоящее из пунктов работы с сообщениями и опции для работы спрограммой.
– Кнопкидля быстрой работы с сообщениями:
1)  Кнопка «Send» предназначена дляпосылки сообщения на имя другого компьютера или группу.
2)  Кнопка «Delete» удаляет текущеепросмотренное сообщение.
3)  Кнопки навигации посообщениям:
а) Кнопка «
б) Кнопка «>»осуществляет просмотр следующего сообщения.
– Строкасостояния, показывающая текст «No Message» при отсутствии сообщений и информацию оботправителе, получателе и времени получения сообщения при их наличии.
– Окнодля просмотра сообщений.
– Номертекущего сообщения и их общее количество; полезно при навигации и при получениибольшого количества сообщений.
 
/>
Рис. 1.6.Главное окно программы отправки и получения сообщений.
Описание сметоды работы с программой Messenger
Основное менюсостоит из следующих подменю:
– Messages. Состоит из следующихвсплывающих подменю:
Send,Previous, Next, Delete, Delete All и Exit.
Первые четыреподменю вызывают процедуру обработки нажатий «быстрых» кнопок и полностьюаналогичны им по своим функциям.
Подменю Delete All удаляет сразу всепришедшие сообщения.
Подменю Exit осуществляет выход изпрограммы.
– Данное подменю содержитпараметры для работы с программой.
– History. Содержит историюотправленных и полученных сообщений.
– Help. Содержит информацию оработе с программой.
Рассмотрим отдельнокаждую форму.
/>
Рис. 1.7.Настройки программы
1)  Play sound when new message arrives – Включение/отключениезвука, подающегося на колонки через звуковую плату при получении сообщения.
2)  Always on top – При включении даннойопции окно программы будет всегда находиться поверх других окон
3)  Pop up dialog on message receipt – При включении данногопараметра окно программы будет всплывать при получении сообщения.
/>
Рис. 1.8.Окно истории сообщений

/>
Рис. 1.9. Окно отправки сообщения
Рассмотрюболее подробно визуальный процесс посылки сообщения.
При нажатиина кнопку «Send» быстрой работы с сообщениями, равно как и при вызовевсплывающего подменю Send из меню Messages, вызывается новое окно, на котором находится:
1)  Выбор получателясообщений:
a) User or Computer. Им может являться имяпользователя, зашедшего в сеть Microsoft либо имя компьютера.
б) Workgroup. Сообщение можно послатьна любую группу Win9x,в которую могут быть включены компьютеры.
2)  Окно для написанияполучателя сообщений.
3)  Окно сообщения.
4)  Кнопка «Send» для отправлениясообщения.
5)  Кнопка «Cancel» для отмены отправлениясообщения.
6)  Кнопка «Select» для выбора адресатаполучателя.
Если размеротсылаемого или принятого сообщения больше размера формы для его написания, тона данной форме становится активным ScrollBar, с помощью которого можно прокручиватьформу, тем самым просматривая сообщение.
При нажатиина кнопку «Select» вызывается окно поиска всех групп и компьютеров, находящихся вданной локальной сети.
Пользователю достаточно просто выбрать имя в ListBox’e и нажать кнопку «OK», после чего выбранноеимя автоматически отобразиться в окне получателя сообщения.
/>
Рис. 1.10. Выбор адресата получателя
 
Поиск компьютеров в локальной сети
Приведём пример кода программы, реализующую поисккомпьютеров в локальной сети Microsoft.
procedure TForm4. Button1Click(Sender: TObject);
var Q, BufferSize: DWord;
R: THandle;
Buf: ^Buffer;
P: Pointer;
NR: ^NETRESOURCE;
begin
ListBox1. Clear;
if WNetOpenEnumA(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, nil, R) = NO_ERROR then
begin
BufferSize:= 0;
Q:= $FFFFFFFF;
if WNetEnumResourceA (R,Q, Buf, BufferSize) NO_ERROR then
begin
Q:=1;
New(Buf);
while WNetEnumResourceA(R, Q, Buf, BufferSize) = NO_ERROR do
begin
begin
P:= Buf;
NR:= P;
ListBox1. Items. Add (NR^.lpProvider);
L. Add(Buf);
end;
Q:= $FFFFFFFF;
New(Buf);
end;
Dispose(Buf);
end;
WNetCloseEnum(R);
end;
end;
procedure TForm4. FormCreate(Sender: TObject);
begin
ListBox1. Clear;
L:= TList. Create;
end;
procedure TForm4. FormClose(Sender: TObject; var Action: TCloseAction);
var I: Integer;
begin
for I:= 0 to L. Count – 1do
begin
Dispose (L. Items[I]);
end;
L. Free;
end;
procedure TForm4. Button2Click(Sender: TObject);
var
s:string;
begin
if ListBox1. ItemIndex-1then
begin
s:=ListBox1. Items[ListBox1. ItemIndex];
if s[1]='\' then Delete(s, 1, 2);
Form2. Edit1. Text:=s;
ModalResult:=mrOK;
end;
end;
procedure TForm4. ListBox1DblClick(Sender: TObject);
var Q, BufferSize: DWord;
R: THandle;
Buf: ^Buffer;
P: Pointer;
NR: ^NETRESOURCE;
NREsource: NETRESOURCE;
I: Integer;
Err: Integer;
Path: string;
Sr: TSearchRec;
begin
NR:= L. Items [ListBox1.ItemIndex];
Move (NR^, NResource,SizeOf(NETRESOURCE));
ListBox1. Clear;
Path:=NResource.lpRemoteName;
Err:=WNetOpenEnumA(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @NResource, R);
for I:= 0 to L. Count -1do
begin
Dispose (L. Items[I]);
end;
L. Clear;
if Err = NO_ERROR then
begin
BufferSize:= 1024;
q:=1;
New(Buf);
while WNetEnumResourceA(R, Q, Buf, BufferSize) = NO_ERROR do
begin
begin
P:= Buf;
NR:= P;
ListBox1. Items. Add (NR^.lpRemoteName);
L. Add(Buf);
end;
New(Buf);
end;
Dispose(Buf);
end;
WNetCloseEnum(R);
end;
Отправление сообщений
Приведем часть кода программы, реализующуюотправление сообщений:
function TForm2.NBName(s:string):string;
const
size=1024;
var
ncb:TNCB;
buf, p:PChar;
i, k:integer;
ch:char;
res:string;
begin
NBName:='';
GetMem (buf, size);
FillChar (ncb,SizeOf(TNCB), 0);
ncb.ncb_command:=char(NCBASTAT);
ncb.ncb_buffer:=buf;
ncb.ncb_length:=size;
for i:=1 to Length (s) do
ncb.ncb_callname [i‑1]:=UpCase(s[i]);
for i:=Length (s) toNCBNAMSZ do ncb.ncb_callname[i]:=' ';
ncb.ncb_callname[NCBNAMSZ‑1]:=#03;
ch:=netbios (addr (ncb));
if (ch#0) and(ncb.ncb_retcode#0) then Exit;
p:=ncb.ncb_buffer;
with PAdapterStatus (ncb.ncb_buffer)^do
begin
p:=p+SizeOf(TAdapterStatus);
for i:=0 to name_count‑1do
begin
with PNameBuffer (p)^ do
begin
if (name [NCBNAMSZ‑1]='') and ((ord (name_flags) and UNIQUE_NAME)=UNIQUE_NAME) then
begin
res:='';
for k:=0 to NCBNAMSZ‑2do if name[k]' ' then res:=res+name[k];
NBName:=res;
end;
end;
p:=p+SizeOf(TNameBuffer);
end;
end;
FreeMem (buf);
end;
procedure TForm2. Button1Click(Sender: TObject);
var
handle:THandle;
lpFileName:PChar;
lpNumberOfBytesWritten:Cardinal;
buffer:string;
i:integer;
s:LPSTR;
comp:string;
name, name2:PChar;
name1:string;
namesize:DWORD;
begin
Button1. Enabled:=False;
if RadioButton1. Checkedthen
begin
comp:=NBName (Edit1. Text);
lpFileName:=PChar('\\'+comp+'\mailslot\messngr'+#0);
handle:=CreateFile(lpFileName, GENERIC_WRITE, 0, NIL, CREATE_ALWAYS, 0, 0);
ifhandle=INVALID_HANDLE_VALUE then
begin
ShowMessage ('Error whenexecuting CreateFile()');
end;
buffer:='';
for i:=0 to Memo1. Lines.Count‑1 do
buffer:=buffer+Memo1. Lines.Text+#10+#13;
name1:='';
namesize:=MAX_COMPUTERNAME_LENGTH+ 1;
GetMem (name,MAX_COMPUTERNAME_LENGTH + 1);
GetComputerName (name,namesize);
name2:=name;
for i:=0 to namesize‑1do
begin
name1:=name1+name2^;
name2:=name2+1;
end;
FreeMem (name);
buffer:=name1+#0+Edit1.Text+#0+buffer;
s:=LPSTR (buffer);
WriteFile (handle, s^,length (buffer) – 2, lpNumberOfBytesWritten, NIL);
if length (buffer) –2lpNumberOfBytesWritten then
begin
ShowMessage ('Error whenwriting file. Number Of Bytes Written: '+IntToStr (lpNumberOfBytesWritten));
end;
CloseHandle (handle);
end;
Button1. Enabled:=True;
end;
Используя функции NetBIOS, процедура Tform2.NBName определяет. является лиадресат пользователем удалённой машины или данное имя является самимкомпьютером, а также, не является ли адресат рабочей группой сети Microsoft.
Также, часть данной процедуры определяет,запущена или нет на данной машине ещё одна программа «всплывающих сообщений».Так как для совместимости с аналогичными программами требуется указать одно ито же имя почтового слота (в данном случае, имя компьютера, на котором запущеноданное приложение), то при наличии другой подобной программы показывается окнос кодом ошибки. Код ошибки определяется средствами NetBIOS и в данной дипломнойработе реализована процедурой NBName.
/>
Рис. 1.11. Ошибка при создании почтовогослота

Коды ошибок, выдаваемые NetBIOS, указаны в техническомпроекте.
Структура приёма сообщений
Прикладная программа, используя интерфейс WinAPI и встроенные функции Windows, постоянно опрашиваетпочтовый слот на наличие приходящего сообщения. В отличие от DOS, например, в которомданная реализация представляла бы бесконечный цикл и все ресурсы компьютерауходили бы на ожидание сообщения, операционная среда Windows позволяет создавать такиециклы без практической потери ресурсов, разделяя части программы на потоки (threads). При наличии сообщенияв почтовом слоте оно передаётся в программу средствами NetBIOS. Почтовый слот можетсодержать в себе любое количество сообщений, независимо от того, когда они всебудут востребованы данной программой.
Прием сообщений можно реализовать следующимобразом:
Var L: Tlist;
procedure TForm1. ShowMess;
var
p:PChar;
s:string;
begin
Memo1. Clear;
p:=L. Items[Current];
s:='Message from ';
repeat
s:=s+p^;
p:=p+1;
until (p^=#0);
p:=p+1;
s:=s+' to';
repeat
s:=s+p^;
p:=p+1;
until (p^=#0);
Label1. Caption:=s;
p:=p+1;
s:='';
repeat
s:=s+p^;
p:=p+1;
until (p^=#0);
Memo1. Lines. Add (s);
StatusBar1. Panels[0].Text:='Currentmessage: '+IntToStr (current+1);
StatusBar1. Panels[1].Text:='Totalnumber of messages: '+IntToStr (L. Count);
end;
procedure TForm1. Timer1Timer(Sender: TObject);
var
lpNextSize:DWORD;
lpMessageCount:pointer;
buffer:PChar;
lpNumberOfBytesRead:DWORD;
MessageCount, all:DWORD;
s:string;
begin
lpMessageCount:=addr(MessageCount);
if GetMailslotInfo (h,nil, lpNextSize, lpMessageCount, nil) then
begin
iflpNextSizeMAILSLOT_NO_MESSAGE then
begin
Beep;
all:=MessageCount;
while all0 do
begin
GetMem (buffer,lpNextSize);
if ReadFile (h, buffer^,lpNextSize, lpNumberOfBytesRead, nil) then
begin
s:='';
L. Add (buffer);
StatusBar1. Panels[1].Text:='Totalnumber of messages: '+IntToStr (L. Count);
if L. Count=1 then begincurrent:=0; ShowMess; end;
GetMailslotInfo (h, nil, lpNextSize,lpMessageCount, nil);
end
else FreeMem (buffer);
all:=all‑1;
end;
end;
end;
end;
Процедура Timer1Timer является ядром получениясообщений, в то время как ShowMess – реализацией выдачи сообщения на экран в виде,понятном пользователю.
Строки
StatusBar1. Panels[0].Text:='Currentmessage: '+IntToStr (current+1);
StatusBar1. Panels[1].Text:='Total number of messages: '+IntToStr (L. Count), входящие в составданной процедуры, характеризуют номер сообщения по счёту всего количествасообщений и количество всех сообщений.
С учетом вышеописанного, пришедшее сообщениевыглядит таким образом:

/>
Рис. 1.12. Пример полученного сообщения
Используя кнопки навигации, можно легкопросматривать все пришедшие сообщения, одновременно использую другие функции Messenger’a.
/>
Рис. 1.13. Обзор пришедших сообщений
В данном разделе в части литературного обзорабыли рассмотрены общие положения, применяемые разработчиками программногообеспечения средств передачи информации в сетях Microsoft, даны основные подходысоздания программ отправки и принятия сообщений; показан пример разработкиданного программного обеспечения.
В разделе «Постановка задачи» были рассмотренытребования к системе.
Технический проект содержит общую структурусистемы, структуру данных, связи между объектами, алгоритмические связи,простота использования подобных программ для пользователей, кратко описаныосновные типы компонент и классов, используемые для написания программ отправкисообщений.
В рабочем проекте дана конфигурация техническихсредств, алгоритмы работы программы, структурная схема работы программы,показана иерархия форм, включая примеры диалога с пользователем и участкипрограммного кода, описывающие важные процедуры системы отправки и принятия сообщений.
В целом представлена полная и объективнаякартина, отражающая содержание выполненных работ по проектированию программработы с сетевыми протоколами операционных систем семейства Windows, созданию алгоритмовреализации аналогичного программного обеспечения и их программной реализации.
Разработкапрограмм в среде Borland Delphi 5 относится к технологии RAD (Rapid Application Development) – быстрое созданиеприложений. До появления RAD‑средств делались попытки облегчить трудпрограммиста, сделать этот труд более продуктивным, повысив этим быстродействиеи удобство создания приложений. Первоначально появились интегрированные средыразработки – IDE (Integrated Development Environment), объединяющиекомпилятор, специальный текстовый редактор, ориентированный на работы стекстами на целевом языке программирования и средства отладки – трассировщик,дебаггер и другие. По сравнению с предыдущими средствами программирования этобыл большой шаг вперед, но затем появились CASE‑средства, которыепозволяли максимально визуализировать процесс создания программы, но пользоватьсяими было чересчур неудобно из-за их негибкости. В большинстве случаев написатьдостаточно сложную программу было очень трудно. Средства RAD, взяв все лучшее изинтегрированных сред разработки и CASE систем, объединилигибкость работы с исходными текстами с удобством создания графическогоинтерфейса пользователя – GUI (Graphic User Interface). К сожалению,большинство RAD‑средств не позволяют визуализировать логику самойпрограммы, но и те методы, которые заложены в Delphi 5, позволяют поднятьпроизводительность разработки программ в 2–3 раза.
Особенностиразработки программ в среде Delphi5
Основнымиподходами к программированию на Delphi являются визуальная компонентность имногократное использование кода. Рассмотрю каждый из этих методов вотдельности.
Визуальнаякомпонентность
Данный подходявляется логическим развитием объектно-ориентированного программирования (ООП).Каждый компонент имеет свои события (events), методы (methods) и свойства (properties). Методы и событияпришли из объектно-ориентированного программирования, а свойства являютсяпривилегией компонентного подхода. Свойства позволяют изменить состояниекомпонента, причем как динамически – во время работы программы, так и статически– визуально во время разработки. Естественно, что компоненты имеет все теособенности, что и объекты в объектно-ориентированном программировании – наследование,полиморфизм и инкапсуляция.
/>Многократноеиспользование кода
Термин«многократное использование кода» (code reuse) говорит сам за себя.Данная технология подразумевает возможность написания таких участков программ,которые затем с небольшими изменениями (или совсем без изменений) могут бытьиспользованы в другой программе. Нельзя сказать, что такой подход являетсяпривилегией RAD-средств: еще раньше программисты поняли преимущества возможностивыделения универсальных и часто используемых подпрограмм в отдельные библиотеки(модули). Таким образом, появлялись библиотеки подпрограмм для различных языковпрограммирования, работающие с графикой, базами данных, реализующие многиематематические функции и прочие универсальные задачи. Но именно в RAD‑средствахтехнология многократного использования кода приобрела законченный и целостныйвид – существует широкий набор стандартных компонентов, которые могут использоватьсяво многих программах различного типа.
Сложностьданного подхода в изменении идеологии программирования – разработчик долженизначально ориентироваться на создания кода, который затем можно будет многократноиспользовать. Особенно актуальна эта проблема для групп разработчиков. В этомслучае необходимо мыслить глобально, с учетом требований всех членов группы иперспективы дальнейших разработок.
Кромеописанных выше средств, существует также некоторый набор инструментов, назначениекоторого состоит в автоматизации рутинной работы по написанию операционныхсред, графических интерфейсов и т.д.
Cоздание программ в средеDelphi
Cоздание программ в среде Delphiявляется удобным и простым делом. Для генерации программы первоначальнонеобходимо создать файл проекта, имя которого будет совпадать с именембудущей программы. Причем Delphiсама сделает каркаспрограммы – пользователю необходимо только выбрать соответствующий пункт вдиалоговом окне New,которое показано на рис. 1:

/>
Рис. 2.1. Окно выбора объекта создания
Таким образом, выбрав тип создаваемой программы,программист получит готовый шаблон, который затем необходимо будет заполнитьсодержанием.
Каждое окно вDelphi называется формой. Наформе располагаются различные визуальные и не визуальные компоненты. Весь наборкомпонент, доступных в системе, хранится в файле complib.dclили в файле с другимименем и отображается в специальном окне среды Delphi, называемом «палитройкомпонент» (component palette).
Палитраразбивается на страницы, группирующие компоненты по каким-либо общим признакам.
/>
Рис. 2.2. Палитра компонент
Опишу основные компоненты палитры.
Standard. Большинство компонентовна этой странице являются аналогами экранных элементов самой Windows. Нокомпоненты Delphi обладают также некоторыми удобными дополнительнымивстроенными возможностям.
Additional. Эта страница содержитболее развитые компоненты. Например, компонент Outline удобен для отображенияинформации с иерархической структурой, а MediaPlayer позволит вашим программамвоспроизводить звук, музыку и видео. Данная страница также содержит компоненты,главное назначение которых – отображение графической информации. КомпонентImage загружает и отображает растровые изображения, а компонент Shape,позволяет разместить на форме окружности, квадраты и т.д.
System. Поскольку не каждая потребность, связанная с обработкой файлов,может быть удовлетворена с помощью стандартных диалоговых окон, страница Systemпредоставляет возможность комбинировать отдельные элементы, такие как спискидисков, каталогов и файлов. Страница System также содержит компоненты,обрабатывающие обмен высокого уровня между программами посредством OLE (ObjectLinking and Embedding). А компонент Timer может генерировать события черезопределенные, заранее установленные промежутки времени.
Win32. Эта страница содержиткомпоненты, позволяющие созданным с помощью Delphi программам использоватьтакие нововведения в пользовательском интерфейсе 32‑разрядной Windows,как просмотр древовидных структур, просмотр списков, панель состояния,присутствующая в интерфейсе программы Windows Explorer (Проводник), расширенныйтекстовый редактор и др.
Dialogs. Windows 3.1 ввела вупотребление стандартные диалоговые окна для операций над файлами, выборашрифтов, цветов и т.д. Однако для использования их в обычной программе Windowsможет потребоваться написать немало вспомогательного кода. Страница Dialogsпредоставляет программам Delphi простой доступ к этим стандартным диалоговымокнам.
Data Access и Data Controls. Delphi использует механизм баз данныхкомпании Borland (Borland Database Engine, BDE) для организации доступа кфайлам баз данных различных форматов. Компоненты этих двух страниц облегчаютпрограммам Delphi использование сервиса баз данных, предоставляемого BDE,например многопользовательского считывания, записи, индексации и выдачизапросов для таблиц dBASE и Paradox. С использованием этих компонентов созданиепрограммы просмотра почти не требует программирования.
Internet. Эта страница предоставляет компоненты для разработкиприложений, позволяющих создавать HTML‑файлы непосредственно из файловбаз данных и других типов, взаимодействующих с другими приложениями дляInternet. Delphi 4 дает возможность создавать приложения для Web‑серверав виде DLL‑файлов; (Dynamic Link Library – Динамически компонуемаябиблиотека), способных содержать невизуальные компоненты. С помощью компонентовстраницы Internet довольно просто создавать обработчики событий для обращения копределенному URL (Uniform Resource Locator – Унифицированный локатор ресурса),представлению документов в HTML‑формате и пересылки их клиент-программе.
ActiveX. Эта страница содержит компоненты ActiveX, разработанныенезависимыми производителями программного обеспечения: сетка, диаграмма, средствопроверки правописания.
Midas и Decision Cube. Здесь собраны компоненты для доступа к удаленнымсерверам и осуществления SQL – запросов.
Гибкостьсреды Delphiпозволяет настраивать палитру по своемуусмотрению – объединять, разбивать страницы, переносить компоненты с однойстраницы на другую и т.п. Для того, чтобы поместить компонент на форму,необходимо нажать на его изображении на палитре компонент кнопку «мыши», затемпереместить указатель «мыши» на нужное место и там отпустить. Это процессприведет к тому, что у класса формы появится поле типа этого компонента. Собравна одну форму несколько компонентов, можно получит сколь угодно сложныедиалоговые окна с полями ввода, мемо-полями и прочими компонентами. Простойпример создаваемого окна (в режиме разработки).
Разрабатываемаяформа с несколькими визуальными компонентами. Хотя количество визуальныхкомпонент на форме практически не ограничено, здравый смысл подсказывает, чтоперегружать форму ими не целесообразно, поскольку пользоваться программой с большимколичеством кнопок, полей ввода и т.д. будет трудно из-за информационнойперенасыщенности. Кроме того, рекомендуется каждый визуальный компонент снабжатьстрокой описания, чтобы пользователь мог догадаться, что же от него требуется.
Кромевизуальных, существуют также невизуальные компоненты. Поместив такой компонентна форму и запустив программу, мы ничего не увидим. Но некоторые компоненты вовремя работы себя отображают, правда для этого необходимо вызвать их методы. Ктаким компонентам относится всевозможные диалоговые компоненты, например OpenDialog, который являетсястандартным окном для открытия файла. Другие невизуальные компоненты внешненикак себя не проявляют, например компонент DataSet.
Свойствакаждого компонента и формы в целом, а также события, на которые ониоткликаются, отображаются в окне инспектора объектов (object inspector). Инспектор объектовимеет две страницы – страницу со свойствами и страницу с событиями. Общий видобеих страниц указан на рис. 2.4:

/>/>
Рис. 2.4. Инспектор объектов
Приредактировании свойства в инспекторе объектов учитывается тип этого свойства.Например, если свойство логического типа, то возможен будет выбор только лишь междузначениями Trueи False. Для более сложных свойств, например, длясписков строк, существуют свои редакторы свойств. Например, компонент ComboBox с рис. 8 имеетсвойство Items типа списка строк – TStrings. В этом случае нажатие на кнопку смноготочием, расположенную рядом с именем свойства, приведет к активизацииредактора списка строк. Его вид показан на рис. 5
Длянестандартных свойств, описанных программистом, существует возможность созданиясвоего редактора свойств методами Delphi.

/>
Рис. 2.5. Редакторсписка строк
Кроме задания значений свойств, инспекторпомогает задавать реакцию на всевозможные события, которые могут происходить в программе– перемещение указателя «мыши», нажатие и отпускание клавиш клавиатуры и т.п.На соответствующей страничке инспектора есть список множества стандартных длякомпонента (или формы) событий. Каждому событию соответствует своя процедураобработки этого события. Причем одна процедура может обрабатывать несколько событий.Все это указывается с помощью инспектора событий.
Замечу, чтовизуальными средствами среды Delphi построить законченное приложение практически невозможно.Такими средствами можно только облегчить создание программы. Всю логикупридется писать старым методом – для каждой процедуры обработки событий вручнуювписывать код.
Однако,существует определённая методика написания программы, призванная облегчитьсобственно разработку и сэкономить время на представление готового продукта иего последующую модернизацию.
Основныеэтапы решения задач на ЭВМ
Составлениепроекта
На основаниианализа технического задания программист выбирает основной метод решениязадачи, составляет общий проект программы. Выбранный подход к решению задачидолжен обеспечивать правильные результаты для тех условий функционированияпрограммы, которые определены ТЗ, гарантировать требуемую скорость работы,предусматривать удобство использования программы и т.п.
В проектетакже характеризуются основные части проектируемой программы, их функции,взаимосвязь и последовательность выполнения, а также точно определяются входныеданные и выдаваемые результаты как всей программы, так и основных ее частей.
Алгоритмизация
Приразработке алгоритма необходимо учитывать ресурсы используемой ЭВМ (еескорость, память) и возможности применяемой для решения задачи операционнойсистемы. Алгоритмы для несложных задач, требования которых к ресурсам невелики,являются обычно машинно-независимыми. Алгоритм удобно записывать в видеблок-схем.
Программирование
В случае,когда на предыдущем этапе был получен детально разработанный алгоритм,составление программы на выбранном для программирования языке (алгоритмическомязыке высокого уровня, автокоде, языке ассемблера или машинном языке) сводитсяк переводу этого алгоритма на язык программирования. Основная трудность принаписании заключается в доскональном знании требований языка и постоянномвнимании к деталям программы. Если этап 2.4.2. был выполненнекачественно, программисту придётся дорабатывать программу «на ходу», во времянаписания.
Трансляция
Трансляторв ходе осуществления трансляции производит поиск синтаксических ошибок впрограмме и, в случае их обнаружения, выводит диагностику, помогающуюпоследующей локализации ошибок. Трансляция, а вместе с ней и поисксинтаксических ошибок, могут быть прекращены, если найдена очень грубая ошибка.
Отладка
На этапеотладки производится обнаружение с помощью ЭВМ ошибок в программе и ихисправление. Этап отладки можно разделить на три подэтапа:
6.1.Контроль правильности программы.
6.2.Локализация ошибок.
6.3.Исправление ошибок.
Подробно оботладке будет сказано в главе 2.5.
Оформлениепрограммы
Длявозможности эксплуатации программы кем-либо кроме автора она должна бытьоформлена: составлено ее описание, изготовлены машинные носители для передачипрограммы пользователям.
Отчет оработе
На основании результатов, полученных входе эксплуатации программы, составляется отчет о проделанной работе,оценивается выбранный метод решения задачи и эффективность программы;публикуются научные выводы.
Модернизация
При активной эксплуатации программы рано илипоздно встаёт вопрос о модернизации старой программы или составлении новой,развивающей идеи, реализованные в прежней программе. Поэтому для уменьшениявремени модернизации рекомендуется применять стуктурированное написаниеисходной программы.
В этойпараграфе была рассмотрена упрощенная схема разработки программы в среде Delphi. Но кроме созданияисходного текста необходимо помнить и об отладке программ.
Методы исредства отладки
Оказывается,практически невозможно составить реальную программу без ошибок, и почтиневозможно для достаточно сложной программы быстро найти и устранить всеимеющиеся в ней ошибки.
Такимобразом, можно сказать, что наличие ошибок в только что разработанной программеэто вполне нормальное и закономерное явление. А совсем ненормальным, из рядавон выходящим фактом является отсутствие ошибок в программе, которая не былаеще подвергнута тщательной отладке. Конечно, речь здесь идет о реальных,достаточно сложных программах. Учитывая этот печальный закон, разумно уже приразработке программы на этапах алгоритмизации и программирования готовиться кобнаружению ошибок на стадии отладки принимать профилактические меры по ихпредупреждению. Например, уже на первом этапе, когда выбирается общий методрешения задачи, следует разработать и основную стратегию отладки, общий план еепроведения. Необходимо уже на этой стадии разработки программы решить, какимпутем можно будет в дальнейшем убедиться, что выбранный метод решения задачиобеспечивает правильные результаты для указанных в ТЗ диапазонов изменениявеличин и условий функционирования программы.
Приразработке алгоритма программы решаются тактические вопросы проведения отладки,намечаются способы контроля отдельных блоков и приемы предстоящей локализацииошибок в них. Для этого проектируются контрольные примеры, по алгоритмам(блок-схемам) намечаются места и моменты необходимой отладочной печати ивыбираются выводимые на печать данные, которые должны обеспечить возможностьбыстрой локализации ошибок при отладке. Разрабатывая алгоритм, следует, такимобразом, учитывать, можно ли будет достаточно просто проконтролироватьпрограмму, составленную по выбранному алгоритму, и в случае, когда предвидятсябольшие затруднения, нужно отдать предпочтение другому, более выгодному дляэтапа отладки, алгоритму. Нужно всегда помнить, что главным критерием ценностипрограммы является ее правильность, и для гарантирования такого свойствапрограммы следует жертвовать другими показателями, такими, например, какскорость работы или требуемый объем памяти. Давно ушли в прошлое те времена,когда программу оценивали только по количеству команд в ней.
Вообще, можносчитать, что именно на этапах алгоритмизации и программирования закладываетсяфундамент быстрой и успешной отладки. Чем более тщательно проведены этапыпостановки задачи, и в частности, чем более детально разработан план отладки,чем больше внимания было уделено проверке составленного алгоритма и программы,а также применению отладочных средств для облегчения предстоящей отладки, темменьше времени потребуется на проведение самой отладки и тем скорее будутполучены на ЭВМ результаты, которым можно будет доверять. Наоборот, стремлениек максимально быстрому составлению программы с целью скорейшего начала (иокончания) ее отладки, приводит к обратному результату: отладка затягиваетсянадолго, и получение достоверных результатов откладывается на длительный срок.Такая задержка вызывается тем, что уже на поздних этапах отладки (а иногда – исчета) вскрываются все новые и новые ошибки, допущенные на этапахалгоритмизации и программирования, и приходится тратить много времени на ихобнаружение и исправление. Кроме того, каждое выполнение внутреннего циклатребует обращения к ЭВМ за получением новых результатов, на ожидание которыхтратится обычно от нескольких часов до нескольких дней. Напрашивается вывод,что для ускорения отладки нужно сократить кратности указанных циклов, выходя намашину с программой уже тщательно проверенной и подготовленной заранее котладке.
Перечислюсодержание этапов 1–6, имеющих целью облегчить предстоящую отладку и сократитьвремя ее проведения.
1. Разработкаобщего плана проведения отладки, общей методики проверки правильностисоставленной программы, а также системы необходимых для отладки контрольныхпримеров.
2. Проверкаразработанных алгоритмов, выбор отладочных средств и определение контролируемыхими мест, участков, величин.
3. Проверкасоставленной программы, реализация намеченного ранее плана использованияотладочных средств для получения на ЭВМ необходимых при локализации ошибоктестовых результатов; изготовление эталонных результатов для тестов.
4. Ввод,печать и сверка текста программы, перенесенной на внешние носители.
5. Получениес помощью транслятора вспомогательных таблиц (например, таблица перекрестныхссылок) и проверка их.
6. Тщательныйконтроль первых результатов, получаемых по новой программе.
У начинающихпрограммистов изложенный плановый подход к проведению отладки (этапы 1 и 2)вызывает вначале трудности, поскольку им приходится разрабатывать план отладкидля несуществующей пока программы. Но нет другого пути освоить этот эффективныйспособ, кроме как развивать в себе навыки планирования своей работы ипредвидения особенностей предстоящей отладки программы по ее проекту и общималгоритмам. Чем на более ранней стадии разработки программист начинаетзаниматься вопросами отладки программы, тем меньше неприятных неожиданностейожидает его в будущем. Надежды на то, что устранение ошибок из программы иполучение правильных результатов произойдет как-то само собой, без затратыособых усилий, никогда не оправдываются. Вообще, оптимизм и самоуверенность дляпрограммиста на стадии разработки противопоказаны; они могут являться полезнымитолько на стадии отладки при затяжной борьбе с очень глубоко скрытыми ошибками.
Примерноераспределение между этапами общего времени, необходимого для разработкидостаточно сложных программ, выглядит следующим образом [1, 6]:
1. Получениезадания, составление проекта программы и общего плана отладки 10%.
2. Разработкаалгоритма (15%) и детального плана отладки 20%.
3. Программирование(5%) и изготовление тестов 15%.
4. Подготовкаи первая трансляция 5%.
5. Отладка 40%.
6. Оформлениепрограммы 10%.
Приведенныецифры отражают тот факт, что в процессе разработки программы работы подоказательству (демонстрации) правильности разрабатываемой программыравнозначны работам по ее изготовлению (проектированию, алгоритмизации инаписанию), что можно выразить следующей формулой:
разработкапрограммы = изготовление + доказательство.
Поэтомупрограммой следовало бы называть только такую программу, которая выдаетправильные результаты, а то, что еще не прошло стадию доказательстваправильности, является не программой, а ее полуфабрикатом.
Конечно, дляпростых задач распределение времени между этапами будет несколько другим, засчет увеличения доли программирования по отношению к алгоритмизации и отладке.Но, как правило, время, затрачиваемое на работы, связанные с отладкой,составляет около половины всего времени, необходимого на разработку программы.Поэтому вопрос минимизации времени, необходимого на отладку, имеет особоезначение. К его решению можно подойти с двух сторон:
а) путемускорения поиска и исправления ошибок, имеющихся в программе;
б)путем уменьшения количества ошибок, допускаемых при разработке алгоритма исоставлении программы.
Контрольпрограммы
Подэтап контроля программы характеризуется какэтап решения задачи, целью которого является установление наличия ошибок всоставленной программе или убедительная демонстрация их отсутствия. Если будетустановлено, что ошибки в программе имеются, то на следующем этапе (этаплокализации) будет производиться их поиск. Поэтому в задачу контроля входиттакже получение еще и такой информации о характере работы программы, котораямогла бы помочь в дальнейшем при поиске ошибок.Контрольтекста
Контроль текста программы можнопроизводить как «вручную», так и с применением ЭВМ. Сначала рассмотрим «ручные»методы контроля текста программ (алгоритмов).
Можно различать три способов контроля текста безприменения ЭВМ: просмотр, проверка и прокрутка.
Просмотр
Текст составленной программы внимательнопросматривается на предмет обнаружения ошибок, описок и смысловых расхождений стекстом алгоритма, по которому производилось программирование. Помимо сплошногопросмотра применяется еще и выборочный просмотр некоторых фрагментов программы.
Проверка
При проверке программы программист потексту программы мысленно старается восстановить тот вычислительный процесс,который определяет программа, после чего сверяет его с требуемым процессом, т.е.ТЗ, определенном в проекте.
Прокрутка
Другим способконтроля программ и алгоритмов за столом является прокрутка (иногда ее называют«сухой» прокруткой – dry running – для отличия от метода прокрутки,применяемого на этапе локализации и использующего ЭВМ.) основой прокрутки являетсяимитация программистом выполнения программы на машине, с целью болееконкретного и наглядного представления о процессе, определяемом текстомпроверяемой программы. Прокрутка дает возможность приблизить последовательностьпроверки программы к последовательности ее выполнения, что позволяет проверятьпрограмму как бы в динамике её работы, проверять элементы вычислительногопроцесса, задаваемого проверяемой программой, а не только статичный текст программы.Для выполнения прокрутки обычно приходится задаваться какими-то исходнымиданными и производить над ними необходимые вычисления.
Печатьтекста
Для проверкиправильности препарации программы (переноса текста программы на какие-либомашинные носители) после ввода в машину производится на печать текста программыдля последующей его сверки с исходным текстом.
Контрольрезультатов
Как бы ни была тщательно проверена и прокрученапрограмма за столом, решающим этапом, устанавливающим ее пригодность дляработы, является контроль программы по результатам ее выполнения на ЭВМ.Наиболее универсальным методом проверки для всех классов задач является методконтрольных тестов или тестирование. Тестом будем называть информацию,состоящую из исходных данных, специально подобранных для отлаживаемойпрограммы, и из соответствующих им эталонных результатов (не толькоокончательных, но и промежуточных), используемых в дальнейшем для контроляправильности работы программы.
Тестирование
Под тестированием следует понимать процессисполнения программы с целью обнаружения ошибок, в качестве которых принимаетсялюбое отклонение от эталонов. Хорошим считается тест, который имеет высокуювероятность обнаружения еще не выявленных ошибок.
Под отладкой понимается процесс, позволяющийполучить программу, функционирующую с требуемыми характеристиками в заданнойобласти входных данных. Таким образом, в результате отладки программа должнасоответствовать некоторой фиксированной совокупности правил и показателейкачества, принимаемой за эталонную для данной программы.
Существует 3 основных способа тестирования:алгоритмическое, аналитическое, содержательное.
Алгоритмическое тестирование
Алгоритмическое тестирование применяетсяпрограммистом для контроля этапов алгоритмизации и программирования.Программисты проектируют тесты и начинают готовить эталонные результаты наэтапе алгоритмизации, а используют их на этапе отладки.
Функциональное или аналитическоетестирование
Аналитическое тестирование служит для контролявыбранного метода решения задачи, правильности его работы в выбранных режимах ис установленными диапазонами данных. Тесты проектируют и начинают готовитьсразу после выбора метода, а используют их на последнем этапе отладки или дляанализа результатов пробного счета; в ходе тестирования, наряду со сверкой насовпадение, применяются и качественные оценки результатов.
Содержательное тестирование
Содержательное тестирование служит для проверкиправильности постановки задачи. Для контроля при этом используются, какправило, качественные оценки и статистические характеристики программы, физическийсмысл полученных результатов и т.п. в проведении содержательного тестирования,принципы которого формулируются в техническом задании, самое активное участиедолжны принимать заказчики или идущие пользователи программы.
Содержательные и аналитические тесты проверяютправильность работы программы в целом или крупных ее частей, в то время, какалгоритмические тесты в первую очередь должны проверять работу отдельных блоковили операторов программы.Типы тестов
Тот видконтроля, который рассматривался выше, можно назвать тестированием основныхфункциональных возможностей программы – основной тест.
Вырожденныйтест
Этот тест затрагивает работу программы в самойминимальной степени. Обычно тест служит для проверки правильности выполнениясамых внешних функций программы, например, обращения к ней и выхода из нее.
Тест граничных значений
Тестпроверяет работу программы для граничных значений параметров, определяющихвычислительный процесс. Часто для граничных значений параметра работа программыносит особый характер, который, тем самым, требует и особого контроля.
Аварийныйтест
Тестпроверяет реакцию программы на возникновение разного рода аварийных ситуаций впрограмме, в частности, вызванных неправильными исходными данными. Другимисловами, проверяется диагностика, выдаваемая программой, а также окончание ееработы или, может быть, попытка исправления неверных исходных данных.
Помимоавтономных тестов, предназначенных для контроля отдельных блоков программы,можно выделить стыковочные и комплексные тесты.
Стыковочныетесты
Предназначаютсядля проверки взаимосвязи (стыковки) уже отлаженных частей программы.
Комплексныетесты
Проверяютправильность работы всех или большинства частей программы после их объединения.
Локализацияошибок
Способылокализации
После того,как с помощью контрольных тестов (или каким либо другим путем) установлено, чтов программе или в конкретном ее блоке имеется ошибка, возникает задача еелокализации, то есть установления точного места в программе, где находитсяошибка.
Процесслокализации ошибок состоит из следующих трех компонент:
1. Получениена машине тестовых результатов.
2. Анализтестовых результатов и сверка их с эталонными.
3. Выявлениеошибки или формулировка предположения о характере и месте ошибки в программе.
По принципам работысредства локализации разделяются на 4 типа:
1. Аварийнаяпечать.
2. Печать вузлах.
3. Слежение.
4. Прокрутка.
АВАРИЙНАЯПЕЧАТЬосуществляется один раз при работе отлаживаемой программы, в моментвозникновения аварийной ситуации в программе, препятствующей ее нормальномувыполнению. Тем самым, конкретное место включения в работу аварийной печатиопределяется автоматически без использования информации от программиста,который должен только определить список выдаваемых на печать переменных.
ПЕЧАТЬ ВУЗЛАХвключается в работу в выбранных программистом местах программы; послеосуществления печати значений данных переменных продолжается выполнениеотлаживаемой программы.
СЛЕЖЕНИЕ производится или по всейпрограмме, или на заданном программистом участке. Причем слежение можетосуществляться как за переменными (арифметическое слежение), так и заоператорами (логическое слежение). Если обнаруживается, что происходитприсваивание заданной переменной или выполнение оператора с заданной меткой, топроизводится печать имени переменной или метки и выполнение программыпродолжается. Отличием от печати в узлах является то, что место печати можетточно и не определяться программистом (для арифметического слежения);отличается также и содержание печати.
ПРОКРУТКА производится на заданныхучастках программы, и после выполнения каждого оператора заданного типа(например, присваивания или помеченного) происходит отладочная печать.
По типампечатаемых значений (числовые и текстовые или меточные) средства разделяются наарифметические и логические.
Интегрированныйотладчик Delphi
Дляработы со встроенным отладчиком Delphi 5 его интегрированная среда разработки(IDE) предлагает целую серию установок, которых практически хватит длятестирования и отладки любой задачи.
Сначала рассмотрюопции отладки:
/>
Рис. 2.6. Опции отладки проекта
Включение отладочной информации регулируетсяследующими установками:
·          DebugInformation. Опция контролирует включение отладочной информации. При отключенииэтой опции будет невозможно трассировать код или ставить точки прерывания влюбом модуле. Опция эквивалентна директивам компилятора $D и $DEBUGINFO
·          LocalSymbols. Опция контролирует включение информации о локальных переменных,декларированных, например, внутри функций, процедур и раздела implementation.Эквивалентные директивы компилятора – $L и $LOCALSYMBOLS.
·          SymbolInfo. Эту опцию нельзя целиком отнести к разряду отладочных, так как еедействие направлено на броузер объектов, а не на встроенный отладчик. Еслиопция включена, броузер объектов сможет выводить информацию для объектов,определенных в модулях. Опция игнорируется при выключенных предыдущих двухопциях Эквивалентные директивы компилятора – $Y и $REFERENCEINFO.
Если модуль Delphi распространяется в виде DCU‑файлов(например, VCL) необходимо позаботиться о том, чтобы в скомпилированных модуляхне содержалась отладочная информация.
Пошаговаяотладка
Одна из самыхраспространенных задач отладки – выполнение программы шаг за шагом, по однойстроке за раз для проверки правильности выполнения. При пошаговом прохождениикода отладчик выводит окно редактирования с выполняемой программой. Точкавыполнения, показывающая следующую выполняемую строку программы, представляетсяв виде зеленой стрелки, расположенной слева от области исходного текста в окнередактирования.
Послеуспешной компиляции модуля на полосе отладочной информации каждая строка кода,внесшая свой вклад в модуль, будет отмечена синим кружком.
Интегрированнаясреда Delphi предоставляет пользователю несколько команд пошаговой отладкидоступных в меню Run:

/>
Рис. 2.7.Средства отладки программы
Ниже перечислю команды отладчика:
·          Run.Выбор этой команды запускает приложение на выполнение в обычном режиме. Этукоманду можно использовать как для запуска приложения, так и для продолженияего работы после какого-либо прерывания выполнения (например, по точкеостанова). Если включена опция Break on Exception, необходимо использоватькоманду для продолжения работы после получения сообщения об исключительнойситуации.
·          StepOver. Когда точка выполнения находится на строке содержащей вызов процедуры илифункции, необходимо использовать эту команду для выполнения строки, включаявызовы в один шаг, без прохождения отдельных строк вызываемых функций. Точкавыполнения перемещается при выполнении на следующую строку.
·          TraceInto. В отличие от предыдущей команды, эта опция отработает пошаговую отладкувызываемых процедур и функций. Другими словами, если, например, в строкевызывается некая процедура, то при выполнении этой команды точка выполненияперейдет на первую строку процедуры. Однако если в строке нет таких вызовов,значит, последние две команды идентичны. Но, необходимо соблюдать осторожность –при пошаговой трассировке обработчика события OnPaint требуется перерисовкаокна приложения, для чего вызывается обработчик события OnPaint. Получается бесконечныйцикл вызовов одного и того же обработчика. Тем не менее, стоит лишь проследить,чтобы окна приложения и редактора не перекрывались.
·          Trace to Next Source Line. Иногда код вызывает другой код косвенно,например, при вызове функции, которая запускает обработчик события, или привызове функции Windows API, которая, в свою очередь, запускает функциюкосвенного вызова. Поскольку такие вызовы косвенные, отладчик не видит вызова ине отслеживает пошагового выполнения таких вызовов. Однако использованиеописываемой команды приводит к отслеживанию таких вызовов и останову отладчикана первой строке вызываемой таким образом функции или процедуры.
·          Runto Cursor. Очень часто невозможно в поисках ошибки, местоположение которой скакой-то точностью известно, пошагово добираться до нужного места через сотни,а то и тысячи строк кода. В таком случае можно просто поместить курсор нанужную строку программы в окне редактирования и используйте команду Run toCursor. Эти действия эквивалентны временному помещению точки останова внеобходимую строку программы, и после выполнения предшествующего строке кодаработа программы приостанавливается.
·          ShowExecution Point. Эта команда заставляет среду разработки открыть окно редактораи показать выполняемую в настоящее время строку программы.
·          ProgramPause. Выбор этой команды немедленно останавливает выполнение программы.Команда особенно полезна при зацикливании программы.
·          ProgramReset. Команда немедленно прекратит выполнение программы и произойдет возврат всреду разработчика.
Залогом успешногопродвижения на рынке нового товара или новой услуги является всестороннееознакомление со структурой данного рынка, от его (рынка) требований ивозможностей. Исследуемая информация касается спроса и предложения конкурентов,а также ожиданий конкретных потребителей. При этом реализация направленноститовара на весь рынок в целом зачастую представляется нереальной, что можнообъяснить заметной неоднородностью рынка, подразумевающей различные потребностиотдельных слоев потребителей. Разница в потребностях может быть вызванаразличными причинами – социальными, финансовыми, географическими и многимидругими. Применительно к программному обеспечению можно сказать, что различныеорганизации и частные лица используют в своей работе различные компьютеры и наданный момент, когда существует более десятка устоявшихся компьютерных платформ,было бы не разумным пытаться охватить весь рынок целиком и поэтому рынок долженбыть сегментирован, то есть поделен на однородные части-сегменты, врамках которых потребитель имеет сходные возможности и потребности.
При разумном делениирынка на сегменты все инструменты маркетинга внутри него могут быть оптимальноскоординированы. Именно поэтому сегментация рынка считается очень важнымаспектом деятельности предприятия./>Методика определениясегментов рынка
При первичной сегментациирынка целесообразно выделить сегменты товаров потребительского спроса и производственногоназначения. Такая классификация важна, поскольку подчеркивает различия вхарактеристиках продуктов и последствиях для маркетолога.
Для дальнейшего делениярынка на сегменты можно воспользоваться различными критериями в зависимости отследующих факторов:
географического положенияпотребителей (регион, страна);
типа потребителя(величина предприятия, интенсивность потребления, отрасль, место в производственномпроцессе);
типа процесса, длякоторого приобретается продукция (административная деятельность, движениетовара, производственный процесс);
покупательского спроса(клиент / потенциальный клиент, связь с поставщиком, частота и величиназакупок);
На рынках сбыта товаровширокого потребления используют другие критерии. Классическими являются следующиепоказатели:
социально-экономические(образования, доходы);
демографические (возраст,пол, состав семьи);
географические
Однако следует учитывать,что всех потребителей на рынке не так-то легко разделить по категориям. Поведениепотребителя в последнее время становиться все более дифференцированным, возникаютразличные «стили жизни» внутри общества.
Для формированиясегментации рынка используются элементы таксономического анализа – построениедиаграмм Чекановского [1]. Исходным шагом, предопределяющим правильностьконечных результатов, является оформление матрицы наблюдений. Эта матрицасодержит наиболее полную характеристику изучаемого множества объектов и имеетвид:
X=/>
где w – число объектов; n– число признаков; ik – значение признака k для объекта i.
Признаки, включенные вматрицу, могут быть неоднородны, поскольку описывают разные свойства объектов.Кроме того, различаются единицы их измерения. Поэтому надлежит выполнитьпредварительное преобразование, которое заключается в стандартизации признаков.
Таблица 1 1 2 W 1 X - X - 2 - - - X … … … … … W - X - X
В приведеннойнеупорядоченной диаграмме очередность записи случайна. На это указываетявственный разброс символов, обозначающих разницу между изучаемыми элементами:наименьшее численное расстояние – «C»; наибольшее расстояние,т.е. пары элементов, наиболее разнящиеся между собой, – «–». Для их линейногоупорядочения следует произвести перегруппировку знаков «C» и «–». Перегруппировкадолжна выполняться таким образом, чтобы знаки «X» оказались как можно ближе кглавной диагонали диаграммы. С этой целью строки и столбцы таблицыпереставляются до тех пор, пока не получится упорядоченная диаграмма./>Поиск сегментов рынка для программы посылки сообщений
Рынок данных программдостаточно узок и специализирован. Программа предназначена для облегченияработы Интернет-компаний, людей, которые работают в локальных сетях.
Для проведениясегментации можно выделить следующие группы потенциальных потребителей программподобного уровня:
Средние и крупныепромышленные предприятия;
Научные центры;
Интернет-компании;
Учащиеся и студенты;
Небольшая группапользователей;
Теперь рассмотримхарактеристики данного программного обеспечения:
Распространенностьаппаратно-программной платформы;
Интерфейс;
Удобство работы;
Цена.
Теперь составим таблицунаблюдений, оценив в баллах каждый признак для каждого потребителя по десятибалльнойшкале.
Параметры
Потребители Платформа Интерфейс Удобство работы Цена Промышленные предприятия 1 5 9 1 Научные центры 7 4 8 2 Интернет-компании 5 7 10 10 Учащиеся и студенты 1 10 6 10 Группа пользователей 2 9 10 10
X=/>
/>
/>; />
/>; />;
/>; />;
/>; />;
/>;
Итак, мы получили матрицурасстояний:
С=/>
Для получениянеупорядоченной диаграммы Чекановского разбиваем полученные значения на классыпо правилу: если элемент меньше 2.5, то на его место ставится «X», иначе ничегоне ставим. 1 2 3 4 5 1 X X 2 X X 3 X X 4 X X 5 X X X
Проведя перегруппировкустолбцов и строк путем перестановки сначала 4-го и 5-го столбцов, а затем такихже строчек, получаем упорядоченную диаграмму Чекановского:
1 2 3 5 4 1 X X 2 X X 3 X X 5 X X X 4 X X
В результате мы выделилитри сегмента – в одном из них располагаются потребители 1 и 2, в другом – 3 и5, в третьем – 5 и 4.
Сегментация рынка привелак следующим результатам – были выделены три сегмента:
Промышленные предприятияи научные центры;
Интернет-компании игруппы пользователей.
Учащиеся и студенты игруппы пользователей.
Для первой сегмента болееважны требования к удобству работы потому что данный сегмент занимаетсянаукоемким исследованиями.
Для второй группы болееважными оказываются цена, удобство интерфейса, а также доступность и распространенностьпрограммно-аппаратной платформы, потому что для мелких малобюджетныхорганизаций и групп пользователей возможность использования имеющегося паркамашин класса IBM PC с установленными на них операционной системой Windows'9x, является хорошимстимулом для приобретения данного программного продукта.


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Выдающиеся деятели отечественной психологической науки
Реферат Экономическая безопасность России в условиях перехода к рынку
Реферат Адрес: 188800, Ленинградская область
Реферат Алгоритм криптографического преобразования в режиме простой замены
Реферат Social structure of the society
Реферат Кредитный риск. Его сущность и методы управления
Реферат Управление предприятием. Отчет по практике
Реферат Сущность международной торговли
Реферат Тезисы к экзамену по Экомике предприятия
Реферат Животные и растения болот. Разнообразие болот. Экологические условия болот
Реферат Боліварианська Республіка Венесуела
Реферат Маленький человек в классической русской литературе XIX века.
Реферат Синклер, Малькольм
Реферат Теория спроса на деньги и подтверждение их украинской действительностью
Реферат Теория институционной экономики