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

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

Историческая справка – с чего все началось

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

Их внедрение началось в 2001 году. Тогда команда IT-специалистов выпустила манифест The Agile Manifest. В нем описывался более гибкий подход к разработке приложений.

До появления этого манифеста считалось, что проект изначально регламентирован жестко, а его разработка производится по строго установленному плану. Со временем в штате Юта собрались разработчики, которые понимали – отходить от изначально сформированного технического задания возможно (и даже необходимо), если команда или заказчик смогли подобрать более грамотное решение. Разработка должна стать гибким процессом, готовым к изменениям. Именно благодаря этому появился манифест The Agile Manifest.

Жизненный цикл программного обеспечения

Любое программное обеспечение обладает жизненным циклом – этапами, через которые оно проходит от начала создания и до конца разработки и непосредственного внедрения. Обычно в него входят такие стадии как:

  • подготовка;
  • проектирование;
  • создание;
  • поддержка.

Соответствующие этапы могут обладать различными названиями, а также делиться на более мелкие стадии.

Чтобы лучше понимать жизненный цикл, стоит изучить один наглядный пример – Интернет-магазин:

  1. Подготовка. Человек решил открыть книжный Интернет-магазин. Он стал анализировать, какие сайты данной категории уже есть в Сети. На основании этого удалось собрать информацию о трафике площадок и их функциональных возможностях.
  2. Проектирование. Будущий владелец Интернет-магазина определился с выбором компании-подрядчика. Он обсудил со специалистами структуру и дизайн будущего сайта.
  3. Создание. Был заключен договор с командой разработчиков. Они начали писать код, а также составлять документацию и отрисовывать дизайн будущего Интернет-магазина.
  4. Поддержка. Заказчик подписал акт сдачи-приемки, а подрядчик разместил Интернет-магазин на «боевых» серверах. Пользователи стали посещать его, а также сообщать об обнаруженных ошибках и возникающих сбоях. Команда программистов оперативно исправляет все недочеты проекта.

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

Основные и гибкие модели разработки программного обеспечения

К основным моделям разработки программного обеспечения относят:

  • Code and fix – модель кодирования и устранения ошибок;
  • Waterfall – каскадная модель (или «водопад»);
  • V-model – V-образная модель (разработка через тестирование);
  • Incremental Model – инкрементная модель;
  • Spiral model – спиральная модель;
  • Iterative Model – итеративная (итерационная) модель;
  • Prototype Model – прототипная модель;
  • Chaos Model – модель хаоса.

Наиболее популярными среди них являются пять подходов: каскадная, спиральная, итерационная, V-образная и инкрементная.

Также в разработке программного обеспечения используются гибкие методологии управления проектами. К ним относят:

  • Agile;
  • Scrum;
  • Lean;
  • Kanban.

Далее они будут рассмотрены более подробно. Особое внимание предстоит уделить методологии Scrum.

Agile

Agile – это не конкретная методология разработки, а целая философия. Данная концепция представляет собой целый набор подходов к организации работы в команде. Она базируется на нескольких ценностях:

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

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

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

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

Agile позволяет создать финальный продукт из множества циклов на каждую задачу, которые состоят из нескольких этапов:

  • планирование;
  • разработка;
  • тестирование;
  • демонстрация.

При завершении одного цикла, дополнения могут быть внедрены уже в финальный продукт. Философия Agile стала активно использоваться в продакт-менеджменте. В чистом своем виде данная концепция не позволяет оптимизировать работу в команде. Дополнительно приходится разрабатывать практические методы организации производства IT-продукта с четкими этапами. Это привело к образованию ответвлений гибких методологий управления проектами и командой: Scrum, Lean и Kanban.

Kanban

Kanban – управление проектами через визуализацию. Его смысл заключается в том, что управление командой и продуктом должно производиться при помощи наглядного планирования. Для этого используются специальные доски.

Чаще всего Kanban-доска включает в себя следующие столбцы:

  • что нужно сделать в будущем;
  • актуальные для обсуждения командой задачи;
  • дела, находящиеся в работе;
  • задачи, требующие от команды предварительного согласования;
  • завершенные задачи.

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

