Лекция 6. Методы, технологии и инструментальные средства производства программных продуктов

Проектирование интерфейса пользователя

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

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

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

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

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

Редактор (editor)— программа для ввода и редактирования исходного текста.

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

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

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

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

Библиотекарь (librarian) — программа, позволяющая создавать из объектных файлов библиотеки.

Библиотека (library) — набор данных и подпрограмм.Библиотеки по способу использования делятся на статические (static library) и динамически связываемые (dynamic link library — DLL). Статические используются только при компоновке программы, при которой из них извлекаются используемые модули. Динамические библиотеки постоянно находятся в памяти, вследствие чего их модулями могут пользоваться различные программы одновременно. Для этого используется специальный механизм динамического связывания.

В настоящее время для платформы 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 не может ускорить создание прикладной части программы, которая занимается собственно обработкой данных. Эта часть работы, в любом случае, ложится на программистов.

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