Файл: Интегрированные среды разработки программ (Модель инструментальных окон).pdf
Добавлен: 25.06.2023
Просмотров: 39
Скачиваний: 2
1. Введение
Существует большое число программных средств, используемых разработчиками для написания программного кода. Эти программы могут быть как простыми текстовыми редакторами, предлагающими только базовую подсветку текста (к примеру, Notepad и Kate), так и сложными средами разработки программ (IDE - Integrated Development Environment) [1], как Eclipse и Microsoft Visual Studio. Такие среды разработки объединяют различные инструменты, используемые в разработке, например отладчик и компилятор, для предоставления пользователю особых возможностей. Например, в IDE может присутствовать автоматическое дополнение кода, проверка синтаксической правильности программы без компиляции, возможность задавать точки останова в коде и так далее [1][2].
Несмотря на эти привлекательные возможности, многие разработчики считают IDE переусложненными и предпочитают пользоваться простыми текстовыми редакторами и дискретными инструментами разработки [2][3]. Причины этого могут быть самыми различными, и, чтобы определить их, требуется отдельное исследование удобства (usability) IDE [4][5][6]. Тем не менее, эмпирический опыт показывает, что одной из основных проблем являются инструментальные окна - дополнительные окна среды разработки, отличные от окна редактирования кода [7][8]. Как правило, дополнительные окна постоянно используются в процессе работы, поэтому пользователю приходится либо постоянно держать такие окна открытыми (уменьшая размер экранного пространства, доступного для редактирования кода), либо постоянно активировать инструментальные окна вручную.
2. Обзор сред разработки программ
В обзоре мы рассмотрим интерфейс нескольких наиболее популярных IDE [3].
Во избежание обзора вообще всех сред разработки, введем следующие ограничения:
Рассматриваются только среды для разработки программ на компилируемых объектно-ориентированных языках (а именно C++, C#, Java).
В случае если среда разработки предоставляет возможность подключения дополнительных модулей, рассматривается только имеющийся по умолчанию набор модулей.
2.1. Среды разработки программ
Перед тем как перейти к рассмотрению конкретных IDE, кратко опишем основные составляющие их графического интерфейса:
• Главное меню программы;
Настраиваемая панель команд с иконками (и, возможно, надписями) наиболее часто используемых команд главного меню;
Окно текстового редактора, в котором происходит написание программного кода. Слева от этого окна, как правило, расположена вертикальная полоса для установки точек останова и закладок;
Инструментальные окна, располагающиеся по сторонам окна текстового редактора;
- Строка состояния - горизонтальная полоса размером в одну строку текста, расположенная снизу окна среды разработки и отображающая, как правило, информацию о прогрессе текущей операции и текстовые подсказки.
Теперь рассмотрим конкретные среды разработки программ. 3.3.1 Visual Studio
Visual Studio [11] - популярная коммерческая линейка сред разработки компании Microsoft для семейства ОС Windows. Рассматриваемая версия Visual Studio 2008 обладает широкой функциональностью и поддерживает разработку на Visual Basic, Visual C++, Visual C#, Java.
Организация инструментальных окон
По центру окна Visual Studio находится текстовое окно, которое может быть горизонтально или вертикально разделено на несколько окон с документами. Относительно текстового окна существует 4 позиции переменного размера для инструментальных окон: снизу, сверху, справа и слева. Позиция может содержать ряд инструментальных окон в своих вкладках. Позиция инструментального окна, как и окно редактора текста, может быть разделена на несколько частей для показа нескольких инструментальных окон.
Каждое инструментальное окно может находиться в одном из 4 режимов:
- Режим дрейфа (floating): инструментальное окно не связано с позициями в окне IDE, является отдельным окном в смысле окон операционной системы;
- Режим стыковки (dockable): инструментальное окно находится в одной из описанных выше позиций;
Режим вкладки (tabbed): инструментальное окно перемещается во вкладки окна текстового редактора, отображается на месте редактируемого документа;
Режим автоматического скрытия (auto hide): инструментальное окно сворачивается до кнопки, когда курсор мыши уходит за его пределы, и разворачивается, когда курсор наводится на кнопку.
Набор инструментальных окон
- Solution Explorer. Это окно отображает дерево проектов текущего решения (solution) и принадлежащих им документов. Solution Explorer используется для создания новых файлов, открытия существующих и обзора структуры проектов. В дальнейшем будем называть окна, отображающие дерево элементов и позволяющие переходить к коду, связанному с каждым элементом, окнами древовидной навигации или древовидного отображения.
- Bookmarks. Данное инструментальное окно содержит список закладок в тексте программы с указанием файла и строки, в которых расположена закладка. Использование данного окна ограничивается отключением, переименованием и переходом по закладке.
- Class View. Двусоставное окно древовидной навигации по классам. В верхней части находится список классов, а в нижней - содержимое (методы и атрибуты) выбранного в верхней части класса. Используется для обзора структуры классов и переходу к классу или его члену.
- Breakpoints. Данное окно отображает список существующих точек останова с указанием имени файла и строки, где расположена точка. Допустимые действия: редактирование свойств точек останова и переход к ним в тексте программы.
Server Explorer. Окно древовидного отображения сведений об операционной системе: история событий, информация о файловой системе, устройства, системные службы, счетчики производительности и т.п. Использование окна заключается в просмотре информации.
- Output View. В данном инструментальном окне находится текстовый вывод инструмента сборки, включающий список ошибок и предупреждений для каждого проекта. Окно используется для обзора истории сборки, ошибок/предупреждений и перехода к ошибочному коду.
- Code Definition Window. Данное окно используется для просмотра кода, определяющего текущую выбранную в текстовом редакторе сущность. Например, при установке курсора на функцию, данное окно отображает код с определением этой функции.
- Error List. Данное окно содержит список ошибок, предупреждений и сообщений сборки с возможностью фильтрации. Используется для обзора этих трех сущностей и перехода к коду, вызвавшему их.
- Object Browser. Инструментальное окно, отображающее дерево доступных в проекте компонент, как системных, так и пользовательских. Туда включаются видимые классы, функции и константы, сгруппированные по проектам и наборам компонент.
Call Stack. Данное окно отображает стек вызовов в процессе отладки приложения. Может использоваться для перехода к коду функций-вызовов стека.
- Autos, Locals, Threads, Watch. Данные окна-списки отображают сущности, относящиеся к отладке: переменные (автоматические[1] и локальные соответственно), нити и введенные пользователем выражения. Могут быть использованы для перехода к коду и редактирования значений переменных.
- Task List. Это окно отображает один из двух списков заданий: либо отмеченные в тексте комментарии (с ключевыми словами "TODO", "FIXME", о переменные, упоминающиеся в строке исходного 10"HACK" и др.), либо добавленные пользователем через это окно. Используется для обзора заданий и перехода к комментариям.
- Properties. Окно отображения и редактирования списка свойств объектов, выбранных в окне текстового редактора или инструментальных окнах. Например, при выборе файла в Solution Explorer в Properties отображаются его свойства: имя, тип, относительный путь от текущего файла и прочие.
3.3.2 NetBeans
NetBeans 6.8 [12] - популярная кроссплатформенная IDE с открытым исходным кодом, широко используемая для разработки на Java, а также используемая для других языков, включая С++.
Организация инструментальных окон
В NetBeans инструментальные окна организованы так же, как в Visual Studio, за исключением того, что в NetBeans невозможно поместить инструментальное окно во вкладки текстового редактора.
Набор инструментальных окон
- Projects. Окно древовидной навигации по открытым проектам, в которых файлы разделены на категории (заголовочные файлы, файлы реализации и др.). Использование аналогично использованию Solution Explorer в Visual Studio.
- Files. Окно древовидной навигации по файловой системе. Отражает структуру каталогов, распределяя файлы по категориям, каждая из которых соответствует каталогу ФС. Использование этого окна заключается в обзоре расположения файлов и открытии новых файлов.
Classes. Окно отображения классовой структуры проектов, которое в отличие от Class view из Visual Studio отображает методы и члены классов как их прямые потомки в дереве.
- Tasks. Окно отображения заданий из кода с возможностью фильтрации и группировки. Используется также, как и окно Task list в Visual Studio.
- Properties. Аналогично одноименному окну в Visual Studio.
Output. Данное инструментальное окно содержит простой текстовый вывод инструментов сборки и не предоставляет возможности открытия кода, вызвавшего какую-либо запись в выводе.
- Navigator. Это окно отображает доступные в коде имена объектов[2] в виде дерева. Так отображаются имена классов, пространств имен и заголовочных файлов. Используется аналогично окну Objects из Visual Studio.
Call Stack. Данное окно отображает список вложенных вызовов функций при отладке программы с возможностью перехода к любому из вызовов.
- Variables. Это окно содержит список переменных, наблюдаемых при отладке с возможностью редактирования их значений.
- Breakpoints. Отображение списка точек останова, как и в одноименном окне Visual Studio, с возможностью отключения и редактирования условия.
3.3.3 Eclipse
Eclipse [13] - кроссплатформенная среда разработки программ с открытым исходным кодом, используемая в основном для С++ (рассматривалась Eclipse CDT 4.0) и Java (рассматривалась Eclipse JDT 3.5).
Организация инструментальных окон
Инструментальные окна в Eclipse организованы почти так же, как и в Visual Studio. Открытие инструментального окна в режиме автоматического скрытия в Eclipse требует клика мыши, а не просто наведения, как в Visual Studio и NetBeans. В Eclipse можно сохранять и загружать настройки организации инструментальных окон, называемые в этой IDE перспективами.
Набор инструментальных окон
- Navigator. Это окно древовидной навигации по проектам и группированным файлам используется также, как и окно Solution Explorer в Visual Studio.
- Include Browser. Данное окно показывает дерево включений заголовочных файлов: потомками файла являются файлы, включенные в него. Это окно используется для просмотра включений и открытия представленных файлов.
- Make Targets. Данное окно отображает дерево целей и подцелей системы сборки Make. Используется для просмотра структуры целей и перехода по ним.
- Outline. Это окно аналогично окнам Navigator в Eclipse и Objects в Visual Studio.
- Problems. Данное инструментальное окно отображает список ошибок и предупреждений сборки, как Errors list Visual Studio.
- Properties. Аналогично одноименным окнам Visual Studio и NetBeans.
- Breakpoints. Содержит список точек останова, аналогично одноименному окну в Visual Studio.
- Debug. Дерево-историю записей о сессиях отладчика. Элемент каждого запуска является предком нитей, вызываемых в этой сессии отладки.
- Variables. Данное инструментальное окно содержит список наблюдаемых при отладке переменных и их значений. Возможно редактирование значений и добавление/удаление наблюдаемых переменных.
- Call Hierarchy. Это окно отображает дерево вызовов выбранной функции, статически анализируя код. Есть возможность перехода к любой из вызывающих функций.
3.3.4 Code::Blocks
Code::Blocks [14] - кроссплатформенная IDE с открытыми исходными кодами, разработанная для удобства программирования на С++ с использованием библиотек GTK+, Qt, OpenGL, FLTK, wxWidgets, Lightfeather. Ниже приведены данные для версии 8.02.
Организация инструментальных окон
Существует всего 4 основных контейнера инструментальных окна: Management, Logs & others, Open files list, To-Do list. Контейнер содержит инструментальные окна как вкладки. Существует два режима контейнеров:
- дрейфующий режим: окно контейнера становится отдельным окном в смысле менеджера окон;
- стыкующийся режим: инструментальное окно может находиться в одной из 4 позиций: сверху, снизу, справа и слева от текстового редактора.
Для окон, размещенных в одной позиции, она делится на части настраиваемого размера. Окно текстового редактора может быть разбито на два (горизонтально или вертикально), но в его частях отображается всегда текст одного и того же файла. Наборы настроек расположений окон можно сохранять и загружать (аналогично перспективам Eclipse). Этим ограничиваются возможности организации инструментальных окон в Code::Blocks.
Набор инструментальных окон
- Management - Projects. Данное окно по назначению и структуре полностью эквивалентно одноименному окну из NetBeans.
- Management - Symbols. Это окно отображает классы, функции, препроцессорные директивы и глобальные константы. Оно организовано, как и инструментальное окно Class view в Visual Studio.
- Logs & others - Code::Blocks. Данное окно отображает лог событий среды разработки (создание/открытие проектов/файлов, загрузка подгружаемых модулей и др.). Не допускает переходов и действий, связанных с логом. Logs & others - Build messages. Это окно отображает список ошибок и предупреждений сборки с атрибутами, полностью аналогично, например, окну Problems из Eclipse.
- Logs & others - Build log. Содержит текстовый вывод инструмента сборки проекта. Не допускает переходов к коду или иного сложного взаимодействия.
- Logs & others - Search results. Это окно отображает список результатов поиска с указанием имени файла, строки и найденного фрагмента текста. Предоставляется возможность перейти к любому из найденных результатов.
Logs & others - Script console. Это окно принимает текстовые команды пользователя и выводит текстовый результат этих команд.
- Logs & others - Debugger. Данное инструментальное окно содержит текстовый вывод отладчика, предоставляя пользователю лишь вводить команды для отладчика. Через это окно также выводятся данные о попадании на точки останова.
- Open files list. Данное инструментальное окно отображает список файлов, открытых в Code::Blocks. Используется для обзора открытых файлов и переключения на вкладку любого из этих файлов.
- To-Do list. Показывает список задач, содержащихся в коде текущего проекта. Использование аналогично окну Tasks из NetBeans.
- Call Stack. Данное окно отображает стек функций в виде списка. Позволяет по двойному щелчку на верхней функции стека переходить к точке исполнения в ней.
- Watches. Данное окно отображает дерево наблюдаемых переменных. Наблюдаемая переменная несоставного типа представляет элемент дерева, а потомками каждой переменной-класса является набор значений ее атрибутов.
- Running threads. Это инструментальное окно отображает список нитей отлаживаемого приложения. Позволяет перейти к точке выполнения любой нити.