Технология подразумевает, что команда, работающая над продуктом, будет находиться в одном пространстве и видит весь пул задач. Это позволяет оценить вклад каждого ее члена в проект, отследить график и выявить недостатки/недочеты в работе.

Kanban может одновременно использоваться со Scrum для повышения эффективности коммуникации и выполнения различных задач. Одна методология будет использоваться для планирования работы и взаимодействия команды, другая – в качестве инструмента мониторинга постановки задач и их выполнения.

Lean

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

Здесь используются следующие принципы:

  1. Нужно выяснить, что именно формирует ценность разрабатываемого продукта для конечного пользователя. Ненужные компоненты, не оказывающие влияние на интерес публики к проекту, необходимо исключить. Данный прием поможет избавиться от лишнего, а значит – даст возможность сэкономить ресурсы компании.
  2. Определить самые важные процессы бизнеса. Далее предстоит перенести на их оптимизацию все свободные ресурсы.
  3. Заниматься производством лишь тех продуктов и товаров, что имеют спрос у покупателей. Все остальные идеи и разработки должны быть исключены.
  4. Наладить непрерывный производственный процесс для исключения простоев. Заминки в процессе работы команды – это тоже излишества, которые требуют ликвидации.

При использовании Lean необходимо все время анализировать процессы и корректировать бизнес-план. Работа по оптимизации производства товаров должна производиться как можно чаще. Это поможет еще на ранних стадиях разработки обнаружить излишества и избавиться от них.

Scrum

Метод Scrum – технология организации совместного рабочего процесса при помощи поэтапной разработки и совершенствования продукта небольшой командой специалистов самых разных профилей. Данная методология позволяет создавать товары, которые смогут решать проблемы заказчика с минимальными временными затратами. Подобный результат в Scrum достигается за счет соблюдения определенных этапов формирования проекта. Они будут рассмотрены позже. Сначала необходимо изучить Scrum более детально.

Данная концепция была разработана программистами Джеффом Сазерлендом и Кеном Швабером. Они наблюдали за работой американских военных и спецназа, после чего пришли к выводу о том, что залог успеха – это качественная командная работа. Сам термин «Scrum» пришел из регби. Он переводится как «схватка». Поначалу Scrum использовался только разработчиками программного обеспечения, чуть позже он получил распространение в других сферах деятельности. Особенно – в бизнесе.

Scrum – это часть семейства гибких Agile-методик. Он представлен конкретной производственной методикой. Agile в большей степени – это философия и набор ценностей.

К особенностям Scrum можно отнести командный подход и нестандартное распределение обязанностей в команде. В процедуру формирования продукта вовлечены как сотрудники компании (исполнители), так и бизнес-заказчики.

Для чего нужна методология

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

Принципы работы Scrum-команды

При работе по методике Scrum необходимо соблюдать следующие принципы:

  1. Постоянное совершенствование. Итоговый проект становится лучше за счет того, что вся команда совершенствуется.
  2. Автономность. Каждый участник команды несет ответственность за порученную часть работы, а также за общий результат трудов.
  3. Кроссфункциональность. Команда станет самодостаточной благодаря тому, что в ней есть люди, обладающие различными навыками.

Это основополагающие принципы, использующиеся в Scrum.

Преимущества и недостатки технологии

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

К преимуществам Scrum относят следующие моменты:

  1. Команда будет работать небольшими этапами. На каждом из них получится определить конкретные цели, а также способы их достижения. Данный подход значительно увеличивает скорость работы.
  2. Можно трудиться над разными задачами проекта одновременно. Итоговая цель достигается быстрее.
  3. Большие задачи подразделяются на более мелкие. Этот прием обеспечивает более простую и быструю корректировку в процессе работы команды.
  4. Минимизация финансовых рисков.
  5. Каждый член команды будет точно знать, за что он отвечает в проекте.
  6. Прозрачность работы. Она достигается за счет открытого обмена информацией.
  7. Каждый день можно наблюдать за достижениями. Это повышает мотивацию членов команды на дальнейшую работу.

Scrum также имеет некоторые недостатки:

  1. Технология не подходит для слишком сложных и больших проектов. Это связано с вероятностью возникновения проблем координации членов команды.
  2. Для использования Scrum требуется достичь высокого уровня доверия в команде.
  3. Динамика производительности сокращается после продолжительного периода работы. Команду придется или распускать, или перестраивать.
  4. Заказчику проекта необходимо все время общаться с командой и давать обратную связь. В противном случае эффективность Scrum встает под вопрос.

