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

Критерии выбора средств разработки WEB-приложений)

Содержание:

ВВЕДЕНИЕ

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

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

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

Предметом исследования является веб-разработка, а объектом – среды разработки веб-приложений. Цель работы – краткий обзор возможностей и определения критериев выбора конкретных средств разработки веб-приложений.

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

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

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

Стоит отдельно отметить, что текущее исследование, несмотря на детальный подход в исследовании именно интегрированных сред разработки, лишь поверхностно обозревает отдельные инструменты, такие как CMS, CMF, каскады веб-приложений и html-редакторы, а также плагины к интегрированным средам разработки, поскольку детальный анализ каждого из указанных инструментов, требует проведения отдельных исследований.

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

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

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

1. Теоретические основы разработки Web-приложений

1.1 Основные понятия

Веб-приложение — программа, обеспечивающих функционирование динамических сайтов Всемирной паутины. По архитектуре клиент-серверное приложение, в котором клиентом выступает браузер, а сервером — веб-сервер[1]. Логика веб-приложения распределена между сервером и клиентом, хранение данных осуществляется, преимущественно, на сервере, обмен информацией происходит по сети. Одним из преимуществ такого подхода является тот факт, что клиенты не зависят от конкретной операционной системы пользователя, поэтому веб-приложения являются кроссплатформенными сервисами. Веб-приложения стали широко популярными в конце 1990-х — начале 2000-х годов.

Само веб-приложение может выступать в качестве клиента других служб, например, базы данных или другого веб-приложения, расположенного на другом сервере. Ярким примером веб-приложения является система управления содержимым статей Википедии: множество её участников могут принимать участие в создании сетевой энциклопедии, используя для этого браузеры своих операционных систем (будь то Microsoft Windows, GNU/Linux или любая другая операционная система) и не загружая дополнительных исполняемых модулей для работы с базой данных статей.

Сайты как основа веб-приложений

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

По структуре сайты делятся на статические и динамические.

Статические сайты проще, безопаснее и производительнее динамических [2][3]. Используются в основном для сайта-визитки лица или компании (вид деятельности, история, прайс-лист, контактные данные, реквизиты, схема проезда, и т.д., а специалисты размещают своё резюме), каталога продукции (то, что невозможно поместить в прайс-лист: подробное описание товаров/услуг, сертификаты, технические и потребительские данные, отзывы экспертов и т. д.), домашние страницы пользователей. Также статические страницы часто используются как шаблоны динамических сайтов.

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

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

Процесс получения содержимого сайта обычно выглядит следующим образом:

  • Генерация содержимого на стороне сервера в ответ на запрос от клиента путём запуска обработки файла-скрипта интерпретатором (чаще используются языки Java, PHP, Perl, ASP.NET, Ruby), выборки необходимой информации из баз данных и наполнение ею страницы;
  • Передача сгенерированной странички клиенту;
  • Генерация содержимого на стороне клиента средствами браузера вместе с исполнением скриптов клиентской стороны, если те были указаны в странице и получены (как JavaScript, например, для проверки на правильность задания паролей при регистрации на сайтах, и т. д., так и сложных последовательностей).

Чаще встречается именно комбинация этих методов генерации (например, «умная строка с подсказкой вариантов» у поисковых систем, «редакторы» в форумах, всплывающие меню, и другое).

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

Тенденцией 2010-ых годов для веб-сайтов являлся «адаптивный дизайн», который давал лучшие впечатления от просмотра, подстраиваясь под устройство пользователей [7]. Количество веб - сайтов снова вырос до более чем 1 миллиард в марте 2016 года, и продолжает расти с тех пор [8].

Веб-разработка — процесс создания веб-сайта или веб-приложения.

Основными этапами процесса являются веб-дизайн, вёрстка страниц, программирование для web на стороне клиента и сервера, а также конфигурирование веб-сервера [9].

На сегодняшний день существуют несколько этапов разработки веб-сайта:

  • Проектирование сайта или веб-приложения менеджером проекта (сбор и анализ требований заполнением брифа, разработка технического задания, проектирование интерфейсов), а также разработка креативной концепции сайта. Этапы проектирования веб-сайтов зависят от многих факторов, таких как объём сайта, функциональность, задачи, которые должен выполнять будущий ресурс и многое другое. Именно менеджер проектов контролирует этапы и сроки [9];
  • Создание дизайн-концепции сайта, макетов страниц и  мультимедиа и FLASH-элементов. При этом отдельно создаётся дизайн главной страницы, и дизайны типовых страниц (например, статьи, новости, каталог продукции). Дизайнер создаёт один или несколько вариантов «дизайна страниц», которые представляют собой графические файлы, состоящие из наиболее мелких картинок-слоев элементов общего рисунка, учитывая ограничения стандартов HTML;
  • Вёрстка страниц и шаблонов. HTML-верстальщик «нарезает» графическую картинку на отдельные рисунки, из которых впоследствии складывает HTML-страницы. В результате создаётся код, который можно просматривать с помощью браузера, а типовые страницы впоследствии будут использоваться как веб-шаблоны, то есть, как инструменты для отделения содержимого от визуального представления в веб-дизайне [10]. В простейшем своем смысле, веб-шаблон выполняет роль незаполненного бланка документа;
  • Программирование - разработка функциональных инструментов, или интеграция в систему управления содержимым (CMS). Программирование сайта может осуществляться как «с нуля», так и на основе CMS — системы управления сайтом [11]. В случае с CMS надо сказать, что сама «CMS» в некотором смысле это готовый сайт, состоящий из заменяемых частей. «Программист» — в данном случае правильно будет назвать его просто специалистом по CMS — должен заменить стандартный шаблон, поставлявшийся с CMS, на оригинальный шаблон. Этот оригинальный шаблон он и должен создать на основе исходного «веб-дизайна». При программировании сайта специалисту назначаются контрольные точки сроков;
  • Оптимизация и размещение материалов сайта [9]. Сайт наполняют контентом — текстами, изображениями, файлами для скачивания и т. д. Файлы сайта размещают на сервере провайдера и производят нужные настройки. На этом этапе сайт пока закрыт для посетителей;
  • Тестирование и внесение корректировок: вид страницы с увеличенными шрифтами, при разных размерах окна браузера, при отсутствии флэш-плеера и многие другие варианты. Также, на этом этапе привлекают к работе дизайнера, чтобы он провёл авторский надзор, а также проводится юзабилити-тестирование [12];
  • Сдача и открытие проекта на публичной площадке, когда заказчик или его доверенное лицо просматривают готовый проект и в случае, если все устраивает, то подписывают документы о сдаче проекта;
  • Обучение навыкам обслуживания и работы в администраторской зоне сайта представителя заказчика.

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

Также в настоящее время набирает популярность новый подход к разработке веб-приложений, называемый Ajax, и технология WebSocket. При использовании Ajax страницы веб-приложения не перезагружаются целиком, а лишь догружают необходимые данные с сервера, что делает их более интерактивными и производительными [13].

А технология WebSocket не требует постоянных запросов от клиента к серверу, а создает двунаправленное соединение, при котором сервер может отправлять данные клиенту без запроса от последнего. Таким образом появляется возможность динамически управлять контентом в режиме реального времени.

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

К минусам технологии можно отнести её ненадёжность, поскольку в случае использования прозрачных прокси-серверов возможна подмена кеша передаваемых данных с тем, что пользователи вместо реальных данных будут получать версию данных от злоумышленника [14].

Система управления содержимым (англ. Content management systemCMS) — информационная система или компьютерная программа, используемая для обеспечения и организации совместного процесса создания, редактирования и управления содержимым [11].

Главной задачей CMS является возможность собирать в единое целое и объединять на основе функциональных ролей и задач все разнотипные источники знаний и информации, доступные как внутри организации, так и за ее пределами, а также возможность обеспечения взаимодействия сотрудников, рабочих групп и проектов с созданными ими базами знаний, информацией и данными так, чтобы их легко можно было найти, извлечь и повторно использовать привычным для пользователя образом [15].

В системе управления контентом могут быть определены самые различные данные: документы, фильмы, фотографии, номера телефонов, научные данные и так далее.

В общем случае системы управления содержимым делятся на:

  • Систему управления содержимым масштаба предприятия (англ. Enterprise Content Management System);
  • Систему управления веб-содержимым (англ. Web Content Management System).

В силу того, что ECMS имеют глубокую внутреннюю классификацию по предметным областям (HRM, DMS, CRM, ERP и т. д.), термин CMS заместил собой WCMS, превратившись в синоним системы управления сайтами. Подобные CMS позволяют управлять текстовым и графическим наполнением веб-сайта, предоставляя пользователю интерфейс для работы с содержимым сайта, удобные инструменты хранения и публикации информации, автоматизируя процессы размещения информации в базах данных и её выдачи в HTML [16].

Существует множество готовых систем управления содержимым сайта, в том числе и бесплатных. Их можно разделить на три типа по способу работы:

  1. Генерация страниц по запросу. Системы такого типа работают на основе связки «Модуль редактирования - База данных - Модуль представления». Модуль представления генерирует страницу с содержанием при запросе на него, на основе информации из базы данных. Информация в базе данных изменяется с помощью модуля редактирования. Страницы заново создаются сервером при каждом запросе, что в свою очередь создаёт дополнительную нагрузку на системные ресурсы. Нагрузка может быть многократно снижена при использовании средств кэширования, которые имеются в современных веб-серверах [17];
  2. Генерация страниц при редактировании. Системы этого типа служат для редактирования страниц, которые при внесении изменений в содержание сайта создают набор статических страниц. При таком способе в жертву приносится интерактивность между посетителем и содержимым сайта [18];
  3. Смешанный тип. Как понятно из названия, сочетает в себе преимущества первых двух. Может быть реализован путём кэширования — модуль представления генерирует страницу один раз, в дальнейшем она в несколько раз быстрее подгружается из кэша. Кэш может обновляться как автоматически, по истечении некоторого срока времени или при внесении изменений в определённые разделы сайта, так и вручную по команде администратора. Другой подход — сохранение определённых информационных блоков на этапе редактирования сайта и сборка страницы из этих блоков при запросе соответствующей страницы пользователем.

Система управления — программа, предоставляющая инструменты для добавления, редактирования, удаления информации на сайте.

CMS часто используется для поддержки нескольких пользователей, работающих в среде совместной работы [19].

