Заявки

Оглавление

  1. 1 Базы данных
    1. 1.1 Миграция с MySQL на MongoDB в высоконагруженном проекте
    2. 1.2 Эволюция данных
    3. 1.3 Key-Value базы данных и их использование
    4. 1.4 NoSQL БД - CouchDB
  2. 2 История проектов
    1. 2.1 Домовята - как же это получилось? История одной социальной игры
    2. 2.2 Старт-ап грабли
  3. 3 Клиентское программирование
    1. 3.1 Обзор современных инструментов веб разработчика
  4. 4 Контроль качества
    1. 4.1 Профилирование приложений на С/С++ в Linux
    2. 4.2 Проектирование и реализация тестов для Selenium Webdriver
  5. 5 Разработка для мобильных платформ
    1. 5.1 Принципы построения GUI для мобильных сенсорных устройств
    2. 5.2 Организация работы с графикой в игре под мобильные устройства
  6. 6 Разработка игр
    1. 6.1 Использование Lua в программах на C/C++
    2. 6.2 Идем в ногу со временем. Использование аппаратного ускорения во Flash Platform
    3. 6.3 Современные тенденции в технологиях разработки игр
  7. 7 Серверное программирование
    1. 7.1 Разработка web-сервисов на С++
    2. 7.2 Высокопроизводительные приложения в средах с GC и JIT: практические советы
    3. 7.3 Amazon AWS - ракета-носитель для молодого проекта
    4. 7.4 Использование неблокирующих веб-серверов в highload проектах
  8. 8 Системное администрирование
    1. 8.1 Использование Puppet для быстрого развертывания серверов
  9. 9 Управление проектами и методологии
    1. 9.1 Практика организации распределенной команды разработчиков
    2. 9.2 Проектирование архитектуры ИС с помощью методики DoDAF (ToGAF)
    3. 9.3 Лучшие практики на практике


Базы данных

Миграция с MySQL на MongoDB в высоконагруженном проекте

Сергеев Антон, FlySoft, web-developer. Более 2х лет занимаюсь созданием API мобильных проектов, около года - высоконагруженного проекта, использующего MongoDB в качестве хранилища данных.

Тезисы:
Я расскажу об успешном опыте перехода от реляционной базы данных MySQL к документо-ориентированной MongoDB при разработке клиентского API высоконагруженного мобильного приложения iFunny. С какими трудностями при использовании MySQL мы столкнулись по мере роста аудитории проекта, как их решали. Что подтолкнуло нас к переходу на MongoDB и ее использованию в качестве основной базы данных. Какие выгоды принесло это решение нам, и какие может принести вам. Особенности NoSQL-хранилища, про которые нужно знать и помнить. Советы по миграции, учитывающие наш опыт.

Доклад ориентирован на широкий круг специалистов: системных архитекторов, разработчиков.

Эволюция данных

Синёв Сергей Алексеевич, Системный архитектор в компании CodeInside, город Пенза.
Профессиональная разработка программного обеспечения с 2000 года. Четыре года работы с системами и СУБД, оперирующие деньгами, где свойства ACID являются основными.
Аудитория: разработчики и архитекторы программных систем

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

Необходимы автоматические средства:
  • для тестирования обновления
  • для выявления изменений схемы данных по исходному коду
  • для атомарного развертывания продукта
Доклад о том, как на примере Java и Groovy приложений на основе Grails, Play и СУБД PostgreSQL создавать требуемые средства и использовать готовые решения из проектов с открытым исходным кодом.

Key-Value базы данных и их использование

