Гибкие методики разработки программного обеспечения
Автор: Лимонов В.Ю., Пальмов С.В.
Журнал: Форум молодых ученых @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).