вверх
ДонНТУ   Портал магистров

Командная разработка кроссплатформенных приложений

Введение

Уже давно не секрет, что программное обеспечение – один из самых востребованных товаров на рынке услуг. Его разработкой занимаются миллиарды людей, состоящих как в огромных IT-компаниях, небольших фирмах по разработке ПО, так и фрилансеров, работающих на динамических проектах. Разработкой занимаются люди с разными уровнями профессионализма, таланта, желания, но, тем не менее, можно сказать, что IT сфера развивается с невиданной скоростью. Появляются новые усовершенствованные модели технического и программного обеспечения (раньше люди и представить себе не могли, что можно общаться с компьютером с помощью жестов, а Google Glass и сейчас многим пользователям кажется «магическим прибором»). И хотя сложность программ растет в геометрической прогрессии, техническое оборудование все же опережает его рост в несколько раз. Как говорит один из моих любимых преподавателей проф. Грунский И.С.: «По сравнению с развитием аппаратного обеспечения, программы до сих пор пишутся на коленке». В основе этой проблемы лежит человеческий фактор, ведь с возрастом растет опыт, но все сложней осваивать и приспосабливаться к новым языкам программирования и технологиям, которые, кстати, выходят с завидной быстротой. А единых алгоритмов решения всех проблем, к сожалению, так и не придумали.

Часто людям кажется, что если они – хорошие профессионалы, то могут «горы свернуть». Но на практике оказывается, что они не в силах справиться с глобальными, обширными задачами. Именно поэтому разработчики объединяются в команды. Как говорится, «Одна голова хорошо…». Командная разработка позволяет разрабатывать качественное, конкурентоспособное ПО. На даны момент, почти все компании практикуют разработку именно в команде, где каждый работник занимает свое место и выполняет свои специфические задачи, специалистом в вопросах которых он является. На этой почве создано большое количество методик, программ, приложений и т.п., которые если не упрощают, то помогают в командной работе.

Общие сведения о командной разработке

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

Команда проекта – это слаженная группа специалистов, давно работающих вместе и уже понимающих друг друга с полуслова. Руководитель команды распределяет задачи и непрерывно отслеживает ход работ, обеспечивая слаженную и предельно эффективную работу всей команды.

Слаженность и наличие внутреннего взаимопонимания у членов команды позволяет быстро принимать решения и доносить их до всех участников. Отсутствие внутренней конкуренции позволяет быстрее обнаруживать и исправлять ошибки. Все это приводит к тому, что творческие задачи, требующие неординарного подхода и уникального решения, решаются такой командой быстрее и качественнее. Однако, в силу серьезных ограничений, накладываемых необходимостью тесного и частого общения между членами команды, размер такой команды не сможет быть большим. Собственно, максимальный размер такой команды определяется возможностями руководителя – сколько участников он сможет направлять и отслеживать [1].

Но недостатки такой работы тоже имеются: существует определенная сложность в контроле и отслеживании хода работ, ведь многие решения принимаются «на лету» и тут же «идут в работу», без оформления соответствующей документации. Это делает для окружающих происходящее внутри команды непонятным и не прозрачным.

Мой опыт командной разработки

Еще во время обучения на 5 курсе университета мне посчастливилось слушать курс «Программирование под мобильные ОС», практическая часть которого состояла в командной разработке кроссплатформенной игры для мобильных устройств. Нас разделили на команды по 4 человека, где присутствовало формальное разделение на team-лидера, дизайнера, программиста и верстальщика. Перед нами стояла задача создать интересную кроссплатформенную игру и презентовать ее в конце семестра на собрании младших курсов. Одним из условий была именно работа в команде. Мы должны были освоить методологию Scrum, разделить весь проект на 2 спринта и проводить митинги каждую неделю.

Скрам (Scrum) – это набор принципов, на которых строится процесс разработки, позволяющий в жёстко фиксированные и небольшие по времени итерации, называемые спринтами (sprints), предоставлять конечному пользователю работающее ПО с новыми возможностями, для которых определён наибольший приоритет. Возможности ПО к реализации в очередном спринте определяются в начале спринта на этапе планирования и не могут изменяться на всём его протяжении. При этом строго фиксированная небольшая длительность спринта придаёт процессу разработки предсказуемость и гибкость [2].

Спринт – итерация в скрам, в ходе которой создаётся функциональный рост ПО. Длительность одного спринта от 2 до 4 недель.

Также, при командной разработке, возникает проблема версионности. Если два разработчика одновременно открыли один и тот же файл и начали его редактировать, то при сохранении результатов неизбежно возникнут проблемы. Второй просто перезапишет изменения первого. Для избежания подобных ситуаций существуют системы контроля версий. В нашем распоряжении таковой являлся GIT – удобная в использовании и, что не мало важно, актуальная на данный момент. Ведь по опыту знакомых знаю, что при работе во многих Донецких фирмах используют именное ее.

Вклад в проект каждого участника можно легко отследить по истории коммитов. Репозиторий GitHab представлен на рисунке 1.

Рисунок 1 – Репозиторий GitHab

Рисунок 1 – Репозиторий GitHab

Когда работаешь в одиночку, можно обойтись простым блокнотом. Notepad++ для написания кода и лист бумаги с карандашем для заметок. Я конечно утрирую, но, по сути, это так и есть. В командной разработке всё немного иначе [3].

Нами был использован сервис Trello – простой инструмент управления списками дел и задач. Сервис позволяет хранить на сайте задачи, сгруппированные по темам – доскам. Trello – это интересная система, построенная на карточках и наследующая принципы японской системы канбан [4].

