На конференции TechEd 2013 в Новом Орлеане в начале июня Microsoft анонсировала новые крупные версии своей флагманской среды разработки приложений и решения для управления жизненным циклом приложений (ALM), рассказав о предварительных версиях Visual Studio 2013 и Team Foundation Server (TFS) 2013.
Представляя ключевые новшества в функциональности обеих сред, софтверный гигант решил вначале на TechEd поделиться некоторыми сведениями об их технологических деталях, а затем обнародовать предварительные версии вместе с дополнительной информацией на предстоящей конференции разработчиков Build 2013, которая пройдет 26—28 июня в Сан-Франциско.
“В Visual Studio 2013 и в TFS 2013, который выходит вместе с VS 2013, будет очень много новых возможностей, — сообщил eWeek Брайан Харри, технический лидер (technical fellow) Microsoft, продукт-менеджер Team Foundation Server. — Первая предварительная сборка VS 2013 будет доступна на конференции Build. На TechEd мы остановились на ALM-ориентированных функциях. А более платформенно-ориентированные функции, типа разработки приложений для Windows Store, оставлены до Build. Так что рассматривайте анонс на TechEd больше в ракурсе ALM, а представление на Build — в ракурсе конструирования базового ПО”.
По его словам, релиз VS 2013 интегрированной среды разработки Visual Studio сулит значительные перемены в базовой практике кодирования. Например, там будут новшества, влияющие на продуктивность труда разработчика, как и во внедренной в прошлом технологии IntelliSense.
Еще в 1996 г. Microsoft создала технологию IntelliSense, которая фундаментально изменила способ написания кода. Люди избавились от необходимости вводить код, положив возле себя книгу или держа открытым на экране окно справки, сказал Харри. IntelliSense внесла в IDE интерактивные функции, подсказывающие выбранные разработчиком методы, используемый им список параметров, описание каждого параметра. Это что-то вроде справочной системы, встроенной внутрь IDE, которая революционизирует образ труда программиста.
“Теперь появится еще одна функция, которая, по-моему, имеет большие шансы оказать аналогичный эффект, — заявил Харри. — Я рассматриваю ее как нечто вроде игрового HUD-дисплея для вводимого кода. Сегодня у нас это называется Code Information Indicators, но к моменту выпуска продукта название, наверное, изменится. Представьте, что вы смотрите на ваш код и он перекрывается аннотациями, поясняющими, что происходит в этом коде.
Скажем, вы смотрите на метод, и на него может накладываться список тестов для тестирования этого метода, плюс текущее состояние этих тестов — какие из них прошли успешно и какие не удались, причем в случае неудачи — с сообщениями об ошибках. И поскольку в Visual Studio теперь имеется автоматический исполнитель тестов, всякий раз, когда вы компонуете только что написанный код, происходит запуск теста. И, хлоп, прямо в редакторе появляется всплывающее окно с сообщением, что тест метода на данный момент неудачен. Еще у нас есть индикатор ссылок, подсказывающий, что вызывает этот метод. Схожие вещи осуществляются с информацией о контроле версий, и вы получаете сведения о последних изменениях этой информации”.
Microsoft будет поставлять свой продукт с пятью индикаторами. Но система расширяема, и компания сможет встраивать в нее новые индикаторы. Так, имеется индикатор сложности кода, показывающий, какие функции наиболее сложны для понимания.
“Нам кажется, это будет очень полезным делом в смысле информирования программиста о контексте кода, который находится у него перед глазами и который он дорабатывает в соответствии с поставленными задачами, — сообщил Харри eWeek. — Это поможет понимать, что происходит с вашим кодом, будет обращать ваше внимание на существенные вещи — вроде неудачных тестов, и в итоге чрезвычайно повысит производительность вашего труда”.
Между тем одной из реальных проблем при создании ПО, которая трудно поддается отладке, является утечка памяти. Ее очень трудно воспроизвести, так как она возникает в продуктивной среде, а не в ограниченной обстановке среды разработки.
Чтобы помочь в решении этой проблемы, а заодно и продвинуться в реализации принципов DevOps, Microsoft обзавелась новой функцией диагностики памяти, которая позволяет программистам — во многом аналогично функции IntelliTrace, предназначенной для трассировки того, что происходит в запущенном приложении (за исключением сферы использования памяти), — делать снимок содержимого памяти и далее анализировать, каким образом приложение использует память. А сделав два снимка, программист сможет увидеть, что изменилось в промежутке между двумя этими операциями.
Microsoft работает и над тем, чтобы сделать Visual Studio более “подключаемой” IDE. “Мы имеем подключаемую IDE, и хотим еще больше усилить эти возможности Visual Studio, чтобы среда знала, кто вы, каковы ваши предпочтения и обслуживала вас в адаптированной форме”, — сказал Харри.
Так что Visual Studio 2013 теперь вам позволит “входить” в Visual Studio. Среда будет знать, кто вы, и сможет вас подключать к облачному сервису Microsoft, предоставляя дополнительные ресурсы. Помимо доступа к элементам работы, контролю версий, управлению проектом, компоновке, нагрузочному тестированию и всем остальным вещам, которые предлагает Microsoft в своем облачном сервисе, компания начинает в него добавлять и некоторые базовые функции IDE.
“У нас есть новая функция, которую мы называем профиль роуминга, — отметил Харри. — Пользуясь Visual Studio, вы устанавливаете свою цветовую схему, размер шрифта, конфигурируете инструментальные окна, т. е. настраиваете Visual Studio под себя. Подключаемая IDE теперь будет сохранять все ваши настройки и при работе в облаке. Скажем, если вы пересядете за другой ПК, откроете Visual Studio и войдете в среду, она автоматически перенесет все ваши настройки в текущую копию Visual Studio и вы сможете работать в привычном и любимом окружении так, как вам хочется. Мы это называем Connected IDE Experience.”
В прошлом году Microsoft выпустила Visual Studio 2012 и TFS 2012 с фокусом на коллективной работе, с поддержкой Agile (гибкая методология разработки ПО) и управления проектами в духе Agile, общего контроля кода, предварительного тестирования и обратной связи с конечными пользователями. Все это базировалось на модели того, что происходит в течение жизненного цикла создания ПО, и темпы обновления Visual Studio значительно ускорились.
Командам разработчиков теперь надо адаптироваться к этой скорости изменений и сделать так, чтобы их софтверные разработки стали более быстрыми, гибкими и продуктивными в соответствии с меняющимися запросами бизнеса. В Visual Studio 2012 у Microsoft появилось понятие апдейтов. В ноябре того же года компания выпустила VS 2012 Update 1, а в апреле 2013 г. Update 2 и теперь готовится предложить Update 3.
На фронте ALM, заявил Харри, Microsoft продолжает расширять возможности Agile-управления проектами. В VS 2012 компания включила ряд Scrum-ориентированных функций Agile-управления. В продолжение этого в Update 1 и Update 2 появилась поддержка Kanban.
“Теперь на очереди Visual Studio 2013, и важной функцией, которую мы стараемся добавить, является поддержка Agile корпоративного уровня, т. е. мы работаем над расширением Agile на крупное предприятие, чтобы многочисленные Scrum-группы могли действовать совместно и чтобы управление могло учитывать более крупные вещи типа бизнес-инициатив и инвестиций, а группы разработчиков могли поддерживать связь с пользователями и быстро решать конкретные задачи, — рассказал Харри. — Чтобы все это реализовать, нужно протянуть сверху вниз прослеживаемую цепочку от базовых задач бизнеса до работы, которой занимаются непосредственно группы программистов.
Многие из этих возможностей ныне уже предоставляет Project Server, и среди наших клиентов немало организаций используют Project Server как решение по портфельному управлению. Но главная трудность групп, которые пытаются реально внедрить методологии Agile на уровне компании, в том, чтобы найти наилучший способ агрегировать все эти разнообразные Agile-группы с учетом общих задач команды разработчиков всей организации. Это и есть реальное направление наших инвестиций в портфельное управление на основе Agile”.
По мнению Харри, очень важно идти в ногу с переменами в бизнесе, работать расторопно и гибко, осуществлять диагностику в продуктивной среде, нагрузочное тестирование и т. п. Но, конечно, самое главное для быстрого прогресса — это способность компоновать, тестировать и затем выпускать в работу свое ПО.
Зачастую это одна из самых больших проблем, стоящих перед разработчиками. Им приходится дожидаться, пока соответствующее ИТ-подразделение предоставит аппаратуру, а затем работать с ИТ-группой, чтобы понять, какие шаги надо предпринять для развертывания ПО. Это является сферой DevOps. Идея DevOps во многом является откликом на движение Agile, отметил Харри. С появлением методов Agile разработчики стали более расторопными, но на стороне ИТ-служб аналогичных перемен не произошло. Хотя у программистов дела пошли быстрее, операционные группы оказались неспособными усваивать получаемое ПО со скоростью его выпуска. Движение DevOps в целом направлено на то, чтобы понять, как решить проблему такого рассогласования, сказал Харри: “В связи с этим мы объявляем, что достигли договоренности купить у фирмы InCycle Software продукт под названием InRelease, который является инструментом управления релизами для предприятий, предназначенным помочь им в решении вышеупомянутых проблем. Он имеет пакет функций, включая возможность отслеживать все ваши релизы. У любого предприятия есть десятки софтверных проектов, находящихся на различных этапах реализации — разработка, тестирование интеграции, пробная, а затем полноценная эксплуатация, и зачастую имеется много версий одного продукта, находящихся на разных фазах подготовительной работы. Потому понадобилась функция управления портфелем релизов, помогающая контролировать, над какими релизами вы работаете и на каких стадиях находитесь.
Также имеется функция планирования релизов, помогающая находить пути выхода релиза в эксплуатацию — от разработки к тестированию, к пробному и полноценному использованию в бизнесе. Какие действия надо автоматизировать, каковы критерии одобрения работы? Эта функция управляет процессом движения кода через фазы цикла. И наконец, имеется элемент, связанный с автоматизацией и позволяющий находить для развертывания автоматизированные потоки операций”.
InRelease позволяет организациям органично сочетать разработки и операции, что является обычной задачей автоматизации развертывания. “Если этот процесс ручной, вы никогда не справитесь с проблемой рассогласования, — считает Харри. — Этот шаг должен стать одной из наших важных новостей, и он заполнит крупный пробел в вопросах быстрой реализации итерационного жизненного цикла разработок ПО, что нас очень воодушевляет. Со стороны наших клиентов был важный запрос: как ввести ПО в эксплуатацию отлаженным и надежным образом при низких накладных расходах”.
Кроме того, Microsoft много инвестирует в контроль версий, особенно через внедрение системы Git и ее включение в Team Foundation Server. Компания впервые объявила об этом на ALM Summit в начале этого года, сказав, что Git будет присутствовать в Team Foundation Server, а потом выпустила предварительный вариант дополнения к Visual Studio, позволяющего разработчикам использовать Git из Visual Studio.
Microsoft сообщила, что все это войдет в следующий крупный релиз Visual Studio и TFS, и на TechEd Харри должен объявить, что компания действительно это сделала. Клиентская поддержка Git будет встроена в Visual Studio 2013, и хотя в облачном сервисе Microsoft есть Git-сервер, раньше у нее еще не было поддержки Git для внутреннего пользования. “Как часть предварительного релиза это будет представлено на конференции Build. Мы обеспечили поддержку Git в нашем Team Foundation Server для работы внутри организаций”, — рассказал Харри.
Кроме того, “мы сделаем акцент на той степени, с который реально стараемся сделать Git хорошей распределенной системой контроля версий для предприятий. Это была одна из проблем внедрения Git. Однако мы сюда привнесли все функции корпоративного класса, которые ожидаются от сервера Microsoft. Мы реализовали высокую готовность с кластеризацией и отработкой отказов, онлайновое резервное дублирование. В целях лучшего контроля мы также ввели функцию аудита, добавили ряд средств управления правами доступа. В то же время это стопроцентно совместимая Git. Это будет одним из наших ценных вкладов в Git”.
Среди других изменений в контроле версий частичная переработка Team Explorer, в основном включающая ряд улучшений продуктивности. Домашняя страница переделана для большей наглядности. “Если зайти на сайт visualstudio.uservoice.com, где мы принимаем предложения от наших пользователей, и отфильтровать содержимое по рубрике TFS, то первым пунктом будет пожелание “вернуть назад старое окно Pending Changes”, и мы восстановили старое окно Pending Changes”, — отметил Харри.
Далее Microsoft ввела упрощенное комментирование кода, т. е. возможность для разработчиков неформально, в зависимости от ситуации комментировать код своих коллег и вести переговоры о производимых изменениях через веб-интерфейс, доступный из любой платформы. Причем, поскольку используется чистый HTML5, это можно делать через Android-устройство.
Microsoft внесла ряд изменений и в сферу тестирования. В обновлениях Visual Studio 2012 появилась функция управления и запуска контрольных примеров на базе Web. В веб-версии Microsoft Test Manager, “мы продолжили работу над улучшениями, включая возможность связывать планы тестирования с требованиями, — сказал Харри. — В TFS 2013 мы объявим, что этот сценарий принял завершенный вид”.
Тем не менее с релизом 2013 г. должен появиться новый облачный сервис для нагрузочных тестов. Компания имеет продукт для нагрузочного тестирования с 2005 г. По словам Харри, работает он очень неплохо и является частью Visual Studio Ultimate: “Но одним из жестких условий для людей, занимающихся нагрузочным тестированием, является требование настраивать аппаратуру для имитации 100 000 пользователей вашего приложения. Это серьезная трудность. И одним из наших анонсов станет предварительный вариант сервиса нагрузочных тестов на базе Windows Azure, где вы сможете использовать Visual Studio Ultimate для написания нагрузочного теста, указать на этот тест нашему облачному сервису и сказать “Вперед”, а сервис запустит ваш тест. Если вам надо сымитировать 50 000 пользователей вашего приложения, будет сделано и это.
Думаем, это будет особенно привлекательно для приложений Azure, где требуется тестировать большую эластичность … Одна из многих причин, почему люди обращаются к облаку, это возможность легко масштабировать приложения вверх и вниз”.
Начать использовать эту функцию можно будет только после Build, потому что для нее требуется новый клиент. Пользователю придется обзавестись обновленным клиентом Visual Studio, умеющим выполнять нагрузочные тесты через новый сервис, и предварительная версия этого клиента будет представлена на Build.
Одновременно Microsoft дополняет свою базовую технологию разработки новыми функциями групповой работы. Team Foundation Server и Visual Studio изначально предполагали совместную работу. Сейчас Microsoft вводит новую функцию в TFS 2013, которая по сути является центральной функцией группового сотрудничества. Она называется Team Room.
По словам Харри, Team Room будет постоянно записывать, что происходит в группе: “Если вы знакомы с концепцией ленты активности, то это немного на нее похоже. Это будет точный бегущий список, где вы, например, увидите, что Джо зарегистрировался и вот его комментарий. Или компоновка завершилась неудачно и вот причина неудачи. Или Салли потребовался анализ кода, и вы можете кликнуть и запустить просмотр кода. Это бегущая запись всех дел, происходящих в вашей группе. Более того, это активная запись, вы можете углубляться в детали и комментировать их, то есть практически использовать как чат. Вы можете переговариваться с разными членами группы, можете спросить: “Коллеги, я тут пытаюсь понять, как сделать X. Кто-нибудь это знает?”. Это сверхбыстрая интерактивная возможность чата, интегрированная со всеми делами, ведущимися вашей командой. Причем запись сохраняется, вы можете прокручивать Team Room назад и вперед, чтобы знать, что происходит”.
Team Room — это центральное пространство сотрудничества команды разработчиков для взаимных коммуникаций в контексте всех дел, происходящих в команде. Эта функция войдет в предварительную версию TFS 2013, которую Microsoft предоставит разработчикам на конференции Build.