SECR-2010: Отчет Белобородова Дмитрия
Содержание
- 1 Регистрация и организация
- 2 Очень хорошие доклады
- 2.1 Введение в C++0x
- 2.2 Автоматическая генерация базовых тестов для программных интерфейсов библиотек на основе заголовочных файлов
- 2.3 Уменьшение влияния человеческого фактора при разработке бизнес-приложений
- 2.4 Agile Learning: Эффективные инструменты
- 2.5 Опыт разработки в Яндексе: особенности процесса и ключевые технологии
- 3 Хорошие доклады
- 4 Любопытные доклады
- 4.1 Конфигурационно-ориентированное программирование
- 4.2 Семантические интерфейсы языков программирования
- 4.3 Сравнение двух моделей предсказания успеха в проектах по разработке программного обеспечения
- 4.4 Проблемы и направления развития инструментария RAD
- 4.5 Основные сложности agile проекта с фиксированной ценой для корпоративного заказчика
- 5 Бесполезные доклады
- 6 Общие выводы
Регистрация и организация
Конференция проходила там же, где и в предыдущие годы (ГУ-ВШЭ). Из основных дней конференции посетил 2 (первый и третий).
Сначала о плохом:
- в первый день были накладки с регистрацией: не были готовы наборы с раздаточными материалами, начало регистрации задержалось на 40 минут;
- очередной раз среди рекламного мусора из раздаточных материалов не обнаружилось блокнота (предполагая это, чистый блокнот был предусмотрительно взят с собой из дома);
- еще одной необходимой вещью материалов является электронная копия всех докладов. Увы, на приложенном CD оказался только 2-мегабайтный файл каталога конференции;
- организация докладов и семинаров была далека от идеала, мягко говоря. Яркой иллюстрацией этого служит отзыв об организации семинара Бьярна Страуструпа (приехавшего в первый раз в Россию и, вероятно, в последний). Отзыв доступен в разделе блогов Яндекса, в строке поиска набрать «Страуструп tekama», перейти по первой ссылке (рекомендуемый возраст читающих — 18+ :);
- между докладами не было минимальных перерывов, поэтому была велика опасность не успеть перейти из зала в зал.
К счастью, в остальном все оказалось относительно неплохо (почти всегда выбрать доклад было из чего, с питанием проблем не возникло и т.д.).
Далее приведены личные впечатления от прослушанных докладов, упорядоченные от очень хороших и интересных до плохих. Старался слушать доклады, максимально связанные с процессом разработки (технические или, если таковых не оказывалось, хотя бы методологические).
Очень хорошие доклады
Введение в C++0x
- Докладчик
- Бьярн Страуструп
- Компания
- Texas A&M University
Докладчик Бьярн Страуструп является автором языка C++ (на основе которого были созданы C# и Java, соответственно, Андерсом Хейлсбергом и Джеймсом Гослингом). Как раз во время проведения конференции (14 октября) исполнилось 25 лет С++. На приведенном фото слева — Страуструп тогда (точнее, это фотография с задней стороны обложки его главной книги Язык программирования С++), на фото справа — сейчас.
Доклад был посвящен новой версии стандарта C++0x языка C++, которая вскоре будет принята. Принятие C++0x позволит
- сократить отставание по языковым возможностям от C# и Java;
- улучшить язык для системного программирования и построения библиотек;
- сделать язык более легким для обучения.
Удалось найти в Интернете презентации Страуструпа для семинара, который проходил на SECR-2010 13 октября. Первая презентация называется «APT tutorial», вторая — «Frequent Mistakes». Слайды, рассказывающие о C++0x, содержатся в 3-й части «APT tutorial» («Part 3 C++0x»).
После краткого вступления (цели нового стандарта, состав комитета) вся остальная часть доклада была отведена описанию новшеств с хорошо подобранными мини-примерами кода, их иллюстрирующими.
Новшеств очень много (от синтаксического сахара до действительно серьезных):
- исключение пробела между двойными угловыми скобками при определении шаблона (template) в шаблоне;
- автоопределение типа по инициализации (ключевое слово auto);
- упрощенное итерирование по списку элементов (т.н. foreach);
- списки инициализации для сложных типов;
- новые контейнеры в стандартной библиотеке (STL): unordered_map, forward_list, array и т.д.;
- поддержка многопоточности средствами языка (std::thread, std::future, std::mutex);
- лямбда-функции и замыкания;
- и т.п.
Стандарт планируется принять к марту 2011 года. Больше всех старается ускорить принятие фирма Microsoft.
При ответах на вопросы сказал, что
- книга Язык программирования С++ будет переписана на 80% (уже начал переписывать);
- планируется, что при упрощении синтаксиса более сложные и неудобные конструкции через некоторое время станут редко используемыми;
- поддерживающие стандарт продукты, скорее всего, появятся значительно раньше его принятия.
После доклада (он был последним на конференции) была устроена автограф-сессия. Устроители подсуетились и организовали продажу книги Страуструпа Программирование: принципы и практика использования C++. Однако
- в предисловии книги говорится, что она рекомендуется ДО книги Язык программирования С++ (т.е. полезна для совсем начинающих);
- несмотря на то, что, сейчас 2010 год, книга выпущена в 2011 году (держал книгу в руках в магазине, сам видел).
Отличный доклад, полностью оправдал ожидания.
P.S. Доклад на подобную тему на ADD-2010 недавно делала Елена Сагалаева (Алена C++), см. ее рассказ и саму презентацию.
Автоматическая генерация базовых тестов для программных интерфейсов библиотек на основе заголовочных файлов
- Докладчик
- Владимир Рубанов
- Компания
- ИСП РАН
Автор доклада Владимир Рубанов (ударение в фамилии на первый слог) является коллегой нашего Стаса Фомина (параллельно с работой в CustIS трудящегося и читающего лекции в Институте системного программирования РАН).
Рассказал о пакете API Sanity Autotest, который может быть использован для автоматизации генерации и написания unit-тестов (для C/C++, тесты генерируются по сигнатурам процедур и функций, содержащихся в заголовочных файлах, т.е. в .h-файлах).
Пакет использован на тестировании библиотек
Инициатором работ, приведших к написанию продукта, была Nokia, обратившаяся к РАН с просьбой протестировать десятки тысяч процедур и функций библиотеки Qt (в ходе тестирования ошибки нашли и Qt Software/Nokia их даже исправила). Возможно (как утверждает Владимир) портирование пакета на C# и Java.
Кстати, список, например, этих проектов, выполняемых в ИСП РАН, весьма интригующ.
Безусловно, доклад понравился, можно скачать и попытаться поэкспериментировать с пакетом.
Уменьшение влияния человеческого фактора при разработке бизнес-приложений
- Докладчик
- Алексей Алексеев, Николай Гребнев
- Компания
- CUSTIS
Присутствовал на докладе коллег из отделе технологического развития о разработанном инструментарии, позволяющем использовать декларативные проверки уровня доменной модели. Требуемые методы классов аннотируются правилами, задающими допустимые состояния для выполнения конкретных методов. Реализовано в виде плагина к Microsoft Visual Studio (существует только в виде плагина или не только, точно не понял). Соответственно, язык программирования — C#.
Ключевые слова доклада: Model Checking, структура Крипке, CTL.
Рассказывали хорошо, сменяя друг друга и иллюстрируя все презентацией. На вопросы отвечали уверенно. Сидевший на первом ряду Стас Фомин помогал отвечать, пространно развивая темы вопросов.
Познавательно, интересно, не пожалел, что пошел на доклад.
Agile Learning: Эффективные инструменты
- Докладчик
- Стас Фомин
- Компания
- CUSTIS
Стас, как обычно, был очень хорош! Еще до посещения доклада посмотрел анонс. Стас представил новый формат презентации:
- презентация была в виде mind map, ветви которого были направлены вертикально вниз, по ходу рассказа докладчик прокручивал видимую область вертикально (после расспросов Стаса выяснилось, что был использован Freeplane, форк FreeMind);
- Стас рассказывал стоя, держа ноутбук на весу и управляя мышкой-пером;
- предложил слушателям пройти квест (увы, идея не удалась из-за отвратительного качества связи по WiFi).
Доклад был живой, большинству присутствовавших явно понравился, в зале было много людей (несмотря на то, что Стасу пришлось конкурировать за внимание слушателей с уже начавшимся обедом). После окончания времени доклада многие остались продолжать слушать Стаса в зале.
Несколько небольших замечаний, которые могли бы еще усилить эффект от доклада (надеюсь, Стас не обидится):
- после истечения времени доклада стоило сказать что-то вроде «основное время доклада закончено, желающие могут остаться в зале» (оказался размытым конец доклада);
- начиная показывать что-то (девушка из зала просила показать редактирование статей в MediaWiki), не стоило перескакивать на другую тему (девушка не дождалась продолжения показа и покинула зал);
- упомянув про возможность создания презентаций в MediaWiki, на основе S5, надо было показать процесс (действительно, очень удобно и просто пользоваться);
- постараться употреблять только цензурные выражения во время доклада:
- режет слух;
- в зале женщины
и дети; - плохо влияет на карму докладчика.
Форма доклада очень интересная, энергия докладчика передается слушателям (воплощаясь в желание начать использовать представленные инструменты).
Опыт разработки в Яндексе: особенности процесса и ключевые технологии
- Докладчик
- Илья Сегалович
- Компания
- Yandex
Глава (точнее, «директор компании по технологиям и разработке») Яндекса рассказал про свою компанию:
- организационную структуру;
- имеющиеся регламенты;
- используемые инструменты (Jira, Git, SVN и т.д.)
- языки программирования, применяющиеся при разработке продуктов (C++, Java, Python, Perl);
- операционные системы (FreeBSD, Linux);
- интересные ссылки:
- примеры перспективных технологий:
Слегка поверхностный доклад (Илья Сегалович успел закончить рассказ задолго до окончания отведенного времени), но очень живой и позитивный.
Собственно, доклад преследовал 2 цели:
- создание положительного мнения о компании у разработчиков (в т.ч. потенциальных работников);
- привлечение внимания к продуктам и сервисам, предоставляемым Яндексом.
Уверенно ответил на множество заданных вопросов.
Интересно было посмотреть и послушать представителя руководства крупнейшей поисковой российской системы.
Хорошие доклады
Программирование, ориентированное на качество
- Докладчик
- Андрей Уразов
- Компания
- Parasoft
Прелюдией основной части доклада было перечисление ошибок, возникающих при разработке ПО, и методов обнаружения этих ошибок:
- статический анализ;
- динамический анализ;
- модульные и функциональные тесты;
- обзор кода (code review).
Способом решения для языка Java предлагался продукт Parasoft Jtest, выполняющий
- статический анализ кода;
- автоматизацию процесса code review;
- упрощение создания unit-тестов (заявлена поддержка JUnit и Jakarta Cactus;
- обнаружение ошибок времени исполнения (утечки памяти и ресурсов и т.д.)
Наглядно было продемонстрировано (виды экрана на слайдах)
- обнаружение NillPointerException в коде Apache Ant;
- поиск неоптимального кода в FindBugs (популярное приложение статического анализа кода Java).
Jtest является флагманским продуктом, но есть аналогичные решения для .NET (Parasoft .TEST) и C/C++ (Parasoft C++test)
Правда, докладчик слегка перегнул палку со статическим анализом, присутствуя на докладе Ильи Сегаловича (CEO Яндекса) и задав ему соответсвующий вопрос (используют ли они статический анализ и насколько широко). Сегалович, естественно, не дал ему точный ответ.
Доклад понравился, продукт заинтересовал.
«Mind the Gap» – что делать с растущими ожиданиями клиента
- Докладчик
- Олег Ридченко
- Компания
- Intetics Co.
В начале доклада была приведена простая формула, вокруг которой и был построен весь последующий доклад:
Expectation Gap (E-gap) = Experiance - Expectations Расхождение ожиданий = Ценность - Ожидания
Под ценностью понимается услуга, предоставляемая клиенту (или написанная для клиента программа, которая дорабатывается и сопровождается). Ожидания — то, что клиент ожидает получить. Расхождение ожиданий — отличие между полученным и ожидаемым: > 0 — хорошо (получили больше, чнм ожидали), < 0 — плохо (получили меньше).
График я воспроизвел самостоятельно. Когда значение E-gap опускается ниже оси абсцисс (т.е. становится < 0), с клиентом начинаются проблемы.
Оставшееся время докладчик рассказывал, как можно повлиять на увеличение ценности. На тот факт, что на ожидания тоже можно (нужно) влиять (снижая их), справедливо указал один из зрителей.
Полезный доклад для того, чтобы более осмысленно общаться с клиентами.
P.S. Фразой «mind the gap» в метро (первоначально в лондонском) пассажиров предупреждают об опасности промежутка между вагоном и платформой.
Любопытные доклады
Конфигурационно-ориентированное программирование
- Докладчик
- Радован Вречка
- Компания
- DandiWay
Поведал о «дальнейшем развитии ООП» (по мнению докладчика) — конфигурационно-ориентированном программировании (КОП).
Насколько я понял (поискав в Интернете и ничего не найдя), термин придуман словацкой компанией DandiWay. Вместо ООП-класса, содержащего данные и код, используется КОП-модуль (дополнительно к данным и коду добавляется некая конфигурация). Вместо экземпляра класса на основе конфигурации создается (инстанцируется) экземпляра КОП-модуля. Якобы существенно уменьшается количество кода при разработке, позволяя дополнительно гибко комбинировать модули.
Продукт представляет из себя библиотеку (фреймворк) на Java, называющуюся Box Framework, для построения веб-приложений.
Доклад любопытный, однако представленный продукт явно не мейнстрим (и вряд ли им будет).
Семантические интерфейсы языков программирования
- Докладчик
- Евгений Зуев
- Компания
- Интерстрон
В начале рассказа было уточнено, что более точная тема — «Семантические интерфейсы языков программирования C++». Фирма Интерстрон занимается написанием компиляторов для специализированной аппаратуры.
В процессе компиляции по коду программы создается семантическое представление (строится синтаксическое дерево абстрактное синтаксическое дерево), описал процесс. Рассказал также про архитектурные отличия их проекта (SemantiС++) от программ-конкурентов.
Честно говоря, про компиляторы знаниями никакими не обладаю, приходит на ум только книга Dragon Book (она же, как оказалось, Green Dragon Book). Есть еще Red Dragon Book и Purple Dragon Book.
Познавательно, но писать компиляторы, увы, вряд ли придется.
Сравнение двух моделей предсказания успеха в проектах по разработке программного обеспечения
- Докладчик
- Андрей Магляс
- Компания
- Лаппеенрантский Университет Технологий
На доклад попал случайно. Торопился на другой первый доклад третьего дня, но доклад перенесли на более позднее время (увы, для девушки-докладчицы, параллельно с докладом Страуструпа).
Группа товарищей из Лаппеенрантского Университета Технологий (в т.ч. докладчик) сравнивали 2 модели предсказания успеха в проектах при разработке ПО:
- Standish Group Model
- McConnell Model
Было взято большое количество проектов разного размера. Более точной оказалась McConnell Model.
В проектах использовались разные методологии (по степени убывания частоты встречаемости):
- итеративная;
- хаотическая (т.е. без какой-либо системы);
- Agile.
Что интересно, не выявлено существенной связи используемой методологии и вероятности успеха (sic!).
Результаты исследования, рассказанные в докладе, занятные.
Проблемы и направления развития инструментария RAD
- Докладчик
- Всеволод Леонов
- Компания
- Embarcadero
Краткий экскурс в историю, чтобы стало понятно, чем примечательна фирма Embarcadero. В конце 80-х и в 90-х годах прошлого века средства разработки от фирмы Borland имели достаточно высокую популярность (в нашей стране — даже очень высокую):
- Turbo Pascal → Borland Pascal → Delphi (линейка Pascal/Object Pascal);
- Turbo C → Turbo C++ → Borland C++ → Borland C++ Builder (C/C++);
- JBuilder (Java) был значительно менее популярен, но все же известен.
В определенный момент компания являлась инновационным лидером в некоторых областях (например, Borland C++ превосходил Microsoft Visual C++), однако это продолжалось не слишком долго. В результате недальновидной политики компания превратилась в аутсайдера в области средств разработки, RAD-продукты потеряли популярность. На 2 года компания Borland меняла название на Inprise (c 1998 по 2000 гг.). В 2006 году направление интегрированных средств разработки (IDE) было выделено в самостоятельное подразделение CodeGear. В 2008 году компания Embarcadero Technologies купила Codegear у Borland (Borland переключилась на область управления жизненным циклом приложений). Embarcadero последние 2 года активно выпускает новые версии продуктов, но их время, увы, ушло. В последнюю версию RAD Studio XE входят:
- Delphi (Object Pascal)
- С++ Builder (C/C++)
- Delphi Prism (C#)
- RadPHP (PHP)
Лояльно отношусь к продуктам Borland, т.к. приходилось совсем немного пользоваться Turbo Pascal (в учебных целях) и много продуктами линейки C/C++. К счастью, так и не пришлось никогда серьезно использовать Delphi, т.к. вовремя появился его аналог для С++ — C++ Builder (та же среда разработки и библиотека классов, но другой язык). Всегда казалось, что использующих Delphi компания сильно подставляет, т.к. в случае исчезновения продукта (или утраты популярности) перевести живые проекты просто не на что (нет популярных средств разработки для Object Pascal), что и подтвердилось.
Докладчик (скорее, евангелист) от Embarcadero порекламировал свежий RAD-продукт компании RAD Studio XE, рассказав, что в него входит (см. выше). Предполагаю, что пока компания будет держаться за свою священную корову Delphi, отодвигая на второй план востребованное рынком (C++, C#, Java), ей ничего не светит. Тем более, на вопрос из зала нынешнего работника фирмы Borland, появятся ли снова бесплатные урезанные версии продуктов (как версии Express у Microsoft), был дан отрицательный ответ.
Вывод: люди не учатся на своих ошибках, предлагая слабовостребованные рынком инструменты разработки.
P.S. Несмотря на сегодняшнюю непопулярность продуктов Borland/Codegear/Embarcadero (ничтожную популярность) они, как ни странно используются в популярных продуктах:
- FAR Manager — популярный файловый менеджер, используется (по крайней мере, в ранних версиях использовался) Borland С++ (не C++ Builder);
- Total Commander — популярный файловый менеджер, написан на Delphi;
- Skype — голосовая связь через Интернет (VoIP), клиент для Windows, как ни странно, написан на Delphi (что его характеризует не с лучшей стороны :).
Основные сложности agile проекта с фиксированной ценой для корпоративного заказчика
- Докладчик
- Сергей Андржеевский
- Компания
- First Line Software
Очень большого интереса доклад не вызвал, т.к. за последнее время на конференциях стало достаточно много подобных докладов. Автор рассказывал о своем (и своей фирмы) опыте разработки проектов с использованием Agile. Чувствую себя слегка объевшимся данной темой.
Полезными показались приведенные ссылки на продукты, ими используемые:
- http://www.planningpoker.com — организация Planning Poker при распределенной разработке;
- http://sprintometer.com — приложение для управления процессом разработки по Scrum и XP.
Доклад без особых откровений, но подробный и добротный.
Бесполезные доклады
Оптимизация процесса разработки программного обеспечения: лучшие методы, практики и техники на сегодняшний день
- Докладчик
- Рик Уивер
- Компания
- IBM
Купившись на название доклада, остался после открытия конференции в основном зале (это был один из первых докладов конференции). Ожидал, что будет рассказано про какие-нибудь оригинальные приемы, техники, практики и, естественно, программные продукты.
Увы, после краткого вступления выступление вылилось в навязчивую рекламу IBM Rational Jazz. Допускаю, что продукт не так и плох.
Доклад лично для меня оказался бесполезен.
Реализация захватом с помощью UML
- Докладчик
- Александр Орлик
- Компания
- Craftware Ltd
Доклад был на английском языке, автор, насколько я понял, является сербом. Рассказывал о преимуществах применения Model Driven Architecture, т.е. в построении абстрактной метамодели и ее преобразовании в существующие технологии программирования (например, на основе ООП-языков).
Процесс построения и преобразования демонстрировался на примере продукта Enterprise Analyst, который разработан фирмой Craftware Ltd (к которой Александр имеет прямое отношение). Т.о. это такая реклама коммерческого продукта.
Скептически отношусь к рассказанному, доклад не очень понравился.
Общие выводы
- Конференция в этом году понравилась больше позапрошлогодней (в прошлом году не смог прийти на конференцию):
- доклады стали чуть разнообразней (хотя были и сильно рекламные, и совсем узкоспециализированные технические, что тоже является излишней крайностью);
- в составе участников стали преобладать разработчики;
- доклады на слегка приевшуюся тему (Agile) были, но их было не так много и они были не так агрессивны;
- Организация конференции стала хуже:
- проблемы при регистрации (задержка, очереди);
- презентаций докладов так и нет до сих пор (не приложили на диске, нет на сайте конференции);
- вопиющий случай — организация семинара Страуструпа.
- Неожиданно высоким оказалось количество и качество вопросов, задаваемых слушателями (много спрашивали и вопросы были интересными).
С интересом прочитал отзывы коллег о конференции (может быть, кто-нибудь еще что-то напишет).
Репликация: База Знаний «Заказных Информ Систем» → «SECR-2010: Отчет Белобородова Дмитрия»
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».