Структура и тенденции рынка средств разработки в условиях технологической глобализации и растущей сложности проектов.

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

Еще два-три десятка лет назад «программист» было почти что синонимом понятия «пользователь компьютера». Сегодня разработчики ПО составляют лишь единицы процентов от общего числа пользователей. Более того, если еще в середине 90-х гг. прошлого века чуть ли не половина ИТ-специалистов могла сказать о себе, что они в той или иной мере занимаются программированием, то сейчас многие из них имеют о средствах разработки сугубо теоретическое представление.

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

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

Основные тенденции

Развитие ситуации на рынке средств разработки шло под воздействием целого ряда различных, порой весьма противоречивых тенденций. Первая из них — это технологическая глобализация ИТ-рынка, которая выразилась в том, что инструментальные средства из самостоятельного направления превратились в один из компонентов — хотя и ключевых — платформ приложений. В то же время сами платформенные технологии фактически разделились между двумя противоборствующими лагерями: Microsoft .NET и Java/ open source. В первом случае речь изначально шла о безусловном лидерстве монопродукта в виде Microsoft Visual Studio. Во втором сообществе поначалу наблюдался довольно широкий спектр предложений во главе с популярными инструментами от Rational и Borland, но потом в условиях борьбы с «внешним врагом» начался процесс консолидации Java-средств вокруг проекта Eclipse, инициированного в свое время корпорацией IBM.

Одним из фундаментальных следствий глобализации стало фактическое исчезновение самого рынка (как предмета коммерческой деятельности вендоров) средств разработки. Точнее, рынок продолжает существовать, но уже совсем в ином статусе, чем десять и более лет назад. Внешне это проявляется как выход на ведущие позиции платформенных поставщиков ПО и ИТ-сообществ и соответственно уход «в тень» (или вовсе с рынка) специализированных игроков. Классическая иллюстрация — попытки Borland избавиться от IDE-бизнеса, которые лишь в мае этого года увенчались успехом: подразделение CodeGear будет продано фирме Embarcadero Technologies за 23 млн долл.

Вторая тенденция — рост сложности программных проектов. В результате процесс собственно разработки ПО стал рассматриваться как один из этапов управления жизненным циклом приложений (Application Lifecycle Management, ALM). В этой ситуации акценты стали смещаться, с одной стороны, в направлении поддержки групповой работы на основе ролевой модели, а с другой — в область вопросов управления требованиями, а также повышения значимости тестирования и оптимизации ПО (как тиражных продуктов, так и заказных решений).

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

Следствием всех этих тенденций стала достаточно парадоксальная ситуация: создание действительно инновационных решений в области разработки ПО еще сильнее связывается с молодым поколением, еще больше выросла значимость индивидуальных проектов. Это хорошо демонстрируют наиболее выдающиеся примеры ИТ-бизнеса последних лет (Yahoo!, Google, LiveJournal, Facebook и т. п.), которые выросли из студенческих работ. В этой ситуации неудивительно, что ведущие платформенные вендоры уделяют так много внимания вопросам продвижения своих средств разработки в молодежную среду.

Структура рынка

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

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

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

Однако стратегически более перспективным, судя по всему, оказался другой подход: эволюционное развитие ALM-платформы на базе интегрированных сред разработки (Integrated Development Environment, IDE). Именно по этому пути изначально шла и идет корпорация Microsoft со своим пакетом Visual Studio; аналогично решила строить свою стратегию в данной области IBM, преобразовав проект Eclipse в мощное движение open source (по той же схеме работает Sun с собственным проектом NetBeans).

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

Второй подход к структуризации рынка — с точки зрения целевых задач разработки. Здесь мы бы предложили вариант, включающий два основных разреза — по базовым платформам и по широте спектра решаемых задач (рис. 2). Соответственно можно выделить две ведущие технологические платформы — .NET и Java, где сегодня доминируют соответственно инструменты Visual Studio и Eclipse.

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

В то же время заметен рост значимости инструментов, входящих в состав специализированных платформ, в первую очередь транзакционных систем (ERP). Ранее эти средства имели сугубо встроенный характер и были предназначены преимущественно для более тонкой настройки готовых прикладных решений. Однако сейчас мы видим, что многие бизнес-платформы позиционируются в качестве основы для создания приложений широкого спектра и имеют в своем составе достаточно продвинутые инструментальные наборы. Конечно, общая тенденция тут связана с переходом к использованию универсальных средств (в частности, Visual Studio для Microsoft Dynamics), но есть и удачные примеры развития собственных технологий (наиболее яркий из них — «1С:Предприятие»).

Forrester о рынке IDE

Компания Forrester (www.forrester.com) в 2007 г. провела опрос более 700 разработчиков приложений в США и Канаде (выборка из числа подписчиков специализированных информационных бюллетеней) с целью выяснить, какие IDE-инструменты они используют.

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

Например, из числа пользователей Eclipse лишь 11% имеют дело только с этой IDE, остальные 89% применяют что-то еще — Sun NetBeans (33%), Microsoft Visual Studio (27%), Oracle JDeveloper (12%), IBM WebSphere Application Developer (12%), BEA WorkShop (11%), IBM Rapid Appication Developer (9%), CodGear JBuilder (6%). Visual Studio — более самодостаточное средство: половина его пользователей решает все свои задачи только с помощью этого инструмента. Но другая половина применяет и различные Java-инструменты: Eclipse (39%), Sun NetBeans (14%), Oracle JDeveloper (14%), IBM WebSphere Application Developer (15%), IBM Rapid Appication Developer (9%).

