Методы, технологии и инструментальные средства производства программных продуктов
Выделим основные инструментальные программные средства, позволяющие создавать, отлаживать, анализировать и выполнять программы. Реальные компиляторы с языков программирования высокого уровня превращают исходную программу не сразу в коды, а в некоторую промежуточную форму, называемую объектным кодом. После компиляции в такой промежуточный объектный код необходим еще один этап, во время которого из объектных кодов отдельных частей программы собирается вся программа в кодах целиком. На этом же этапе, называемом редактированием связей или сборкой, происходит подключение стандартных подпрограмм, если они нужны, и преобразование оставшихся имен в адреса.
Таким образом, программист с помощью служебной программы — редактора текстов — записывает исходный текст своей программы в какие-то файлы на диске, с помощью другой программы — компилятора — преобразовывает их в объектные коды, с помощью третьей — редактора связей (сборщика) — получает программу в кодах или загрузочный файл. После этого загрузочный файл можно выполнить средствами операционной системы. Эти три вида инструментальных средств составляют минимальный набор, позволяющий разрабатывать программы. Рассмотрим эти и другие средства подробнее.
- Редактор (editor) — программа для ввода и редактирования исходного текста.
- Компилятор (compiler) — программа, преобразующая исходный текст программы в выполняемый код. Как правило, компилятор порождает так называемый объектный файл — машинный код с незаполненными внешними ссылками, хотя могут генерировать и исполняемые файлы. По способу генерации кода компиляторы делятся на обычные и оптимизирующие. Оптимизирующие компиляторы работают гораздо дольше обычных, но генерируют код, оптимизированный по скорости или по объему.
- Компоновщик или редактор связей (linker) — программа, собирающая из совокупности объектных файлов и библиотек исполняемую программу. По способу генерации кода компоновщики делятся на обычные и инкрементальные. Инкрементальные редакторы связей позволяют значительно ускорить процесс компоновки за счет учета информации о предыдущей компоновке.
- Отладчик (debugger) — программа, позволяющая контролировать код и данные программы во время ее выполнения с целью обнаружения ошибок. В настоящее время распространены символьные отладчики, позволяющие кроме чисел отображать код на ассемблере либо на исходном языке высокого уровня.
- Профилировщик (profiler) — программа, предназначенная для оценки эффективности выполнения различных участков кода. Профилировщики встраивают в программу специальный код, позволяющий подсчитать частоту вызова различных подпрограмм, время их работы с учетом и без учета вызываемых подпрограмм и большое количество других параметров. Накопленную информацию профилировщики отображают в численном виде, а наиболее совершенные из них — в виде графиков и диаграмм.
- Библиотекарь (librarian) — программа, позволяющая создавать из объектных файлов библиотеки.
- Библиотека (library) — набор данных и подпрограмм. Библиотеки по способу использования делятся на статические (static library) и динамически связываемые (dynamic link library). Статические используются только при компоновке программы, при которой из них извлекаются используемые модули. Динамические библиотеки постоянно находятся в памяти, вследствие чего их модулями могут пользоваться различные программы одновременно. Для этого используется специальный механизм динамического связывания.
В настоящее время для платформы Intel наиболее известны следующие проблемно-ориентированные библиотеки, предназначенные для построения пользовательского интерфейса:
- Object Windows Library (OWL) — для приложений Microsoft Windows;
- Microsoft Foundation Classes (MFC) — для приложений Microsoft Windows;
- Visual Component Library (VCL) — для приложений Microsoft Windows.
Для Unix-платформ принят более унифицированный подход к построению пользовательского интерфейса, получивший название X Window. В его основе лежит библиотеки нижнего уровня Xlib и среднего уровня — Xintrinsics, на основе которых предложены две конкурирующие библиотеки высокого уровня — OpenLook фирмы Sun и Motif объединения Open Software Foundation (OSF).
Все перечисленные инструментальные средства по способу вызова могут быть как автономными, так и встроенными в интегрированную среду программирования.
Интегрированная среда разработчика (Integrated Developer Environment). Это программа, интегрирующая в себе редактор, компилятор, отладчик и большинство других указанных выше инструментальных средств. Интегрированная среда может как содержать отдельные компоненты в себе, так и вызывать их извне, что определяется политикой фирм-разработчиков.
В настоящее время многие интегрированные среды поддерживают популярную технологию визуального программирования — так называемую технологию быстрой разработки приложений (Rapid Application Development — RAD). Эта технология позволяет быстро создавать и изменять графический интерфейс пользователя. Поскольку программирование графического интерфейса пользователя является достаточно объемной и сложной задачей, то путем сокращения затрат на его создание уменьшаются затраты на разработку приложения в целом.
В то же время, технология RAD не может ускорить создание прикладной части программы, которая занимается собственно обработкой данных. Эта часть работы, в любом случае, ложится на программистов.
Другие инструментальные средства. Кроме перечисленных, нередко используют другие инструменты, такие как генераторы дистрибутивов, построители файлов справки, генераторы документации и т.д.
CC-BY-CA Цыганенко В.Н., 20.10.2013