Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Интегрированные среды разработки программ (Модель инструментальных окон)

Содержание:

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

3.3.5 MonoDevelop

MonoDevelop 2.2 [15] - среда разработки с открытым исходным кодом, предназначенная для написания приложений на С/С++, С#, Java, Visual Basic и других языках. Является частью проекта Mono по созданию свободной реализации платформы .NET.

Организация инструментальных окон

Инструментальные окна MonoDevelop подчиняются тем же принципам организации, что и окна Visual Studio за следующими исключениями:

Возможно сохранение/загрузка перспектив так же, как в Eclipse.

Окно текстового редактора не может быть разделено на два независимых окна.

Набор инструментальных окон

Solution. Данное окно полностью эквивалентно окну Solution Explorer в среде разработки Visual Studio.

  • Files. Это типичное окно древовидной навигации по файловой системе, которые мы уже рассмотрели в IDE NetBeans.
  • Classes. Древовидно отображает принадлежность классов и пространств имен классам из открытого решения (solution). Использование аналогично окну Classes из NetBeans.
  • Errors list. Данное окно аналогично уже рассмотренным окнам отображения списка ошибок.
  • Task list. Окно отображения одного из списков задач пользователя: списка из комментариев и списка, созданного при помощи этого инструментального окна. Таким образом, внешний вид и использование, как у окна Task list в Visual Studio.
  • Properties. Данное окно полностью аналогично одноименному окну из Visual Studio и NetBeans.
  • Document Outline. Отображает функции и классы из текущего документа, повторяя функции окна Outline из Eclipse.
  • Build Output. Содержит простой текстовый вывод инструмента сборки, доступный только для выделения и копирования.

Application Output. Содержит простой текстовый вывод запускаемого приложения, доступный только для выделения и копирования. Breakpoints. Отображает список точек останова, аналогично одноименным окнам рассмотренных ранее IDE.

  • Watch. Отображает список пользовательских выражений и их значений, вычисляемых во время отладки.
  • Locals. Содержит дерево элементов, каждый из которых соответствует локальной переменной в точке исполнения программы. Потомками локальных переменных являются их базовые классы и члены-данные, для которых отображается текущее значение.
  • Call Stack. Отображает стек вызовов, как и одноименное окно NetBeans.
  • Threads. Отображает список нитей, аналогично окну Running threads в Code::Blocks.

3.3.6 KDevelop

KDevelop 4.0 [16] - независимая от платформы свободная IDE для графической оболочки KDE, написанная на С++ с помощью библиотек Qt и KDE. Поддерживает программирование на многих языках, в том числе С/С++ и Java.

Организация инструментальных окон

Инструментальные окна реализованы в KDevelop менее гибко, чем в Visual Studio, NetBeans и Eclipse. Возможен единственный режим окон, при котором они сгруппированы в одной из четырех позиций (сверху, снизу, слева, справа от окна текстового редактора). Для каждой позиции допускается отображение нуля (позиция скрыта, ее место занято текстовым редактором) или одного инструментального окна, все остальные окна находятся во вкладках позиции. Окно текстового редактора может разбиваться на два окна по горизонтали или вертикали неограниченное число раз.

Набор инструментальных окон

  • Breakpoints. Отображает список точек останова, аналогично одноименному окну в Eclipse
  • Call Stack. Это окно отображает список нитей и стек вызовов для каждой нити при использовании отладчика. Функционирует и используется аналогично одноименному окну в NetBeans.
  • Code Browser. Выполняет ту же функцию, что и Code Definition Window в Visual Studio - показ свойств объекта кода, на котором находится курсор.
  • Filesystem. Окно древовидной навигации по файлам. Использование аналогично таким окнам, рассмотренным ранее.
  • Projects. Данное окно древовидной навигации по открытым проектам отличается от, например, окна Projects из NetBeans тем, что позволяет редактировать список собираемых проектов, расположенных в этом же инструментальном окне.

Documents. Окно древовидной навигации по проектам и связанным с ними документам (редактируемым файлам). Использование аналогично другим окнам древовидной навигации.

  • Messages. Отображение списка ошибок и предупреждений, полученных в результате сборки, с указанием файла, в котором возникла ошибка, линии ошибки и описания. Использование данного окна заключается в просмотре сообщений и переходе к коду, вызвавшему их.
  • Problems. Окно, аналогичное Messages, но показывает ошибки, полученные в результате фонового разбора кода. Используется аналогично Messages.
  • GDB. Содержит простой текстовый вывод отладчика GDB, доступный для выделения и копирования.
  • Variables. Окно с древовидной структурой, отображающее две категории наблюдаемых переменных: автоматические и локальные. Переменные сложных типов содержат потомков-атрибутов, а переменные простых типов представлены одним элементом дерева.

