logo
Разработка dll-библиотеки

1.3.1 Определение библиотеки

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

Определение динамической библиотеки

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

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

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

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

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

Достоинства динамических библиотек:

- возможность использования одной библиотеки несколькими процессами, что приводит к уменьшению использованной памяти;

- Легкость внесения исправлений и изменений. Достаточно исправить нужный код в библиотеке, и приложение будет использовать уже измененный вариант.

Их недостатки:

- возможность нарушения API (при внесении изменений в библиотеку существующие программы могут перестать работать);

- конфликт версий динамических библиотек (разные программы могут ожидать разные версии библиотек);

- Возможность доступа к одной и той же функции по одному и тому же адресу разными процессами.

Определение статической библиотеки

Статическая библиотека - файл с исходным кодом или объектный файл, который предназначен для вставки на этапе компоновки в программный код. Примером могут послужит библиотеки stdlib.h и stdio.h в языке программирования С. Библиотеки, распространяемые в виде исходного кода, преобразуются компилятором в объектные файлы. Подобные библиотеки, которые имеют вид исходного кода, используются компилятором и преобразуются компилятором в объектные файлы. После чего происходит объединение полученных объектных файлов библиотек и объектных файлов программы в единый исполняемый файл. Существуют также библиотеки, распространяющиеся уже в виде объектных файлов. Такие библиотеки уже готовы к компоновке. В таких случаях компоновщик соединяет библиотеку и программу в виде объектного файла сразу во время создания исполняемого файла.

Достоинства статичных библиотек:

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

Их недостатки:

- Полученный в результате работы компоновщика исполняемый файл занимает большой объем памяти;

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

Проблемы разработки библиотеки

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

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

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

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

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

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