Гибкие методики разработки программного обеспечения

Автор: Лимонов В.Ю., Пальмов С.В.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 12-3 (28), 2018 года.

Бесплатный доступ

В данной статье описываются основные положения гибких методик разработки программного обеспечения. Рассматриваются базовые идеи и принципы гибкого подхода. Производится обзор наиболее популярных Agile методологий. Выявляются их главные преимущества и недостатки.

Разработка программного обеспечения, экстремальное программирование

Короткий адрес: https://sciup.org/140281353

IDR: 140281353

Текст научной статьи Гибкие методики разработки программного обеспечения

В начале 2001 года на горнолыжном курорте в штате Юта (США) по итогам встречи группы специалистов-разработчиков программных систем был принят документ, серьезно повлиявший на подход к организации процесса создания компьютерных приложений. «Манифест гибкой методологии разработки программного обеспечения» стал альтернативой всем известным в то время «тяжеловесным» методологиям разработки [1]. Документ провозглашает четыре главные идеи гибких методов, на которые нужно ориентироваться:

– участники процесса разработки и взаимодействие между ними имеет приоритетное значение;

– корректно функционирующее программное обеспечение (ПО) превалирует над сложной документацией;

– взаимодействие с заказчиком важнее контрактных соглашений тесная работа с заказчиком важнее договорных обязательств;

– готовность к внесению правок. [2]

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

Помимо основных идей манифест также определяет 12 базовых принципов гибкого подхода к разработке:

  •    скорая и непрерывная доставка программного продукта заказчику;

  •    принятие поправок даже на поздних стадиях разработки;

  •    регулярный выпуск работающего ПО;

  •    тесное взаимодействие разработчиков и заказчика при работе над проектом;

  •    разработку должны вести мотивированные профессионалы, которым нужно предоставить все необходимые условия для работы;

  •    непосредственное общение – лучший способ передачи информации;

  •    главным критерием прогресса является работающий продукт;

  •    всем участникам проекта необходимо держать одинаковый темп неограниченное количество времени;

  •    постоянное внимание к техническим деталям и возможностям для совершенствования продукта;

  •    необходимость минимизации чрезмерной работы;

  •    самоорганизованная команда создает лучшую архитектуру;

  •    постоянный поиск способов увеличения эффективности работы. [2]

Наиболее критикуемым пунктом при гибком подходе в разработке стало отсутствие долгосрочных планов развития проекта, т.к. подразумевается лишь краткосрочное планирование ввиду того, что заказчик может поменять свои требования. Это очень часто влечет за собой многочисленные переделки и смещение сроков, что негативно отражается на качестве разрабатываемого продукта. [3]

Основываясь на положения и принципы, заявленных в манифесте Agile, сформировались множество методологий гибкой разработки. По результатам исследований, проведенных Agile Survey, самой распространенным и эффективным на сегодняшний день методом стал Scrum [4]. Этот подход подразумевает, что работа должна быть организована в небольших кроссфункциональных командах, в составе которых находятся все необходимые специалисты, а за соблюдением процессов наблюдает скрам-мастер. Разработка разбивается на определенное количество коротких фиксированных этапов (итераций). После прохождения этапа заказчик имеет возможность скорректировать и дополнить требования к продукту, тем самым оказываясь вовлеченным в процесс работы. После получения новых или отредактированных требований, стартует следующая итерация разработки. Это позволяет уже на ранних стадиях выявлять и устранять отклонения от нужного результата. В основном Scrum используется для работы со сложным ПО и для создания продукта с применением интерактивных и инкрементных подходов. [5]

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

  • 1.    Визуализация всей информации о проекте. Это позволяет лучше видеть ошибки и устранять их.

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

  • 3.    Оптимизирование процесса, строгий контроль времени для выполнения задач. [6]

Считается, что вводить и применять метод Kanban уместно после успешного использования Scrum.