3.3.7 IntelliJ IDEA

IntelliJ IDEA (Community Edition 9.0) [17] - многоплатформенная среда разработки программ с открытым исходным кодом, основной пользовательской аудиторией которой являются Java-разработчики.

Организация инструментальных окон

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

Набор инструментальных окон

Project. Отображает дерево модулей проекта и внешние библиотеки, тем самым совмещая функции окон Solution explorer и Object Browser из Visual Studio.

Messages. Отображает сообщения сборки, включая ошибки и предупреждения. Аналогично другим окнам с сообщениями сборки.

  • Commander. Двусоставное окно навигации по файловой системе. Верхняя часть отображает структуру каталогов, а нижняя - файлы выбранного в первой части каталога.
  • Run. Простой текстовый вывод запущенного приложения. Переход к строкам кода и другое сложное взаимодействие с пользователем не предусмотрено.
  • Debug. Простой текстовый вывод отладчика. Переход к строкам кода и другое сложное взаимодействие с пользователем не предусмотрено.
  • Frames. Отображает список вызовов в стеке приложения. По щелчку на функцию осуществляется переход либо (в случае щелчка по верхней функции) к точке останова, либо к точке выбранной функции, где управление перешло к следующей по вложенности функции.
  • Varuables. Отображает дерево локальных переменных. Для простых типов это окно отображает просто элемент верхнего уровня, для сложных типов отображает потомков-членов класса.
  • Watches. Данное окно отображает список наблюдаемых пользователем выражений и их значений.
  • TODO. Это окно содержит 2 вкладки: с заданиями проекта и данного файла. Задания берутся из кода. Есть возможность перейти к заданию в коде.
  • Structure. Древовидное отображение классов, их предков и членов. Аналогично окну Navigator в Eclipse.

3.3.8 C++ Builder

C++ Builder 6.0 [18] - коммерческая среда разработки от компании Borland, предназначенная для разработки на С++ с использованием библиотек CLX, VCL, MFC.

Организация инструментальных окон

Инструментальные окна в C++ Builder организованы схожим образом с окнами Visual Studio за тем исключением, в C++ Builder недоступен режим автоматического скрытия и режим вкладки. Всегда присутствует окно редактора формы, не стыкующееся ни с какими инструментальными окнами. Окно текстового редактора не может быть разделено на несколько окон. В C++ Builder есть возможность сохранения/загрузки настроек расположения инструментальных окон (save/load desktop), аналогично перспективам в Eclipse.

Набор инструментальных окон

  • Project Manager. Древовидное отображение файлов, входящих в проекты. Аналогично Solution Explorer в Visual Studio.
  • Class Explorer. Отображение дерева классов с их атрибутами и предками. Аналогично окну Classes из NetBeans.
  • Components. Список визуальных компонентов, доступных для добавления на форму. Используется для поиска и добавления.
  • Messages. Содержит список сообщений сборки, аналогично одноименным окнам IntelliJ IDEA и KDevelop.
  • Object TreeView. Это окно отображает дерево принадлежности компонентов на выбранной форме. Может быть использовано для обзора принадлежности и выбора компонента.
  • Object Inspector. Отображает редактируемый список свойств объекта формы.
  • Breakpoint List. Редактируемый список точек останова. Используется так же, как и рассмотренные ранее окна точек останова.
  • Call Stack. Отображает список функций-вызовов в текущем состоянии программы. Может быть использовано для перехода к любой из функций.
  • Threads. Отображает список нитей отлаживаемого приложения. Для каждой нити имеется возможность перейти к точке ее исполнения.
  1. Результаты обзора

Итак, в обзоре установлены следующие факты:

  • Организация инструментальных окон очень схожа в различных IDE и заключается в наличии окна текстового редактора и настраиваемых инструментальных окон, каждое из которых может находиться в нескольких режима (подробное описание режимов находится в обзоре Visual Studio).

Рассмотренные инструментальные окна можно разделить по структуре и схеме использования на несколько больших классов.

Рассмотренные инструментальные окна можно обобщить по функциональности, получив, таким образом, обобщенные инструментальные окна, каждое из которых относится к определенному классу.

  1. Модель инструментальных окон

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

3.5.1 Классы инструментальных окон

    1. Окна-деревья навигации по сущностям. Такие окна отображают дерево сущностей и, возможно, дополнительные подокна для просмотра атрибутов или потомков выбранного элемента дерева. Важным критерием окон-деревьев является возможный неограниченный рост глубины дерева в процессе использования IDE. Окна-деревья предоставляют пользователю следующие функции:
  • Просмотр пользователем дерева сущностей.
  • Вызов контекстного меню для произвольной сущности дерева и совершение некоторых действий.
  • Возможно, переход к объекту исходного текста (файлу, части файла, строке), связанному с выбранной сущностью посредством двойного щелчка мыши.

