УДК 004
Лимонов В.Ю. студент 4 курса
факультет «Информационные системы и технологии»
Пальмов С.В., к.т.н.
доцент
кафедра Информационных систем и технологий
ФГБОУ ВО ПГУТИ доцент кафедры Информационных развивающих и образовательных систем и технологий Самарский государственный технический университет
Россия, г. Самара
ГИБКИЕ МЕТОДИКИ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Аннотация: В данной статье описываются основные положения гибких методик разработки программного обеспечения. Рассматриваются базовые идеи и принципы гибкого подхода. Производится обзор наиболее популярных Agile методологий. Выявляются их главные преимущества и недостатки.
Ключевые слова: Agile, разработка программного обеспечения, Scrum, Kanban, экстремальное программирование, DSDM, FDD
Limonov V. Y. 4th year student
Faculty of "Information systems and technologies" Povolzhskiy State University of Telecommunications and Informatics
Russia, Samara Palmov S. V. Ph.D. of Engineering Sciences associate professor of the department "Information systems and technologies" Povolzhskiy State University of Telecommunications and Informatics
Ph.D. of Engineering Sciences associate professor of the department "Information development and educational systems and technologies"
Samara State Technical University
Russia, Samara AGILE METHODS OF SOFTWARE DEVELOPMENT Abstract: This paper describes the main provisions of Agile software development techniques. The authors provide basic ideas and principles of Agile approach. A review of the most popular Agile methodologies is done. Their main advantages and disadvantages are identified.
Keywords: Agile, software development, Scrum, Kanban, XP, DSDM, FDD.
В начале 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, которая вовсе не гарантирует окончательный успех, но позволяет обнаружить верный курс и установить правильные ориентиры.
Использованные источники:
1. A Short History of Agile [Электронный ресурс] // URL: https://www.agilealliance.org/agile101/ (дата обращения: 5.12.2018).
2. Manifesto for Agile Software Development [ Электронный ресурс] // URL: http://agilemanifesto.org (дата обращения: 5.12.2018).
3. Гибкая методология разработки (Agile) [Электронный ресурс] // URL: http://mahamba.com/ru/gibkaya-metodologiya-razrabotki-agile (дата обращения: 6.12.2018).
4. 12th Annual State of Agile Report [Электронный ресурс] // URL: https://explore.versionone.com/state-of-agile/versionone-12th-annual-state-of-agile-report (дата обращения: 6.12.2018).
5. AGILE - гибкая система управления проектами [Электронный ресурс] // URL: https://4brain.ru/blog/agile/ (дата обращения: 6.12.2018).
6. Вольсон Б. Гибкие методологии разработки [Электронный ресурс] // URL: https://tados.ru/wp-
content/uploads/2017/04/Борис Вольфсон Гибкие методологии.pdf (дата обращения: 6.12.2018).
7. Extreme Programming: A gentle introduction [Электронный ресурс] // URL: http://www.extremeprogramming.org (дата обращения: 8.12.2018).
8. Практики XP [Электронный ресурс] // URL: http://skipy.ru/philosophy/xp.html#practics (дата обращения: 8.12.2018).
9. What is DSDM [Электронный ресурс] // URL: https://www.agilebusiness.org/what-is-dsdm (дата обращения: 9.12.2018).
10. Feature Driven Development (FDD) and Agile Modeling [Электронный ресурс] // URL: http://www.agilemodeling.com/essays/fdd.htm (дата обращения: 10.12.2018).