Microsoft: перспективы для разработчиков

В начале июня 2008 г. в Орландо (шт. Флорида, США) прошла ежегодная конференция TechEd North America 2008 Developers. Ключевую речь на ней произнес председатель Microsoft Билл Гейтс, за выступлениями которого в последние месяцы наблюдатели следят особенно внимательно: ведь еще два года назад было объявлено, что с 1 июля 2008 г. основатель и бессменный руководитель корпорации перестанет быть ее сотрудником full time (т. е. занятым полный рабочий день) и передаст существенную часть своих функций коллегам по руководству. Правда, как это будет выглядеть на практике, пока не очень понятно... Так или иначе, но эксперты внимательно прислушиваются к стратегическим прогнозам лидера корпорации, пытаясь спрогнозировать модель деятельности «Microsoft без Гейтса».

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

Говоря о стратегии развития инструментов разработки Microsoft, Билл Гейтс отметил, что два ключевых компонента этих средств — Visual Studio и .NET Framework — пополнились за последний год набором Expression Studio. Появление данного пакета для дизайнеров отражает очень важную тенденцию развития софтверной индустрии: несмотря на стремительное развитие «бэк-офисных» технологий, нельзя забывать, что программные продукты предназначены для решения задач людей и что эффективная работа пользователей была и остается главной целью программистов.

В плане общей характеристики комплекса программистских инструментов Microsoft было сказано, что он развивается в направлении решения более сложных задач, таких, как создание «повелительного» (compelling) пользовательского интерфейса, разработка приложений на базе модели data driven (управление логикой обработки со стороны данных), а также управление большими распределенными проектами. Билл Гейтс обратил внимание слушателей на такие ведущие тенденции в современном программировании, как широкое использование моделирования, применение естественных языков и распределенные вычисления в Интернете (cloud computing).

Разумеется, на конференции был сделан и целый ряд важных для разработчиков конкретных объявлений. Так, было сказано, что вторая бета-версия Internet Explorer 8 будет доступна на 20 языках уже в нынешнем августе, а Silverlight 2 бета-2 для Web-разработчиков появится уже через неделю после конференции, причем она будет представлена в виде лицензии Go Live (пригодной для коммерческой разработки). В июле же выйдут предварительные версии Expression Blend 2.5 June 2008 Preview и Microsoft Silverlight Tools beta 2 for Visual Studio 2008. Кроме того, в Орландо были представлены новые расширения Visual Studio 2008 для Windows SharePoint Services 3.0 v1.2.

Microsoft ведет разработку новой программной среды Microsoft Sync Framework (MSF) для совместной работы приложений, сервисов и устройств. Сейчас она представлена предварительной версией (community technology preview), с которой уже смог познакомиться ряд ведущих партнеров корпорации. Окончательный вариант MSF с поддержкой открытого протокола FeedSync будет выпущен в III квартале этого года. В будущем эта среда пополнится вариантом для Windows Mobile.

Из перспективных направлений на конференции обсуждались вопросы будущей SOA-платформы Microsoft под кодовым названием Oslo, объявленной впервые осенью прошлого года. Ее контуры были пока обозначены лишь в общих чертах: было сказано, что она должна объединить будущие версии Visual Studio, Microsoft System Center, BizTalk Server и Microsoft SQL Server и будет включать средства визуального моделирования и композиции ПО. Ее репозиторий метаданных будет реализован на базе SQL Server 2008, и в ней будут широко применяться открытые декларативные языки для обеспечения интероперабельности системы в целом.

Из принципиальных новостей можно отметить объявленный в Орландо план нового проекта с кодовым именем Velocity, нацеленного на создание платформы высокопроизводительного исполнения распределенных приложений в режиме кэширования оперативной памяти (in-memory cache). Конкретные технологические аспекты проекта и графики его реализации пока не раскрывались.

Кроме того, подавляющее большинство разработчиков используют модули расширения (plug-ins) для базовых IDE: только 6% обходятся без таких компонентов, 31% применяют один-два компонента, 39% — от трех до пяти, остальные — более шести.

Если говорить о популярности инструментов в разрезе различных платформ, тут складывается принципиально разная картина. В стане .NET безусловно доминирует Visual Studio (97%). Среди Java-разработчиков предпочтения распределились следующим образом: Eclipse (57%), Sun (13%), IBM (12%), CodeGear (5%), JetBrains (4%), Oracle (3%), Microsoft (2%), другие (5%).

Понятно, что ключевую роль при выборе инструмента играет платформа приложений. Однако очень интересно посмотреть, как различаются критерии оценки в лагерях сторонников двух основных платформ — .NET и Java (рис. 4). При этом все разработчики сходятся во мнении, что главное достоинство IDE — удобство работы в этой среде (66%) и техническая поддержка со стороны поставщика (62%).

Исследование Forrester показало, что наиболее распространенная целевая задача разработки — это создание Web-сервисов (58%). Собственно разработка традиционных приложений занимает 55% (Java) и 54% (.NET). Еще 32% приходится на создание современных Интернет-приложений с насыщенным функционалом (Ajax, Flash, Flex и т. д.), 19% — на решение вычислительных задач, 13% — на мобильные приложения. Только в 9% случаев использование IDE связано с производством коммерческих продуктов. Любопытно и то, что все чаще (в 8% случаев) сами IDE (в основном Eclipse Rich Client Platform) примеряются в качестве основы для пользовательских приложений.