ИССЛЕДОВАНИЯ
В последние годы мы можем наблюдать драматические события на рынке средств разработки, которые определяются двумя главными тенденциями. Первая - разделение платформенных технологий на два лагеря: Microsoft .NET и Java/ Open Source. При этом каждый из них использует собственную бизнес-модель работы на рынке: в первом случае речь идет фактически о монопродукте Visual Studio, а во втором - имеется достаточно широкий спектр инструментов, конкурирующих в том числе и друг с другом. Конечно, для борьбы с "внешним врагом" Java-средства неминуемо должны както объединяться, что и демонстрируют проекты Eclipse и NetBeans. Однако такая интеграция идет на пользу прежде всего поставщикам платформенного ПО, а тем, кто специализируется именно на инструментах, приходится очень непросто (это видно на примере Borland - см. PC Week/RE, N 5/2006, c. 1).
Вторая тенденция - рассмотрение процесса собственно разработки ПО как одного из этапов управления жизненным циклом приложений (Application Lifecycle Management, ALM). Если ранее понятие "инструмент" почти полностью ассоциировалось с интегрированной средой разработки (Integrated Development Environment, IDE), включающей редактор кода, компилятор, компоновщик и отладчик, то теперь мы чаще говорим об инструментальной системе, в состав которой входят средства поддержки групповой работы, управления требованиями, тестирования и т. д.
И тем не менее IDE по-прежнему является ключевым инструментом, поскольку именно на него приходится основной объем работы по созданию ПО, а самое главное - именно вокруг него чаще всего строится вся ALM-система. Но какие же IDE пользуются популярностью на рынке, в чем сильные и слабые стороны представленных на нем продуктов?
Мнение Evans Data
Поиску ответов на эти вопросы было посвящено исследование "Enterprise and SMB Development Surveys 2005 Fall", проведенное в США аналитической компанией Evans Data (www.
evansdata.com) в конце 2005 г. В его рамках с просьбой оценить возможности десяти наиболее часто используемых IDE организаторы обратились к почти восьмистам профессиональным разработчикам. Первый вопрос касался популярности разных сред разработки: респондентам требовалось перечислить используемые ими инструменты; при этом можно было назвать несколько продуктов (в среднем каждый назвал два инструмента, точнее 1,98, см. табл. 1). То, что Visual Studio занял первое место в данном списке, (вполне ожидаемый результат, но при этом стоит отметить, что по сумме представители .NET (два продукта, 29,2%) уступают лагерю Java (семь инструментов, 36,9%) даже без учета группы "Прочие", где .NET скорее всего не присутствует.
Таблица 1. Наиболее часто используемые IDE
Далее были отобраны девять средств (в исследовании NetBeans объединен с Sun Java Studio), которые затем анализировались по 13 ключевым функциям, имеющимся во всех основных IDE. Для каждого пункта участники давали оценки - "отлично", "очень хорошо", "достаточно", "требует улучшения", "нет ответа", которые потом обрабатывались и приводились к обобщенным числовым значениям в виде математической значимости опытных данных. Вот что получилось в результате.
1. Транслятор (компилятор и/или интерпретатор)
Лидеры: Borland JBuilder - 228, Microsoft VS .NET - 215, Eclipse - 211
Это, безусловно, главный компонент IDE, ради которого и создается собственно инструмент. Borland тут подтвердила свое историческое лидерство в области средств разработки, хотя ее соперники отстали совсем ненамного. На последнем месте оказался Oracle Developer Suite (165), однако за последнее время Oracle заметно повысила внимание к своим средствам разработки (в том числе купив несколько компаний, занимающихся созданием инструментов), так что ситуация может вскоре измениться.
2. Отладчик
Лидеры: Borland JBuilder - 207, Microsoft VS .NET - 202, IBM WebSphere Studio - 189
Отладчик уже давно стал обязательным атрибутом интегрированных сред разработки. Обычно его возможности ограничиваются анализом исполнения программ на уровне исходного кода. Группа лидеров тут примерно та же (учитывая, что IBM является родоначальником проекта Eclipse), на последнем месте - Macromedia Studio MX (122).
3. Редактор
Лидеры: Macromedia Studio MX - 216, Microsoft VS .NET - 210, Eclipse - 194
Редактор играет главную роль в повышении производительности труда разработчика, именно в его среде программист проводит основное время в процессе написания приложений. Интеллектуальные функции редактора позволяют реализовать в нем средства помощи и отладчика. Macromedia исторически делала акцент на Web-разработку и поэтому особое внимание уделяла изначально именно качеству редактора. А вот Oracle опять оказалась в конце списка со 150 баллами.
4. Создание исполняемого модуля
Лидеры: IBM Rational Developer - 202, Borland JBuilder - 199, Sun Java Studio - 191
Эта функция включает две операции - компиляцию исходного кода и компоновку (подключение всех дополнительных программных компонентов) исполняемого модуля. Очевидно, лидерство Rational объясняется как раз тем, что эта компания в свое время ориентировалась на возможность использования библиотек функций от самого широкого круга поставщиков. А последнее место Macromedia (145), наверное, отражает то, что компоновка была совсем не самым главным этапом в создании HTML-проектов.
5. Справка/документация
Лидеры: Macromedia Studio MX - 180, BEA WebLogic Workshop - 172, IBM Rational Developer -171
Лидерство Macromedia отражает тот факт, что справочная система играет особую роль в Web-разработке - в этой области развитие языка и средств программирования происходит очень быстро, а занимаются этим зачастую люди, не имеющие большого опыта.
6. Профайлер/оптимизатор
Лидеры: Borland JBuilder - 183, IBM Rational Developer - 173, Sun Java Studio - 161
Эти средства нужны для определения "узких" мест в программном коде с точки зрения его производительности. Раньше они применялись в виде автономных инструментов довольно узким кругом профессиональных разработчиков, но сейчас все чаще включаются в состав IDE. Лидерство Borland, IBM/ Rational и Sun показывает, что их средства ориентированы на верхний уровень профессионалов. И соответственно неудивительно, что замыкают список самые массовые инструменты - Visual Studio (101) и Eclipse (63).
7. Средства моделирования и проектирования
Лидеры: IBM Rational Developer - 187, Macromedia Studio MX - 178, Sun Java Studio - 169
Здесь ситуация примерно такая же, как и с профайлером. Долгие годы Rational являлась явным лидером в области применения UML (который и придумали ее сотрудники) для разработки приложений. Визуальное проектирование изначально широко использовалось и в Web-дизайне. Опять же последние места Visual Studio (82) и Eclipse (55) объясняются тем, что на массовом уровне данные средства пока слабо востребованы. Но ситуация тут очень быстро меняется, и если взять последние версии этих пакетов, то они уже будут гораздо ближе к лидерам.
8. Примеры приложений
Лидеры: IBM Rational Develo-per - 168, Sun Java Studio - 158, Borland JBuilder - 155
Наверное, такие примеры следовало бы отнести к разделу документации, но нужно иметь в виду, что они зачастую применяются не только для изучения приемов программирования, но и в качестве повторно используемых готовых модулей.
9. Библиотеки и наборы функций
Лидеры: Microsoft VS .NET - 192, IBM Rational Developer - 189, IBM WebSphere Studio - 177
Ключевой элемент современной разработки ПО - наличие набора базовых готовых компонентов, из которых создается приложение. То, что сегодня входит в понятие Framework и пока не имеет устоявшегося названия на русском языке. Приоритет тут заслуженно имеет Microsoft: именно она в свое время предложила знаменитый набор Microsoft Foundation Classes (MFC), который послужил в какой-то мере прообразом сегодняшнего .NET Framework.
10. Производительность компилятора
Лидеры: Borland JBuilder - 196, Microsoft VS .NET - 184, IBM Rational Developer - 182
Скорость компиляции очень важна, так как при отладке больших приложений в интерактивном режиме каждый раз происходит трансляция исходного кода в исполняемый вид. Тут эффект достигается двумя основными способами. Первый - это перекомпиляция только тех программных модулей, которые корректировались с момента предыдущего запуска (но при широком внедрении методов интерпретации в современных IDE выделить такие модули не очень-то просто!). Второй - это использование разных уровней оптимизации результирующего кода (в режиме отладки - минимальная оптимизация, но быстрая компиляция; в режиме создания окончательного варианта приложения - высший уровень оптимизации, но с большими временными затратами).
11. Производительность результирующего приложения
Лидеры: Borland JBuilder - 195, Sun Java Studio - 187, Microsoft VS .NET - 186
Как нетрудно понять, эта характеристика непосредственно связана с возможностями компилятора, хотя очень большое значение играет также скорость исполнения подключаемых компонентов.
Обычно оптимизационные функции компилятора нацелены на повышение производительности исполняемого кода приложения за счет удаления из него различных конструкций, необходимых для отладки или контроля за допустимостью значений переменных программы. Реже (это гораздо сложнее!) производится выбор оптимальных алгоритмов.
12. Простота использования
Лидеры: Macromedia Studio MX-195, Microsoft VS .NET - 187, Borland JBuilder - 171
Интегрированные средства разработки уже давно превратились в многокомпонентные системы с весьма сложным пользовательским интерфейсом. Управление собственно средой такого инструмента, применение различного рода настроек, автоматизация часто используемых операций - это отдельное направление развития IDE. Лидерство Macromedia и Microsoft тут вполне понятно, так как эти компании акцентируют внимание на привлечение новых пользователей своих средств.
13. Возможность подключения средств третьих фирм
Лидеры: Eclipse - 204, IBM Rational Developer-184, Microsoft VS .NET - 146
Актуальность этого пункта для современных разработчиков не нуждается в особых пояснениях. Первая позиция Eclipse объясняется довольно легко - эта среда изначально создавалась с учетом будущих расширений. Microsoft также уделяет большое внимание расширению функций Visual Studio, но это можно делать только по "микрософтовским" правилам, чем, вероятно, и объясняется его большое отставание от лидера. Последнее место Oracle Developer Suite отражает тот факт, что этот инструмент строился как самодостаточное средство.
Интегральная оценка качества средств разработки, полученная в результате проведенного исследования, приведена на рисунке. Лидерами стали IBM Rational Developer - 256, Borland JBuilder - 249, Sun Java Studio - 236. То, что на первых двух местах оказались Rational и Borland, объясняется довольно просто. Ведь только они (среди других участников) специализировались именно на средствах разработки.
Общая оценка качества интегрированных средств разработки ПО
Rational всегда ориентировалась на создание сложных программных проектов корпоративного уровня (чем и была привлекательна для IBM). Продукт Rational Application Developer победил в трех номинациях - "средства моделирования и проектирования", "примеры приложений" и "создание исполняемого модуля".
В свою очередь, Borland всегда фокусировалась на выпуске высокопроизводительных компиляторов, а потому пять первых мест JBuilder как раз в этих позициях являются совсем не случайными. Правда, Borland намерена продать на сторону свой IDE-бизнес, и это свидетельствует о том, что высокие качества продукта еще не гарантируют его рыночный успех. Кстати, возможно, корпорации Oracle было бы неплохо прикупить данные технологии Borland, так как ее Developer Suite IDE получила не очень лестные оценки от ее же собственных пользователей.
В дополнение мне хотелось бы представить еще один вариант интерпретации результатов исследования Evans Data. В табл. 2 все тринадцать оцениваемых функций ранжированы по среднеарифметическому показателю первого и последнего места. В какой-то степени именно эта характеристика (еще лучше - с учетом разброса величин) отражает внимание, которое уделяется производителями IDE той или иной функции инструмента, а как следствие - и уровень востребованности этих средств со стороны пользователей.
Таблица 2. Рейтинг функций IDE с учетом оценок респондентов
В заключение отметим, что любые опросы пользователей и формируемые на их основе рейтинги имеют весьма условное значение и, скорее, в большей степени дают пищу для размышлений как создателям инструментов, так и их пользователям. Впрочем, для разработчиков ПО решающим моментом является выбор базовой платформы (например, .NET или Java), а уже потом - того или иного инструмента. Правда, для .NET выбора уже и не остается. Однако и Java вместе с проектом Eclipse, похоже, движется в том же направлении.