Наиболее популярная система управления контентом WordPress, используется более чем на 27% всех сайтов в Интернете, и на 59% всех веб - сайтов с помощью известной системы управления контентом [20].

Большинство современных CMS имеют модульную архитектуру, что позволяет администратору самому выбирать и настраивать те компоненты, которые ему необходимы. Типичные модули: динамическое меню, блог, новости, опросы, поиск по сайту, статистика посещений, гостевая книга и т. д.

Сайты, организованные посредством системы управления контентом, основаны на следующих технологиях: веб-сервер, хранилище данных (зачастую СУБД, например, такие как MySQL или PostgreSQL, однако существуют и noSQL CMS), веб-приложение для обеспечения работы самой системы, визуальный (WYSIWYG) редактор страниц, файловый менеджер с веб-интерфейсом для управления файлами сайта, система управления правами пользователей и редакторов сайта.

Существуют разнообразные системы управления сайтом, среди которых встречаются платные и бесплатные, построенные по разным технологиям. Каждый сайт имеет панель управления, которая является только частью всей программы, достаточной для управления сайтом [11].

Наиболее распространены следующие технологические платформы, используемые в качестве основы веб-приложения, реализующего работу CMS: PHP, Perl, .NET.

Под термином контент-менеджер, обозначается род профессиональной деятельности — редактор сайта или сотрудник, работающий с CMS [21].

Большая часть современных систем управления содержимым реализуется в виде визуального (WYSIWYG) редактора — программы, которая создаёт HTML-код из специальной упрощённой разметки, позволяющей пользователю проще форматировать текст.

Каркас веб-приложений (Web application framework, WAF) — это каркас, предназначенный для создания динамических вебсайтов, сетевых приложений, сервисов или ресурсов. Он упрощает разработку и избавляет от необходимости написания рутинного кода. Многие каркасы упрощают доступ к базам данных, разработку интерфейса, и также уменьшают дублирование кода [22].

Существуют специализированные типы каркасов веб-приложений, например, каркасы для создания систем управления содержимым.

Content Management Framework (CMF) — это каркас (фреймворк программной системы) для проектирования систем управления контентом. На их основе создаются системы управления содержимым (CMS), а также веб-приложения [23].

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

Большинство современных CMF являются реализацией архитектуры Model-View-Controller.

Model–View–Controller (MVC, «Модель–Представление–Контроллер», «Модель–Вид–Контроллер») — схема разделения данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо [24]:

  • Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя своё состояние;
  • Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели;
  • Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений.

Многие современные системы управления содержимым построены вокруг MVC-паттерна. Такой фреймворк может быть специально написан для системы, примерами могут являться: Joomla!, Bitrix, MODx Revolution, SilverStripe, Contao, Frog CMS/Wolf CMS ведётся постепенный перевод на такую архитектуру TYPO3. Другие системы используют фреймворки, популярные сами по себе.

Ряд CMS, предоставляющих API для расширения своей функциональности, претендуют на звание CMF, хотя провести чёткую границу между CMS и CMF порой сложно [23].

Такая готовая к использованию система управления контентом, как Drupal, одновременно считается и каркасом для построения таких систем, что определяется как возможностью расширения функционала за счёт пользовательских модулей, так и богатством механизмов и абстракций для управления контентом, предоставляемым этой системой [25][26].

Интегрированная среда разработкиИСP/IDE (англ. Integrated development environment) — комплекс программных средств, используемый программистами для разработки программного обеспечения (ПО).

Иногда содержит также средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают браузер классовинспектор объектов и диаграмму иерархии классов — для использования при объектно-ориентированной разработке ПО. IDE обычно предназначены для нескольких языков программирования, но есть и IDE для одного определённого языка программирования.

Частный случай IDE — среды визуальной разработки, которые включают в себя возможность визуального редактирования интерфейса программы.

SDK (от англ. software development kit) — комплект средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ, включая мобильные приложения [27].

Программист, как правило, получает SDK непосредственно от разработчика целевой технологии или системы. Часто SDK распространяется через Интернет. Многие SDK распространяются бесплатно для того, чтобы побудить разработчиков использовать данную технологию или платформу.

1.2. Понятия, приводимые в качестве критериев к выбору IDE

Проприетарное программное обеспечениенесвободное программное обеспечение (англ. proprietary software; от proprietary — частное, патентованное, в составе собственности и software — программное обеспечение) — программное обеспечение, являющееся частной собственностью авторов или правообладателей и не удовлетворяющее критериям свободного ПО (наличия открытого программного кода недостаточно) [28][29]. Правообладатель проприетарного ПО сохраняет за собой монополию на его использование, копирование и модификацию, полностью или в существенных моментах. Обычно проприетарным называют любое несвободное ПО, включая полусвободное

Графический интерфейс пользователя (ГИП)графический пользовательский интерфейс (ГПИ) (англ. graphical user interface, GUI) — разновидность пользовательского интерфейса, в котором элементы интерфейса (меню, кнопки, значки, списки и т. п.), представленные пользователю на дисплее, исполнены в виде графических изображений.

Статический анализ кода (англ. static code analysis) — анализ программного обеспечения, производимый (в отличие от динамического анализа) без реального выполнения исследуемых программ. Может применяться для поиска кода, потенциально содержащего уязвимости [30].

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

Отладчик (дебаггер, англ. debugger от bug) — компьютерная программа или компонент, предназначенный для поиска ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода. Отладчик позволяет выполнять трассировку (то есть, процесс пошагового выполнения программы, чтобы увидеть последовательность выполнения команд и значения переменных на данном шаге выполнения программы), отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т.д. [32].

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

2. Сравнительный анализ сред разработки Web-приложений

Anjuta — официальная интегрированная среда разработки GNOME, особенно хорошо подходит для разработки графических программ. В рамках Google Summer of Code 2009 в неё добавлена поддержка JavaScript [33]. Она была написана для GTK+/GNOME и включает ряд специальных средств для программирования.

  • Лицензия: GPL;
  • Языки веб-программирования: C++, Java, JavaScript, Python;
  • Платформы: Linux, FreeBSD;
  • Другие особенности: есть отладчик, автодополнения, поддерживается разработка GUI, браузер классов, поддержка плагинов, средства просмотра и подсветка синтаксиса, средства управления проектом, мастеры приложений, поддерживается профилирование, нет покрытия кода, нет статического анализа кода, браузер классов, нет рефакторинга.

AppCode - интегрированная среда разработки (IDE), разработанная на основе платформы IntelliJ IDEA от JetBrains. Пользователи могут расширить свои возможности за счет установки плагинов , созданных для IntelliJ Platform, а также они могут написать свои собственные плагины [34].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++, Java, JavaScript, Python;
  • Платформы: Mac OS X;
  • Другие особенности: есть отладчик, автодополнения, поддерживается разработка GUI, есть профилирование (Xcode profiler), браузер классов, поддержка плагинов, статический анализ кода, рефакторинг.

C++ Builder — интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке программирования C++ [35].

Изначально разрабатывался компанией Borland Software, а затем её подразделением CodeGear, ныне принадлежащим компании Embarcadero Technologies [35].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++;
  • Платформы: Windows, Mac OS X;
  • Другие особенности: есть отладчик, автодополнение, статический анализ кода, поддерживается разработка GUI, цикл разработки аналогичен Delphi (также большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации, но обратное утверждение не верно), профилирование (в комплекте с AQTime), покрытие кода, браузер классов, рефакторинг.

Code::Blocks — свободная кроссплатформенная среда разработки. Code::Blocks написана на С++ и использует библиотеку wxWidgets. Имея открытую архитектуру, может масштабироваться за счёт подключаемых модулей [36].

  • Лицензия: GPL;
  • Языки веб-программирования: C++;
  • Платформы: Windows, Mac OS X, Linux, FreeBSD, OpenBSD, Solaris;
  • Другие особенности: есть отладчик (GNU GDB, MS CDB); профилирование (GNU Profiler - gprof); поддерживается разработка GUI, статический анализ кода, браузер классов; подсветка синтаксиса; автодополнение, сворачивание блоков кода, скриптовый движок Squirrel; поддержка плагинов (Devpack), проверка правописания (для комментариев); автоформатирование кода; запуск полученной программы с аргументами; планировщик для нескольких пользователей; покрытие кода; браузер классов; нет рефакторинга.

CodeLite — свободная кроссплатформенная среда разработки программного обеспечения с открытым исходным кодом [37], использующая инструментарий wxWidgets. Чтобы соответствовать духу открытого программного обеспечения, CodeLite скомпилирована и отлажена исключительно свободными инструментами (MinGW и GDB) [37].

  • Лицензия: GPL2;
  • Языки веб-программирования: C++, PHP, Node.js;
  • Платформы: Windows, Mac OS X, Linux, FreeBSD;
  • Другие особенности: интерактивный отладчик (с интеграцией UnitTest++ над GDB); поддерживается разработка GUI, профилирование (интеграция Valgrind), нет покрытия кода, статический анализ кода, браузер классов; подсветка синтаксиса; управление проектами, автодополнение (ctags + clang), рефакторинг кода, интеграция с системами контроля версий Subversion и Git, навигация по коду (интеграция Cscope), рефакторинг.

Dev-C++ — свободная интегрированная среда разработки приложений для языков программирования C/C++. В дистрибутив входит компилятор MinGW. Сам Dev-C++ написан на Delphi. Распространяется согласно GPL.

Проект поддерживается SourceForge. Основатель проекта Колин Лаплас, компания Bloodshed Software. Одно время был доступен Linux-порт, однако на настоящее время актуализирована только Windows-версия. На настоящий момент оригинальный Dev-C++ не разрабатывается [38].

Продолжением разработки активно занимается Orwell [39].

Также разрабатывается порт интерфейса Dev-C++ на wxWidgets — wxDev-C++ и форк Orwell Dev-C++ (Johan Mes).

  • Лицензия: GPL;
  • Языки веб-программирования: C++;
  • Платформы: Windows, FreeBSD;
  • Другие особенности: есть отладчик, нет поддержки разработки GUI, профилирование, нет покрытия кода, автодополнение, нет статического анализа кода, браузер классов, нет рефакторинга, архитектурный анализ кода.

GNAT Programming Studio  (GPS, ранее известная как GNAT Programming System) — бесплатная интегри рованная среда разработки для нескольких языков программирования от компании AdaCore.

