Merhaba. Bu yazımızda Extreme Programming Nedir? konusunu inceleyeceğiz. Bu Ekstrem programlama (XP), yazılım kalitesini ve değişen müşteri gereksinimlerine yanıt verebilirliği iyileştirmeyi amaçlayan bir yazılım geliştirme metodolojisidir.
Extreme Programming Nedir?
Ekstrem programlama (XP), yazılım kalitesini ve değişen müşteri gereksinimlerine yanıt verebilirliği iyileştirmeyi amaçlayan bir yazılım geliştirme metodolojisidir. Çevik yazılım geliştirmenin bir türü olarak, üretkenliği artırmayı ve yeni müşteri gereksinimlerinin benimsenebileceği kontrol noktalarını tanıtmayı amaçlayan kısa geliştirme döngülerinde sık sık yayınları savunur.
Extreme Programming Nedir?
Aşırı programlamanın diğer unsurları şunları içerir: çiftler halinde programlama veya kapsamlı kod incelemesi yapma, tüm kodların birim testi, gerçekten ihtiyaç duyulana kadar programlama özellikleri, düz bir yönetim yapısı, kod basitliği ve netliği, zaman geçtikçe müşterinin gereksinimlerinde değişiklik bekleme ve problem daha iyi anlaşılır ve müşteri ile programcılar arasında sık iletişim kurulur.
Metodoloji, adını geleneksel yazılım mühendisliği uygulamalarının yararlı unsurlarının “aşırı” boyutlara taşınması fikrinden alır. Örnek olarak, kod incelemeleri yararlı bir uygulama olarak kabul edilir; aşırıya kaçıldığında, kod sürekli olarak gözden geçirilebilir (yani ikili programlama uygulaması).
Extreme Programming Tarihi
Kent Beck, Chrysler Kapsamlı Tazminat Sistemi (Comprehensive Compensation System (C3)) bordro projesi üzerindeki çalışması sırasında aşırı programlama yöntemini geliştirdi. Beck, Mart 1996’da C3 projesinin lideri oldu. Projede kullanılan geliştirme metodolojisini iyileştirmeye başladı ve metodoloji üzerine bir kitap yazdı (Ekim 1999’da yayınlanan Extreme Programming Really,).] Chrysler, Daimler-Benz’in şirketi satın almasıyla yedi yıl sonra Şubat 2000’de C3 projesini iptal etti. Ward Cunningham, XP üzerinde bir başka önemli etkiydi.
Pek çok aşırı programlama uygulaması bir süredir ortalıkta dolaşıyor; metodoloji “en iyi uygulamaları” aşırı seviyelere taşır. Örneğin, “önce test geliştirme, planlama ve her mikro artıştan önce testler yazma uygulaması”, 1960’ların başlarında NASA’nın Mercury Projesi kadar erken bir tarihte kullanıldı.
Toplam geliştirme süresini kısaltmak için, yazılımın teste hazır hale gelmesiyle paralel olarak (veya kısa bir süre önce) bazı resmi test belgeleri (kabul testi gibi) geliştirilmiştir. NASA’dan bağımsız bir test grubu, programcılar yazılımı yazmadan ve donanımla entegre etmeden önce test prosedürlerini resmi gereksinimlere ve mantıksal sınırlara göre yazabilir. XP, yalnızca daha büyük özellikleri test etmek yerine, yazılım kodlamanın küçük bölümlerinin bile çalışmasını doğrulayan otomatik testler (bazen yazılım modüllerinin içinde) yazarak bu kavramı uç bir düzeye taşır.
1990’larda yazılım geliştirmeyi şekillendiren iki ana etki:
- Dahili olarak, nesne yönelimli programlama, bazı geliştiriciler tarafından tercih edilen programlama paradigması olarak prosedürel programlamanın yerini aldı.
- Harici olarak, İnternetin yükselişi ve nokta iletişim patlaması, rekabetçi iş faktörleri olarak pazara giriş hızını ve şirket büyümesini vurguladı.
Hızla değişen gereksinimler, daha kısa ürün yaşam döngüleri gerektiriyordu ve genellikle geleneksel yazılım geliştirme yöntemleriyle çatışıyordu.
Chrysler Kapsamlı Tazminat Sistemi (C3), dil olarak Smalltalk ve veri erişim katmanı olarak GemStone olmak üzere Chrysler’deki bordro sistemlerini araştırma nesnesi olarak kullanarak, nesne teknolojilerini kullanmanın en iyi yolunu belirlemek için başlatıldı. Chrysler, önde gelen Smalltalk uygulayıcılarından Kent Beck’i sistemde performans ayarlaması yapması için getirdi, ancak geliştirme süreciyle ilgili çeşitli sorunları fark ettikçe rolü genişledi. Sık sık birlikte çalıştığı Ward Cunningham ile yaptığı çalışmaya dayanarak, geliştirme uygulamalarında bazı değişiklikler önermek ve uygulamak için bu fırsatı değerlendirdi. Beck, yöntemlerin ilk kavramlarını anlatıyor
Beck, bu yöntemleri geliştirmeye ve iyileştirmeye yardımcı olması için Ron Jeffries’i projeye davet etti. Jeffries daha sonra uygulamaları C3 ekibine alışkanlık olarak aşılamak için bir koç olarak hareket etti.
XP’nin arkasındaki ilke ve uygulamalar hakkındaki bilgiler, Cunningham’ın WikiWikiWeb’i olan orijinal wiki’deki tartışmalar yoluyla daha geniş dünyaya yayıldı. Katkıda bulunan çeşitli kişiler fikirleri tartıştı ve genişletti ve bazı yan ürün metodolojileri ortaya çıktı (bkz. çevik yazılım geliştirme). Ayrıca, XP kavramları [kim tarafından?], birkaç yıldır, 1999 dolaylarında http://www.extremeprogramming.org adresindeki XP web sitesinde bir köprü metni sistem haritası kullanılarak açıklanmıştır.
Beck, XP üzerine bir dizi kitap düzenledi ve kendi Extreme Programming Really’den (1999, ISBN 0-201-61641-6) başlayarak fikirlerini çok daha geniş bir kitleye yaydı.
Extreme Programming Süreci ve Rolleri
XP çerçevesi normalde sürekli yinelenen geliştirme sürecinin 5 aşamasını veya aşamasını içerir:
- İlk aşama olan planlama, müşterinin geliştirme ekibiyle tanıştığı ve istenen sonucu açıklamak için gereksinimleri kullanıcı hikayeleri şeklinde sunduğu zamandır. Ekip daha sonra hikayeleri tahmin eder ve gerekli işlevselliği parça parça kapsamak için gereken yinelemelere bölünmüş bir sürüm planı oluşturur. Hikayelerden biri veya daha fazlası tahmin edilemiyorsa, sözde ani yükselmeler ortaya çıkabilir, bu da daha fazla araştırmaya ihtiyaç olduğu anlamına gelir.
- Tasarım aslında planlama sürecinin bir parçasıdır, ancak önemini vurgulamak için ayrılabilir. Aşağıda tartışacağımız ana XP değerlerinden biri olan basitlik ile ilgilidir. İyi bir tasarım, sisteme mantık ve yapı getirir ve gereksiz karmaşıklıklardan ve fazlalıklardan kaçınmaya olanak tanır.
- Kodlama, kodlama standartları, ikili programlama, sürekli entegrasyon ve toplu kod sahipliği gibi belirli XP uygulamalarının uygulanmasıyla gerçek kodun oluşturulduğu aşamadır (listenin tamamı aşağıda açıklanmıştır).
- Test, aşırı programlamanın özüdür. Hem birim testlerini (geliştirilen özelliğin düzgün çalışıp çalışmadığını belirlemek için otomatik test) hem de kabul testlerini (genel sistemin başlangıç gereksinimlerine göre oluşturulduğunu doğrulamak için müşteri testi) içeren düzenli etkinliktir.
- Dinlemek, tamamen sürekli iletişim ve geri bildirim ile ilgilidir. Müşteriler ve proje yöneticileri, iş mantığını ve beklenen değeri tanımlamaya dahil edilir.
Böyle bir geliştirme süreci, her biri kendi görev ve sorumluluklarına sahip birkaç katılımcı arasındaki işbirliğini gerektirir. Aşırı programlama, iletişim, işbirliği, yanıt verme ve geri bildirim gibi sosyal becerilerin değerini ve önemini vurgulayarak insanları sistemin merkezine koyar. Dolayısıyla, bu roller genellikle XP ile ilişkilendirilir:
- Müşterilerin, kullanıcı hikayeleri oluşturarak, sürekli geri bildirim sağlayarak ve projeyle ilgili tüm gerekli iş kararlarını alarak geliştirme sürecine yoğun bir şekilde katılmaları beklenir.
- Programcılar veya geliştiriciler, ürünü gerçekten oluşturan ekip üyeleridir. Kullanıcı öykülerini uygulamaktan ve kullanıcı testleri yapmaktan sorumludurlar (bazen ayrı bir Test Kullanıcısı rolü ayrılır). XP genellikle işlevler arası ekiplerle ilişkilendirildiğinden, bu tür üyelerin beceri seti farklı olabilir.
- İzleyiciler veya yöneticiler, müşterileri ve geliştiricileri birbirine bağlar. Bu gerekli bir rol değildir ve geliştiricilerden biri tarafından gerçekleştirilebilir. Bu kişiler buluşmaları organize eder, tartışmaları düzenler ve önemli ilerleme KPI’larını takip eder.
- Antrenörler, XP uygulamalarının anlaşılmasına yardımcı olmak için takımlara mentor olarak dahil edilebilir. Genellikle geliştirme sürecine dahil olmayan, ancak daha önce XP kullanmış olan ve bu nedenle hatalardan kaçınmaya yardımcı olabilecek bir dış asistan veya dış danışmandır.
XP Değerleri ve Rolleri
90’ların sonlarında Ken Beck, aşırı programlamayı tanımlayan ve ekip içinde daha etkili işbirliğine ve nihayetinde daha yüksek ürün kalitesine yol açan bir dizi belirli değer ve ilkeyi özetledi.
Extreme Programming değerleri
XP’nin ekip çalışmasına rehberlik edecek 5 değere dayanan basit kuralları vardır:
- İletişim. Ekipteki herkes projenin her aşamasında birlikte çalışır.
- Basitlik. Geliştiriciler, zamandan ve emekten tasarruf sağladığından, bir ürüne daha fazla değer katan basit kod yazmaya çalışırlar.
- Geri bildirim. Ekip üyeleri sık sık yazılım teslim eder, bununla ilgili geri bildirim alır ve yeni gereksinimlere göre bir ürünü geliştirir.
- Saygı. Bir projeye atanan her kişi ortak bir amaca katkıda bulunur.
- Cesaret. Programcılar, mazeret göstermeden kendi sonuçlarını objektif olarak değerlendirir ve değişikliklere her zaman yanıt vermeye hazırdır.
Bu değerler, ortak bir hedefe ulaşma yolunda ellerinden gelenin en iyisini yapan motive olmuş takım oyuncularının belirli bir zihniyetini temsil eder. XP ilkeleri bu değerlerden türer ve bunları daha somut şekillerde yansıtır.
XP İlkeleri
Çoğu araştırmacı, 5 XP ilkesini şu şekilde belirtir:
- Hızlı geri bildirim. Ekip üyeleri verilen geri bildirimi anlar ve hemen tepki verir.
- Varsayılan basitlik. Geliştiricilerin o anda önemli olan işe odaklanmaları ve YAGNI (İhtiyacın Olmayacak) ve DRY (Kendini Tekrar Etme) ilkelerini takip etmeleri gerekiyor.
- Kademeli değişiklikler. Bir üründe adım adım yapılan küçük değişiklikler, bir kerede yapılan büyük değişikliklerden daha iyi sonuç verir.
- Değişimi kucaklamak. Bir müşteri bir ürünün değiştirilmesi gerektiğini düşünürse, programcılar bu kararı desteklemeli ve yeni gereksinimlerin nasıl uygulanacağını planlamalıdır.
- Kaliteli iş. İyi çalışan, değerli bir ürün yapan ve bununla gurur duyan bir ekip.
XP’nin temel değerlerini ve ilkelerini tartıştıktan sonra, bu çerçevenin doğasında bulunan uygulamalara daha yakından bakalım.
Kaynak
Extreme Programming Nedir? konusu bu kadardı arkadaşlar. Diğer yazılarımızda görüşmek üzere…
Üretim ve Yönetim Sistemlerinin Tarihsel Gelişimi konulu tüm yazılarım için tıklayabilirsiniz. Daha fazla Programlama ve Proje Yönetim Sistemleri kategorisinden yazı görmek isterseniz bu bağlantılara tıklayabilirsiniz.
Discord sunucuma katılmayı unutmayın. :D
Teknoloji ve Kodla kalın.