К этому классу относятся окна древовидной навигации по проектам и файлам, по объектам кода, целям Make и другие похожие окна.

    1. Окна-списки сущностей, связанных со строками кода. Для данных окон существенна связь один к одному со строками кода разрабатываемой программы. Окно-список, в общем случае, может отображать дерево, каждый элемент которого связан со строкой кода, и, что не менее важно, глубина которого не более 2 (для глубины 2 мы получаем де-факто категоризированный список). Функции окон-списков, используемые разработчиком:
  • Просмотр списка сущностей и их атрибутов.
  • Переход к строкам кода, связанным с сущностями.
  • Возможно, редактирование атрибутов сущностей.

К таким окнам можно отнести списки задач, точек останова, списки ошибок и предупреждений сборки и другие подобные окна.

  1. Окна - документы. К данному типу отнесем окна, не являющиеся окнами первых двух типов. Функции окон данного типа, предлагаемые пользователю:
  • Как правило, просмотр простого текстового вывода внешних инструментов с примитивными возможностями копирования текста.
  • Возможно, ввод текстовых пользовательских команд.
  • Некоторая функциональность просмотра и редактирования, не связанная со строками кода (например, для окон-списков, сущности которых не имеют привязки к строкам кода).

К этому типу окон следует отнести окна вывода инструментов сборки, вывода отладчика и другие.

3.5.2 Обобщенные инструментальные окна

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

Обобщенные инструментальные окна-деревья описаны в таблице 1.

Таблица 1. Обобщенные окна-деревья

Название окна

Сущность, представляе мая листом дерева

Возможные элементы дерева помимо листов

Окна рассмотренных IDE, являющиеся прототипами

Окно навигации по проектам

Документ с возможностью редактирования в IDE

Группы документов. Например, исходные коды, заголовочные файлы и др.

Solution Explorer (Visual Studio), Projects (Eclipse, NetBeans, ...), ...

Окно навигации по файловой системе

Файл

Каталоги файловой системы

Files (NetBeans, MonoDevelop), Filesystem (KDevelop)

Окно навигации по объектам кода

Метод класса, атрибут класса, макрос, глобальная функция, глобальная переменная

Класс, категория «Глобальные переменные», категория «Глобальные функции», категория «Макросы»

Class View (Visual Studio), Classes (Eclipse), Structure (IntelliJ IDEA), ...

Окно навигации по проектам отображает на верхнем уровне список открытых в IDE проектов, в каждый из которых вложенные некоторые группы документов. Конкретная группировка документов в рамках данной работы нас интересовать не будет.

Обобщенные инструментальные окна-списки сущностей описаны в таблице 2.

Таблица 2. Обобщенные окна-списки

Название окна

Сущность, представляемая элементом списка

Строка, связанная с сущностью

Атрибуты сущности

Окна

рассмотренных IDE, являющиеся прототипами

Окно задач

Задача, взятая из комментария в коде программы

Строка

комментария со словом TODO, FIXME, HACK, ...

Имя файла, номер строки, описание задачи,

активна/неактивна

To-Do list (Code::Blocks), Task List (Visual Stuido), ...

Окно ошибок

Ошибка,

предупреждение или

Строка кода, породившая

Имя файла, номер строки,текст, тип

Messages (IntelliJ IDEA, KDevelop),

сообщение сборки

сущность

(ошибка,

предупреждение, сообщение)

Problems (Eclipse)

Окно точек останова

Точка останова

Строка, в которой установлена точка останова

Имя файла, номер строки, условие останова, описание, активна/неактивна

Breakpoint List (C++ Builder), Breakpoints (Eclipse, KDevelop), ...

Окно нитей

Нить отлаживаемого приложения

Текущая точка управления данной нити

Номер нити, имя файла, номер строки

Threads (Visual Studio, C++ Builder)

Окно стека

Вызов функции в стеке отлаживаемой нити

Строка-начало

описания

функции

Имя функции

Call Stack (KDevelop, NetBeans, Visual Studio)

Также для некоторых обобщенных окон-списков специфичны следующие функции:

  • Окно ошибок автоматически активируется при появлении хотя бы одной ошибки/предупреждения/сообщения сборки;

Окно точек останова отображается автоматически при попадании одной из нитей отлаживаемого приложения на точку останова;

  • Окно переменных отображается автоматически при запуске отладки приложения

