• Kent Beck - Ekstrem Programlama. Test odaklı geliştirme. Ekstrem Programlama (XP) cesareti zayıf olanlara göre değildir

    Ve diğerleri.

    Metodolojinin adı, faydalı geleneksel geliştirme yöntem ve uygulamalarının uygulanması fikrinden gelmektedir. yazılım onları yeni bir "aşırı" seviyeye taşıyor. Örneğin, bir programcının başka bir programcı tarafından yazılan kodu kontrol etmesinden oluşan kod revizyonunu "ekstrem" versiyonda gerçekleştirme uygulaması, bir programcı ve ortağının aynı anda kodlama yaptığı "eşli programlama"dır. az önce yazdığı kodu sürekli olarak gözden geçirir.

    Ansiklopedik YouTube

      1 / 5

      Ekstrem Programlama (XP) - Temel Teknikler

      Hexlet Web Semineri #6: Ekstrem Programlama

      Hayat İpuçları. Neden programlama yarışmalarına katılmalısınız?

      032. Çift programlama - Sergey Berezhnoy

      Kanal aşırı programlama v. 2.0

      Altyazılar

    Temel XP Teknikleri

    Aşırı programlamanın on iki temel tekniği (kitabın ilk baskısına dayanmaktadır) Ekstrem programlamanın açıklaması) dört gruba birleştirilebilir:

    • Kısa geri bildirim döngüsü (İnce ölçekli geri bildirim)
      • Test odaklı geliştirme
      • Planlama oyunu
      • Müşteri her zaman yakındadır (Tüm ekip, Yerinde müşteri)
      • Çiftler programı
    • Toplu işlem yerine sürekli
      • Sürekli entegrasyon
      • Yeniden Düzenleme (Tasarım iyileştirme, Yeniden Düzenleme)
      • Sık sık küçük sürümler
    • Herkes tarafından paylaşılan anlayış
      • Sadelik (Basit tasarım)
      • Sistem metaforu
      • Toplu kod sahipliği veya seçilen tasarım desenleri (Toplu kalıp sahipliği)
      • Kodlama standardı veya Kodlama kuralları
    • Programcı refahı:
      • Haftada 40 saatlik çalışma (Sürdürülebilir tempo, Haftada kırk saat)

    Test yapmak

    XP, otomatik testler yazmayı içerir (başka bir testin mantığını test etmek için özel olarak yazılan program kodu). program kodu). İki tür teste özellikle dikkat edilir:

    • modüllerin birim testi;

    Bir geliştirici, geliştirdiği sistemin modüllerinin tüm testleri kesinlikle çalışana kadar yazdığı kodun doğruluğundan emin olamaz. Birim testleri (birim testleri), geliştiricilerin her birinin ayrı ayrı doğru çalıştığını doğrulamasını sağlar. Ayrıca diğer geliştiricilerin belirli bir kod parçasına neden ihtiyaç duyulduğunu ve nasıl çalıştığını anlamalarına da yardımcı olurlar - test kodunu incelerken, test edilen kodun mantığı netleşir, çünkü nasıl kullanılması gerektiği açıktır. Birim testleri ayrıca geliştiricinin endişelenmeden yeniden düzenleme yapmasına olanak tanır.

    Fonksiyonel testler, birkaç (çoğunlukla oldukça etkileyici boyutta) parçanın etkileşimi ile oluşan mantığın işleyişini test etmek için tasarlanmıştır. Birim testlerinden daha az ayrıntılıdırlar ancak çok daha fazlasını kapsarlar; yani, daha büyük miktarda kodu kapsayan testlerin yürütüldüğünde herhangi bir yanlış davranışı tespit etme olasılığı açıktır. Bu nedenle içinde endüstriyel programlama Fonksiyonel testlerin yazılması genellikle birim testlerin yazılmasına göre önceliklidir.

    XP için, TDD (İngilizce test odaklı geliştirme - test yoluyla geliştirme) adı verilen yaklaşım daha yüksek bir önceliktir. Bu yaklaşımda, önce başlangıçta başarısız olan bir test yazarsınız (çünkü test etmesi gereken mantık henüz mevcut değildir), ardından testi geçmek için gereken mantığı uygularsınız. TDD bir anlamda kullanımı daha uygun kod yazmanıza olanak tanır - çünkü bir test yazarken, henüz bir mantık olmadığında, gelecekteki sistemin rahatlığına dikkat etmek en kolay yoldur.

    Planlama oyunu

    Planlama oyununun temel amacı hızlı bir şekilde oluşturmaktır. Kaba plançalışın ve görevin koşulları netleştikçe onu sürekli güncelleyin. Planlama oyununun eserleri, üzerine müşteri isteklerinin (müşteri hikayeleri) yazıldığı bir dizi kağıt kart ve ürünün bir sonraki bir veya daha fazla küçük versiyonunun piyasaya sürülmesi için kaba bir çalışma planıdır. Bu planlama tarzını etkili kılan kritik faktör, bu durumda müşteri iş kararlarının alınmasından, geliştirme ekibi ise teknik kararların alınmasından sorumludur. Bu kurala uyulmazsa tüm süreç çöker.

    Müşteri her zaman oradadır

    XP'deki "müşteri" faturaları ödeyen değil, son kullanıcı yazılım ürünü. XP, müşterinin her zaman iletişim halinde olması ve soruları için hazır olması gerektiğini belirtir.

    Çiftler programı

    Çiftler programı tüm kodun aynı bilgisayarda çalışan programcı çiftleri tarafından oluşturulduğunu varsayar. Bunlardan biri doğrudan program metniyle çalışır, diğeri ise çalışmasına bakar ve izler. Büyük resim ne oluyor. Gerekirse klavye serbestçe birinden diğerine aktarılabilir. Bir proje üzerinde çalışırken çiftler sabit değildir: takımdaki her programcının tüm sistemi iyi anlayabilmesi için bunların karıştırılması önerilir. Bu şekilde eşli programlama ekip içindeki etkileşimi artırır.

    Sürekli Entegrasyon

    Yeterince sık geliştirilmekte olan sistemi entegre ederseniz, onunla ilgili sorunların çoğundan kaçınabilirsiniz. Geleneksel yöntemlerde entegrasyon genellikle bir ürün üzerinde çalışmanın en sonunda, geliştirilmekte olan sistemin tüm bileşenlerinin tamamen hazır olduğu düşünüldüğünde gerçekleştirilir. XP'de, geliştiriciler tüm birim testlerinin doğru çalıştığından emin olduktan sonra, tüm sistemin kod entegrasyonu günde birkaç kez gerçekleştirilir.

    Yeniden Düzenleme

    Yeniden düzenleme, kodun işlevselliğini değiştirmeden iyileştirmeye yönelik bir tekniktir. XP, kod bir kez yazıldığında, proje süresince neredeyse kesinlikle birkaç kez yeniden yazılacağı anlamına gelir. XP geliştiricileri, geliştirmek için önceden yazılmış kodu acımasızca yeniden işler. Bu işleme yeniden düzenleme denir. Test kapsamının olmayışı, sistemi kırma korkusu nedeniyle yeniden düzenlemenin reddedilmesine neden olur ve bu da kodun kademeli olarak bozulmasına yol açar.

    Sık sık küçük sürümler

    Ürünün sürümleri (sürümleri) mümkün olduğunca sık hizmete sunulmalıdır. Her sürümün tamamlanması mümkün olduğunca az zaman almalıdır. Ayrıca her versiyonun işe yararlılık açısından yeterince anlamlı olması gerekir.

    Ürünün ilk çalışan versiyonu ne kadar erken piyasaya sürülürse, müşteri o kadar çabuk ek kar elde etmeye başlar. Bugün kazanılan paranın yarın kazanılan paradan daha değerli olduğunu unutmayın. Müşteri ürünü ne kadar erken kullanmaya başlarsa, geliştiriciler müşterinin gereksinimlerini neyin karşıladığı konusunda ondan o kadar çabuk bilgi alacaktır. Bu bilgiler bir sonraki sürümünüzü planlarken son derece yararlı olabilir.

    Tasarım kolaylığı

    XP, çalışma süreci boyunca problemin koşullarının tekrar tekrar değişebileceği gerçeğinden yola çıkıyor, bu da geliştirilmekte olan ürünün bütünüyle önceden tasarlanmaması gerektiği anlamına geliyor. Bir sistemi en baştan detaylı bir şekilde tasarlamaya çalışmak zaman kaybıdır. XP, tasarımın proje boyunca sürekli yapılması gereken önemli bir süreç olduğunu varsayar. Tasarım, sürekli değişen gereksinimler dikkate alınarak küçük adımlarla gerçekleştirilmelidir. Herhangi bir zamanda mevcut problemin çözümüne uygun en basit tasarımı kullanmaya çalışmalı ve problemin koşulları değiştikçe onu değiştirmelisiniz.

    Sistem metaforu

    Mimarlık, bir sistemin bileşenleri ve bunların birbirleriyle ilişkileri hakkında bir fikirdir. Geliştiricilerin, sistemin neresine yeni işlevsellik eklenmesi gerektiğini ve yeni bileşenin neyle etkileşime gireceğini anlamak için yazılım mimarisini analiz etmeleri gerekir.

    Sistem metaforu çoğu teknikte mimari olarak adlandırılan şeyin bir benzeridir. Sistem metaforu, ekibe sistemin şu anda nasıl çalıştığı, yeni bileşenlerin nereye eklendiği ve bunların hangi formu alması gerektiği konusunda fikir verir.

    İyi bir metafor seçmek, geliştirme ekibinin sistemin nasıl çalıştığını anlamasını kolaylaştırır. Bazen bunu yapmak kolay değildir.

    Kodlama Standartları

    Tüm ekip üyelerinin çalışırken ortak kodlama standartlarına uyması gerekir. Böylece:

    • ekip üyeleri projedeki çalışma hızını aslında etkilemeyen şeyler hakkında tartışarak zaman kaybetmezler;
    • diğer uygulamaların etkin bir şekilde uygulanması sağlanır.

    Bir ekip tutarlı kodlama standartları kullanmazsa geliştiricilerin yeniden düzenleme yapması daha zor hale gelir; çiftlerde partner değiştirirken daha fazla zorluk ortaya çıkar; genel olarak projenin ilerlemesi zorlaşıyor. XP'de, şu veya bu kod parçasının yazarının kim olduğunu anlamanın zor olmasını sağlamak gerekir - tüm ekip tek bir kişi gibi birlikte çalışır. Ekip bir dizi kural oluşturmalı ve ardından her ekip üyesi kodlama sürecinde bu kurallara uymalıdır. Kural listesi kapsamlı veya çok hacimli olmamalıdır. Amaç, kodu ekipteki herkes için anlaşılır kılan genel yönergeler sağlamaktır. Kodlama standardı basit bir şekilde başlamalı ve geliştirme ekibi deneyim kazandıkça giderek daha karmaşık hale gelmelidir. Standardın ön geliştirmesi için çok fazla zaman harcamanıza gerek yoktur.

    Kolektif mülkiyet

    Kolektif mülkiyet her ekip üyesinin tüm kaynak kodundan sorumlu olduğu anlamına gelir. Böylece herkes programın herhangi bir bölümünde değişiklik yapma hakkına sahiptir. Eşli programlama bu uygulamayı destekler: farklı çiftler halinde çalışarak tüm programcılar sistem kodunun tüm bölümlerine aşina olur. Paylaşılan kod sahipliğinin önemli bir avantajı, geliştirme sürecini hızlandırmasıdır; çünkü bir hata oluşursa herhangi bir programcı bunu düzeltebilir.

    Ekleyen: Çarş, 01/25/2012 - 02:28

    7. Uyarlanabilir geliştirme süreci modelleri: Scrum

    Şu anda daha yaygın hale geliyorlar uyarlanabilir veya hafif e, “canlı” (çevik) geliştirme süreçleri
    Onlar bu kadar katı bir düzenlemeye gerek yok, itiraf etmek Müşteri gereksinimlerinde sık ve önemli değişiklik olasılığı

    Uyarlanabilir Süreçler odaklan kullanmak iyi geliştiriciler yerleşik geliştirme süreçlerinden ziyade
    Onlar Net eylem kalıplarını sabitlemekten kaçının Her özel projede daha fazla esneklik sağlamak ve ek ara belgelerin geliştirilmesini gerektirmemek

    Canlı gelişimin ilkeleri

    Canlı yazılım geliştirmenin temel ilkeleri 2000 yılında ortaya çıkan manifestoda kaydedilenler: =

    1. Bir projede yer alan kişiler ve onların iletişimi, süreç ve araçlardan daha önemlidir
    2. Çalışan bir program kapsamlı dokümantasyondan daha önemlidir
    3. Müşteriyle işbirliği, sözleşme ayrıntılarını tartışmaktan daha önemlidir
    4. Değişiklikler üzerinde çalışmak planlara bağlı kalmaktan daha önemlidir

    Ekstrem Programlama

    En çok kullanılan uyarlanabilir model dır-dir aşırı programlama modeli(eXtreme Programlama, XP süreci)
    XP süreç odaklı belirsiz veya hızla değişen gereksinimler altında yazılım geliştiren küçük ve orta ölçekli ekiplere bölünebilir

    XP Süreci (Ekstrem Programlama)

    XP sürecinin temel fikriDeğişiklik yapmanın yüksek maliyetini ortadan kaldırın. Bu başarıldı bireysel yinelemelerin süresini keskin bir şekilde (iki haftaya kadar) azaltarak.
    XP'nin temel eylemleri şunlardır:=

    1. kodlama,
    2. test yapmak,
    3. müşteriyi dinlemek,
    4. tasarım

    XP İlkeleri

    Yüksek dinamizm gelişme aşağıdaki ilkelerle sağlanır:=

    1. Müşteri ile sürekli iletişim halinde olan,
    2. Seçilen çözümlerin basitliği,
    3. Operasyonel testlere dayalı hızlı geri bildirim,
    4. risk önleme

    XP geliştirme uygulamaları

    Bu ilkelerin uygulanması sağlanır aşağıdaki yöntemleri kullanarak:=

    1. Metafor– tüm geliştirmeler sistemin nasıl çalıştığına dair basit, kamuya açık bir hikayeye dayanmaktadır
    2. Basit tasarım– mümkün olan en basit tasarım çözümleri benimsenmiştir
    3. Sürekli test hem bireysel modüller hem de bir bütün olarak sistem; kod yazmak için giriş kriteri başarısız bir test senaryosudur
    4. Tanzimat(Yeniden Düzenleme) - davranışını korurken sistemin yapısını iyileştirmek
    5. Çiftler programı e – kod iki programcı tarafından bir bilgisayarda yazılır
    6. Toplu kod sahipliği– herhangi bir geliştirici herhangi bir sistem modülünün kodunu iyileştirebilir
    7. Sürekli Entegrasyonsistem mümkün olduğunca sık entegre edilir; Sürekli regresyon testi, gereksinimler değiştikçe işlevselliğin aynı kalmasını sağlar
    8. Yerel müşteri– Müşterinin yetkili bir temsilcisi her zaman grupta bulunmalıdır
    9. Kodlama Standartları– Sistemin her yerinde aynı kod sunumunu sağlamak için kurallara uyulmalıdır

    XP geliştirme şeması

    XP görüntüsü (XP geliştirme şeması):

    Scrum modeli

    Uyarlanabilir geliştirme sürecinin başka bir örneğidir (daha önce bakmıştık)
    Modelin ana fikirleri 1986 yılında Hirotaka Takeuchi ve Ikujiro Nonaka tarafından formüle edildi.

    Scrum modelinin ana fikri


    Deneysel gerçek:
    Küçük, çapraz fonksiyonlu ekipler tarafından üzerinde çalışılan projeler sistematik olarak daha iyi sonuçlar üretme eğilimindedir

    Takeuki ve Nonata bunu şu şekilde açıkladılar: "ragbi yaklaşımı" ve terimin kendisini tanıttı

    "hücum"- "ezmek; topun etrafında hücum etmek (rugby'de)"

    Scrum yöntemi ilk kez 1996 yılında Sutherland ve Schwaber tarafından ortaklaşa belgelenmiş biçimde sunuldu.

    Roller

    1. Saldırı ustası Süreçlerle ilgilenen ve proje yöneticisi olarak çalışan,
    2. Ürün sahibi, son kullanıcıların ve ürünle ilgilenen diğer tarafların çıkarlarını temsil eden kişi,
    3. Takım geliştiricileri içeren

    Geliştirme aşamaları

    Geliştirme süreci aşağıdakilere ayrılmıştır: belirli bir sürenin ayrı aşamaları - sprintler(genellikle 15-30 gün)
    Her sprint öncesinde ürün biriktirme listesi adı verilen bir aşama gelir– iş taleplerinin belgelenmesi

    Sprint planlama

    İş talepleri Sprint Planlama Kurulu aşamasında belirlenir – sprint planlama toplantısı

    Sprint planlama
    Bu toplantı sırasında Ürün Sahibi tamamlanması gereken görevler hakkında bilgi verir.
    Takım bir sonraki sprintte gerekli parçaları tamamlamak için ne kadarını başarmak istediklerini belirler.

    Bir sprint yürütmek

    Bir sprint sırasında takım tamamlar belirli bir sabit görev listesi - biriktirme listesi öğeleri yazılım ürününün işlevselliğini arttırmak

    Bu süreçte hiç kimsenin iş gereksinimleri listesini değiştirme hakkı yoktur bir sprint sırasında donma gereksinimleri olarak anlaşılmalıdır

    Scrum diyagramı =

    Referans cevabının metni (zorunlu olarak konumlandırmıyorum)

    Ekstrem Programlama

    Temel XP Teknikleri

    · Kısa geri bildirim döngüsü (İnce ölçekli geri bildirim)

    o Test odaklı geliştirme

    o Planlama oyunu

    o Müşteri her zaman yakındadır (Tüm ekip, Yerinde müşteri)

    o Eşli programlama

    Toplu işlem yerine sürekli

    o Sürekli Entegrasyon

    o Yeniden Düzenleme (Tasarım İyileştirme, Yeniden Düzenleme)

    o Sık Küçük Sürümler

    · Herkes tarafından paylaşılan anlayış

    o Sadelik (Basit tasarım)

    o Sistem metaforu

    o Kolektif kod sahipliği veya seçilmiş tasarım modelleri (Kolektif kalıp sahipliği)

    o Kodlama standardı veya Kodlama kuralları

    · Programcı refahı:

    o Haftada 40 saatlik çalışma (Sürdürülebilir tempo, Haftada kırk saat)

    Test yapmak

    XP iki tür teste özellikle önem vermektedir:

    · birim testi;

    · Kabul testleri.

    Bir geliştirici, geliştirdiği sistemin modüllerinin tüm testleri kesinlikle çalışana kadar yazdığı kodun doğruluğundan emin olamaz. Birim testleri, geliştiricilerin kodlarının düzgün çalıştığını doğrulamasını sağlar. Ayrıca diğer geliştiricilerin belirli bir kod parçasına neden ihtiyaç duyulduğunu ve nasıl çalıştığını anlamalarına da yardımcı olurlar. Birim testleri ayrıca geliştiricinin endişelenmeden yeniden düzenleme yapmasına olanak tanır.

    Kabul testleri, sistemin gerçekten belirtilen yeteneklere sahip olmasını sağlar. Ayrıca kabul testleri, geliştirilmekte olan ürünün doğru çalıştığını doğrulamanıza olanak tanır.

    XP için, TDD (Test Odaklı Geliştirme) adı verilen bir yaklaşım daha yüksek önceliğe sahiptir - önce geçemeyen bir test yazılır, ardından kod, testin geçmesi için yazılır ve ancak bundan sonra kod yeniden düzenlenir.

    Planlama oyunu

    Planlama oyununun temel amacı hızlı bir şekilde kaba bir çalışma planı oluşturmak ve sorun koşulları netleştikçe bu planı sürekli güncellemektir. Planlama oyununun eserleri, üzerine müşteri isteklerinin (müşteri hikayeleri) yazıldığı bir dizi kağıt kart ve ürünün bir sonraki bir veya daha fazla küçük versiyonunun piyasaya sürülmesi için kaba bir çalışma planıdır. Bu planlama tarzını etkili kılan kritik faktör, bu durumda iş kararlarının alınmasından müşterinin, teknik kararların alınmasından ise geliştirme ekibinin sorumlu olmasıdır. Bu kurala uyulmazsa tüm süreç çöker.

    Müşteri her zaman oradadır

    XP'de "müşteri" faturaları ödeyen değil, sistemi gerçekten kullanan kişidir. XP, müşterinin her zaman iletişim halinde olması ve soruları için hazır olması gerektiğini belirtir.

    Çiftler programı

    Eşli programlama, aynı bilgisayarda çalışan programcı çiftleri tarafından oluşturulan tüm kodları içerir. Bunlardan biri doğrudan program metniyle çalışır, diğeri ise çalışmasına bakar ve olup bitenlerin genel resmini izler. Gerekirse klavye serbestçe birinden diğerine aktarılır. Bir proje üzerinde çalışırken çiftler sabit değildir: takımdaki her programcının tüm sistemi iyi anlayabilmesi için bunların karıştırılması önerilir. Bu şekilde eşli programlama ekip içindeki işbirliğini geliştirir.

    Sürekli Entegrasyon

    Geliştirdiğiniz sistemi yeterince sık entegre ederseniz, onunla ilgili sorunların çoğundan kaçınabilirsiniz. Geleneksel yöntemlerde entegrasyon genellikle bir ürün üzerinde çalışmanın en sonunda, geliştirilmekte olan sistemin tüm bileşenlerinin tamamen hazır olduğu düşünüldüğünde gerçekleştirilir. XP'de, geliştiriciler tüm birim testlerinin doğru çalıştığından emin olduktan sonra, tüm sistemin kod entegrasyonu günde birkaç kez gerçekleştirilir.

    Yeniden Düzenleme

    Bu, işlevselliğini değiştirmeden kodu geliştirmeye yönelik bir tekniktir. XP, kod bir kez yazıldığında, proje süresince neredeyse kesinlikle birkaç kez yeniden yazılacağı anlamına gelir. XP geliştiricileri, geliştirmek için önceden yazılmış kodu acımasızca yeniden işler. Bu işleme yeniden düzenleme denir. Test kapsamının olmayışı, sistemi kırma korkusu nedeniyle yeniden düzenlemenin reddedilmesine neden olur ve bu da kodun kademeli olarak bozulmasına yol açar.

    Sık sık küçük sürümler

    Ürünün sürümleri (sürümleri) mümkün olduğunca sık hizmete sunulmalıdır. Her sürümün tamamlanması mümkün olduğunca az zaman almalıdır. Ayrıca her versiyonun işe yararlılık açısından yeterince anlamlı olması gerekir.

    Ürünün ilk çalışan versiyonunu ne kadar erken yayınlarsak, müşteri o kadar erken üründen ek kar elde etmeye başlayacaktır. Bugün kazanılan paranın yarın kazanılan paradan daha değerli olduğunu unutmayın. Müşteri ürünü ne kadar erken kullanmaya başlarsa, geliştiriciler müşterinin gereksinimlerini neyin karşıladığı konusunda ondan o kadar çabuk bilgi alacaktır. Bu bilgiler bir sonraki sürümünüzü planlarken son derece yararlı olabilir.

    Tasarımın basitliği

    XP, çalışma süreci boyunca problemin koşullarının tekrar tekrar değişebileceği gerçeğinden yola çıkıyor, bu da geliştirilmekte olan ürünün bütünüyle önceden tasarlanmaması gerektiği anlamına geliyor. İlk başladığınızda bir sistemi baştan sona detaylı bir şekilde tasarlamaya çalışırsanız zamanınızı boşa harcıyorsunuz demektir. XP, tasarımın proje boyunca sürekli yapılması gereken önemli bir süreç olduğunu varsayar. Tasarım, sürekli değişen gereksinimler dikkate alınarak küçük adımlarla gerçekleştirilmelidir. Her an mevcut problemin çözümüne uygun, en basit tasarımı kullanmaya çalışıyoruz. Aynı zamanda sorunun koşulları değiştikçe biz de onu değiştiriyoruz.

    Sistem metaforu

    Mimarlık, bir sistemin bileşenleri ve bunların birbirine nasıl bağlı olduğu hakkında bir fikirdir. Geliştiriciler, bazı yeni işlevlerin sistemin neresine ekleneceğini ve bazı yeni bileşenlerin neyle etkileşime gireceğini anlamak için mimariyi kullanır.

    Sistem metaforu çoğu teknikte mimari olarak adlandırılan şeyin bir benzeridir. Sistem metaforu ekibe sistemin şu anda nasıl çalıştığı, yeni bileşenlerin nereye eklendiği ve bunların hangi formu alması gerektiği konusunda fikir verir.

    İyi bir metafor seçerek ekibinizin sisteminizin nasıl çalıştığını anlamasını kolaylaştırırsınız. Bazen bunu yapmak kolay değildir.

    Kodlama Standartları

    Tüm ekip üyelerinin çalışırken ortak kodlama standartlarına uyması gerekir. Böylece:

    · ekip üyeleri, projedeki çalışma hızını aslında etkilemeyen şeyler hakkında aptalca tartışmalarla zaman kaybetmezler;

    · Diğer uygulamaların etkin bir şekilde uygulanmasını sağlar.

    Bir ekip tutarlı kodlama standartları kullanmazsa geliştiricilerin yeniden düzenleme yapması daha zor hale gelir; çiftlerde partner değiştirirken daha fazla zorluk ortaya çıkar; genel olarak projenin ilerlemesi zorlaşıyor. XP'de, şu veya bu kod parçasının yazarının kim olduğunu anlamanın zor olmasını sağlamak gerekir - tüm ekip tek bir kişi gibi birlikte çalışır. Ekip bir dizi kural oluşturmalı ve ardından her ekip üyesi kodlama sürecinde bu kurallara uymalıdır. Kural listesi kapsamlı veya çok uzun olmamalıdır. Amaç, kodu ekipteki herkes için anlaşılır kılan genel yönergeler sağlamaktır. Kodlama standardı basit bir şekilde başlamalı ve ekip deneyim kazandıkça gelişmelidir. Standardın ön geliştirilmesine çok fazla zaman harcamamalısınız.

    Kolektif mülkiyet

    Ekip sahipliği, her ekip üyesinin işin tamamından sorumlu olduğu anlamına gelir. kaynak. Böylece herkes programın herhangi bir bölümünde değişiklik yapma hakkına sahiptir. Eşli programlama bu uygulamayı destekler: farklı çiftler halinde çalışarak tüm programcılar sistem kodunun tüm bölümlerine aşina olur. Paylaşılan kod sahipliğinin önemli bir avantajı, geliştirme sürecini hızlandırmasıdır; çünkü bir hata oluşursa herhangi bir programcı bunu düzeltebilir.

    Her programcıya kodu değiştirme hakkı vererek, ne yaptıklarını bildiklerini düşünen ancak belirli bağımlılıkları dikkate almayan programcıların neden olduğu hatalar riskini üstleniyoruz. İyi tanımlanmış UNIT testleri bu sorunu çözer: incelenmemiş bağımlılıklar hatalara neden olursa, UNIT testlerinin bir sonraki çalıştırması başarısız olur

    Scrum, geliştirme sürecinin üzerine inşa edildiği, kesin olarak sabit kısa sürelerde (2 ila 4 hafta arası sprintler) son kullanıcıya en yüksek önceliğin verildiği yeni özelliklere sahip çalışan bir yazılım sağlanmasına olanak tanıyan bir dizi prensiptir. azimli. Bir sonraki sprintte uygulamaya yönelik yazılım yetenekleri, sprintin başında planlama aşamasında belirlenir ve tüm süre boyunca değiştirilemez. Aynı zamanda, sprintin kesin olarak sabit kısa süresi, geliştirme sürecine öngörülebilirlik ve esneklik kazandırır.

    Scrum'daki ana oyunculuk rolleri: ScrumMaster, Scrum toplantılarına liderlik eden ve tüm Scrum ilkelerinin takip edilmesini sağlayan kişidir (rol, Scrum'ın doğru yürütülmesinden başka bir şeyi ifade etmez, proje yöneticisinin Ürün Sahibi olma olasılığı daha yüksektir) ve ScrumMaster olmamalıdır); Ürün Sahibi - son kullanıcıların ve ürünle ilgilenen diğer tarafların çıkarlarını temsil eden kişi; ve hem geliştiriciler hem de test uzmanları, mimarlar, analistler vb.'den oluşan işlevler arası bir Ekip (Scrum Takımı) (ideal takım büyüklüğü 7±2 kişidir). Ekip, geliştirme sürecine tamamen dahil olan tek katılımcıdır ve sonuçtan tek bir bütün olarak sorumludur. Sprint sırasında takım dışında hiç kimse geliştirme sürecine müdahale edemez.

    Her sprint sırasında yazılımın işlevsel büyümesi yaratılır. Her sprintte teslim edilen özellikler kümesi, ürün biriktirme listesi adı verilen ve tamamlanması gereken iş gereksinimleri düzeyi bakımından en yüksek önceliğe sahip olan bir aşamadan gelir. Sprint planlama toplantısı sırasında belirlenen biriktirme listesi öğeleri sprint aşamasına taşınır. Bu toplantı sırasında Ürün Sahibi tamamlanması gereken görevleri bildirir. Takım daha sonra bir sonraki sprintte gerekli parçaları tamamlamak için ne kadarını başarmak istediklerini belirler. Bir sprint sırasında takım belirli bir sabit görev listesini (sprint biriktirme listesi olarak adlandırılır) tamamlar. Bu süre zarfında hiç kimsenin sprint sırasında donma gereksinimleri olarak anlaşılması gereken iş gereksinimleri listesini değiştirme hakkı yoktur.

    _____________
    VSU Matematik Fakültesi ve diğer klasikler =)

    • Yorum yazmak için giriş yapın

    Extreme Programming (XP), esnek yazılım geliştirme metodolojilerinden biridir. Metodolojinin yazarları Kent Beck, Ward Cunningham, Martin Fowler ve diğerleridir.

    Planlama oyunu

    Dünyamız, durumun sabitliğine güvenemeyecek kadar değişken ve öngörülemez. Aynı şey yazılım geliştirmede de olur: Nadir bir sistemle, nihai biçiminin, geliştirmenin en başında önceden ayrıntılı olarak bilindiğini söyleyebilirsiniz. Tipik olarak müşterinin iştahı yemek yerken gelir: Sürekli olarak bir şeyi değiştirmek, bir şeyi geliştirmek veya bir şeyi sistemden tamamen atmak ister. Bu, herkesin çok korktuğu gereksinimlerin değişkenliğidir. Neyse ki, insana tahmin etme yeteneği verilmiştir olası seçenekler ve böylece durumu kontrol altında tutun.
    Extreme Programming'de planlama, gelişimin ayrılmaz bir parçasıdır ve planların değişebileceği gerçeği en baştan dikkate alınır. Durumu tahmin etmenize ve değişikliklere acısız bir şekilde katlanmanıza olanak tanıyan teknik olan dayanak noktası, planlama oyunudur. Böyle bir oyun sırasında bilinen sistem gereksinimleri hızlı bir şekilde toplanabilir, değerlendirilebilir ve önceliğe göre planlanabilir.
    Diğer tüm oyunlar gibi planlamanın da katılımcıları ve hedefi vardır. Burada önemli olan elbette müşteridir. Şu veya bu işlevselliğe olan ihtiyacı ileten odur. Programcılar her işlevsellik hakkında yaklaşık bir değerlendirme yapar. Planlama oyununun güzelliği, geliştirici ile müşteri arasındaki amaç birliği ve dayanışmada yatmaktadır: Zafer durumunda herkes kazanır, yenilgi durumunda ise herkes kaybeder. Ancak aynı zamanda her katılımcı zafere giden kendi yoluna gider: Müşteri en önemli görevleri bütçeye uygun olarak seçer ve programcı görevleri uygulama becerisine göre değerlendirir.
    Extreme programlama, geliştiricilerin görevlerini tamamlamalarının ne kadar süreceği ve hangisinin bir sorunu çözmek için daha istekli olacağına ve kimin diğerini çözeceğine kendileri karar verebileceklerini varsayar.
    İdeal bir durumda, müşteri ile programcı arasındaki planlama oyunu, bir sonraki geliştirme yinelemesi başlayana kadar her 3-6 haftada bir oynanmalıdır. Bu, önceki yinelemenin başarılarına ve başarısızlıklarına göre ayarlamalar yapmayı oldukça kolaylaştırır.

    Yayın planı

    Sürüm planı, bunların her birinde uygulanacak yayın tarihlerini ve kullanıcı bildirimlerini tanımlar. Buna dayanarak bir sonraki yineleme için formülasyonları seçebilirsiniz. Bir yineleme sırasında, o yineleme içinde ve sonraki tüm testlerde kabul testleri üretilir ve yürütülür. doğru iş programlar. Yinelemelerden birinin sonunda önemli bir gecikme veya ilerleme olması durumunda plan revize edilebilir.
    Yinelemeler. Yineleme, geliştirme sürecini dinamik hale getirir. Yazılım görevlerinizi uzun süre önceden planlamanıza gerek yoktur. Bunun yerine her yinelemenin başında bir planlama toplantısı yapmak daha iyidir. Planlanmayan bir şeyi hayata geçirmeye çalışmanın bir manası yok. Yayın planına göre yayınlandığında bu fikirleri uygulamak için hâlâ zamanınız olacak.
    İşlevselliği önceden eklememe ve ileriye yönelik planlama kullanma alışkanlığını edinerek değişen müşteri gereksinimlerine kolayca uyum sağlayabilirsiniz.

    Yineleme planlaması

    Yineleme planlaması, her yinelemenin başında yazılım sorunlarını çözmek için bir adım planı geliştirmek üzere yapılan bir toplantıyla başlar. Her yineleme bir ila üç hafta sürmelidir. Bir yinelemedeki formülasyonlar müşteri açısından önem sırasına göre sıralanır. Ayrıca kabul testlerini geçemeyen ve ileri çalışma gerektiren görevler de eklenir. Test ifadeleri ve sonuçları yazılım sorunlarına dönüştürülür. Görevler ayrıntılı bir yineleme planı oluşturan kartlara yazılır. Her sorunun çözülmesi bir ila üç gün sürer. Bir günden az süren görevler bir arada gruplandırılabilir ve büyük görevler birkaç küçük göreve bölünebilir. Geliştiriciler görevleri ve bunların tamamlanması için son tarihleri ​​tahmin eder. Bir geliştiricinin bir görevin yürütme süresini doğru bir şekilde belirlemesi çok önemlidir. Bazı dillerin yeniden değerlendirilmesi ve her üç veya beş yinelemeden sonra yayın planının revize edilmesi gerekebilir - bu tamamen kabul edilebilir. İlk önce en önemli çalışma alanlarını uygularsanız, müşterileriniz için mümkün olan maksimumu yapmak için her zaman zamanınız olacaktır. Yinelemeli bir geliştirme stili, geliştirme sürecini iyileştirir.

    Toplantı ayakta

    Sorunları, çözümlerini tartışmak ve ekibin konsantrasyonunu güçlendirmek için her sabah bir toplantı düzenlenmektedir. Toplantı, tüm ekip üyelerinin ilgisini çekmeyen uzun tartışmalardan kaçınmak için ayakta yapılır.
    Tipik bir toplantıda katılımcıların çoğu hiçbir katkıda bulunmaz, sadece başkalarının söyleyeceklerini duymak için katılırlar. Çok sayıda Az miktarda iletişim sağlamak için insanların zamanı boşa harcanıyor. Bu nedenle herkesin toplantılara katılması, kaynakları projeden uzaklaştırır ve planlamada kaos yaratır.
    Bu tür bir iletişim sürekli bir toplantı gerektirir. Çoğu geliştiricinin zaten katılmak zorunda olduğu birçok uzun toplantı yerine, kısa ve zorunlu bir toplantı yapmak çok daha iyidir.
    Günlük toplantılarınız varsa, diğer tüm toplantılara yalnızca gerekli olan ve masaya bir şeyler getirecek kişiler katılmalıdır. Üstelik bazı toplantılardan kaçınmak bile mümkün. Katılımcı sayısının sınırlı olması nedeniyle toplantıların çoğu spontane olarak monitör karşısında yapılabiliyor ve fikir alışverişi daha yoğun oluyor.
    Günlük sabah toplantısı başka bir zaman kaybı değildir. Bu, diğer birçok toplantıdan kaçınmanıza ve harcadığınızdan daha fazla zaman kazanmanıza olanak tanır.

    Basitlik

    Basit bir tasarım her zaman karmaşık bir tasarımdan daha az zaman alır. Bu yüzden her zaman işe yarayacak en basit şeyleri yapın. Üzerinde çalışmaya çok fazla zaman harcamadan önce, karmaşık kodu hemen değiştirmek her zaman daha hızlı ve daha ucuzdur. Planlanandan önce işlevsellik eklemeden işleri mümkün olduğunca basit tutun. Unutmayın: Bir tasarımı basit tutmak zor bir iştir.

    Metafor sistemi

    Sınıfların ve yöntemlerin isimlendirilmesinde ekibin aynı çerçeve içerisinde kalması için metafor sisteminin seçimi gerekmektedir. Nesnelerinizi nasıl adlandırdığınız, genel sistem tasarımını ve kodun yeniden kullanımını anlamak açısından çok önemlidir. Bir geliştirici mevcut bir nesnenin adının ne olabileceğini doğru bir şekilde tahmin edebiliyorsa bu, zaman tasarrufu sağlar. Nesneleriniz için herkesin belirli bir sistem bilgisi gerektirmeden anlayabileceği bir adlandırma sistemi kullanın.

    Müşteri iş yerinde

    Yazılım geliştirmenin temel sorunu, programcıların geliştirilen yazılımdaki bilgi eksikliğidir. konu alanı. Extreme programlama bu durumdan bir çıkış yolu buldu. Hayır, bu müşterinin işletmesindeki geliştirici stajı değildir - o zaman programlamak istemeyecektir. Tam tersine müşterinin geliştirme sürecine katılımıdır.
    Bir programcı konunun özünü tam olarak anlamadan ve telepat olmadan müşterinin ne istediğini tahmin edebilir mi? Cevap açıktır. Bu rahatsızlığın üstesinden gelmenin en kolay yolu - ve aşırı programlama bize en fazlasını bulmayı öğretir basit çözümler- müşteriye doğrudan bir soru soracaktır. Daha titiz yaklaşımlar, geliştirilmekte olan alanın kapsamlı bir ön analizini gerektirir. İÇİNDE Belirli durumlar Bu daha pahalı olmasına rağmen haklıdır. Sıradan projelerin yürütülmesindeki gerçek deneyim, tüm gereksinimleri önceden toplamanın imkansız olduğunu göstermektedir. Üstelik tüm ihtiyaçların halihazırda toplandığını varsaysak bile yine de bir darboğaz olacaktır: Doğadaki her şey gibi programlar da anında oluşturulmaz ve bu arada iş süreçleri değişebilir. Bu dikkate alınmalıdır.
    Birçoğu müşteriyi geliştirme sürecine dahil etme olasılığından şüphe ediyor. Aslında müşteriler farklıdır. Müşteriyi veya temsilcisini çekmek mümkün değilse, bazen geliştirilmekte olan alanda bir uzmanın geçici olarak işe alınması tavsiye edilir. Bu adım, işteki belirsizlikleri azaltacak, geliştirme hızını artıracak ve projeyi müşterinin almak istediği şeye yaklaştıracaktır. Bu aynı zamanda mali açıdan da faydalı olabilir: Sonuçta, bir programcının maaşı bazen diğer sektörlerdeki uzmanların maaşından önemli ölçüde daha yüksektir.
    Kullanıcı hikayesi. Kullanıcı Hikayesi (kullanıcı hikayesi gibi bir şey) sistemin nasıl çalışması gerektiğinin açıklamasıdır. Her Kullanıcı Hikayesi bir kart üzerine yazılır ve Müşterinin bakış açısından mantıklı olan bazı sistem işlevlerini temsil eder. Form, kullanıcının anlayabileceği (çok teknik olmayan) bir veya iki paragraflık metindir.
    Kullanıcı Hikayesi Müşteri tarafından yazılır. Bunlar sistem kullanım durumlarına benzer ancak kullanıcı arayüzüyle sınırlı değildir. Her hikaye için bunu doğrulamak amacıyla fonksiyonel testler yazılır. bu hikaye doğru şekilde uygulandığında bunlara kabul testleri de denir.

    Geliştirme başlamadan önce test etme

    Klasik anlamda test yapmak oldukça sıkıcı bir prosedürdür. Genellikle aynı eylemleri periyodik olarak gerçekleştiren ve nihayet başka bir pozisyona transfer edileceği veya iş değiştirme fırsatının ortaya çıkacağı günü bekleyen bir testçiyi işe alırlar.
    Ekstrem programlamada testin rolü daha ilginçtir: artık önce test gelir, sonra kod gelir. Henüz var olmayan bir şey nasıl test edilir? Cevap basit ve banal: düşüncelerinizi test edin - gelecekteki bir program veya işlevsellikten ne beklemelisiniz? Bu, programcıların ne yapması gerektiğini daha iyi anlamanıza ve kodun işlevselliğini yazıldığı anda kontrol etmenize olanak tanır.
    Ancak test de işe yaramayabilir. Ne yani, test için test mi yazacaksın? Ve sonra test için test yapın ve bu sonsuza kadar devam etsin mi? Hiç de bile. Test için yapılan test, kodun yerini alacaktır. Nasıl yani? Ama bakın: Somunu cıvatanın ortasına, dönmemesi için sabitlemeniz gerektiğini hayal edin. Bunun için ne yapıyorlar? İkinci somunu birincinin yakınına vidalayın, böylece her bir somun bir sonrakinin dönmesini engeller. Programlamada da durum aynıdır: test kodu test eder ve kod da testi test eder.
    Deneyimler, bu yaklaşımın yalnızca yavaşlamadığını, aynı zamanda gelişimi hızlandırdığını da gösteriyor. Sonuçta ne yapılması gerektiğini ve gerekli iş miktarını bilmek, sahipsiz eşyaları satmayı reddederek zaman kazandıracaktır. şu an detaylar.

    Çiftler programı

    Üretim sisteminin tüm kodları çiftler halinde yazılmıştır. İki geliştirici yan yana oturuyor. Biri yazıyor, diğeri izliyor. Zaman zaman değişiyorlar. Tek başına çalışmasına izin verilmez. Herhangi bir nedenle çiftin ikincisi bir şeyi kaçırmışsa (hasta, emekli vb.), ilkinin yaptığı tüm değişiklikleri gözden geçirmek zorundadır.
    Kulağa alışılmadık geliyor ama kısa bir adaptasyon döneminden sonra çoğu insan çiftler halinde iyi çalışıyor. Hatta iş gözle görülür derecede daha hızlı yapıldığı için bundan hoşlanıyorlar. “Bir kafa iyidir, iki kafa daha iyidir” prensibi geçerlidir. Çiftler genellikle daha iyi çözümler bulurlar. Ayrıca kodun kalitesi önemli ölçüde artar, hata sayısı azalır ve geliştiriciler arasındaki bilgi alışverişi hızlanır. Bir kişi nesnenin stratejik vizyonuna odaklanırken, diğeri onun özelliklerini ve yöntemlerini uygular.

    Pozisyonları değiştirme

    Bir sonraki yineleme sırasında tüm işçiler yeni çalışma alanlarına taşınmalıdır. Bu tür hareketler bilgi izolasyonunu önlemek ve darboğazları ortadan kaldırmak için gereklidir. Eşli programlamada geliştiricilerden birinin değiştirilmesi özellikle verimlidir.

    Toplu kod sahipliği

    Paylaşılan kod sahipliği, geliştiricileri yalnızca kendi modülleri için değil, projenin tüm bölümleri için fikir göndermeye teşvik eder. Herhangi bir geliştirici, işlevselliği genişletmek ve hataları düzeltmek için herhangi bir kodu değiştirebilir.
    İlk bakışta kaos gibi görünüyor. Ancak, en azından herhangi bir kodun birkaç geliştirici tarafından oluşturulduğu göz önüne alındığında, bu testler doğruluğunu kontrol etmenize olanak tanır. değişiklikler yapıldı ve içinde ne var gerçek hayat Yine de bir başkasının kodunu bir şekilde anlamak zorunda olsanız da, kodun kolektif mülkiyetinin değişiklikleri büyük ölçüde basitleştirdiği ve bir veya başka bir ekip üyesinin yüksek uzmanlığıyla ilişkili riski azalttığı açıkça ortaya çıkıyor.

    Kodlama kuralı

    Bu proje üzerinde çalışan ekiptesiniz uzun zaman. İnsanlar gelir ve gider. Kimse tek başına kod yazmaz ve kod herkese aittir. Başka birinin kodunu anlamanız ve ayarlamanız gereken zamanlar her zaman olacaktır. Geliştiriciler yinelenen kodları kaldıracak veya değiştirecek, diğer kişilerin sınıflarını analiz edecek ve geliştirecek vb. Zamanla belirli bir sınıfın yazarının kim olduğunu söylemek imkansız hale gelecektir.
    Bu nedenle herkesin ortak kodlama standartlarına (kod biçimlendirme, sınıfların adlandırılması, değişkenler, sabitler, yorum stili) uyması gerekir. Bu şekilde, başka birinin kodunda değişiklik yaptığımızda (ki bu agresif ve aşırı ilerleme için gereklidir), onu Babel Pandemonium'a çevirmeyeceğimizden emin olacağız.
    Yukarıdakiler, tüm ekip üyelerinin ortak kodlama standartları üzerinde anlaşması gerektiği anlamına gelir. Hangileri olduğu önemli değil. Kural herkesin onlara uymasıdır. Bunlara uymak istemeyenler takımdan ayrılır.

    Sık entegrasyon

    Geliştiriciler mümkünse birkaç saatte bir kodlarını entegre edip yayınlamalıdır. Her durumda, değişiklikleri asla bir günden fazla saklamamalısınız. Sık entegrasyon, geliştiricilerin fikirleri paylaşma veya kodu yeniden kullanma anlamında iletişim kuramadığı geliştirme sürecinde yabancılaşmayı ve parçalanmayı önler. Herkes en çok çalışmak zorunda En son sürüm.
    Her bir geliştirici çifti, makul ölçüde mümkün olan en kısa sürede kodlarına katkıda bulunmalıdır. Bu, tüm UnitTest'lerin %100'ü geçmesi durumunda olabilir. Değişiklikleri günde birkaç kez göndererek entegrasyon sorunlarını neredeyse sıfıra indirirsiniz. Entegrasyon bir “şimdi öde ya da daha sonra öde” faaliyetidir. Bu nedenle, değişiklikleri her gün küçük artışlarla entegre ederek, proje teslim edilmeden hemen önce sistemi bir araya getirmeye çalışmak için bir hafta harcamak zorunda kalmayacaksınız. Her zaman sistemin en son sürümü üzerinde çalışın.

    Kırk saatlik çalışma haftası

    Bir kişi, özellikle de bir programcıysa, işi uğruna pek çok şey yapabilir: işe geç saatlere kadar kalmak, hafta sonları işe gitmek, tatilden vazgeçmek, birkaç gün klavye başında oturarak uyanık kalmak... Genel olarak en sevdiğiniz aktivite uğruna neler yapabilirsiniz? Ancak aşırı programlama, bu tür fedakarlıklara ve kabul edilen iş hukuku standartlarının ihlaline kategorik olarak karşıdır.
    Bu sadece yasallık ve insanlık kaygılarıyla değil, her şeyden önce iş verimliliğini ve sıkı organizasyonu artırma ihtiyacıyla da belirlenir. Sonuçta aşırı programlama, bireyler için değil tüm grup için tasarlanmış kolektif bir oyundur. Ve örneğin çift programlama gibi bir şey ancak katılımcıların biyoritimleri senkronize edildiğinde mümkündür. Ve bir kişi dokuzda, ikincisi on ikide işe gelirse veya biri cumartesi ve pazar günleri çalışmanın kendisi için daha iyi olduğuna, diğeri ise sakıncalı olduğuna karar verirse bu imkansızdır.
    Ancak en önemli şey, sağlığı ve performansı korumak için kişinin uygun dinlenmeye ihtiyacı olmasıdır. Sekiz saatlik çalışma günü ve beş günlük çalışma haftası tam olarak maksimum üretkenlik amacıyla belirlenmiştir. Pek çok Batılı şirkette işten geç ayrılmak, iyi performans gösterememe veya kişinin çalışma süresini doğru şekilde yönetememe olarak görülüyor. Çoğu durumda bu doğrudur. Tıbbi açıdan bakıldığında işteki gecikmeler sürekli yorgunluğa, sinirliliğe ve beyin aktivitesinde azalmaya yol açar. Bu etkili mi? Böyle bir ekipteki geliştiriciler arasında sürekli açık iletişimi nasıl organize edebiliriz ve eşli programlama mümkün olacak mı? Cevap olumsuz. Standartlar standarttır ve uyulması gerekir.

    Çözüm

    Bu yöntemler tesadüfen bir araya gelmemiştir. Bunların tutarlı kombinasyonu, geliştirme sürecini entelektüel rezonansa getirebilir, ürünün kalitesini önemli ölçüde artırabilir ve piyasaya sürülme süresini hızlandırabilir. Tüm ekstrem programlamaların ana güzelliği öngörülebilirlik ve geliştirme maliyetlerinin en aza indirilmesidir; Müşteriye teslim almak istediği ürünü piyasaya sürüldüğünde sağlamak; ve tabii ki geliştiricilerin iş başında iletişimi ve eğitimi.

    Kaynakça:

    Ekstrem Programlama: Test Odaklı Geliştirme

    Cindy'ye ithaf edilmiştir: ruhumun kanatları

    Yayın hakları Addison-Wesley Longman ile yapılan anlaşma kapsamında elde edildi. Her hakkı saklıdır. Bu kitabın hiçbir bölümü, telif hakkı sahiplerinin yazılı izni olmadan hiçbir şekilde çoğaltılamaz.


    Bu kitapta yer alan bilgiler yayıncının güvenilir kabul ettiği kaynaklardan elde edilmiştir. Ancak olası insan veya teknik hatalar yayıncı, sağlanan bilgilerin mutlak doğruluğunu ve eksiksizliğini garanti edemez ve kitabın kullanımıyla ilgili olası hatalardan sorumlu değildir.


    ISBN 978-0321146533 İngilizce

    ISBN 978-5-496-02570-6


    © 2003 Pearson Education, Inc.'e aittir.

    © Russian LLC Yayınevi "Piter"'a Çeviri, 2017

    © Rusça Baskı, Peter Publishing House LLC tarafından tasarlanmıştır, 2017

    © Seri “Programcının Kütüphanesi”, 2017

    Önsöz

    Çalışan temiz kod Ron Jeffries tarafından türetilen bu kısa ama anlamlı ifade, "çalışan temiz kod", Test Odaklı Geliştirmenin (TDD) tüm anlamını özetlemektedir. Çalışan temiz kod, uğruna çabalamaya değer bir hedeftir çünkü

    Bu, program geliştirmenin öngörülebilir bir yoludur. Uzun bir dizi hata konusunda endişelenmeden bir işin ne zaman tamamlanmış sayılabileceğini bilirsiniz;

    Kodun öğrettiği dersleri öğrenme şansı verir. Aklınıza gelen ilk fikri kullanırsanız daha iyi olan ikinci fikri hayata geçirme şansınız olmaz;

    Programlarınızın kullanıcılarının yaşamlarını iyileştirir;

    Meslektaşlarınızın size, sizin de onlara güvenmenizi sağlar;

    Bu şekilde kod yazmak daha keyifli.

    Peki işe yarayan temiz kodu nasıl elde edersiniz? Pek çok etken temiz kod almamızı engelliyor ve bazen işe yarayan kodu bile alamıyoruz. Birçok sorundan kurtulmak için kodu otomatik teste dayalı olarak geliştireceğiz. Bu programlama tarzına test odaklı geliştirme denir. Bu tekniğe göre

    Yeni kod ancak yazıldıktan sonra yazılır otomatik test başarısızlıkla sonuçlanan;

    Her türlü çoğaltma ortadan kaldırılır.

    İki Basit kurallar, değil mi? Ancak birçok teknik sonucu olan karmaşık bireysel ve grup davranışlarına neden olurlar:

    Tasarım sürecinde kodu sürekli çalıştırıp nasıl çalıştığına dair fikir ediniriz, bu da doğru kararları vermemize yardımcı olur;

    Kendi testlerimizi yazarız çünkü başka birinin bizim için testler yazmasını bekleyemeyiz;

    Geliştirme ortamımızın küçük kod değişikliklerine hızla yanıt vermesi gerekir;

    Program tasarımı, kodun test edilmesini kolaylaştırmak için birçok bağımsız, gevşek bağlı bileşenin kullanımına dayanmalıdır.

    Bahsedilen iki TDD kuralı programlama adımlarının sırasını belirler.

    1. Kırmızı - Çalışmayan ve belki de derlenmeyen küçük bir test yazın.

    2. Yeşil - tasarımın doğruluğu ve kodun temizliği konusunda endişelenmeden test çalıştırmasını mümkün olduğunca hızlı yapın. Testin çalışmasını sağlayacak kadar kod yazın.

    3. Yeniden Düzenleme – yazılı koddaki her türlü tekrarı ortadan kaldırın.

    Kırmızı – yeşil – yeniden düzenleme TDD'nin mantrasıdır.

    Bu tarz programlamanın mümkün olduğunu varsayarsak, kullanımı sayesinde kodun önemli ölçüde daha az kusur içereceğini, ayrıca işin amacının, katılan herkes için net olacağını varsayabiliriz. Eğer öyleyse, yalnızca testleri geçmek için gereken kodu geliştirmenin sosyal sonuçları da vardır:

    Kusur yoğunluğu yeterince düşükse, Kalite Güvence (QA) ekibi hatalara tepki vermekten onları önlemeye geçebilecektir;

    Azalan miktarla hoş olmayan sürprizler proje yöneticileri işçilik maliyetlerini daha doğru tahmin edebilecek ve müşterileri geliştirme sürecine dahil edebilecek;

    Teknik tartışmaların konuları açıkça tanımlanırsa programcılar günde bir veya haftada bir yerine sürekli olarak birbirleriyle etkileşime girebilecek;

    Bir kez daha, yeterince düşük kusur yoğunluğuyla, her gün üzerine yeni işlevler eklenen entegre bir iş ürünü üretebileceğiz ve bu da müşterilerimizle tamamen yeni türde bir iş ilişkisine girmemize olanak tanıyacak.

    Yani fikir basit ama ilgimiz ne? Bir programcı neden otomatik testler yazmanın ek sorumluluğunu üstlenmelidir? Beyni çok daha karmaşık bir tasarım yapısını düşünebilme yeteneğine sahipken, bir programcı neden küçük adımlarla ilerlesin ki? Cesaret.

    Cesaret

    TDD, programlama sürecinde korkuyu yönetmenin bir yoludur. Sandalyeden düşme korkusunu ya da patronunun karşısına çıkma korkusunu kastetmiyorum. Yani “o kadar zor ki, henüz nasıl çözeceğimi bilmiyorum” bir sorunla yüzleşme korkusunu kastediyorum. Acı, doğanın bize "Dur!" demesidir ve korku, doğanın bize "Dikkatli ol!" demesidir. Tedbir hiç de kötü bir şey değil ama korkunun yararlarının yanı sıra üzerimizde bazı olumsuz etkileri de var:

    Korku bizi şu veya bu eylemin neye yol açabileceği konusunda önceden ve dikkatli düşünmeye zorlar;

    Korku daha az iletişim kurmamızı sağlar;

    Korku, çalışmalarımıza ilişkin değerlendirmelerden korkmamıza neden olur;

    Korku bizi sinirlendirir.

    Bunların hiçbiri programlama sürecine yardımcı olmaz, özellikle de karmaşık bir sorun üzerinde çalışıyorsanız. Yani zor bir durumdan nasıl çıkılacağı sorusuyla karşı karşıyayız ve

    Geleceği tahmin etmeye çalışmayın, hemen sorunla ilgili pratik bir çalışmaya başlayın;

    Kendinizi dünyanın geri kalanından soyutlamayın, iletişim düzeyini artırın;

    Yanıtlardan kaçmayın, tam tersine güvenilir bir yanıt oluşturun. geri bildirim ve onun yardımıyla eylemlerinizin sonuçlarını dikkatle izleyin;

    (tahrişle kendiniz başa çıkmalısınız).

    Programlamayı kuyudan kova çıkarmaya benzetelim. Kova suyla doldurulur, kolu çevirirsiniz, zinciri yakanın etrafına sararsınız ve kovayı yukarı kaldırırsınız. Kova küçükse, düzenli, serbest dönen bir kapak yeterli olacaktır. Ancak kova büyük ve ağırsa kaldırmadan yorulursunuz. Kolun dönüşleri arasında dinlenebilmek için kolun kilitlenmesini sağlayacak bir mandal mekanizmasına ihtiyaç vardır. Kova ne kadar ağırsa, cırcır dişlisinin dişleri de o kadar hızlı takip etmelidir.

    TDD'deki testler bir cırcır dişlisinin dişleri gibidir. Testin işe yaramasını sağladıktan sonra, testin artık, şimdi ve sonsuza kadar işe yaradığını biliyoruz. Testi tamamlamaya testin yayına girmesinden öncesine göre bir adım daha yaklaştık. Bundan sonra ikinci testi çalıştırırız, ardından üçüncü, dördüncü vb. daha zor problem programcının önünde dururken, daha az işlevsellik her testi kapsamalıdır.

    Kitap okuyucuları Ekstrem Programlama Açıklaması Ekstrem Programlama (XP) ile Test Odaklı Geliştirme (TDD) arasındaki ton farkını fark etmiş olabilirsiniz. XP'den farklı olarak TDD metodolojisi mutlak değildir. XP diyor ki, "ileri gitmek için şunda ve bunda ustalaşmalısınız." TDD daha az spesifik bir tekniktir. TDD, karar verme ile sonuçlar arasında bir aralık olduğunu varsayar ve bu aralığın uzunluğunu yönetmek için araçlar sağlar. “Bir haftayı kağıt üzerinde bir algoritma tasarlamaya ve ardından önce test yaklaşımını kullanarak kod yazmaya harcasam ne olur? Bu TDD uyumlu olacak mı?” Elbette olacak. Karar vermeniz ile sonuçları değerlendirmeniz arasındaki sürenin büyüklüğünü biliyorsunuz ve bu aralığı bilinçli olarak kontrol ediyorsunuz.

    TDD konusunda uzmanlaşan çoğu kişi, programlama uygulamalarının daha iyiye doğru değiştiğini söylüyor. Testlerle enfekte(test enfekte) - bu, bu değişikliği tanımlamak için Erich Gamma tarafından türetilen tanımdır. TDD'de ustalaştıktan sonra, kendinizi eskisinden çok daha fazla test yazarken ve daha önce size anlamsız görünen küçük adımlarla ilerlerken bulursunuz. Öte yandan, TDD'ye aşina olan bazı programcılar, TDD'yi geleneksel programlamanın istenen ilerlemeyi sağlamadığı özel durumlar için saklayarak eski uygulamalara dönmeye karar verirler.

    Yalnızca testler kullanılarak (en azından şu anda) çözülemeyen sorunlar kesinlikle vardır. Özellikle TDD, geliştirilen kodun veri güvenliği ve paralel operasyonların güvenilirliği açısından yeterliliğinin mekanik olarak gösterilmesine izin vermez. Elbette güvenlik, hatasız olması gereken koda dayanmaktadır, ancak aynı zamanda veri koruma prosedürlerine insanın katılımına da dayanmaktadır. Hafif eşzamanlılık sorunları, yalnızca bazı kodların çalıştırılmasıyla kesin olarak yeniden oluşturulamaz.

    Son zamanlarda yazılım geliştiriciler
    "ekstrem programlama" veya XP olarak adlandırılan popüler teknoloji. Hakkında
    teorik temeller hakkında fikir veren birçok makale ve kitap yazılıyor
    bu metodoloji. Bunun pratikte neye benzediğini size anlatmak isterim ve
    avantajları ve dezavantajları nelerdir

    Öncelikle XP nedir? İnternette birçok tanım ve açıklama bulabilirsiniz.
    bu dönem. Prensip olarak, her biri az çok özü yeterince yansıtıyor
    ancak tanımların çeşitliliği geliştiricinin kafasını karıştırabilir. Bu nedenle gerekli
    XP'nin, ikinci plana atmak için geliştirilmiş bir dizi teknik olduğunu anlayın.
    yazılım geliştirme süreci dört temel prensipler. Yani:

    • iletişim;
    • basitlik;
    • Geri bildirim;
    • cesaret.

    Tipik olarak bu teknikler XP materyallerinde belirtilmiştir. İşte en çok
    bunların tipik bir listesi:

    • Planlama oyunu;
    • Geliştirme başlamadan önce test etme;
    • Çiftler programı;
    • Sürekli geri dönüşüm;
    • Geliştirme kolaylığı;
    • Toplu kod sahipliği;
    • Devam eden entegrasyon;
    • Müşteri şantiyede;
    • Sürümlerin hızlı yayınlanması;
    • Kırk saatlik çalışma haftası;
    • Kodlama Standartları;
    • Sistem metaforu.

    Çoğunun anlamı aynı olduğundan sadece bazı teknikler hakkında yorum yapacağım.
    adından da oldukça açıktır ve literatürde ayrıntılı olarak anlatılmıştır. Bazıları
    yöntemler oldukça mantıklı görünüyor, bazıları ise tam tersine şaşkınlığa neden oluyor.

    Planlama oyunu Bu tekniğin fikri oldukça basittir. Geliştiriciler birlikte
    müşteriler bir araya gelir ve bazı olası durumları oynarlar (
    ideal olarak hayattaki bir sorunu çözerken ortaya çıkabilecek her şey. Bu tür toplantılar
    her alt sistemin geliştirilmesine başlamadan önce düzenleme yapılması tavsiye edilir.
    bu, geliştirme süreci boyunca düzenli olarak yapılır. Bu yapmamanıza izin verir
    Sıkı bir plana göre gelişime katılın ve zamanında uyum sağlayın
    Konu alanında değişiklikler.

    Geliştirme başlamadan önce test etme. Gelişimin başlamasından önce olduğu varsayılmaktadır.
    programın herhangi bir parçası için bir test yazılır. Bu bir takım avantajlar sağlar.
    İlk olarak, bir kod parçasındaki bir değişiklik aşağıdakileri gerektirir:
    başkalarındaki hatalar. Teste yönelik bu yaklaşım anında tanımlamanıza olanak tanır
    bu tür durumlar. İkincisi, müşterinin testin işe yaradığını açıkça görmesi daha uygundur,
    büyük hacimli belgeleri okumaktan daha iyidir. Bu yüzden test sonucu
    görselleştirilmesi gerekmektedir.

    Sistem metaforu. Geliştirilmekte olan ürünler veya kod parçaları aşağıdakilerle karşılaştırılır:
    benzer ürünler veya olaylar. Metaforlar inşa ediliyor. Bu
    Sorunun anlaşılmasını kolaylaştırır ve buna bağlı olarak gelişimi hızlandırır.

    Ancak şunu da anlamalısınız ki, herhangi bir nedenle,
    bu tekniklerin herhangi biri XP'nin temel ilkelerine aykırı olmaya başlar ve
    Bu tür durumlar oldukça mümkündür, o zaman terk edilmelidir.

    Açıkça söylemek gerekirse, anlatılan olaylar başlamadan önce ben
    Ekstrem programlama konusunda genel bir anlayışa sahipti, ancak bu süreçte
    Size anlatmak istediğim uygulamanın geliştirilmesine bilinçli olarak bağlı kalın
    XP yöntemlerini denemedim. Ancak bana göre bu tipik bir durum
    örnek XP. Her durumda olumlu bir sonuç elde edildi.

    Şimdi XP yaklaşımlarının pratikte nasıl kullanılabileceğini görelim.
    koşullarımız. İşyerindeki görevlerimden biri eğitimin otomasyonudur.
    işlem. Aslına bakılırsa, uzun bir süre boyunca
    Uygulayan bir uygulama yazıyorum (en azından tasarım gereği)
    yazar :)) bu soruna kapsamlı bir çözüm. Projenin bütçesi yetersiz ve hacmi
    çalışıyor - iyi. Neredeyse belirleyici olan bir diğer faktör ise sürekli
    konu alanının değiştirilmesi. Raporlama formları düzenli olarak değişir
    belgeler ve bunları elde etme yöntemleri. Proje durdurulduğunda bir durum ortaya çıktı
    Kullanıcı gereksinimlerine ayak uydurun. Ve bir gün öyle bir an geldi ki
    Objektif ve sübjektif sebeplerle, gelişme güvenli bir şekilde gömülebilir. Fakat
    beklenmedik bir şekilde bana belirli bir görev verildi.
    dönem için sınıf fonunun iş yükü. Bu noktada üç katılımcıdan
    Projeden geriye bir tek ben kaldım ama bu alt sistem hayata geçirilmedi ve hayata geçirilmesi
    projenin acil kalkınma planlarında bile yoktu. Gibi küçük şeyler hakkında
    Sorunun yetkin formülasyonu, işin emek yoğunluğunun hesaplanması, tahsisi
    Kimse ek kaynakları düşünmedi bile. Görevi tamamlamak için oradaydı
    iki hafta süre tanınır. Aynı zamanda yerine getirilmesinin imkansızlığına ilişkin argümanlarım
    bu sorun prensipte dikkate alınmadı. İlk kararım bulmaktı
    kendim başka bir işverenim, çünkü iki hafta içinde sadece yazmak zorunda kalmadım
    sınıf fonunun iş yükünü analiz etmek için bir modül ve aynı zamanda bir program giriş sistemi
    sınıflar, kontrol katmanları ve çok daha fazlası. Bu sorun tek başına çözülemez
    Prensip olarak başlangıç ​​verilerine ihtiyacımız var. Ve yalnızca orijinal veriler değil, doğru veriler de
    Yukarıdaki görevlerin tamamının takip edildiği ilk veriler. Yine de,
    Nedenini bilmiyorum ama bu sorunun çözümünü üstlendim.

    Bu durumda klasik yöntemlerle kalkınmadan bahsetmek doğaldır.
    uygunsuz. XP yaklaşımlarının işe yaradığı yer burasıdır. Görevin genel fikri
    zaten vardı, ancak potansiyel olarak olabilecek birçok nüans vardı.
    iş hacmini önemli ölçüde artırır. Numarayı çevirerek işe başladım
    eğitim departmanı telefona cevap veren kişiyi birçok soru, cevap bombardımanına tutmaya başladı
    kendi başıma bulamadığım veya emin olamadığım.
    .
    Rational Rose'u başlattım ve bir model oluşturmaya başladım. Çalışma gününün sonunda
    Bana aşağı yukarı yeterli görünen bir model çizdim. İşten sonra ben
    XP ideolojisi doğrultusunda bir adım daha attı. arkadaşımı dışarı çıkardım
    bira içmek için eğitim bölümünde çalışıyorum. Bu süreçte her bakımdan önemli
    Etkinliğin ilişkilerini ona anlattım, program hakkındaki vizyonumu, arayüzü ve
    işin mantığı. O da ihtiyaçtan bahsetmeye başladı
    Bazı yerel alt problemleri çözmek. Akşama doğru ne olduğunu daha net anladım.
    hala bu proje çerçevesinde yapılması gerekiyor (artık görevin olduğundan şüphem yoktu)
    ayrı bir proje olarak değerlendirilmelidir). Ancak bir tanesi daha çözülmedi
    Önemli bir konu geliştirme araçlarının seçimidir. Anlatılan olaylar ne zaman gerçekleşti?
    olaylar, MDA teknolojisini aktif olarak incelemeye başladım. Kısaca işin özü şudur:
    uygulama kodu parçaları ve veri yapıları, aşağıdakilere dayalı olarak otomatik olarak oluşturulur:
    UML modelinden geliştirme süresini önemli ölçüde azaltabilir. İçinde
    Bu yazıda MDA'nın çalışma prensiplerini detaylı olarak anlatmayacağım ama istiyorum
    Bu teknolojinin kullanımının tamamen
    "XP'nin ruhuna" karşılık gelir. Bunun nedeni, aşağıdaki koşullardan birinin olmasıdır.
    XP teknikleri başarıyla çalışacak, bu da yapılan değişikliklerin maliyetini azaltacaktır.
    Uygulama geliştirmenin son aşamalarındadır. Katkıda bulunan faktörler arasında
    Bunu başarmak için çeşitli yeni yöntemler kullanmak önemsiz değildir.
    programlama teknolojileri. MDA'yı yeniden düzenlemenin tam olarak basitliği olduğunu not ediyorum
    uygulamalar bu teknolojinin temel avantajlarından biridir. Genel olarak
    Bugün oldukça fazla MDA uygulaması var, ben seçtim
    Delphi için cesur.

    Ancak benim durumumda birkaç "kaygan an" vardı. Öncelikle şunu fark etmek
    MDA belirli faydalar sağlıyor, hâlâ yeterince emin değilim
    bu teknolojiye sahipti ve MDA uygulamaları yazma konusunda neredeyse hiç deneyimi yoktu.
    İkinci olarak bazı kod parçalarının sorunlu olabileceğini anladım
    standart MDA araçları kullanılarak uygulanır ve yapılması gereken çok sayıda "manuel" iş vardır
    Bu durumda belirli özelliklere sahip olacak kodlama”.

    Alternatif "normal" bir Delphi uygulaması yazmaktı. başlattım
    ICQ ve Bold taraftarı arkadaşıma bir mesaj yazdım. Benden sonra
    Ona sorunun özünü kısaca özetledim, benim yerime ne yapacağını sordum.
    Şöyle bir cevap verdi: “Ya doğrudan Bold'a dalın, ya da
    asla ustalaşamayacaksın. Ciddi bir proje yapın - En iyi yolçalışmak
    teknoloji." Aslında başka bir cevap beklemiyordum.

    Sabah aldım mevcut model ve uygulamayı oluşturmaya başladık. Aynen, inşa et. İLE
    Kodlamaya başlamadım, sadece taslak çizdim Kullanıcı arayüzü, birçok
    unsurları neredeyse anında çalışmaya başladı. Sigara molası için dışarı çıkmaya çalıştım
    eğitim departmanı çalışanlarından oluşan bir şirket, bu bana başka bir şeyi sürüklememi sağladı
    Monitörünün ekranına "kurban" oldu ve (belirli bir gurur duymadan) gösterdi
    ara sonuçlar. Böylece geri bildirim ilkesi hayata geçirildi.
    Haklı olarak şunu söyleyebilirsiniz: "Peki ya eşli programlama?" Evet,
    Aslında projede programcı olarak yer alan tek kişi bendim. Ama işte buradayım
    Bir mutlu tesadüften daha bahsedeyim. Bu süre zarfında
    anlatılan olaylar meydana geldiğinde, bir grup geliştiriciyle birlikte ben -
    meraklıları özellikle MDA'ya adanmış bir İnternet projesi geliştirdiler. Ve işte o zaman
    Gelişiminin en zor noktasına gelen bu proje,
    tamamen beklenmedik sonuçlar.

    Birkaç gün boyunca etkinliklerin görüntülenmesini uygulayan bir prosedür için kod yazdım
    ekranda. Standart kontroller her şeyin ekranda görüntülenmesine izin vermiyordu
    veriler genellikle sunuldukları biçimdedir. bunu istedim
    son kullanıcı programın ne yaptığını en azından yaklaşık olarak anlıyorsa
    ve onunla nasıl çalışılacağı. Kendi bileşenimi normal bir TStringGrid'e dayanarak yazdım.
    Ne olduğundan emin değildim iyi karar, ancak kod işe yaradı. Forumda
    Projemiz hakkında, bir tür değerlendirme almayı umarak çözümümü özetledim.
    oldukça uzun bir süre boyunca. Ancak tam anlamıyla 15-20 dakika sonra geldi
    ilk cevap. Önerildi Alternatif seçenekçözümler ve 10 dakika daha sonra
    iki yazardan yalnızca bir değil aynı anda iki test örneği geldi. Eğer
    geliştiricilerin neden bu kadar coşkuyla çözmeye başladıklarını düşünün
    başkasının sorunuysa, o zaman basit bir sonuca varabilirsin. İlk olarak, onlar sadece
    bazılarını bulmak ilginç evrensel çözüm, bu daha sonra olabilir
    projelerinizde kullanın. İkincisi, sürecin kendisi ile ilgilendiler
    iletişim. Diğer sorunların da aynı şevkle çözüldüğünü belirtmek gerekir.
    çeşitli zorluk seviyeleri. Tabii ki, bu çift programlama değil
    olağan anlayış. Daha ziyade bir tür vekildir, ancak yine de
    avantajları. Diyelim ki ifade edilen tüm düşünce ve fikirler otomatik olarak
    belgelendi ve istenildiği zaman erişilebildi.

    Testler üzerinde ayrı ayrı durmak istiyorum. Kitabında tavsiye ettiği gibi
    "Ekstrem Programlama" Kent Beck, testler önceden yazılmalıdır. Daha
    Üstelik yazar için şöyle bir şeye benziyor. Özel bir program var
    düğmelerden birine tıkladığınızda geliştiricinin kendisi tarafından yazılmıştır
    tüm testler başlatılır ve sonuç olarak ekranda yeşil bir "ışık" belirir
    Olumlu sonuç olması durumunda kırmızı, aksi halde kırmızı. Bu benim tarifim
    biraz cesaret kırıcı. Katılıyorum, nasıl olduğunu hayal etmek zor
    kesinlikle her durumda kullanıcı eylemlerini simüle eden bir program yazabilirsiniz.
    durumlar.

    Daha önce de söylediğim gibi, aşırı yöntemlere sıkı sıkıya bağlı kalmaya çalışmadım.
    programlama. Ve okuduğum kitaplarda açıkça belirtiliyordu ki
    Test yazmak XP'deki en önemli noktalardan biridir ve o olmadan geri kalanı
    teknikler işe yaramamalı. Sonunda neden olumlu bir şey başardım?
    sonuç? Her şeyin oldukça basit olduğu ortaya çıktı. Bu soruyu cevaplamama yardımcı oldu
    yeşil ve kırmızı ampullerle tam olarak bu örnek. Mesele şu ki Kalın harflerle
    uyup uymadığını göstermek mümkündür bu nesne modeller. VE
    Bu tam olarak bu tür "ampullerin" yardımıyla yapılır. Kelimenin tam anlamıyla iki satır
    neredeyse anında uygulama koduna eklediğim, hangisinde olduğunu görmemi sağladı
    tutarsızlığın ortaya çıktığı yer (varsa). Değiştirilen şey bu
    test ediyorum. Bu yaklaşımın tamamen tutarlı olmaması mümkündür.
    Orijinal "geliştirmeden önce test etme" fikri ama işe yaradı.

    Bir hafta içinde neredeyse tamamlanmış bir başvurum vardı. İkinci sırada
    Haftalar sonra, işlevselliği ciddi şekilde genişlettiğim iki versiyon daha yaptım ve
    ayrıca iş için gerekli verilerin çoğunu başka ülkelerden içe aktardı
    çalışma sistemleri. Sorun çözüldü ve büyük ölçüde kullanım nedeniyle
    XP teknikleri. Yukarıdakilerin hepsinin anlamını sadece bu örneğin şu gerçeğinde görüyorum:
    Uygulamada aşırı programlamanın verimliliğini kanıtladı.

    Sonuç olarak bir noktaya daha değinmek istiyorum. Aşırı Programlama,
    bence her derde deva değil. Ve onun yöntemleri çok uzaklara uygulanabilir.
    herhangi bir proje için. Prensip olarak, bazı işaretlere göre değerlendirilen proje
    tam olarak XP kullanımının tavsiye edilmediği projeler kategorisine girdi.
    Ancak daha esnek bir yaklaşımla ekstrem tekniklerin kullanılması
    programlama oldukça şaşırtıcı sonuçlar getirebilir. Okurken
    yerli okuyucular için bu konuya ayrılmış yabancı yazarların kitapları
    XP tekniklerinin prensipte kullanılamayacağı düşünülebilir.
    koşullarımız. Ve bu sadece geliştiriciler ve
    Müşterilerin yanı sıra kitaplarda açıklanan geliştirme ekibindeki ilişkiler
    örnekler biraz farklı ilkelere dayanmaktadır. Bu daha çok farklılık meselesi
    zihniyet. Ancak XP'yi koşullarımıza uyarlamak oldukça mümkün ve bu
    çok etkileyici sonuçlar veriyor.

    http://xprogramming.com.ua/ - dünya
    aşırı programlama

    http://www.xprogramming.ru/ —
    Rusça aşırı programlama

    http://www.maxkir.com/ - geliştirme hakkında
    yazılım

    http://xprogramming.com/ - web sitesi
    XP ideologu Ron Jeffries