Практики от Екстремното Програмиране в Scrum
Scrum осигурява рамка за разработка на сложни продукти. Екстремното Програмиране предлага конкретни инженерни практики, които подобряват ефективността на Scrum, водещи до по-високо качество и по-бърза доставка.
Scrum е рамка. Тя дефинира роли, събития и артефакти. Тя не диктува как Разработчиците вършат работата си. Това е умишлено. Scrum е нарочно непълен, за да могат организациите да го адаптират към своя специфичен контекст. Екстремното Програмиране, или XP, предлага набор от инженерни практики, които се вписват добре в Scrum. Използването на XP практики помага на Разработчиците да създават Готов Инкремент всеки Спринт, последователно и с високо качество. Те осигуряват техническата дисциплина, която Scrum понякога не притежава сам по себе си.
Защо XP Практиките са Важни за Scrum
Ръководството на Scrum посочва, че Готовият Инкремент е предпоставка за емпиризъм. Ако работата не е Готова, инспектирана и адаптирана, тогава екипът не се учи наистина. XP практиките пряко подпомагат постигането на Готов Инкремент. Те се фокусират върху непрекъсната интеграция, автоматизирано тестване и чести пускания. Тези практики изграждат качеството от самото начало, намалявайки техническия дълг и увеличавайки доверието в продукта. Те помагат на Разработчиците да спазват Дефиницията за Готово последователно.
Разработка, Водена от Тестове (TDD)
TDD е XP практика, при която Разработчиците пишат автоматизирани тестове, преди да напишат продуктовия код. Този цикъл е червено, зелено, рефакторинг. Първо, напишете провалящ се тест (червено). След това, напишете минималния код, за да го накарате да премине (зелено). Накрая, рефакторирайте кода, за да подобрите дизайна му, без да променяте поведението му. TDD гарантира, че кодът е тестваем и осигурява незабавна обратна връзка. Той води до ясно разбиране на изискванията на много детайлно ниво. За Scrum Екип, TDD означава по-висококачествен код и по-малко дефекти, открити по-късно, което подкрепя Целта на Спринта.
Парно Програмиране
При парното програмиране, двама Разработчици работят заедно на една работна станция. Единият пише код, другият го преглежда и мисли за цялостния дизайн. Те сменят ролите си често. Тази практика води до по-малко дефекти, по-добър дизайн на кода и споделено знание в целия екип. Тя също така помага при въвеждането на нови членове на екипа и намалява риска от „bus factor“. За Scrum Екип, парното програмиране засилва самоуправлението и междуфункционалността на Разработчиците, тъй като знанието се разпространява по-ефективно в екипа.
Непрекъсната Интеграция и Разгръщане
Непрекъсната Интеграция (CI) означава интегриране на промени в кода често в споделено хранилище, често по няколко пъти на ден. Всяка интеграция се проверява чрез автоматизирана компилация и автоматизирани тестове. Тази практика улавя проблемите с интеграцията рано. Непрекъснатото Разгръщане (CD) разширява CI, като автоматично разгръща всички промени в кода, които преминават автоматизирани тестове, в продукция. За Scrum Екип, CI/CD гарантира, че Инкрементът винаги е потенциално готов за пускане. Това е в пълно съответствие с целта на Scrum за често доставяне на ценен, работещ софтуер.
- Автоматизирайте компилациите и тестовете да се изпълняват при всяко предаване на код.
- Поддържайте едно хранилище на изходния код.
- Уверете се, че всички Разработчици интегрират работата си поне веднъж на ден.
- Адресирайте незабавно всякакви грешки при компилация, за да поддържате здрава основна линия.
Рефакторинг
Рефакторингът е процес на преструктуриране на съществуващ компютърен код, без да се променя външното му поведение. Целта е да се подобрят нефункционалните атрибути на софтуера, като четимост, сложност, поддържаемост и разширяемост. Рефакторингът не е за добавяне на нови функции. Той е за поддържане на кодовата база чиста и адаптивна. За Scrum Екип, рефакторингът е постоянна дейност, която предотвратява натрупването на технически дълг. Той гарантира, че продуктът остава гъвкав, за да се адаптира към нови изисквания и промени, подкрепяйки дългосрочната гъвкавост.
Заключение
Scrum осигурява итеративната и инкрементална рамка. XP осигурява инженерната мускулатура. Когато Scrum Екип възприеме XP практики като TDD, парно програмиране, непрекъсната интеграция и рефакторинг, те изграждат по-висококачествени продукти по по-устойчив начин. Тези практики подсилват Scrum ценностите на ангажираност, фокус, откритост, уважение и смелост. Те помагат на Разработчиците последователно да доставят Готов Инкремент, правейки емпиризма на Scrum наистина ефективен.
