Екстремальне програмування
Цикл розробки програмного забезпечення |
---|
Програміст за роботою |
Діяльність і кроки |
Допоміжні дисципліни |
Практики |
Інструменти |
Стандарти та галузі знань |
Екстремальне програмування (XP від англ. extreme programming) — методологія розробки програмного забезпечення, найпопулярніша серед так званих гнучких методологій. Має на меті поліпшення якості програмного забезпечення та чутливість до змін у вимогах замовників. Як вид гнучких методологій, XP радить часті «випуски» програми у коротких циклах розробки, що має на меті поліпшити продуктивність праці та покращити можливості виконання вимог замовника, що змінюються. Авторами даної методології є Кент Бек, Ворд Каннінгем, Мартін Фаулер та інші.[джерело?]
Інші елементи екстремального програмування включають в себе: парне програмування, проведення обширної перевірки сирцевого коду, модульне тестування всього коду, уникання створення функціональності до того, як вона дійсно необхідна, простота та ясність коду, очікування на зміну вимог замовників з плином часу та коли вимоги до продукту стають ясніші, досить часте спілкування із замовником та між самими програмістами. Назва методології походить від ідеї застосувати корисні методи і практики розробки програмного забезпечення, піднявши їх до «екстремальних» рівнів.
Критики XP зауважують на потенційні недоліки цієї методології — нестабільні вимоги, незадокументовані компроміси конфліктів користувачів, відсутність загального документу дизайну програми.
Технологія екстремального програмування була розроблена Кентом Беком, Уардом Каннінґхемом та Роном Джеффріесом під час роботи над Chrysler Comprehensive Compensation System (C3). У 1996 Кент Бек став лідером проєкту і почав вдосконалювати методи розробки, що застосовувалися в роботі над проєктом. Свій метод він виклав у книзі «Extreme Programming Explained», котру було видано у жовтні 1999. Після купівлі Крайслера компанією Даймлер-Бенц проєкт C3 було скасовано у лютому 2000.
Хоча саме екстремальне програмування є відносно новим, багато її практик вже існували і використовувались протягом певного часу; однак, методологія підносить «найкращі практики» до екстремального рівня. Для прикладу, практика по плануванню і написанню тестів перед написанням кожної маленької частини коду було використано раніше в проєкті НАСА «Меркурій». Для зменшення часу на розробку ПЗ деякі формальні документи тестування (такі як приймальне тестування) писались паралельно (або й раніше) з написанням самого ПЗ. Незалежна група тестування НАСА може писати процедури тестування базуючись на формальних вимогах до продукту до того як програмне забезпечення розроблене та інтегроване в систему. В ХР ця концепція піднесена до «екстремального рівня» завдяки написанню автоматичних тестів які перевіряють поведінку навіть малих частинок коду, а не тільки значних функціональних частин ПЗ.
Посібник Extreme Programming Explained: Embrace Change описує Екстремальне Програмування, як:
- Спроба примирити гуманність і продуктивність
- Механізм для соціальної зміни
- Шлях до удосконалення
- Стиль розвитку
- Дисципліна розробки програмного забезпечення
Головною метою Екстремального Програмування є скорочення вартості неочікуваних змін. У традиційних методах розробки (на кшталт SSADM) вимоги до розвитку системи визначаються на початку роботи над проєктом, і часто виправляються пізніше. Це означає, що вартість проєкту через зміни буде більшою за заплановану (традиційна особливість для програмного забезпечення, що проєктується).
XP використовується для скорочення вартості змін, завдяки представленню простих значень, принципів і методів. При використанні екстремального програмування, проєкт повинен стати гнучкішим щодо змін.
Extreme Programming Explained описує екстремальне програмування як дисципліну розробки програмного забезпечення яка змушує людей створювати високоякісне ПЗ якомога швидше.
ХР намагається зменшити ціну зміни вимог до ПЗ завдяки малим циклам розробки, а не одним довгим циклом. Екстремальне програмування сприймає зміни до вимог як звичайні, неминучі та бажані аспекти розробки ПЗ, і ці зміни мають бути очікуваним. Основна ідея полягає в тому що неможливо розробити самодостатній пакет вимог до ПЗ, зміни в вимогах — неминучі.
Екстремальне програмування також вводить набір практик та принципів на основі методології гнучкої розробки програмного забезпечення.
Екстремальне програмування описує чотири базові активності що виконуються при розробці програмного забезпечення: написання коду, тестування, слухання та дизайн.
Прихильники ХР заявляють що єдиним дійсно важливим результатом розробки ПЗ є код: без готового коду нема продукту.
Методологія екстремального програмування заявляє, що якщо дрібне тестування може перевірити незначну частину функціональності, то багато дрібних тестів можуть перевірити набагато більше частинок і продукт в цілому.
Дванадцять основних прийомів екстремального програмування (за першим виданням книги Extreme programming explained) можуть бути об'єднані в чотири групи:
- Короткий цикл зворотного зв'язку (Fine scale feedback)
- Розробка через тестування (Test driven development)
- Гра в планування (Planning game)
- Замовник завжди поруч (Whole team, Onsite customer)
- Парне програмування (Pair programming)
- Безперервний, а не пакетний процес
- Безперервна інтеграція (Continuous Integration)
- Рефакторинг (Design Improvement, Refactor)
- Часті невеликі релізи (Small Releases)
- Розуміння, що поділяється всіма учасниками
- Простота (Simple design)
- Метафора системи (System metaphor)
- Колективне володіння кодом (Collective code ownership) або обраними шаблонами проєктування (Collective patterns ownership)
- Стандарт кодування (Coding standard or Coding conventions)
- Соціальна захищеність програміста (Programmer welfare) :
- 40-годинний робочий тиждень (Sustainable pace, Forty hour week)
- Кент Бек. Экстремальное программирование. — СПб : Питер, 2002. — ISBN 5-94723-032-1.(рос.)
- Кент Бек, Мартин Фаулер. Экстремальное программирование: планирование. — СПб : Питер, 2003. — ISBN 5-318-00111-4.(рос.)
- Кент Бек. Экстремальное программирование: разработка через тестирование. — СПб : Питер, 2003. — ISBN 5-8046-0051-6.(рос.)
- Кен Ауэр, Рой Миллер. Экстремальное программирование: постановка процесса с первых шагов и до победного конца. — СПб : Питер, 2003. — ISBN 5-318-00132-7.(рос.)