Самсонов Михаил, OOO "Кузнеч" (http://kuznech.com), СПБ, более года разработки и использования баз данных типа KV, в разработке высоконагруженных сервисов(вебинары, поиск изображений в интернете). 

Тема доклада: "Key-Value базы данных и их использование."
Краткое содержание: 
  • Общая часть о KV-базах.
  • Использование HBase как хранилища данных.
  • Использование Cassandra. Проблемы и методы их решения.
  • Использование Hypertable. 
  • Использование Apache Thrift.
  • Обзор наиболее известных баз данных формата KV. 
  • реляционные базы данных, и их использование в качестве KV-баз.

NoSQL БД - CouchDB

Владимир Петрухин, фрилансер, г. Пенза
Три основных момента:
  1. Что такое документоориентированная БД и зачем это нужно.
  2. Что такое Map/Reduce и каким боком это связано с обработкой документов. Как делать привычные джоины с помощью Map. Как делать привычные groupBy, max, sum с помощью Reduce и т.д.
  3. Как работать со всем этим хозяйством из Java. Наследование, ассоциации и т.д.
Опыт реального использования есть.

История проектов

Домовята - как же это получилось? История одной социальной игры

Юдин Сергей Юрьевич, Ведущий разработчик в компании BIT.GAMES, город Пенза. 
Профессиональная разработка программного обеспечения с 2002 года. Опыт разработки игр - 2 года.
Аудитория: Разработчики игр и другие заинтересованные лица

Тезисы:
Около 1.5 лет назад наша компания выпустила в свет социальную игру Домовята. Игра стала одним из хитов в русскоязычных социальных сетях и
по сей день занимает место в ТОП-10 на Одноклассниках с месячной игровой аудиторией около 1 млн. человек.
В докладе я хочу рассказать о том, как мы разрабатывали игру, с какими трудностями мы сталкивались на разных этапах работы и как их решали.
Доклад не будет насыщен технической информацией, он ориентирован на широкую аудиторию.
Основные рассматриваемые темы:
  1. Краткая история разработки игры
  2. Ключевые факторы успеха:
    • узнаваемый сеттинг
    • удача
    • сплоченная команда
  3. Некоторые технические детали организации работы серверов
  4. Процесс разработки игры в команде
  5. Работа с аудиторией игры, роль обратной связи между игроками и командой
  6. Активный маркетинг как эффективное средство повышения монетизации игры
  7. Сбор и анализ статистической информации, сложность интерпретации полученной информации

Старт-ап грабли

Закоулов Владимир, FlySoft, Сооснователь
Опыт в сфере, которой посвящен доклад: 10 лет эпизодически успешной предпринимательской деятельности

Тезисы:
В декабре 2011 года FlySoft'у исполнилось 7 лет. Самым ценным капиталом компании мы считаем допущенные нами, признанные и досконально разобранные ошибки. В докладе будут рассказаны истории наших неудач и открытые благодаря им принципы, зная которые можно было обойти соответствующие "грабли".

После доклада начинающие предприниматели будут знать и понимать:
  • что концентрация концентрации рознь;
  • почему опасно иметь даже одного незанятого разработчика;
  • как правильнее относиться и обращаться с деньгами (особенно, когда они появляются раньше времени);
  • почему начинающим продавцам лампочек стоит работать только в тех регионах, где уже есть электричество;
  • почему конкуренция иногда выгоднее монополии...
  • … и другие вещи, которые мы почему-то не встретили в течение этих 7 лет в книгах по менеджменту и бизнес-журналах.
На кого ориентировано выступление: на тех руководит или будет руководить молодой компанией.


Клиентское программирование

Обзор современных инструментов веб разработчика

Копылов Антон, веб разработчик, Веб Ё Студия, г.Пенза.

Аудитория: Веб разработчики

Тезисы:
  • Тенденции в веб разработке
  • Server side. Ruby on Rails 3.2, что нового, преимущества и удобства
  • Верстаем правильно. Haml, Sass, Compass
  • Более лучший javascript. CoffeeScript
  • Client side. Выбираем основу для клиентской части веб приложения: Spinejs

Контроль качества

Профилирование приложений на С/С++ в Linux

Бочкарев Игорь. НИИСП. г. Пенза. Разработка ПО Linux/C++, управление проектами
Аудитория: разработчики ПО на C++

Основные вопросы:
1. Что такое <<профилирование>> приложений в Linux и для чего оно нужно на примере профилирования в динамике утечек памяти и профилирования
времени выполнения функций. Статическое профилирование не затрагивается.
2. Профилировщики:
  • GNU Profiler;
  • Google Performance Tools (включая графический вид);
  • valgrind (+ callgrind).
3. Пример профилирования простой задачи и пример ее ускорения, отличия профилировщиков:
  • на примере QT-приложений+QTCreator + valgrind;
  • не-QT-приложение+Google Perf Tools.

Проектирование и реализация тестов для Selenium Webdriver

Постнов Александр Михайлович, старший специалист по контролю качества, компания Моё дело, город Пенза
В тестировании ПО более 3,5 лет. Занимался ручным тестированием, разработкой планов и методик тестирования. В течение последнего года активно занимаюсь автоматизированным тестированием web-приложений.
Аудитория: тестировщики, руководители проектов

  • Гибкие методологии разработки ПО выдвигают новые требования к процессам тестирования. Разработка короткими итерациями предполагает проведение тестирования в сжатые сроки. Один из способов контроля качества - автоматизированное тестирование.
  • Грамотное комбинирование ручного и автоматизированного тестирования может дать хорошие результаты.
  • Основа автоматизированного тестирования - проектирование тестов. Тесты должны не только выполняться, но и ловить баги. Обязательна простота последующей модернизации и поддержки тестов.
  • Разделение значений на классы эквивалентности и граничные значения, составление таблицы сущностей, метод значений по умолчанию - основные применяемые методы тест-дизайна
  • Page object pattern при реализации тестов существенно упрощает поддержку и модернизацию тестов.
  • Создание дополнительных классов, описывающих тестовые данные, позволяет делать тесты читабельными и удачно сочетается с применением метода значений по умолчанию.
  • Тестовые наборы BVT, Smoke, Regression позволяют получать информацию о состоянии продукта исходя из имеющегося в распоряжении тестировщика времени.

Разработка для мобильных платформ

Принципы построения GUI для мобильных сенсорных устройств

Сафронов Юрий. Дизайнер. Последние 5-6 лет занимается web- и промышленным графическим
дизайном, пиксельной графикой. НИИСП г.Пенза

В докладе хотелось бы рассказать об основных принципах GUI для мобильных устройств с сенсорными экранами:
какие GUI-паттерны предлагают разработчики Android, iOS, Windows Phone
  • графика
  • шрифты
  • группирование информации в окнах
  • области наибольшей зрительной активности
  • особенности/проблемы графики на мобильных экранах
  • проблемы "растягивания" элементов GUI на различные экраны;
  • пример разработки приложения для встраиваемого промышленного устройства.


Организация работы с графикой в игре под мобильные устройства

Сенюта Роман Анатольевич, Ведущий разработчик в компании BIT.GAMES, город Пенза.
Профессиональная разработка программного обеспечения с 2005 года. Опыт
разработки игр - 5 лет.
Аудитория: Разработчики игр и другие заинтересованные лица

Тезисы:
  • Графика в играх является самым многочисленным набором данных. На ее обработку тратится наибольшее количество вычислительных ресурсов во время исполнения приложения. В разработке большинства игр организация процесса обработки графики является одной из самых сложных и трудоемких задач.
  • Мобильные устройства, в дополнение, накладывают довольно жесткие ограничения на исполняемые приложения. Для того, чтобы соответствовать требованиям платформы, а также ожиданиям игроков, процесс подготовки, загрузки и отображения графики должен быть построен максимально эффективно.
  • Для обеспечения эффективности этого процесса разработчикам требуется:
a. вынести максимально возможное количество преобразований и оптимизаций графики на этап подготовки/сборки приложения, полностью автоматизировать этот этап
b. в процессе исполнения игры максимально использовать аппаратные возможности устройства
  • При довольно большом разнообразии мобильных устройств и ограничений на время сборки приложения в процессе разработки эти требования создают целый ряд проблем, которые разработчикам необходимо решать.
Доклад о том, каким образом мы организовали процесс обработки графики в наших играх, с момента создания художественных набросков до реализации полноценной игровой графики на платформах iOS и Android.
Основные рассматриваемые темы:
  • Автоматизация процесса экспорта графики из Flash
  • Оптимизация графики для отображения на мобильных устройствах
  • Загрузка и управление графическими ресурсами в процессе работы игры
  • Краткий обзор архитектуры современных мобильных GPU
  • Композиция и post-processing изображений на GPU

Разработка игр

Использование Lua в программах на C/C++

Прусов Александр, разработчик в компании BIT.GAMES, город Пенза.
Профессиональная разработка программного обеспечения с 2010 года. Опыт профессиональной разработки игр - 1 год. Опыт использования Lua в личных проектах - 3 года.
Аудитория: Разработчики игр, студенты и все остальные, кто хочет использовать
встраиваемый язык программирования в своих приложениях.

Тезисы:
Есть множество причин использовать в своем приложении встраиваемый скриптовый язык программирования. Он может использоваться для гибкой настройки работы программы, для расширения ее функционала, как язык для плагинов (или модов, в случае игр), также на нем может быть написана часть логики самой программы или любая другая часть, например пользовательский интерфейс.
Чаще всего встраивание скриптового языка в компилируемое приложение продиктовано удобством разработки. А там, где необходимо удобство, оно должно быть во всем. Lua - самый популярный скриптовый язык для разработки игр, именно из-за своего удобства и простоты, как при использовании, так и при интеграции.
Речь пойдет о самом языке Lua, в частности об особенностях синтаксиса и работы самого языка Lua, и о том, как его использовать внутри приложения на C/C++.

Основные рассматриваемые темы:
  1. О синтаксисе в общих чертах
  2. О таблицах - самом важном типе данных в Lua
  3. О стеке Lua и его особенностях
  4. О том, как использовать низкоуровневые функции на C/C++ в скрипте
  5. Как осуществить вызов функции Lua в C/C++ и получить результат ее работы
  6. Создание пользовательских типов данных в Lua
  7. Организация обратных вызовов функций Lua из C/C++
Все это будет рассматриваться через призму разработки игры, но применить эти знания можно будет и в обычных приложениях. Язык Lua действительно просто интегрировать в свое приложение, что и будет продемонстрировано в процессе доклада.

Идем в ногу со временем. Использование аппаратного ускорения во Flash Platform

Буйнов Вячеслав(СлаваRa) Алексеевич, ActionScript программист компании BIT.GAMES, город Пенза.

Аудитория: Разработчики игр и другие заинтересованные лица.

Тезисы:
Аппаратное ускорение во Flash Platform появилось с 9 версии Adobe Flash Player, но поначалу это была никому не понятная проба пера. В 10 версии часть задач вычислялась с помощью видеокарты, но имелось большое количество ограничений.
В 2009 году компания Adobe представила Adobe Flash Player 11, предоставляющий Molehill 3D API. Одним словом, у Flash-разработчиков появилась возможность использовать аппаратное ускорение видеокарты. Но есть целый ряд причин, по которым многие проекты до сих пор не используют эту возможность.
В этом докладе мы познакомимся с возможностями аппаратного ускорения Adobe Flash Player и рассмотрим доступные Stage3D фреймворки, с целью
выбора "наилучшего" для быстрого портирования вью-порта готовой игры с наименьшими затратами.

Основные рассматриваемые темы:
  1. Краткая история развития аппаратного ускорения во Flash Platform
  2. Stage3D. В чем "фишка"?
  3. Ограничения, без которых никуда
  4. Зачем брать готовое, когда можно сделать самому?
  5.  Краткий обзор доступных Stage3D фреймворков (Starling, ND2D, GPUSprite, etc)
  6. Выбираем фреймворк (сравнение представленных движков в удобстве использования)

Современные тенденции в технологиях разработки игр

Щеваев Павел Александрович, технический директор компании BIT.GAMES, город Пенза 10-летний опыт профессионального программирования, опыт разработки игр - более 5 лет.

Аудитория: Разработчики игр и другие заинтересованные лица

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

Основные рассматриваемые темы:
  1. Краткий обзор некоторых популярных архитектур (Xbox360, PS3, iOS)
  2. Применение практик Data Oriented программирования (DOD)
  3. Использование различных стратегий аллокации памяти
  4. Обработка ошибок
  5. Уход от ООП в пользу более простых альтернатив
  6. Максимальная автоматизация и ускорение процессов сборки
В докладе будет рассмотрено, что из вышеуказанного получилось применить у себя на практике, что - нет, к чему стремимся.

Серверное программирование

Разработка web-сервисов на С++

Уткин Дмитрий. Ведущий разработчик. НИИСП.
Профессиональная специализация: C++/Linux.
Аудитория: разработчики, владеющие С++

В докладе предполагается рассказать про Web-сервисы как таковые (что
такое, что такое WS-I спецификация, где и как их использовать), а
также про средство разработки и развертывания WS на С++.
Основные вопросы:
  • что такое web-сервисы (WSDL, протокол SOAP, UDDI), примеры их
  • применения в реальных проектах;
  • наиболее распространенные средства разработки и развертывания WS;
  • создание простого клиента и сервиса на С++ из wsdl с помощью Staff
  • (что это - см. ниже);
  • примеры создания сервисов:
  • сервис на С++ с расчетной функциональностью (или например, сервис-
  • архиватор), с доступом к нему из различных приложений, включая web-
  • приложения;
  • сервис, представляющий объектный доступ к БД;
  • доступ к сервису (например, погода или курсы валют) из мобильного
  • приложения.

P.S. staff (http://code.google.com/p/staff) - легковесное средство разработки и развертывания web-сервисов на С++ для Linux/MacOS/
Windows. Opensource. Активно развивается несколько лет. Является дополнением к серверу Apache Axis2c и дополняет его средствами
разработки на С++, средствами объектного доступа к данным, добавляет поддержку REST-сервисов, имеет кодогенератор (с генерацией клиентов на
разных языках), сборки для разных платформ и др.

Высокопроизводительные приложения в средах с GC и JIT: практические советы

Сорокин Алексей. Компания undev.ru (Москва), ведущий разработчик. Опыт разработки на Java более 6 лет.
Тематика: Cерверное программирование.
Уровень аудитории: срединй, продвинутый.


Такие платформы разработки как JVM и .NET получили очень широкое распространение благодаря высокому уровню языков Java и C#, невероятно мощной поддержке со стороны инструментов разработки и богатейшему набору прикладных библиотек кода. Однако, наличие в них JIT компиляции позволяет добиться производительности сравнимой (а местами возможно и превосходящей) с программами написанными на Си не прибегая к самому Си. В докладе описываются некоторые приемы из практики которые использовались для написания подобных приложений.
Практические навыки описанные в докладе использовались при работе над реальной системой Market Data в европейском финансовом банке. Система разработана на Java.

Во введении я поясню что такое GC (Garbage Collector) и JIT (just-in-time compilation) и почему именно они выделены как особенности. Основное содержание доклада будет состоять из двух частей:
  • особенности современных процессоров и памяти. Основана на статье Ульриха Дреппера What every programmer should know about memory, однако изложено очень очень кратко.
  • особенности виртуальных машин, в основном касающиеся GC.
В качестве примера я рассмотрю небольшую программку эмулирующую market data систему (такие системы в фин. банках собирают оперативную информацию с бирж) в очень упрощенном варианте. На вход будет подаваться поток сообщений: добавить ордер, удалить ордер, исполнить ордер. Программа должна будет строить "книгу" по каждой ценной бумаге глубиной 1 уровень (top of book), т.е. на выходе будет лучшая цена на продажу и лучшая цена на покупку. Если она меняется - должно быть сгенерировано сообщение. Суть данного примера в том, что в памяти будет необходимо поддерживать и постоянно менять состояние на основе входящих сообщений. Нужно хранить все "живые" (т.е. не отмененные и не выполненные ордера) и собственно сами книги для каждой ценной бумаги. Предполагается что ценных бумаг сотни тысяч, а ордеров миллионы. По структурам в памяти будут очень частые поиски и вставки/удаления. Отсюда и требования к производительности и эффективному использованию памяти. Сетевого взаимодействия в примере конечно не будет - оно будет заменено локальными вызовами методов.

В основном будут сравниваться два варианта прогрммы:
  1. Написанные обычным способом, с использованием стандартных коллекций JDK, порождением множества объектов и прочее.
  2. Более эффективный вариант с использованием коллекций ориентированных на локальность данных, избежанием лишних порождений объектов и прочее. Т.е. с учетом тех советов котоые я и расскажу в течении доклада.
Основной пример, рассматриваемый в докладе, будет разработан на Java. Однако, планирую разработать аналогичную программу и на C#, чтобы была
возможность обратить внимание на некоторые различия в этих платформах.

Примерное содержание самих разделов:
  1. Память и процессорные кэши
    • memory is a new disk. О разнице в скоростях работы центрального процессора и оперативной памяти.
    • как работает кэш (кратко). Что такое cache line. Что такое prefetching.
    • принципы локальности (locality or reference) в основном сосредоточившись на пространственной локальности и равноудаленной (Equidistant) локальности данных.
    • демонстрация структур данных используемых в нашем примере с учетом расказанного выше.
  2. GC и организация памяти JVM
    • поколения памяти и почему это важно. Как много мусора порождает наша программа.
    • общее количество объектов в old generation. Как это влияет на паузы GC.
    • как именно изменен код примера в сторону эффективности с учетом рассказанного.

Amazon AWS - ракета-носитель для молодого проекта

Скваж Роман, FlySoft, системный архитектор. За плечами множество веб-проектов, большой опыт разработки и поддержки высоконагруженных
систем.
В докладе я расскажу об опыте внедрения облачных технологий в быстроразвивающийся проект iFunny. Отвечу на вопрос, для чего бывает нужно переезжать с выделенных серверов на виртуальные. Познакомлю слушателей с реализованной архитектурой на базе Amazon AWS сервисов:
  • EC2 - виртуальные сервера, 
  • RDS - облачная MySQL, 
  • S3 - хранилище данных. 
Расскажу, как мы решали проблему с большим потоком трафика. Затрону тему CDN и экономии бюджета при отдаче контента с Амазона. Какие минусы облаков мы для себя определили и почему переезжаем, спустя полгода, обратно на выделенные сервера. Доклад ориентирован на людей, принимающих решения об архитектуре веб-проектов: системные архитекторы, администраторы или веб-разработчики.


Использование неблокирующих веб-серверов в highload проектах

Цветков Александр. Python разработчик в Eastwood Lab. Описание опыта: Разработка серверной части сервисов для компании HeadHunter на Python (Frontik, werkzug, sqlalchemy, etc)

Тезисы
  • Async event loop, как это работает, зачем нужно и какие задачи решает: Рассказ о технологии, пример задач для решения которых она подходит(web sockets long pooling), преимуществ и недостатков, сравнение с классической организацией web-сервера
  • Почему не NodeJS? Краткий обзор NodeJS как первого сервера, реализующего данную парадигму, обзор основных недостатков, и того, почему многие разработчики не решаются его использовать в крупных проектах
  • Tornado — асинхронный web-сервер на Python. Рассказ о Tornado, его сильных и слабых сторонах, примеры кода, задач для которых он наиболее подходит, сравнение с NodeJS
  • Примениение Tornado в больших реальных проектах на примере Frontik. Рассказ об использовании Tornado в крупном проекте на примере Frontik (xml-аггрегатор на основе Tornado) в инфраструктуре hh.ru, рассказ о построении сервисов в данной инфраструктуре из личного опыта, решённые задачи: модули статей и бонусной программы для работодателей сайта hh.ru.
Уровень аудитории: Доклад ориентирован на разработчиков серверной части с опытом работы в web-индустрии, занимающихся или интересующихся разработкой highload-систем.

Системное администрирование

Использование Puppet для быстрого развертывания серверов

Цаль-Цалко Иван Викторович, разработчик в компании BIT.GAMES, г.Пенза.
Аудитория: Разработчики приложений, системные администраторы и другие заинтересованные лица.

Тезисы:
При масштабировании или выводе приложений на новые рынки (социальные сети или другие платформы) количество обслуживаемых серверов возрастает. В результате остро встает проблема настройки, обновления и поддержки серверов в одинаковом окружении.
Без автоматизации данных процессов, которые включают в себя достаточное количество операций, время выполнения и вероятность получения ошибок резко возрастают. На помощь разработчику в решении данной проблемы приходят системы с централизованным управлением, которые по своей сути являются единой точкой входа, что позволяет существенно сократить временные расходы и в то же время снизить вероятность получения ошибок на production-серверах. Данные системы также можно использовать для создания, настройки и поддержки одинакового локального окружения среди всех разработчиков в команде.
Одной из таких систем является Puppet, о которой и пойдет речь в текущем докладе.

Основные рассматриваемые темы:
  1. Обоснование проблемы поддержки одинакового окружения нескольких production и тестовых серверов
  2. Обзор конкурирующих систем и причины выбора в пользу Puppet 
  3. Детальное описание системы Puppet: 
    • принцип действия системы 
    • синтаксис и список доступных команд 
    • основные возможности
  4. различные варианты применения
  5. Примеры использования Puppet для развертывания и настройки окружения, как удаленных серверов для production-приложения, так и локальных машин для разработки самого приложения
  6. Выводы по использованию Puppet.


Управление проектами и методологии

Практика организации распределенной команды разработчиков

Бочкарев Игорь. НИИСП. г. Пенза. Руководитель офиса разработки ПО.
Профессиональные интересы: разработка ПО C++/Linux, управление проектами.
Аудитория: разработчики и руководители проектов

Цель: рассказать про основные принципы и средства организации процесса
разработки ПО при работе в распределенной команде из более 10 человек
на примере проекта с разработчиками, аналитиками, тестерами и
средствами развертывания/тестирования, находящимися в 3-х разных
городах.

  • Общее планирование работы и планирование итераций, проектирование, роли в проектной команде.
  • общий процесс планирования: формирование целей, определения ролей, плана итераций, средства коммуникаций команде (skype/icq/...,redmine, google groups/docs).
  • средства планирования: MS Project, XMind (или другое mindmap-средство), redmine
  • средства проектирования на UML: Visio или др.
  • планирование итерации: основные этапы в итерации
  • управление требованиями
  • кто формирует требования, когда
  • средство управления требования (на примере redmine)
  • распределенная разработка (с рассказом о средствах)
  • единая среда разработки (общие настройки и/или использование vmware)
  • VPN для организации единой сети
  • svn/hg (в т.ч. с рассказом об отличиях)
  • redmine, организация общих проектных данных
  • сборка на CI-сервере, автоматизированное тестирование
  • документирование кода (doxygen)
  • коммуникации в команде
  • тестирование, развертывание на стенде/серверах заказчика, работа с заказчиком
Как организовать тестирование локально и в случае необходимости отладки на аппаратно-программном стенде заказчика:
  • развертывание версии, обновление ПО (на примере менеджера пакетов ipkg)
  • роли/задачи,
  • VPN, Teamview,
  • redmine для фиксации задач/ошибок, формирования планатестирования

Проектирование архитектуры ИС с помощью методики DoDAF (ToGAF)

Бочкарев Игорь. НИИСП г. Пенза. Руководитель офиса разработки.
Аудитория: программные архитекторы

Достаточно экзотическая тема - как проектируют инф.системы в МО США. Однако, речь не о МО США, а том на каких принципах построено
проектирование архитектуры промышленных ИС: какие обязательные шаги нужно выполнить в процессе разработки архитектуры системы, как все это
задокументировать с использованием IDEF/UML, как перейти от бизнес-целей к программным компонентам и алгоритмам.

DoDAF (Department of Defense Architecture Framework) - это стандартная методика представление архитектуры ИС, разработанная и применяемая в
МО США. В настоящее время DoDAF - одна из самых широко распространенных методик для разработки архитектуры ИС и предприятия
не только военного назначения. ToGAF - разновидность методики, в целом схожая с DoDAF, но изначально разработанная для нужд проектирования
архитектуры предприятий.
Две главных цели DoDAF - это:
  • Управление развитием архитектуры предприятия.
  • Обмен архитектурной информацией между разработчиками.
Архитектурный каркас DoDAF состоит из двух уровней:
  • Уровень данных - элементы данных архитектуры и определения их атрибутов и отношений.
  • Уровень представления - продукты и представления.
Продукты обеспечивают способы визуализации архитектурных данных как графических, табличных или текстовых представлений.
Представления обеспечивают возможность визуализировать архитектурные данные, которые принадлежат продуктам, логически организуя данные для
определенной архитектурной точки зрения. DoDAF не предписывает жесткую методологию разработки, а описывает рекомендованный процесс разработки и подчеркивает руководящие принципы.
В основе методики лежит использование языков моделирования IDEF, UML. DODAF описывает порядок проектирования и архитектурные документы,
необходимые для всестороннего описания разрабатываемой системы с трех представлений:
  • функционального,
  • системного;
  • технического.
Функциональное - бизнес-процессы, роли, основные функции, функциональные элементы.
Системное - системные процессы, системы, компоненты (аппаратные и программные), алгоритмы, БД.
Техническое - профиль стандартов.
В докладе можно рассказать о порядке проектирования от формирования целей, описания бизнес-процессов, до структуры программных
компонентов, определенной в методике, и моделях (UML, IDEF), предназначенных для описания представлений.

Лучшие практики на практике

Тучин Денис Олегович, Компания: i-Sys, г. Самара
Должность: Руководитель команды разработки ПО
Описание опыта: В IT работаю с 2004 года. Часть практик, описанных в докладе, начал применять в 2006 году. С 2009 года занимаюсь сам внедрением лучших практик разработки программного обеспечения в проектах и компаниях, в которых работаю. С 2010 года занимаюсь консалтингом по внедрению гибких методологий разработки ПО.

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

В рамках выступления будут описаны следующие практики:
  • Система контроля версий
  • Итерации + демонстрации
  • Заказчик рядом
  • База знаний (Wiki)
  • Code review
  • Коллективное владение кодом
  • Модульное и интеграционное тестирования
  • Автоматизированная сборка и непрерывная интеграция
  • Стандарты кодирования
  • Ретроспективы
Выступление ориентировано как на начинающих разработчиков, так и на опытных, а также на руководителей команд и проектов