Проще говоря, Trello – это пачки карточек. Каждая пачка показывает состояние любого проекта. Карточки имеют множество возможностей. В них можно проводить обсуждения, голосования, загружать файлы данных, назначать текстовые и цветовые метки. Чтобы к любой задаче назначить исполнителя, нужно в карточку выбрать его из списка рабочей команды или просто справа перетащить на задачу аватар «коллеги».

Наверное, данная система не годится для масштабных проектов, но вот для стартапов, домашних проектов и просто наборов идей, которые требуют проверки – это идеальное на сегодня решение [5].

Доска с заданиями нашего проекта приведена на рисунке 2.

Рисунок 2 – Доска нашего проекта на Trello.com

Рисунок 2 – Доска нашего проекта на Trello.com

На скрам митингах мы отвечали на 3 вопроса:

На протяжении данного курса было много изучено, решено много возникших проблем. Но, в итоге, мы создали кроссплатформенную игру, которая по своему функционалу не уступает многим коммерческим приложениям – Jumper.

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

Игра содержит веселое понятное меню, ненавязчивую графику, звуковые эффекты и развитие уровня сложности (рис. 3,4).

Рисунок 3 – Игра Jumper

Рисунок 3 – Игра Jumper

Рисунок 4 – Процесс игры Jumper

Рисунок 4 – Процесс игры Jumper

Игра заканчивается тогда, когда осуществляя очередной прыжок, главный герой «промахивается» мимо блока и падает вниз.

Особенности игры:

Конкурсы командной разработки

Конкурсы командной разработки приложений – увлекательное, интересное и экстремальное мероприятие. Это конкурсы, проводимые между командами разработчиков. За ограниченное время они должны разработать приложение на тему конкурса. Во время проведения, разработчики работают, спят, едят, общаются не выходя за пределы территории проведения мероприятия. В таких экстремальных условиях, когда, допустим, за сутки команда должна создать полноценное приложение, часто рождаются гениальные проекты.

Хакатон (англ. hackathon, от hack (см. хакер) и marathon – марафон) – мероприятие, во время которого специалисты из разных областей разработки программного обеспечения (программисты, дизайнеры, менеджеры) сообща работают над решением какой-либо проблемы. Сегодня хакатоны уже не относятся к хакерству, это просто марафоны программирования. Обычно хакатоны длятся от одного дня до недели. Некоторые хакатоны предназначены для образовательных или социальных целей, но чаще задачей хакатона является создание полноценного программного обеспечения. Каждый хакатон сфокусирован на определенной области, например, языке программирования, операционной системе, приложении, программном интерфейсе [6].

Некоторые ведущие Донецкие IT-компании организовуют подобные мероприятия. Например, ДОУ Хакатон проходил в Донецке 25-26 февраля 2012 года в Компьютерной Академии Шаг, 29-30 сентября 2012 года – в офисе Binary Studio.

Проведение таких мероприятий дает возможность участникам заводить новые интересные знакомства среди единомышленников, дает эмоциональный заряд, позволяет получить психологический допинг, ведь хороший результат – лучшая мотивация двигаться дальше!

Литература

  1. Создание программного продукта – проблемы и решения [Электронный ресурс]. – Режим доступа: http://dev-sol.blogspot.com/2012/01/blog-post.html
  2. Википедия. Статья о Scrum [Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org/wiki/Scrum
  3. Хабрахабр. Инструменты, которые мы используем для командной разработки [Электронный ресурс]. – Режим доступа: http://habrahabr.ru/post/178827/
  4. Лайфкакер [Электронный ресурс]. – Режим доступа: http://lifehacker.ru/2010/06/03/kanban-dlja-odnogo-uproshhajj-planirovanie-vsled-za-japoncami/
  5. Лайфкакер [Электронный ресурс]. – Режим доступа: http://lifehacker.ru/2012/03/12/trello/
  6. Википедия. Хакатон [Электронный ресурс]. – Режим доступа: http://ru.wikipedia.org/wiki/%D0%A5%D0%B0%D0%BA%D0%B0%D1%82%D0%BE%D0%BD

Информация с портала магистров ДонНТУ

  1. Автор: А.Ю. Кушнир
    Название: Эффективная работа команды программного проекта
    Описаниие: Представлено описание процесса командной разработки
    Ссылка: http://masters.donntu.ru/2010/fknt/kushnir/ind/
  2. Автор: А.C. Симилетов
    Название: Разработка программного обеспечения под платформу Symbian
    Описаниие: Представлено описание процесса разработки программного обеспечения под платформу Symbian
    Ссылка: http://masters.donntu.ru/2004/fvti/similyetov/indiv/
  3. Автор: Н.C. Савков
    Название: Разработка компьютерных игр
    Описаниие: Представлено описание процесса разработки компьютерных игр
    Ссылка: http://masters.donntu.ru/2007/fvti/savkov/ind/index.htm
  4. Автор: О.В. Животченко
    Название: Конструкторы компьютерных игр
    Описаниие: Представлено описание конструирования компьютерных игр
    Ссылка: http://masters.donntu.ru/2012/fknt/zhivotchenko/ind/index.htm
  5. Автор: С.М. Поспелов
    Название: IT-фирмы Донецка
    Описаниие: Представлен перечень IT-фирм Донецка
    Ссылка: http://masters.donntu.ru/2012/fknt/pospelov/ind/developers.htm