GPS работает на Linux, Solaris, Windows и других платформах. В качестве графического интерфейса используется GTK+. GPS выпускается по лицензии. GPS использует Python в качестве скриптового языка. Не запускается, если имя пользователя записано кириллицей [40].

  • Лицензия: GPL;
  • Языки веб-программирования: C++, JavaScript, Python;
  • Платформы: Linux, Windows, Mac OS X, Solaris, DragonFly BSD, FreeBSD , NetBSD , OpenBSD;
  • Другие особенности: есть отладчик, автодополнение, поддерживается разработка GUI, подсветка синтаксиса, профилирование, покрытие кода, системы контроля версий (CVS , Rational ClearCase , Subversion , Git), статический анализ кода, рефакторинг, браузер классов.

CLion (произносится как "sea lion" - морской лев)  — интегрированная среда разработки на C++ от JetBrains [41]. 

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++;
  • Платформы: Linux, Windows, Mac OS X;
  • Другие особенности: есть отладчик, автодополнение, не поддерживается разработка GUI, нет профилирования, нет покрытия кода, статический анализ кода, рефакторинг, браузер классов.

MonoDevelop — свободная среда разработки, предназначенная для создания приложений C#, Java, Visual Basic .NET, Vala, CIL, C и C++. Также планируется поддержка Oxygene со стороны Embarcadero Technologies [42].