В окне стека отображается стек вызовов для нити, выбранной в окне нитей. Оба эти окна используются только при отладке.

Обобщенные инструментальные окна-документы описаны в таблице 3.

Таблица 3. Обобщенные окна-документы

Имя окна

Содержимое окна

Окна рассмотренных IDE, являющиеся прототипами

Окно вывода системы сборки

Простой текстовый результат работы инструмента, осуществляющего сборку разрабатываемого приложения

Build log (Code::Blocks), Output View (Visual Studio), Build Output (MonoDevelop),.

Окно вывода отладчика

результат работы отладчика; позволяет вводить команды для выполнения отладчиком

Debug (IntelliJ IDEA, Eclipse), ...

Окно просмотра кода

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

Code Definition Window (Visual Studio), Code Browser (KDevelop)

точное описание отображаемого этим окном текста не требуется

Окно свойств

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

Properties (Visual Studio, NetBeans, Eclipse), ...

Окно наблюдаемых выражений и локальных переменных

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

Watches (Code::Blocks, IntelliJ IDEA), Watch (MonoDevelop), Variables (KDevelop, Eclipse, NetBeans)

Также для некоторых обобщенных окон-документов специфичны следующие функции:

• Окно вывода системы сборки отображается автоматически при начале сборки проекта;

Окно вывода отладчика отображается автоматически при начале отладки приложения.

Окно наблюдаемых выражений автоматически отображается при попадании исполнения на точку останова.

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

6. Заключение

В данной работе был проведен обзор существующих интегрированных сред разработки программ;

Итак, проделанная работа соответствует поставленной задаче и полностью решает ее.

7. Список литературы

  1. Dana Nourie Getting Started with an Integrated Development Environment, 2005 [HTML] (http://java.sun.com/developer/technicalArticles/tools/intro.html)
  2. Rex Bryan Kline, Ahmed Seffah Evaluation of integrated software development environments: challenges and results from three empirical studies // J. International Journal of Human-Computer Studies. 2005. 607-627.
  3. Developpez LLC Les meilleurs environnements de developpement [HTML] (http://general.developpez.com/edi/)
  4. Steve Krug Don't Make Me Think, A Common Sense Approach to Web Usability,

Indianapolis: New Riders, 2000, 195 p.

  1. Jacob Nielsen Usability Engineering, Academic Press, 1993
  2. Dennis G. Jerz Usability Testing: What is it? 2000 [HTML] (http://jerz.setonhill.edu/design/usability/intro.htm)
  3. Mark Szymczyk Reducing XCode's Window Clutter, 2007 [HTML]

(http://meandmarkpublishing.blogspot.com/2007/06/reducing-xcodes-window- clutter.html)

  1. M. Stephens 10 Things NetBeans Must Do to Survive, 2003 [HTML]

(http://www.softwarereality.com/soapbox/netbeans.jsp)

  1. Maxime Caron Survey on Usability of Integrated Development Environment [HTML] (http://docs.google.com/present/view?id=addqfjnjc3d6_108gj3w67c3)
  2. Janel Garvin Software Development Platforms - 2009 Rankings, Evans Data Corporation, 2009 [HTML]

(http://www.evansdata.com/reports/viewRelease_download.php?reportID=19)

  1. Microsoft Visual Studio, MSDN [HTML] (http://msdn.microsoft.com/ru- ru/vstudio/default.aspx)
  2. NetBeans Community NetBeans Official Website [HTML] (http://www.netbeans.org/)
  3. Eclipse Foundation Eclipse Website [HTML] (http://www.eclipse.org/)
  4. Code::Blocks Website [HTML] (http://www.codeblocks.org/)
  5. Mono Project MonoDevelop Website [HTML] (http://monodevelop.com/)
  6. KDevelop team KDevelop Website [HTML] (http://www.kdevelop.org/)
  7. IntelliJ IDEA Website [HTML] (http://www.jetbrains.com/idea/)
  8. IBM C++ Builder Website [HTML] (http://www.embarcadero.com/products/cbuilder)
  9. Jacob Nielsen Breadcrumb navigation increasingly useful, Jakob Nielsen's Alertbox, 2007 [HTML] (http://www.useit.com/alertbox/breadcrumbs.html),
  10. Morgan Kauffman GUI Bloopers 2.0 Common User Interface Design Don'ts and Dos, Morgan Kauffman Publishers, 2007,
  11. KDevelop team Sublime UI Description [HTML] (http://www.kdevelop.org/mediawiki/index.php/Sublime_UI)
  1. Автоматические переменные в данном контексте кода, на которой стоит текстовый курсор.

  2. Под объектом кода понимается некоторый идентификатор; например, имя класса, функции или переменной.