Несмотря на свои недостатки, Scrum все равно остается достаточно эффективной и быстрой технологией управления проектами.

Этапы работы Scrum-команды

Методология Scrum предусматривает определенные этапы работы команды над товаром или проектом. Основной целью подхода служит возможность предоставления заказчику желаемого продукта вовремя и с минимально возможными затратами.

Добиться этого можно при помощи следующих этапов работы:

  1. Разработка бэклога продукта.
  2. Формирование команды.
  3. Планирование коротких циклов (спринтов).
  4. Проведение Scrum-митинга (или стендапа).
  5. Подведение итогов и обзор результатов.

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

  • задачи, которые запланированы;
  • задачи, находящиеся в стадии активной работы;
  • выполненные задачи.

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

Разработка бэклога

По методологии Scrum работа команды начинается с разработки бэклога. Заказчик продумывает концепцию продукта с учетом ситуации на рынке, а также пользовательских потребностей. На основании этого формируется список требований к проекту. Они распределяются по степени приоритетности. Готовый бэклог – это полноценное техническое задание для команды.

Формирование команды

Команда в Scrum – это единое целое. В проекте будет участвовать небольшая группа специалистов различных профилей. Всего в ней может быть около 6-10 человек. Они будут трудиться над общим результатом, а также стремиться к единой цели.

Группа специалистов в Scrum включает в себя:

  1. Владельца продукта. Это сам заказчик или его представитель. Он должен консультировать разработчиков, транслировать новые требования компании к товару, следить за тем, чтобы работа двигалась в правильном направлении.
  2. Scrum-мастера. Это специально нанятый человек, который ведет команду к обозначенной цели. Его задача – не управление разработчиками, а наблюдение за соблюдением Scrum-принципов в рабочем процессе.
  3. Разработчиков. Они представляют собой людей различной специализации. Группа разработчиков формируется отдельно для каждого проекта.

Особое внимание необходимо уделить отбору команды. В группе не должно быть явного лидера, а ее члены должны дополнять друг друга.

Планирование спринтов

Спринт – это период, в течение которого группа разработчиков создает и совершенствует отдельную часть продукта. Это помогает исключить глобальные доработки и подготовиться к изменениям условий.

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

Далее проводится оценка предстоящей работы и подбор продолжительности цикла. Scrum допускает их длиной около 2 недель, но продолжительность может варьироваться в зависимости от проекта. 

При планировании возможны три варианта развития событий:

  1. Группа не успевает вовремя. Тогда заказчик распределяет сроки так, чтобы конечная цель была достигнута.
  2. Команда успевает вовремя. Заказчик принимает и одобряет результат. Далее разработчики переходят к следующему спринту.
  3. Группа успевает выполнить работу с опережением. Оставшееся время уходит на реализацию дополнительных задач.

За счет соблюдения сроков удается организовать рабочий процесс, задать ритм и помочь разработчикам распределить время грамотно.

Scrum-митинг

Scrum-митинг проводится каждый день. Его длительность составляет около 15 минут (не больше). Целью такой встречи является возможность услышать от каждого участника о проделанной работе, планах на текущий день и проблемах, которые препятствуют выполнению задачи.

За счет таких микроотчетов Scrum-мастер старается понять, правильно ли идет рабочий процесс, как можно помочь команде в преодолении возникающих препятствий.

Подведение итогов и обзор результатов

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

В самом конце цикла все члены группы, включая владельца продукта и Scrum-мастера, собираются для демонстрации проделанного за отчетный период. Каждый разработчик представляет завершенные задачи бэклога. Остальные производят оценку его результатов. Далее вся команда демонстрирует общий итог. Им является итоговый работающий продукт.

Владелец принимает решение, выпускать ли товар/проект или нет. Также проводится ретроспектива рабочего процесса за прошедший период. Участники команды делятся своими наблюдениями, проблемами, а также оценивают взаимоотношения с другими членами группы и используемые для труда инструменты.

Основные принципы Scrum изучены. Более детально рассмотреть эту технологию управления помогут дистанционные компьютерные курсы.

Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!