Экстремальное программирование (Extreme programming или XP) – достаточно известная гибкая методология. Ее суть заключается в применении уже существующих наилучших практик в сфере разработки программного обеспечения, выводя их на «экстремальный» уровень [7]. Все практики XP можно условно поделить на инженерные и управленческие.

К инженерным относятся:

  •    непрерывная интеграция;

  •    парное программирование;

  •    разработка через тестирование;

  •    рефакторинг;

  •    простота;

  •    метафора системы;

  •    стандарт кодирования.

К управленческим можно отнести следующие практики:

  •    игра в планирование;

  •    частые небольшие релизы;

  •    заказчик всегда рядом;

  • 40-часовая рабочая неделя;

  •    коллективное владение кодом. [8]

Приведенная группировка весьма относительна, однако можно заметить, что Extreme programming имеет немало схожего с методологией Scrum.

DSDM – метод разработки динамических систем – итеративная и инкрементная методология, основывающаяся на RAD (быстрая разработка приложений) [9]. Основной упор при таком подходе делается на вовлечение пользователей в процесс разработки. DSDM состоит из трех стадий:

  • 1.    Предпроектная: формируется проектная команда, выделяются финансовые средства, определяются вероятные проекты.

  • 2.    Жизненный цикл: реализация проекта.

  • 3.    Постпроектная: обеспечивается качественная работа системы.

Чтобы проект стал полноценной информационной системой ему необходимо пройти следующие 5 итераций жизненного цикла:

  • 1.    Определение реализуемости

  • 2.    Финансовое обоснование

  • 3.    Построение функциональной модели

  • 4.    Проектирование и разработка

  • 5.    Реализация

Метод DSDM дает все необходимые инструменты, позволяя пользователям дополнять процесс работы над проектом и оказывать помощь в принятии решений.

Feature driven development (FDD) – итеративная гибкая методология, которая является попыткой связать самые значимые в области разработки ПО методики, в основе которых лежит функциональность продукта. Главная цель FDD - создание реального, функционирующего программного продукта, в намеченные сроки. Для данного подхода существует 5 основных видов деятельности:

  • 1.    Создание общей модели

  • 2.    Построение списка требующихся функций

  • 3.    Планирование работы

  • 4.    Проектирование

  • 5.    Реализация [10]

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

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

Список литературы Гибкие методики разработки программного обеспечения

  • A Short History of Agile [Электронный ресурс] // URL: https://www.agilealliance.org/agile101/ (дата обращения: 5.12.2018).
  • Manifesto for Agile Software Development [Электронный ресурс] // URL: http://agilemanifesto.org (дата обращения: 5.12.2018).
  • Гибкая методология разработки (Agile) [Электронный ресурс] // URL: http://mahamba.com/ru/gibkaya-metodologiya-razrabotki-agile (дата обращения: 6.12.2018).
  • 12th Annual State of Agile Report [Электронный ресурс] // URL: https://explore.versionone.com/state-of-agile/versionone-12th-annual-state-of-agile-report (дата обращения: 6.12.2018).
  • AGILE - гибкая система управления проектами [Электронный ресурс] // URL: https://4brain.ru/blog/agile/ (дата обращения: 6.12.2018).
  • Вольсон Б. Гибкие методологии разработки [Электронный ресурс] // URL: https://tados.ru/wp-content/uploads/2017/04/Борис_Вольфсон_Гибкие_методологии.pdf (дата обращения: 6.12.2018).
  • Extreme Programming: A gentle introduction [Электронный ресурс] // URL: http://www.extremeprogramming.org (дата обращения: 8.12.2018).
  • Практики XP [Электронный ресурс] // URL: http://skipy.ru/philosophy/xp.html#practics (дата обращения: 8.12.2018).
  • What is DSDM [Электронный ресурс] // URL: https://www.agilebusiness.org/what-is-dsdm (дата обращения: 9.12.2018).
  • Feature Driven Development (FDD) and Agile Modeling [Электронный ресурс] // URL: http://www.agilemodeling.com/essays/fdd.htm (дата обращения: 10.12.2018).
Еще
Статья научная