Изначально это был порт SharpDevelop на Mono/GTK+, но с того времени проект далеко ушёл от своего начального состояния.

  • Лицензия: LGPL;
  • Языки веб-программирования: C++ (C#), Visual Basic.Net;
  • Платформы: Linux, Windows, Mac OS X, Solaris, DragonFly BSD, FreeBSD, OpenBSD;
  • Другие особенности: подсветка синтаксиса, сворачивание кода, автодополнение, браузер классов, поддержка плагинов, встроенный отладчик, визуальный конструктор форм (GTK#), модульное тестирование, нет профилирования, нет покрытия кода, нет статического анализа кода.

Qt Creator (ранее известная под кодовым названием Greenhouse) — кроссплатформенная свободная IDE для разработки на С, С++ и QML. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML [43].

  • Лицензия: GPL/LGPL/проприетарное ПО;
  • Языки веб-программирования: C++, (C#), Visual Basic.Net;
  • Платформы: Linux, Windows, Mac OS X, FreeBSD, Maemo, OpenBSD, Symbian;
  • Другие особенности: есть отладчик, поддержка разработки GUI, есть профилирование, нет покрытия кода, есть автодополнение, статический анализ кода, браузер классов, рефакторинг.

Philasmicos Entwickler Studio – коммерческая кросс-платформенная IDE для C ++ и WxWidgets проектов [44].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++;
  • Платформы: Linux, Windows;
  • Другие особенности: есть отладчик, поддержка разработки GUI, нет профилирования, нет покрытия кода, есть автодополнение, нет статического анализа кода, браузер классов, нет рефакторинга.

Oracle Developer Studio (ранее OSS, Sun Studio) — интегрированная среда разработки программ от компании Sun Microsystems [45]. Ранее Oracle Developer Studio называлась Sun Workshop, Forte Developer, Sun ONE Studio и была доступна только на платформе Sun Solaris. Сейчас Oracle Developer Studio доступна также для OpenSolaris и дистрибутивов на её основе, есть также версия и для Linux. После покупки Sun корпорацией Oracle продукт сменил название с Sun Studio на Oracle Developer Studio [45].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++;
  • Платформы: Linux, Solaris;
  • Другие особенности: есть отладчик, поддержка разработки GUI, есть профилирование, есть покрытие кода, есть автодополнение, статический анализ кода, браузер классов, рефакторинг, анализ многопоточных приложений.

IBM Rational Software Architect, (RSA) - сделанная подразделением корпорации IBM, компанией Rational Software, среда разработки и моделирования, которая использует Unified Modeling Language (UML) для проектирования архитектуры приложений и веб-сервисов [46]. Rational Software Architect (RSA) была сделана с помощью фреймворка открытого программного обеспечения, в среде разработки Eclipse, и включает в себя возможности, сфокусированные на архитектурном анализе кода, C++ и MDD (model-driven development) с UML для создания устойчивых приложений и веб-служб.

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++, Java (также J2EE);
  • Платформы: Linux, Windows, FreeBSD, JVM, Solaris;
  • Другие особенности: есть отладчик, поддержка разработки GUI, профилирование, есть покрытие кода, автодополнение, статический анализ кода, браузер классов, рефакторинг, архитектурный анализ кода.

SlickEdit - это кросс-платформенным коммерческий редактор исходного кода и интегрированная среда разработки , разработанный SlickEdit, Inc. SlickEdit поддерживает интегрированные отладчики [47].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: Java, C++ (С#), Groovy, Google Go, Python, Perl, Ruby, PHP, Android NDK / JVM ;
  • Платформы: Linux; Windows; Mac OS X, Solaris, Solaris SPARC, AIX, HP-UX;
  • Другие особенности: есть отладчик [47], нет поддержки разработки GUI, нет профилирования, нет покрытия кода, автодополнение, нет статического анализа кода, браузер классов, рефакторинг.

Ultimate++ (известен также как U++ и UPP) — кросс-платформенный инструментарий разработки ПО на языке программирования C++. Целью U++ является уменьшение сложности типичных десктопных приложений за счёт интенсивного использования особенностей C++. Работает под Linux/X11, BSD/X11 и Windows. Проект развивается с 1999 года, ядро Ultimate++ team составляют чешские программисты [48].

  • Лицензия: BSDL;
  • Языки веб-программирования: C++, Java (также J2EE);
  • Платформы: Linux, Windows, BSD;
  • Другие особенности: есть отладчик, поддержка разработки GUI, нет профилирования, нет покрытия кода, автодополнение, нет статического анализа кода, браузер классов, нет рефакторинга.

Open Watcom — проект сообщества открытого кода по поддержке и развитию многоплатформных компиляторов Watcom C, C++ и Fortran и сопутствующих программ. Лицензия открытого ПО от Sybase позволяет лишь некоммерческое использование пакета Open Watcom частными лицами [49].

  • Лицензия: OSI Approved;
  • Языки веб-программирования: C++, Java (также J2EE);
  • Платформы: Linux (частично), Windows (32-разрядная), FreeBSD , DOS, OS/2;
  • Другие особенности: удаленный отладчик, поддержка разработки GUI, есть профилирование, нет покрытия кода, нет автодополнений, нет статического анализа кода, браузер классов, нет рефакторинга.

Understand - настраиваемая интегрированная среда разработки (IDE), которая поддерживает статический анализ кода через массив визуальных, документационных и метрических инструментов. Он был построен, чтобы помочь разработчикам программного обеспечения понять, поддерживать и документировать их исходный код. Это позволяет коду быть понятным путем предоставления блок-схемы отношений, и построения словаря переменных и процедур из предоставленного исходного кода [50].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++ (C#, Objective C++), Java, Python, PHP, JavaScript;
  • Платформы: Linux; Windows, Mac OS X, Solaris;
  • Другие особенности: нет отладчика (только интеграция с другими), нет поддержки разработки GUI, нет профилирования, нет покрытия кода, автодополнения, статический анализа кода, браузер классов, рефакторинг, поддержка HTML, XML.

Code-Forge – интегрированная среда разработки для Unix и Linux, обеспечивающая полное управление проектом, включая редактирование, отладку, а также более чем 30 языков программирования. Менеджер проекта дает визуальное представление всех его компонентов за счет использования дерева зависимостей [51].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++ (C#, Objective C++), Java, Python, PHP, JavaScript, Perl, JavaScript, Go, PL/SQL, Erlang, ASP/ASPX;
  • Платформы: Linux, Unix-подобные;
  • Другие особенности: есть отладчик, поддержка разработки GUI, автодополнения, статический анализ кода, покрытие кода, менеджер проектов, поддержка HTML/CSS.

Kuzya - кросс-платформенная интегрированная среда разработки, написанная на C ++ с использованием Qt в качестве инструментария GUI. Kuzya не привязана к какому-то единственному языку программирования [52].

  • Лицензия: GPL;
  • Языки веб-программирования: C++ (C#, Objective C++), Java, Python; PHP, JavaScriptб Perl, JavaScript, Go, PL/SQL, Erlang, ASP/ASPX
  • Платформы: Windows, Linux, Mac OS X, FreeBSD;
  • Другие особенности: нет поддержки разработки GUI, автодополнения, подсветка синтаксиса, сворачивание блоков кода, выбор стилей [52].

GNOME Builder - универсальная интегрированная среда разработки (IDE) для GNOME [53].

  • Лицензия: GPL;
  • Языки веб-программирования: C++, Python, Ruby, JavaScript;
  • Платформы: Linux;
  • Другие особенности: автодополнения, подсветка синтаксиса, сворачивание блоков кода, выбор стилей, интеграция с git, поддержка HTML/CSS, JSON.

QDevelop — свободная среда разработки программного обеспечения для Qt (фреймворка под C++) от Жан-Люка Биорда. Цель QDevelop состоит в том, чтобы обеспечивать кросс-платформенное программирование в наиболее используемых средах, в GNU/Linux, Windows NT и Mac OS X, используя один и тот же IDE. Каждая из этих сред уже использует свою собственную, зачастую более высокопроизводительную IDE, примерами являются Visual Studio в Windows NT и KDevelop в Linux. Их неудобство заключается ограничением на одну среду [54].

  • Лицензия: GPL;
  • Языки веб-программирования: C++;
  • Платформы: Windows NT, Mac OS X, Linux и Unix-подобные;
  • Другие особенности: есть отладчик, поддержка разработки GUI, автодополнения, подсветка синтаксиса, номера строк, сниппеты, подсвечивание строки с кареткой, статический анализ кода, менеджер проектов, браузер классов [54].

BlueJ — интерактивная среда разработки на языке Java, созданная специалистами британского Университета Кента, австралийского Университет Монаша и компании Sun Microsystems, в основном для использования в начальном обучении объектно-ориентированному программированию, но также подходящая для разработки небольших программ. Её дизайн значительно отличается от других сред разработки [55].

  • Лицензия: GPLv2;
  • Языки веб-программирования: JAVA;
  • Платформы: Linux, Windows, MacOS X, Solaris, JVM;
  • Другие особенности: есть отладчик, не поддерживается разработка GUI, браузер классов, поддержка плагинов.

Eclipse — свободная интегрированная среда разработки модульных приложений от Eclipse Foundation. Eclipse служит в первую очередь платформой для разработки расширений, чем он и завоевал популярность: любой разработчик может расширить Eclipse своими модулями. Eclipse во многих организациях является корпоративным стандартом для разработки приложений в силу бесплатности и высокого качества. Eclipse JDT (Java Development Tools) — наиболее известный модуль, нацеленный на групповую разработку [56].

  • Лицензия: EPL;
  • Языки веб-программирования: JAVA, C++, Perl, Groovy, Ruby, Python, PHP;
  • Платформы: Windows, Mac OS X, Linux, FreeBSD, Solaris, JVM;
  • Другие особенности: есть отладчик (поддержка багтрекеров: Bugzilla, Trac, Jira, и др.), поддерживается разработка GUI, есть профилирование, покрытие кода, автодополнение, статический анализ кода, браузер классов, поддержка плагинов, интеграция с системами контроля версий (CVS, GIT), поддержка связи между IDE и системой управления задачами (ошибками), автоматический рефакторинг, поддержка основных фреймворков [56].

JBuilder — проприетарная среда разработки на языке Java компании Embarcadero. Среда разработана в соответствии с концепцией визуального программирования. По утверждению разработчиков, JBuilder является средой разработки промышленного класса, основанной на open-source каркасе Eclipse. Выпускается в двух версиях: JBuilder Professional и JBuilder Enterprise [57].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: JAVA;
  • Платформы: Windows, Mac OS X, Linux, Solaris, JVM;
  • Другие особенности: поддерживается разработка GUI, профилирование, настройки производительности, базовые средства UML-моделирования, средства преобразования код—диаграммы и наоборот, и другие.

Xcode — интегрированная среда разработки программного обеспечения под macOS и iOS, разработанная корпорацией Apple. Xcode включает в себя большую часть документации разработчика от Apple и Interface Builder — приложение, использующееся для создания графических интерфейсов [58].

  • Лицензия: смешанная проприетарная и «копилефт»;
  • Языки веб-программирования: C++, Java, Python и Ruby;
  • Платформы: Mac OS X, кросс-компиляция в iOS;
  • Другие особенности: есть отладчик (интегрирован GDB), профилирование, поддерживается разработка GUI (Interface Builder), статический анализ кода (Debug Console), браузер классов, покрытие кода, автодополнение, рефакторинг, поддерживает рабочие среды API Cocoa, Carbon и Java, и др.

JCreator является Java IDE, созданная XINOX Software. Его интерфейс похож на Microsoft Visual Studio, XINOX Software утверждает, что JCreator быстрее, чем конкурирующие среды разработки на Java [59].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: Java;
  • Платформы: Windows;
  • Другие особенности: нет автоматического рефакторинга, нет поддержки основных фреймворков, не поддерживает разработку GUI, есть автодополнение (кроме бесплатной версии), не поддерживается разработка GUI, не поддерживаются сторонние плагины.

jGRASP – легкая среда разработки. Она производит статические визуализации структуры исходного кода и визуализации структур данных во время выполнения, что улучшает читаемость кода. Для других языков, кроме Java, jGRASP является полезным редактором исходного кода [60]. 

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: Java, C++;
  • Платформы: Windows, Mac OS X, Linux; JVM;
  • Другие особенности: нет разработки GUI, есть сворачивание блоков кода, контекстная подсказка, навигация по коду, UML-диаграммы

NINJA-IDE (от рекурсивого акронима: "NINJA-IDE is not another IDE") – кросс-платформенная интегрированная среда разработки (IDE), для приложений на языке Python. Создана командой разработчиков [61].

  • Лицензия: GPL;
  • Языки веб-программирования: Clojure (ClojureScript), JavaScript, Python;
  • Платформы: Windows, Mac OS X, Linux;
  • Другие особенности: есть отладчик (wDebugger), GUI-инструментарий (PyQt), легковесность, навигация по коду, подсветка ошибок, менеджер проектов, настраиваемый пользовательский интерфейс, поддержка плагинов, обработка сессий (запоминает открытые файлы и проекты после закрытия), автодополнение [61].

Light Table — легковесная интегрированная среда разработки, написанная на ClojureScript с использованием node.js (точнее, node-webkit, в котором этот фреймворк объединён с Chromium, а начиная с версии 0.8 — electron). Разработана Крисом Грейнджером и Робертом Аттори [62].

  • Лицензия: MIT;
  • Языки веб-программирования: Clojure (ClojureScript), JavaScript, Python;
  • Платформы: Windows, Mac OS X, Linux ;
  • Другие особенности: контроль версий (watches), менеджер плагинов, поддержка REPL (результаты изменений видны в режиме реального времени), минимализм интерфейса, BOT-архитектура.

JDeveloper — бесплатная интегрированная среда разработки программного обеспечения, разработанная корпорацией Oracle. JDeveloper покрывает весь жизненный цикл разработки программного обеспечения. Производитель отмечает в качестве основной задачи среды — максимальное использование возможностей визуального и декларативного подхода к разработке программного обеспечения в дополнение к удобной среде кодирования [63].

  • Лицензия: свободная;
  • Языки веб-программирования: Java, JavaScript, PHP, SQL, PL/SQL;
  • Платформы: Windows, Mac OS X, Linux, другая – JVM;
  • Другие особенности: есть отладчик, профилирование, разработка GUI, оптимизация кода, поддерживает разметки HTML и CSS, BPEL; интегрирована с Oracle ADF — Java EE-каркасом для создания коммерческих приложений на Java.

Servoy – интегрированная среда разработки для корпоративных приложений, написанных на Java, и которая использует JavaScript в качестве языка разработки. Использование JavaScript вместо Java [64].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: Java, JavaScript;
  • Платформы: Windows, MacOS X, Linux , Solaris и других UNIX–системах;
  • Другие особенности: всеобъемлющие фреймворки с блоками, которые добавляются путем перетаскивания; веб-клиент и сервер приложений; есть разработка GUI [64].

WebStorm — интегрированная среда разработки на JavaScript от компании JetBrains, разработанная на основе платформы IntelliJ IDEA. Важным преимуществом интегрированной среды разработки WebStorm является работа с проектами. Поддерживается множественная вложенность, когда в документ на HTML вложен скрипт на Javascript, в который вложен другой код HTML, внутри которого вложен Javascript [65].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: JavaScript (CoffeeScript);
  • Платформы: Windows, MacOS X, Linux;
  • Другие особенности: есть отладчик (JS), автодополнение, инспекция кода, (интеграция с системами отслеживания ошибок), анализ кода «на лету», поддержка HTML5, JSDoc, Node.js, возможность Zen Coding и Emmet, удалённое развёртывание с возможностью автоматической синхронизации, интеграция с системами контроля версий Subversion, Git, GitHub, Perforce, Mercurial, CVS, навигация по коду, рефакторинг, поддержка разметок HTML & CSS.

Geany — среда разработки программного обеспечения, написанная с использованием библиотеки GTK+. Разработана сообществом авторов [66].

  • Лицензия: GPL;
  • Языки веб-программирования: ActionScript, C++ (D, Go), Haxe, Java, JavaScript, Perl, PHP, Python, Ruby, Tcl;
  • Платформы: BSD, Linux, Mac OS X, Windows, FreeBSD, AIX, OpenBSD, Solaris, другие Unix-подобные;
  • Другие особенности: есть отладчик, не поддерживается разработка GUI; подсветка исходного кода, автодополнение, нет профилирования, нет покрытия кода, нет статического анализа кода, простой менеджер проектов; поддержка плагинов; встроенный эмулятор терминала; поддержка большого количества кодировок; возможность использования и создания сниппетов; возможность использования и создания шаблонов файлов; использование контекстной документации; цветовые схемы редактора; инспекция кода; браузер классов, нет рефакторинга [66].

KDevelop — свободная интегрированная среда разработки для UNIX-подобных операционных систем от KDE [67].

  • Лицензия: GPL;
  • Языки веб-программирования: C++, Perl, Python, PHP, Java, Ruby, SQL;
  • Платформы: Windows, Linux, Mac OS X, FreeBSD, Solaris;
  • Другие особенности: есть отладчик с графической оболочкой; поддерживается разработка GUI, профилирование, покрытие кода, статистический анализ кода; подсветка исходного кода с учетом синтаксиса используемого языка программирования (язык определяется автоматически) (Kate); менеджер проектов, навигатор классов, wizards («Помощники») для генерации и обновления определения классов и фреймворка; автодополнение (автоматическая система завершения кода); встроенная поддержка Doxygen; контроль версий (известный как SCM), рефакторинг.

Komodo IDE — выпускаемая канадской компанией ActiveState программа для разработки программного обеспечения на динамических языках программирования [68].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++, Cobol, Java, JavaScript (также ActionScript, CoffeeScript), Perl, PHP, Python, Ruby, Tcl;
  • Платформы: Windows, Linux, Mac OS X;
  • Другие особенности: есть отладчик, более не поддерживается разработка GUI, подсветка синтаксиса, автодополнения, работа с различными кодировками и концами строк; поиск и замена как в текущем файле, так и в произвольных файлах; проверка синтаксиса; группировка файлов; отладчик и профилировщик; клиент для систем контроля версий; возможность установки дополнений; средство составления регулярных выражений (шаблонов); HTTP Inspector [68].

Padre (сокращенно от "Perl Application Development and Refactoring Environment" – разработка приложений и среда рефакторинга Perl) - это многоязычная платформа для разработки программного обеспечения, включающая IDE и систему плагинов для расширения её возможностей. Она написана в основном в Perl и используется для разработки приложений на этом языке [69].

  • Лицензия: Perl;
  • Языки веб-программирования: Perl;
  • Платформы: Windows, Linux, Mac OS X;
  • Другие особенности: есть отладчик, есть рефакторинг, поддержка плагинов, например, для управления конфигурацией, поддержки систем управления версиями (Subversion, SVK, Git; виджеты Padre реализуются wxWidgets, свободным кросс-платформенным инструментарием, написанным на C ++, поддержка закладок, сворачивание блоков кода, поддержка сессий, подержка Parrot, HTML, XML, CSS, совместимость с Vim.

Zend Studio — проприетарная интегрированная среда разработки, разработанная Zend Technologies [70]. Основана на PHP Development Tools для Eclipse.

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: PHP;
  • Платформы: Windows, Mac OS X, Linux;
  • Другие особенности: есть отладчик (также интегрирована с Zend Server), профилирование (Zend Studio Toolbar); интегрирована с Zend Framework и содержит инструменты для упрощения работы с этим фреймворком; сворачивание кода; интеграция с Zend Framework; рефакторинг; MVC представление; анализ и исправление кода; генерация кода (методы доступа к членам класса, мастер классов и интерфейсов); иерархическое представление классов и методов; поддержка dojo; поддержка HTML, CSS, JavaScript; контроль версий SVN и CVS; поддержка FTP, SFTP и FTP через SSH; поддержка просмотра СУБД MySQL, Microsoft SQL Server, Oracle, PostgreSQL, SQLite; поддержка веб-сервисов (генерация WSDL-файлов и другое); RSS-агрегатор [70].

JetBrains PhpStorm — интегрированная среда разработки для PHP[1]. Разрабатывается компанией JetBrains на основе платформы IntelliJ IDEA; вся функциональность WebStorm включена в PhpStorm [71].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: PHP и JavaScript;
  • Платформы: Windows, Mac OS X, Linux;
  • Другие особенности: есть отладчик, автодополнение; подсветка синтаксиса, анализ кода «на лету» (инспекция кода); рефакторинг; поддержка HTML; имеется полноценный SQL-редактор; поддержка сторонних плагинов, интеграция с системами контроля версий.

Codelobster PHP Edition — интегрированная среда разработки приложений (IDE) от Codelobster Software для создания веб-приложений на языке PHP [72].

  • Лицензия: условно-бесплатная;
  • Языки веб-программирования: PHP и JavaScript;
  • Платформы: Windows;
  • Другие особенности: есть отладчик; автодополнение, контекстная и динамическая помощь; сворачивание кода; подсветка синтаксиса; инспекция кода; поддержка SQL, HTML, CSS, XML; плагины фреймворков [72].

PHP Expert Editor — среда разработки для PHP-разработчиков. Программа имеет встроенный HTTP-сервер и позволяет запускать на стороне сервера скрипты на PHP, Perl, Python [73].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: PHP, Perl, Python, JavaScript, Ruby, Tcl;
  • Платформы: Windows;
  • Другие особенности: поддержка UTF-8, есть отладчик (клиентская часть PHP DBG); подсветка синтаксиса; инспекция кода, обозреватель кода и файлов, поддержка проектов, настраиваемые шаблоны кода; поддержка HTML; плагины фреймворков; встроенный веб-сервер и браузер, FTP-клиент с поддержкой SFTP; подсказка параметров, контекстная справка; настраиваемые горячие клавиши, макросы, шаблоны кода, автосохранение; обозреватели проекта (библиотек, файлов, кода), закладки.

PhpED - это коммерческая интегрированная среда разработки (IDE) от NuSphere Corporation [74].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: PHP, JavaScript;
  • Платформы: Windows;
  • Другие особенности: есть отладчик, профилирование, автодополнение, динамическая подсветка синтаксиса, сворачивание блоков кода, интеграция с PHPUnit, поддержка систем контроля версий CVS, SVN, и других Windows-совместимых, интегрированная система помощи, поддержка HTML, CSS, XML, Smarty, XHTML и других языков.

Eclipse Che - это свободное Java-серверное рабочее пространство разработчика и облачная интегрированная среда разработки, которая реализует многопользовательскую удаленную платформу разработки [75].

Он также содержит SDK, который может быть использован для создания плагинов для фреймворков и других средств разработки. Основное различие между Eclipse Che и стандартного Eclipse IDE - это его способность создавать Docker-контейнеры для выполнения приложений.

  • Лицензия: EPL;
  • Языки веб-программирования: Java, C ++, JavaScript, Python, PHP, Ruby, SQL;
  • Платформы: Window, Linux, Mac OS X, Solaris;
  • Другие особенности: есть отладчик, автодополнение, поддержка систем контроля версий (Git, Orion, SSH, Subversion), есть профилирование, покрытие кода, статический анализ кода, браузер классов, поддержка плагинов, рефакторинг, поддержка основных фреймворков.

Codeanywhere - кросс-платформенная облачная IDE, написанная на JavaScript компанией Codeanywhere, Inc. Codeanywhere позволяет пользователям совместно писать, редактировать и запускать проекты веб-разработки с помощью веб - браузера и любого мобильного устройства [76].

  • Лицензия: EPL;
  • Языки веб-программирования: JavaScript, PHP, Ruby, Python, Go, и т. д.;
  • Платформы: Window, Linux, Mac OS X, Solaris;
  • Другие особенности: есть отладчик, поддержка HTML, Node.js, io.js, предупреждения об ошибках, поддержка облачных сервисов (Google drive, OneDrive, DropBox), интеграция с системами контроля версий (Git, GitHub, BitBucket).

Dreamweaver — визуальный HTML-редактор и интегрированная среда разработки от компании Adobe [77]. Изначально разработан и поддерживался компанией Macromedia, вплоть до 8-й версии (2005 год). Следующие версии, начиная с Dreamweaver CS3 (2007), выпускает Adobe.

Adobe Dreamweaver CC - это приложение для веб-дизайна и разработки. Сочетает в себе множество инструментов для управления сайтом, позволяя своим пользователям создавать веб-сайты и управлять ими. Dreamweaver позиционируется как универсальный инструмент для веб-дизайна и разработки, который позволяет визуализировать веб-контент во время кодирования [77].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: Actionscript, C#, Java, Javascript, PHP;
  • Платформы: Windows, Mac OS X;
  • Другие особенности: нет отладчика, есть автодополнение, статический анализ кода, подсветка синтаксиса, подсказки, сворачивание блоков кода, нет рефакторинга, нет подержки систем контроля версий, есть поддержка HTML, CSS, XML.

Eric — свободно распространяемая интегрированная среда разработки для языков программирования Python и Ruby. По замыслу, среда служит фронт-эндом для нескольких программ, например, редактора QScintilla, интерпретатора языка Python, Python Profiler для профилирования [78].

  • Лицензия: GPL;
  • Языки веб-программирования: Python, Ruby;
  • Платформы: Windows, Mac OS X, Linux и др. UNIX-подобные;
  • Другие особенности: менеджер проектов; подсветка синтаксиса; отладчик, профайлер; поддержка параметров командной строки; юнит-тестирование; консоль для вывода и менеджер задач (самообновляемый TODO-лист); рефакторинг; контроль версий, поддержка плагинов.

IDLE (Integrated DeveLopment Environment) — это интегрированная среда разработки на языке Python, созданная с помощью библиотеки Tkinter от Гвидо ван Россума (создателя языка Pyton) [79]. Официально — искажение IDE, но на самом деле названа в честь Эрика Айдла (англ. Eric Idle) из Монти Пайтон. Поставляется вместе с Python и благодаря использованию Tkinter может использоваться на многих платформах [79].

  • Лицензия: Python Software Foundation License (свободное ПО, совместимое с GPL);
  • Языки веб-программирования: Python;
  • Платформы: Windows, Mac OS, Unix-подобные ОС;
  • Другие особенности: есть отладчик, подсветка синтаксиса. дополнительные возможности для опытных пользователей (например, средство просмотра объектов).

PyCharm — интегрированная среда разработки для языка программирования Python, поддерживает веб-разработку на Django. PyCharm разработана компанией JetBrains на основе IntelliJ IDEA [80].

  • Лицензия: проприетарная/Apache License 2.0 (PyCharm Community Edition);
  • Языки веб-программирования: Python;
  • Платформы: Windows, Mac OS X и Linux;
  • Другие особенности: есть отладчик (графический), статический анализ кода, подсветка синтаксиса и ошибок, рефакторинг (переименование, извлечение метода, введение переменной, введение константы, подъём и спуск метода и т. д.), использование фреймворка Django, юнит-тестирование, использование Google App Engine, системы контроля версий (общий пользовательский интерфейс для Mercurial, Git, Subversion, Perforce и CVS с поддержкой списков изменений и слияния), Навигация по проекту и исходному коду (отображение файловой структуры проекта, быстрый переход между файлами, классами, методами и использованиями методов).

PyScripter — это свободная интегрированная среда разработки (IDE) языка Python [81]. PyScripter разработан на компилируемом языке Object Pascal.

  • Лицензия: Mit;
  • Языки веб-программирования: Python;
  • Платформы: Windows;
  • Другие особенности: есть отладчик (с подсказсками), GUI-инструментарий (JVCL), подсветка синтаксиса и ошибок, проверка кода «на лету», автодополнение, навигация по коду, подсказки по синтаксису, статический анализ кода, параметризированные шаблоны кода, менеджер проектов, модульное тестирование, поддержка плагинов, автодополнение, основан на Unicode, основан на Unicode, параметризированные шаблоны кода; уведомления об изменении файлов вне программы; преобразование символов перевода строки в Windows, Unix, Macintosh; поддержка печати файлов с исходным кодом [81].

Spyder (ранее Pydee) — свободная и кроссплатформенная интерактивная IDE для научных расчетов на языке Python, обеспечивающая простоту использования функциональных возможностей и легковесность программной части. Spyder является частью модуля spyderlib для Python, основанного на PyQt4, pyflakes, rope и Sphinx [82].

  • Лицензия: MIT;
  • Языки веб-программирования: Python, C++;
  • Платформы: Windows, Mac OS X и Linux;
  • Другие особенности: гибкий интерфейс, подсветка синтаксиса, проверка кода «на лету» (с использованием pyflakes), автодополнение и переход к определению объекта по клику мыши (динамическая интроспекция кода с помощью rope), консоль Python (встраиваемая в приложения), графический редактор переменных (в том числе списков, словарей и массивов), интеграция с научными библиотеками Python (NumPy, SciPy, Matplotlib, Pandas); встроенные средства доступа к документации (в формате Sphinx).

Microsoft Visual Studio — линейка продуктов компании Microsoft [83]. Включает интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать веб-приложения как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework и Silverlight.

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++ (C#), VB.net;
  • Платформы: Windows, кросс-компиляции для Windows Mobile, Mac OS, Linux;
  • Другие особенности: есть отладчик, автодополнение (IntelliSense), рефакторинг, профилирование, статический анализ кода, возможность разработки GUI, веб-редактор, браузер и дизайнер классов и дизайнер схемы базы данных, поддержка сторонних плагинов, включая добавление систем контроля версий (Subversion и Visual SourceSafe), покрытие кода [83].

Microsoft Visual Studio Express — линейка бесплатных интегрированных сред разработки, облегчённая версия Microsoft Visual Studio, разработанной компанией Microsoft. Согласно утверждению Microsoft, «Express»-редакции предлагают отлаженную, простую в обучении и использовании среду разработки пользователям, не являющимся профессиональными разработчиками ПО, — любителям и студентам [84].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: C++ (C#), VB.net;
  • Платформы: Windows;
  • Другие особенности: есть отладчик, автодополнение, рефакторинг (через плагин), профилирование, статический анализ кода, возможность разработки GUI, веб-редактор, навигатор классов, покрытие кода.

Visual Studio Code — кроссплатформенный редактор исходного кода, поддерживающий базовые возможности интегрированной среды разработки, созданный в Microsoft [85]. Позиционируется как «легкий» редактор кода для кроссплатформенной разработки веб- и облачных приложений. Visual Studio Code распространяется бесплатно, разрабатывается как программное обеспечение с открытым исходным кодом [85].

Основой Visual Studio Code являются наработки свободного проекта Atom, который разрабатывается компанией GitHub. В частности, Visual Studio Code является надстройкой Electron (бывшим Atom Shell), который объединяет в себе браузерный движок Chromium и Node.js. При разработке использованы наработки, полученные в процессе создания веб-редактора Monaco, предназначенного для Visual Studio Online [86].

  • Лицензия: MIT;
  • Языки веб-программирования: JavaScript (CoffeeScript), C++ (C#); PHP, Python, Java, Платформы: Windows, Linux, Mac OS X;
  • Другие особенности: есть встроенный отладчик, поддержка разработки для ASP.NET и Node.js; TypeScript, jade, Docker, HandleBars, R, PowerShell, Markdown, JSON, HTML, CSS, LESS и SASS, Swift, XML, подсветка синтаксиса, сниппеты (Groovy, Markdown, Nim, PHP, Swift), рефакторинг, инструмент для работы с системой контроля версий git, навигация по коду, автодополнения и контекстная подсказка.

SharpDevelop — свободная среда разработки от ICSharpCode Team для разработки приложений на C#, Visual Basic .NET, Boo, IronPython, IronRuby, F#, C++ [87]. Обычно используется как альтернатива Visual Studio .NET. Существует также форк на Mono/GTK+ — MonoDevelop.

SharpDevelop 2.0 предоставляет интегрированный отладчик, который использует собственные библиотеки и взаимодействует с исполняющей средой .NET через COM Interop.

  • Лицензия: LGPL;
  • Языки веб-программирования: C#, VB.net, ASP, ASP.NET, VBScript, VB.NET
  • Платформы: Windows, кросс-компиляции для Windows Mobile, Mac OS, Linux;
  • Другие особенности: интегрированный отладчик, юнит-тестирование (NUnit, MbUnit и NCover), интегрированный профайлер, статический анализ кода, подсветка синтаксиса, возможность разработки GUI, веб-редактор, браузер и дизайнер классов и дизайнер схемы базы данных, поддержка сторонних плагинов, включая добавление систем контроля версий (Subversion и Visual SourceSafe), покрытие кода, поддержка плагинов, интегрированная поддержка систем контроля версий SVN, Mercurial и Git, Конвертор кода между языками C#, VB.NET, IronPython и Boo, предпросмотр документации, полученной из документирующих комментариев, поддержка HTML, XAML, XML [87].

Stani's Python Editor (SPE) – кросс-платформенная интегрированная среда разработки (IDE) для языка программирования Python [88].

  • Лицензия: GPL;
  • Языки веб-программирования: Python;
  • Платформы: Linux, Mac OS X, Microsoft Windows;
  • Другие особенности: подсветка синтаксиса, автоматическое завершение, автоматический отступ, подсказки вызова, несколько вкладок, проверка синтаксиса и интегрированный дизайнер GUI (wxGlade) и отладчик (Winpdb). Он основан на WxPython.

Thonny - Python IDE для начинающих. Он поддерживает различные способы пошагового кода, оценку экспрессии шаг за шагом, детальную визуализация стека вызовов [89].

  • Лицензия: Mit;
  • Языки веб-программирования: Python;
  • Платформы: Linux, Mac OS X, Microsoft Windows;
  • Другие особенности: GUI-инструментарий (Tkinter), пошаговое вычисления выражений (выражения заменяются их значениями), возможность регистрировать действия пользователя для воспроизведения или анализа процесса программирования [89].

Wing IDE - интегрированная среда разработки от Wingware, которая разработана специально для языка программирования Python, чтобы сократить затраты на разработку и отладку времени, уменьшить количество ошибок, и сделать его проще для понимания и навигации [90].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: Python;
  • Платформы: Linux, Mac OS X, Microsoft Windows;
  • Другие особенности: есть отладчик (включая дистанционный, а также модульное тестирование), автодополнение, статический анализ кода, множественный выбор, GUI-инструментарий (Qt5 c PyQt), браузер классов и навигация по коду, контроль версий, менеджер проектов, возможности поиска и обширная документация, рефакторинг, поддержка веб-фреймворков.

PIDA - IDE с открытым исходным кодом, которая написана на языке Python командой разработчиков, в качестве графической среды и оболочки вокруг текстового редактора Vim. Это было впоследствии распространено на другие вложенных редакторов, включая Emacs и Mooedit [91].

  • Лицензия: GPL;
  • Языки веб-программирования: Python;
  • Платформы: Linux, Mac OS X, Microsoft Windows;
  • Другие особенности: управление проектами, GUI-инструментарий (PyGTK), запуск внешних систем контроля версий, профилирования, отладки, списки доступа пользователей к файлам, - в зависимости от использующейся платформы.

Aptana Studio — кроссплатформенная, свободная, интегрированная среда разработки приложений (IDE) c открытым исходным кодом для создания динамических веб-приложений [92].

  • Лицензия: GPL;
  • Языки веб-программирования: Ruby on Rails, PHP, Python, Adobe Air;
  • Платформы: Windows, Linux, Mac OS X, плагин к Eclipse;
  • Другие особенности: есть отладчик, поддерживает более 50 форматов; автодополнение; выделение цветом; инспекция кода (предупреждения об ошибках); возможность для настройки и расширения пользовательского интерфейса; JavaScript на стороне сервера.

RubyMine — коммерческая IDE для разработки программного обеспечения на Ruby компании JetBrains. RubyMine создан на основе IntelliJ IDEA того же производителя. Поддерживает популярные библиотеки, используемые в Ruby-приложениях (в том числе Bundler, RSpec, Shoulda, Cucumber, Git) [93].

  • Лицензия: проприетарное ПО;
  • Языки веб-программирования: Ruby, JavaScript (вкл. CoffeeScript);
  • Платформы: Windows, Linux, Mac OS X;
  • Другие особенности: подсветка синтаксиса, автодополнение, анализ кода на лету, быстрая навигация по элементам проекта и кода, диаграммы моделей, классов, пакетов (gems), пошаговый отладчик; Unit-тесты, поддержка тестовых фреймворков, поддержка языков HTML/HAML, CSS/Sass/Less, поддержка набора инструментов Emmet, отладчик кода, интеграция с системами контроля версий (Git, Subversion, Mercurial, Perforce, CVS) с удобным настраиваемым GUI.

NetBeans IDE — свободная интегрированная среда разработки приложений [94]. Проект NetBeans IDE поддерживается и спонсируется компанией Oracle, однако разработка NetBeans ведётся независимым сообществом разработчиков-энтузиастов (NetBeans Community) и компанией NetBeans Org. В сентябре 2016 года Oracle передала интегрированную среду разработки NetBeans в руки фонда Apache.

  • Лицензия: CDDL; GPL2;
  • Языки веб-программирования: Java, Python, PHP, JavaScript, Ruby, C++, PL/SQL;
  • Платформы: Windows, Linux, Mac OS X, OpenSolaris и Solaris;
  • Другие особенности: есть отладчик; разработка GUI, автодополнение, рефакторинг, нет профилирования, нет покрытия кода, подсветка синтаксиса, автодополнение, нет статического анализа кода, множество шаблонов кода; поддержка UML, SOA, J2ME, поддерживает плагины (iReport, и т. д.), поддержка языка Groovy, нет поддержки Ruby и Ruby on Rails, навигатор классов, есть разработка GUI; нет браузера классов; поддержка CSS.

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

3. Экономические аспекты разработки Web-приложений

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

В соответствии с национальным стандартом ANSI PMBoK, управление прокутами как часть системы менеджмента предприятия, является областью деятельности, в ходе которой определяются и достигаются четкие цели проекта при балансировании между объёмом работ, ресурсами (такими как деньги, труд, материалы, энергия, пространство и др.), временем, качеством и рисками [95][96].

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

3.1 Подходы в программировании для менеджеров проектов

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

Если же ситуация противоположна, и функциональность варьируется, в то время как сроки и ресурсы строго фиксированы, то когда четко определены некоторые приоритетные направления разработки проекта, разумно применять концепцию RAD (rapid application development model или быстрая разработка приложений), которую также часто связывают с концепцией визуального программирования [98]. Во второй главе я приводил примеры IDE, соответствующих этой концепции. RAD может использоваться только при наличии высококвалифицированных и узкоспециализированных архитекторов. Бюджет проекта большой, чтобы оплатить этих специалистов вместе со стоимостью готовых инструментов автоматизированной сборки. RAD-модель может быть выбрана при уверенном знании целевого бизнеса и необходимости срочного производства системы в течение 2-3 месяцев.

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

В отличие от каскадной, в гибкой модели (Agile) для старта проекта достаточно лишь небольшого планирования. Она наиболее уместна, когда потребности пользователей постоянно меняются в динамическом бизнесе, а изменения на Agile реализуются за меньшую цену из-за частых инкрементов [99].

Частным примером является проект Электронной Системы Медицинских Осмотров, созданная для проведения массовых медосмотров в считанные минуты [100].

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

3.2 Прикладной аспект отдельных инструментов разработки

Выбор языка программирования

При выборе языка программирования, стоит ориентироваться на тот, что уже знаком, поскольку обучение неизученному языку может занимать от 3 до 6 месяцев. Также, при выборе команды разработчиков, разумно опираться на единый язык для веб-программирования.

Если задачи относительно простые, но использование CMS недостаточно, то стоит ориентироваться на высокоуровневые языки, поскольку это также повысит производительность [102][103].

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

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

Особенности каркасов веб-приложений

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

К задачам фреймворка можно отнести обработку входных данных, вызов обработчика бизнес-логики, и вывод данных, а также дополнительные: создание и валидация форм, пре- и пост- обработка данных, работа с хранилищем данных [22]. Практически все фреймворки выполняют похожий функционал – разница в синтаксисах и дополнительных возможностях.

Примеры основных фреймворков по языкам программирования:

  • PHP: Yii, Symphony, Zend;
  • Python: Django;
  • Ruby: Ruby on Rails;
  • Perl – Mojolicious, Dancer, Catalyst.

Сравнение CMS и каркасов веб-приложений

Большая часть каркасов веб-приложений реализует шаблон проектирования Model-View-Controller (MVC). Однако, также могут использоваться и другие шаблоны, например, Model-View-Presenter (Backbone.js) или Model-View-ViewModel (Knockout.js) [104].

Если основная задача универсальных CMS — простота создания сайта без вмешательства программиста, то есть — конструктор сайтов, то CMF — это конструктор CMS (в том числе узкоспециализированных) для программиста [23]. Благодаря такому подходу сайт, созданный с помощью CMF, по сравнению с сайтом на базе CMS, может иметь более простую и безопасную в работе административную панель (в которой отсутствуют функции настройки сайта под любые функции) и быть менее требовательным к ресурсам системы (каждый модуль реализует именно те функции, которые необходимы в работе сайта). При наличии грамотно спроектированной CMF и готовых модулей, программисту остаётся только сборка этих модулей в единое пространство и оформление вывода в соответствии с пожеланиями клиента, то есть разработка сайта на основе CMF вполне сравнима по трудоёмкости с разработкой сайта на универсальной CMS.

Сложности могут возникнуть, если программист-пользователь фреймворка столкнётся с программными ошибками в его реализации. Не будучи экспертом в архитектуре фреймворка, он может испытывать затруднение с её локализацией, не может быть уверен, сделал ли он ошибку сам, или столкнулся с ошибкой в CMF. Глубокие знания архитектуры фреймворка могут понадобиться и при его тонкой настройке, если программист желает получить максимальную производительность [23].

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

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

Многие веб-фреймворки обеспечивают полуавтоматическое создание прототипа веб-приложения, выполняющего основные операции с данными путём скаффолдинга, то есть, методом метапрограммирования для создания веб-приложений, взаимодействующих с базой данных [105].

Важные характеристики фреймворка:

    • Размер. При выборе CMF стоит обращать внимание на такие факторы, как размер фреймворка. Если фреймворк слишком велик и не имеет легко разделяемой модульной архитектуры, это может неоправданно утяжелить приложение. Компактность фреймворка может вступить в противоречие с широтой возможностей, которые он предоставляет;
    • Производительность — важная на практике характеристика веб-фреймворка. Она может косвенно зависеть от размера, особенно для интерпретируемых языков вроде PHP. Следует оценивать производительность фреймворка в таких единицах, как количество обрабатываемых в секунду запросов [23].

Шаблоны и библиотеки в разработке веб-приложений

Шаблоны снижают сложность, предоставляя информацию о коде; снижают число ошибок за счёт стандартов; ускоряют проектирование, но требуют адаптации [106].

Есть сборники кода, шаблонизаторы: использование шаблонов для генерации страниц (назначение – отелить представление от бизнес-логики); различия между шаблонами: синтаксис и скорость работы (интерпретация, компиляция).

Задачи использования шаблонов и библиотек:

    • обработка текста;
    • работа с почтой;
    • работа с хранилищами: работа с API хранилища (драйверы, ODBC, JDBC и т. д.), ORM – объектно-реляционная проекция;
    • графика;
    • криптография.

Веб-шаблоны могут быть использованы любым лицом или организацией с целью создания своего веб-сайта [107].

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

Шаблоны могут быть использованы для отображения личной информации или ежедневной активности в блогах, для продажи продуктов в онлайн режиме, для отображения информации о компании или организации, истории семьи, галереи фотографий, онлайн размещения музыкальных и видео файлов и проигрывания через веб-браузер, для настройки области входа в приватную часть сайта [106].

Общая цель опытных веб-разработчиков — разработка и развертывание гибких и легко сопровождаемых приложений.

Важным моментом в достижении этой цели является отделение бизнес-логики от логики представления. Разработчики могут использовать системы веб-шаблонов (с разной степенью успеха), чтобы сохранить такое разделение [107].

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

Различие между «представлением» (дизайном) и «бизнес-логикой» (инфраструктурой), как правило, имеет важное значение [24], потому что:

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

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

К тому же, веб-шаблоны для повторного использования могут быть очень полезны даже для высококвалифицированных и опытных разработчиков, это особенно важно для тех, кто полагается на простоту и «готовые» веб-решения. Такие «готовые» веб-шаблоны иногда бывают свободно доступны, и их легко приспособить под конкретные требования [107].

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

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

IDE и текстовые редакторы

Если проект простой, и не обладает избыточной функциональностью, то достаточным инструментом может быть использование специализированных текстовых редакторов [108]. В частности, наиболее удобным представляется использование текстовых редакторов для вёрстки фронтэнда веб-приложения.

Примерами таких текстовых редакторов могут быть следующие: HTML-Kit, Atom, Sublime, Vim, Notepad++, vim, emacs, brackets.io, и другие.

При этом, текстовые редакторы, а также IDE, реализованные на web-технологиях, лишены быстродействия на сложном коде. Например, Brackets.io медленно работает на коде от 600-700 строк и выше.

В этом случае, разумно использовать или продвинутые текстовые редакторы, типа Notepad++ или проприетарный Sublime Text с дополнительными плагинами, или использовать IDE, поскольку с ростом кода затруднятся навигация по нему, а также тестирование и отладка [108][109][110].

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

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

Также к плюсам IDE перед редакторами можно отнести автодополнение, инспекцию ошибок, причём, как синтаксических, так и в некоторых случаях – семантических. Несмотря на то, что часть редакторов и обладают функциями автодополнения, они не могут проводить полноценный анализ, находя избыточный или неуместный код. В IDE есть интеллектуальные подсказки, которые освобождают от необходимости помнить названия ненужных функций и их параметров – особенно если в коде порядка 100000 строк. Также только в IDE есть понятие проектов. К ним привязываются настройки, ресурсы, возможность осуществлять поиск, и т. д. Зачастую в редакторах этот функционал реализован только на уровне, открытого каталога файловой системы.

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

Однако, если проект предполагает не более 10-20 файлов – то нет смысла загружать IDE-контейнер из 10-20 файлов, поскольку в этом случае проще использовать именно редактор [108]. Также к минусам IDE можно отнести, в ряде избыточный функционал и требовательные к ресурсам на небольших проектах [111].

Использование IDE для разработки программного обеспечения является прямой противоположностью способу, в котором используются несвязанные инструменты, такие как текстовый редактор, и т. п. Интегрированные среды разработки были созданы для того, чтобы максимизировать производительность программиста благодаря тесно связанным компонентам с простыми пользовательскими интерфейсами. Это позволяет разработчику сделать меньше действий для переключения различных режимов, в отличие от дискретных программ разработки. По состоянию на март 2015 года, самые популярные Иды являются Eclipse, и Visual Studio [112]. Для уменьшения барьера вхождения многие достаточно интерактивны, а для облегчения перехода с одной на другую интерфейс у одного производителя максимально близок, вплоть до использования одной IDE.

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

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

Интегрированные среды разработки также часто поддерживают пометки в комментариях в исходном тексте программ, отмечающий места, требующие дальнейшего внимания или предполагающие внесение изменений, такие как TODO, FIXME и т. п. [113]

API

Для стандартизации, отделения интерфейса от реализации, гибкости, экономии ресурсов, используется набор готовых инструментов (классов, процедур, структур, констант и т. д.), предоставляемых сервисом для использования во внешних продуктах – API [114]. К недостаткам можно отнести разнообразие (принципы, форматы), избыточность трафика, зависимость от чужой разработки, единую точку отказа [115].

Существенное преимущество построения веб-приложений для поддержки стандартных функций браузера заключается в том, что функции должны выполняться независимо от операционной системы данного клиента [1]. Вместо того, чтобы писать различные версии для Microsoft Windows, Mac OS X, GNU/Linux и других операционных систем, приложение создаётся один раз для произвольно выбранной платформы и на ней разворачивается. Однако различная реализация HTML, CSS, DOM и других спецификаций в браузерах может вызвать проблемы при разработке веб-приложений и последующей поддержке. Кроме того, возможность пользователя настраивать многие параметры браузера (например, размер шрифта, цвета, отключение поддержки сценариев) может препятствовать корректной работе приложения.

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

Уже на 2015 год технологию Adobe Flash не поддерживают Chrome, Safari, и другие популярные браузеры [116].

В связи с архитектурным сходством с традиционными клиент-серверными приложениями, в некотором роде «толстыми» клиентами, существуют споры относительно корректности отнесения подобных систем к веб-приложениям; альтернативный термин "Богатое Интернет приложение" (англ. Rich Internet Applications) [117].

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

ЗАКЛЮЧЕНИЕ

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

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

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

Для улучшения качества работы команды разработчиков, уменьшения количества ошибок кода, а также для упрощения сопровождения кода, стоит стандартизировать инструменты работы с сервисом (API).

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

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

СПИСОК ЛИТЕРАТУРЫ

  1. Nations Daniel Web Applications / Nations Daniel
  2. Jekyll Tips Why use a static site generator? / Jekyll Tips.
  3. Why Static Website Generators Are The Next Big Thing // Smashing Magazine.
  4. Doyle Barry, Lopes Cristina Videira Survey of Technologies for Web Application Development / Doyle Barry, Lopes Cristina Videira // URL: https://arxiv.org/abs/0801.2618.
  5. Gabbrielli Marchiory Dynamic wib sites / Gabbrielli Marchiory // URL: https://www.w3.org/People/Massimo/papers/rmm.pdf .
  6. Mariela Hristova Dynamic Web Pages / Mariela Hristova // URL: https://www.ischool.utexas.edu/~hristova/ia/ .
  7. Pete LePage Responsive Web Design Basics | Web // Google Developers.
  8. Total number of Websites // URL: internetlivestats.com .
  9. Олищук А.В. Разработка Web-приложений на PHP 5. Профессиональная работа. / А.В. Олищук. - М.: «Вильямс», 2006. - С. 352. - ISBN 5-8459-0944-9.
  10. Мержевич В. Основы верстки / В.Мержевич // URL: htmlbook.ru (дата обращения: 23.09.2010).
  11. Савельева Н. Системы управления контентом (рус.) // Открытые системы. — 2004. — № 4.
  12. Лайза К., Джанет Г. Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = Agile Testing: A Practical Guide for Testers and Agile Teams / К.Лайза, Джанет Г. - М.: «Вильямс», 2010. - 464 с. - (Addison-Wesley Signature Series). - 1000 экз. -ISBN 978-5-8459-1625-9.
  13. Джесси Джеймс Гарретт Новый подход к веб-приложениям / Джесси Джеймс Гарретт.
  14. Шестаков В.С., Сагидуллин А.С. Применение технологии Websocket в Web-приложениях технологического назначения // Приборостроение.- 2015.
  15. Колисниченко Д. Движок для вашего сайта. CMS Joomla!, Slaed, PHP-Nuke. / Д. Колисниченко – М.: Петербург: БХВ, 2008. — 352 с. — ISBN 978-5-9775-0258-0.
  16. Ann Rockley, Pamela Kostur, Steve Manning Managing Enterprise Content: A Unified Content Strategy / Ann Rockley, Pamela Kostur, Steve Manning // New Riders.- 2003.
  17. Martin White The content management handbook / Martin White // Facet Publishing.- 2005.
  18. Bob Boiko. John Wiley & Sons Content Management Bible / Bob Boiko. John Wiley & Sons, 2005.
  19. Moving Media Storage Technologies: Applications & Workflows for Video and Media S2011. Page 381
  20. "W3Techs content management usage". August 8, 2016.
  21. Нестеренко Н., Шантарин А. Контент-менеджмент / Н. Нестеренко, А. Шантарин - М.: Солон-Пресс, 2014. — 256 с. — ISBN 978-5-91359-143-2.
  22. Денис Баженов Каркасы, каркасы, каркасы… // PHP Inside. — phpclub.ru, 2005. — № 11. — С. 5-10.
  23. Дмитрий Попов CMF как инструмент freelance-разработки (Доклад на осенней конференции PHPConf 2004) // PHP Inside. — phpclub.ru, 2004. — № 7. — С. 97-107. Архивировано из первоисточника 7 мая 2006.
  24. Рогачев С. Обобщённый Model-View-Controller // rsdn.org. — 2007.
  25. O'Connor, William (2014-08-19) The Drupal API turns a CMS into a true enterprise application - O'Reilly Radar // O'Reilly Media. (Retrieved 2017-04-11)
  26. Diana Dupuis Drupal Is a Framework: Why Everyone Needs to Understand This // Linux Journal. (Retrieved 2013-05-15)
  27. Shoavi Orly The All-Star Winners of Mobile App Tools (SDKs) // SafeDK.
  28. Чибисов Д.М. Правовая природа Соглашения по торговым аспектам прав интеллектуальной собственности // Научный вестник Ужгородского национального университета : Статья. — 2012. — № 19.
  29. Benjamin Mako Hill. Freedom for Users, Not for Software (англ.) (23 октября 2011). (дата обращения: 07.04.2013)
  30. Improving Software Security with Precise Static and Runtime Analysis, Benjamin Livshits, section 7.3 "Static Techniques for Security," Stanford doctoral thesis, 2006. URL: http://research.microsoft.com/en-us/um/people/livshits/papers/pdf/thesis.pdf
  31. Руководство по профилированию производительности для начинающих, справка Visual Studio 2015, Microsoft.
  32. Sanjeev Kumar Aggarwal and M. Sarath Kumar (2003). "Debuggers for Programming Languages". In Y.N. Srikant and Priti Shankar. The Compiler Design Handbook: Optimizations and Machine Code Generation. Boca Raton, Florida: CRC Press. pp. 295–327. ISBN 978-0-8493-1240-3.
  33. http://anjuta.org/features/
  34. https://www.jetbrains.com/objc/
  35. https://www.embarcadero.com/products/cbuilder/features
  36. http://www.codeblocks.org/features
  37. https://codelite.org/
  38. "Dev-C++". https://sourceforge.net/p/dev-cpp/discussion/33286/thread/988fe550/ . Retrieved 8 September 2015.
  39. http://orwelldevcpp.blogspot.ru/
  40. http://libre.adacore.com/tools/gps/
  41. https://www.jetbrains.com/clion/
  42. http://www.monodevelop.com/
  43. http://wiki.qt.io/Category:Tools::QtCreator
  44. http://www.philasmicos.com/phes/features.php
  45. http://www.oracle.com/technetwork/server-storage/developerstudio/features/index.html
  46. IBM Rational Software Architect
  47. https://www.slickedit.com/products/slickedit/cool-features
  48. http://ultimatepp.org/
  49. http://www.openwatcom.org/
  50. https://scitools.com/
  51. codeforge.com
  52. http://kuzya.sourceforge.net/ru/
  53. https://wiki.gnome.org/Apps/Builder
  54. https://code.google.com/archive/p/qdevelop/
  55. https://bluej.org/
  56. http://www.eclipse.org/ide/
  57. https://www.embarcadero.com/
  58. https://developer.apple.com/xcode/
  59. http://jcreator.com/
  60. http://www.jgrasp.org/
  61. http://ninja-ide.org/
  62. http://lighttable.com/
  63. http://www.oracle.com/technetwork/developer-tools/adf/adf-11-overview-1-129504.pdf
  64. https://servoy.com//
  65. https://www.jetbrains.com/webstorm/
  66. http://www.geany.org/
  67. https://www.kdevelop.org/
  68. https://www.activestate.com/komodo-ide
  69. http://padre.perlide.org/
  70. http://www.zend.com/en/products/studio#features
  71. https://www.jetbrains.com/phpstorm/
  72. http://www.codelobster.com/
  73. Каждан И. PHP Expert Editor. Программа для написания, правки и отладки PHP-скриптов // «Компьютерная газета» №25.-2006.
  74. http://www.nusphere.com/products/phped.htm
  75. https://www.eclipse.org/che/
  76. https://codeanywhere.com/features/editor
  77. http://www.adobe.com/ru/products/dreamweaver.html
  78. http://eric-ide.python-projects.org/
  79. https://docs.python.org/3/library/idle.html
  80. https://www.jetbrains.com/pycharm/
  81. https://sourceforge.net/projects/pyscripter/
  82. https://pythonhosted.org/spyder/
  83. https://www.visualstudio.com/ru/
  84. https://www.visualstudio.com/ru/vs/visual-studio-express/
  85. https://code.visualstudio.com/
  86. Frederic Lardinois. Microsoft Launches Visual Studio Code, A Free Cross-Platform Code Editor For OS X, Linux And Windows. TechCrunch (Apr 29, 2015).
  87. http://www.icsharpcode.net/OpenSource/SD/Default.aspx
  88. https://pythonide.blogspot.ru/
  89. http://thonny.org/
  90. http://www.wingware.com
  91. https://bitbucket.org/aafshar/pida-main/wiki/Home
  92. http://www.aptana.com/
  93. https://www.jetbrains.com/ruby/
  94. https://netbeans.org/community/releases/82/
  95. Ким Хелдман Профессиональное управление проектами / Ким Хелдман — М.: Бином, 2005. — С. 517. — ISBN 5-94774-234-9.
  96. Лапыгин Ю. Н. Управление проектами: от планирования до оценки эффективности / Ю. Н. Лапыгин — М.: Омега-Л, 2008. — С. 252. — ISBN 978-5-370-00985-3.
  97. Royce Winston (1970), Managing the Development of Large Software Systems (англ.) URL: http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
  98. Martin, James (1991). Rapid Application Development. Macmillan. ISBN 0-02-376775-8.
  99. Abrahamsson, P., Salo, O., Ronkainen, J., & Warsta, J. (2002). Agile Software Development Methods: Review and Analysis. VTT Publications 478.
  100. Электронная Система Медицинских Осмотров URL: http://www.kvzrm.ru/
  101. Стив Макконнелл Влияние итеративных подходов на предварительные условия // Совершенный код = Code Complete. — Русская Редакция, Питер, 2005. — С. 31. — 896 с.
  102. Surana P (2006) Meta-Compilation of Language Abstractions. Archived from the original (PDF) on 2015-02-17. (Retrieved 2008-03-17)
  103. Kuketayev The Data Abstraction Penalty (DAP) Benchmark for Small Objects in Java. (Retrieved 2008-03-17).
  104. Samisa Abeysinghe. Ch 3. Dealing with Complexity → Frameworks to simplify complexity // PHP Team Development. — Packt (англ.)русск., 2009. — P. 58-68. — 183 p. — ISBN 978-1-847195-06-7.
  105. Getting Up and Running Quickly with Scaffolding // URL: http://guides.rubyonrails.org/getting_started.html#getting-up-and-running-quickly-with-scaffolding
  106. Terence John Pratt. Enforcing strict model-view separation in template engines. — Proceedings of the 13th international conference on World Wide Web, 2004. — ISBN 1-58113-844-X
  107. Enforcing Strict Model-View Separation in Template Engines URL: http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf
  108. Юрий Меркулов. Путеводитель по текстовым редакторам. Часть 4. iXBT (8 февраля 2008).
  109. http://www.sublimetext.com/
  110. https://notepad-plus-plus.org/
  111. Rehman, Christopher Paul, Christopher R. Paul. The Linux Development Platform: Configuring, Using and Maintaining a Complete Programming Environment / Rehman, Christopher Paul, Christopher R. Paul – M.: 2002. ISBN 0-13-009115-4
  112. http://pypl.github.io/IDE.html
  113. https://www.approxion.com/?p=39
  114. Clarke, Steven (2004) Measuring API Usability. Dr. Dobb's. (Retrieved 29 July 2016).
  115. Emery David Standards, APIs, Interfaces and Bindings Acm.org. (Re trieved 2016-08-08).
  116. Ларри Зельцер Насыщенные интернет-приложения привлекательны для злоумышленников // PCWeek, 15.09.2010.
  117. Константин Ковалев RIA — значит свобода // Мир ПК. — 2008. — № 3. — С. 62-65. — ISSN 0235-3520.