Kitap: Ekstrem Programlama. Test Odaklı Geliştirme - Kent Beck

Tür: ,

Seri:
Yaş kısıtlamaları: +
Dil:
Orijinal dil:
Çevirmen(ler):
Yayıncı:
Yayınlandığı şehir: Saint Petersburg
Yayınlanma yılı:
ISBN: 978-5-496-02570-6 Boyut: 382 KB



Telif hakkı sahipleri!

Çalışmanın sunulan kısmı, yasal içerik dağıtıcısı Litre LLC ile mutabakata varılarak yayınlanmıştır (orijinal metnin en fazla %20'si). Materyal yayınlamanın başka birinin haklarını ihlal ettiğini düşünüyorsanız o zaman.

Okuyucular!

Ödeme yaptınız ancak bundan sonra ne yapacağınızı bilmiyor musunuz?



Dikkat! Yasaların ve telif hakkı sahibinin izin verdiği bir alıntıyı indiriyorsunuz (metnin en fazla %20'si).
İnceledikten sonra telif hakkı sahibinin web sitesine gitmeniz ve satın almanız istenecektir. tam sürümçalışıyor.


Kitabın açıklaması

Ünlü çok satanın dönüşü. Değiştirilmesi kolay, doğru çalışan ve yaratıcılarına hoş olmayan sürprizler yaşatmayan zarif, esnek ve anlaşılır kod. Bu gerçekten mümkün mü? Hedefinize ulaşmak için programı yazılmadan önce test etmeyi deneyin. TDD (Test Odaklı Geliştirme) metodolojisinin temelini oluşturan bu paradoksal fikirdir. Anlamsız? Hemen sonuca varmak için acele etmeyin. Gerçek bir geliştirme örneğini kullanarak TDD kullanımını göz önünde bulundurarak program kodu Yazar bu tekniğin basitliğini ve gücünü gösteriyor. Kitapta tamamı TDD kullanılarak uygulanan iki yazılım projesi yer alıyor. Örnekleri, TDD ile ilgili TDD tarzı teknikler, modeller ve yeniden düzenlemelerden oluşan kapsamlı bir katalog takip etmektedir. Kitap, üretkenliğini artırmak ve programlamanın tadını çıkarmak isteyen her programcı için faydalı olacaktır.

Kitabın son izlenimi
  • Paylaşan Keskinleştirildi:
  • 16-12-2018, 02:17

Bu kitabı okumadan önce okuduğum makalelerden yola çıkarak testler yazmaya çalıştım ama ancak bu kitapla bu konuda ustalaşmaya başladım.

İki kere okudum. İlk defa yeni okudum.

Hiçbir şey anlamadım. İkinci kez kitabı okurken kodu yazdım ve sonunda neyin ne olduğunu anladım ve en önemlisi, kodun kontrolünü kaybetmeden kodu değiştirebileceğim adım büyüklüğümü hissettim. Yazarla birlikte Python'da kendi ünite test sistemimi yazdığım ikinci bölümden memnun kaldım, sanki kendi beyninize ameliyat yapıyormuşsunuz gibi hissettim (aslında yazarın yaptığı karşılaştırma da tam olarak bu) - dikkatsiz bir hareket ve hiçbir şey işe yaramıyor, çok küçük adımlarla hareket etmeniz gerekiyor. Üçüncü bölümü severek okudum, belki bir gün bitiririm.

Yıkılmak

Diğer yorumlar

Ekstrem Programlama

Bu kitabı babama ithaf ediyorum ve ayrıca eşim ve ortağım Cindee Andres'e onu görmezden gelip yazmamı talep ettiği için teşekkür ederim. Sözümü kesmedikleri ve yazmama izin verdikleri için Bethany, Lincoln ve Forrest'a teşekkürler.

XP serisi hakkında

Genellikle XP olarak kısaltılan Extreme Programming, bir geliştirme disiplinidir yazılım ve her iki tarafın (programcılar ve işadamları) çabalarını ortak, tamamen ulaşılabilir hedeflere odaklayan yazılım ürünleri oluşturma alanında iş yapmak. XP kullanan ekipler çok hızlı bir şekilde kaliteli yazılım üretirler. Bu kitapta açıklanan İK disiplinini oluşturan teknikler, insan yaratıcılığına ve insanların kararsız ve yanılabilir yaratıklar olduğu kabulüne dayandıkları için seçilmiştir.

XP genellikle bir dizi teknik olarak sunulur, ancak XP'nin kendisi bitiş çizgisi değildir. Sürecin sonunda uzun zamandır beklenen altın yıldızı elde etmek için İK'yı uygulama ve geliştirme konusunda gittikçe daha iyi olmanıza gerek yok. Aksine, XP başlangıç ​​çizgisidir. XP şu soruyu sorar: "Kaliteli yazılım üretmeye devam edebilmemiz için çabalarımız ne kadar minimum düzeyde olabilir?"

Sorunun cevabının başlangıcı şudur: Kargaşa ve kafa karışıklığı olmadan kaliteli programlar geliştirmek istiyorsak, sonuna kadar kullanmayı düşündüğümüz birkaç tekniği ekibimizde tam olarak uygulamaya istekli olmalıyız. Bu teknikleri yarıya kadar kullanırsak sorunlar kalır ve bunları çözebilmek için teknikleri sonuna kadar kullanmaya geçmek gerekir. Kendimizi yarım ölçülerle sınırlandırırsak, zamanla bunlarda kafamız o kadar karışır ki, programcıların çalışmalarının yarattığı asıl şeyin programlama sayesinde ortaya çıktığını anlayamayız.

"Cevabın başlangıcı" dedim çünkü devamı aslında yok. XP'yi yaratan ve uygulayan kişiler de bu sorunu çözmeyi düşündüler. XP'yi kullanmayı denedikten sonra eşiği geçtiler ve bilinmeyene girdiler. Geri döndüklerinde hikayelerini anlattılar. İfade ettikleri düşünceler yol boyunca yer alan tabelalardır: “Burada ejderhalar yaşıyor”, “15 km sonra açılıyor” güzel manzara", "Bu bölge yağmur yağdığında tehlikeli oluyor."

Üzgünüm ama artık programa gitme zamanım geldi.

Kent Beck, dizi danışmanı

Önsöz

Ekstrem Programlama ( eXtreme Programlama, XP), kodlamayı üzerinde çalışırken anahtar ve temel bir etkinlik olarak tanımlar. yazılım projesi. Bu yanlış olabilir!

Sanırım hatırlamaya değer kendi deneyimi yazılım geliştirme. Geliştirilmekte olan ürünün sürekli çalışır durumda olduğu ve aynı zamanda üzerinde sürekli değişikliklerin yapıldığı bir ortamda çalışıyorum. Bir sonraki çalışan sürümün yayınlanması için son tarih son derece kısıtlı ve aynı zamanda tüm bunların üzerinde büyük bir teknik risk var. Böyle bir ortamda meslektaşınızı düzeltme becerisi, onsuz hayatta kalamayacağınız bir sanattır. Hem bir ekip içinde hem de genellikle coğrafi olarak ayrılmış birden fazla ekip arasında bilgi alışverişi kod kullanılarak yapılır. Yeni veya değiştirilmiş tasarımını anlamak için kodu okuruz. yazılım arayüzleri sistemler. Yaşam döngüsü ve karmaşık nesnelerin davranışı test senaryoları kullanılarak, yani yine kod kullanılarak belirlenir. Sorun raporlarına, yine kod kullanılarak sorunu gösteren test senaryoları eşlik eder. Son olarak, mevcut kodu sürekli olarak geliştirerek onu daha performanslı, daha esnek ve daha anlaşılır hale getirmekle meşgulüz. Bu koşullar altında gelişmenin olacağı açıktır. yazılım ürünü Neredeyse tamamen kodlamaya dayalı, ancak projeleri zamanında başarıyla tamamlayabiliyoruz, dolayısıyla bu yaklaşım oldukça uygulanabilir.

Bir yazılım projesini başarılı bir şekilde uygulamak için ihtiyacınız olan tek şeyin dikkatsiz ve şiddetli programlama olduğunu varsaymayın. Yazılım geliştirmek çok zordur, kaliteli yazılım geliştirmek ve işi zamanında tamamlamak ise daha da zordur. Tanımladığım yaklaşımın işe yaraması için önemli hususların tutarlı bir şekilde uygulanması gerekir. ek kurallar ve teknikler. Kent Beck'in İK hakkındaki düşündürücü kitabına burada başlıyor.

Kent, Smalltalk ortamında karmaşık mühendislik uygulamaları geliştirmeye yönelik birleşik programlama tekniklerinin muazzam potansiyelini fark eden Tektronix yöneticileri arasındaydı. Kent, Ward Cunningham ile birlikte kalıp programlamanın (ayrıca kalıp programlama olarak da bilinir) geliştirilmesine ilham verdi. desen programlama Bu benim kariyerimi büyük ölçüde etkiledi. XP, programcıların iş organizasyonu konusunda zengin bir literatürü incelemiş ve bir yazılım ürünü geliştirmeye yönelik birçok yöntem ve prosedürü pratikte test etmiş çok sayıda başarılı geliştiricinin kullandığı teknikleri birleştiren bir yazılım geliştirme yaklaşımını tanımlar. Desen programlama gibi, XP de yazılım modüllerini test etme, çift programlama ve kodun yeniden işlenmesi gibi bir dizi en iyi uygulamayı oluşturur. XP'de bu teknikler birbirini tamamlayacak ve sıklıkla kontrol edecek şekilde birleştirilir. Bu kitabın temel amacı etkileşimden bahsetmek ve paylaşımçeşitli teknikler. Tüm programlama tekniklerinin tek bir amacı vardır; belirli bir son tarihe kadar belirli bir işlevselliğe sahip bir yazılım ürünü oluşturmak. OTI'nin son derece başarılı Tam Zamanında Yazılım süreci saf XP değildir ancak iki yaklaşım arasında pek çok benzerlik vardır.

JUnit adında küçük ama tanınmış bir proje üzerinde çalışırken Kent ile işbirliği yaptım ve XP'de anlatılan bölümleri kullandım. Yazılım geliştirmeye yönelik görüşleri ve yaklaşımları bana her zaman kişisel olarak bir yazılım projesi üzerinde nasıl çalıştığımı düşündürdü. Kuşkusuz XP, programlama endüstrisinde kullanılan geleneksel yaklaşımların çoğuna meydan okuyor. Bu kitabı okuduktan sonra işinizde XP kullanmanız gerekip gerekmediğine kendiniz karar verebileceksiniz.

Ekstrem Programlama

Bu kitabı babama ithaf ediyorum ve ayrıca eşim ve ortağım Cindee Andres'e onu görmezden gelip yazmamı talep ettiği için teşekkür ederim. Sözümü kesmedikleri ve yazmama izin verdikleri için Bethany, Lincoln ve Forrest'a teşekkürler.

XP serisi hakkında

Genellikle XP olarak kısaltılan Extreme Programming, her iki tarafın (programcılar ve iş adamları) çabalarını ortak, ulaşılabilir hedeflere odaklayan bir yazılım geliştirme ve yazılım işi disiplinidir. XP kullanan ekipler çok hızlı bir şekilde kaliteli yazılım üretirler. Bu kitapta açıklanan İK disiplinini oluşturan teknikler, insan yaratıcılığına ve insanların kararsız ve yanılabilir yaratıklar olduğu kabulüne dayandıkları için seçilmiştir.

XP genellikle bir dizi teknik olarak sunulur, ancak XP'nin kendisi bitiş çizgisi değildir. Sürecin sonunda uzun zamandır beklenen altın yıldızı elde etmek için İK'yı uygulama ve geliştirme konusunda gittikçe daha iyi olmanıza gerek yok. Aksine, XP başlangıç ​​çizgisidir. XP şu soruyu sorar: "Kaliteli yazılım üretmeye devam edebilmemiz için çabalarımız ne kadar minimum düzeyde olabilir?"

Sorunun cevabının başlangıcı şudur: Kargaşa ve kafa karışıklığı olmadan kaliteli programlar geliştirmek istiyorsak, sonuna kadar kullanmayı düşündüğümüz birkaç tekniği ekibimizde tam olarak uygulamaya istekli olmalıyız. Bu teknikleri yarıya kadar kullanırsak sorunlar kalır ve bunları çözebilmek için teknikleri sonuna kadar kullanmaya geçmek gerekir. Kendimizi yarım ölçülerle sınırlandırırsak, zamanla bunlarda kafamız o kadar karışır ki, programcıların çalışmalarının yarattığı asıl şeyin programlama sayesinde ortaya çıktığını anlayamayız.

"Cevabın başlangıcı" dedim çünkü devamı aslında yok. XP'yi yaratan ve uygulayan kişiler de bu sorunu çözmeyi düşündüler. XP'yi kullanmayı denedikten sonra eşiği geçtiler ve bilinmeyene girdiler. Geri döndüklerinde hikayelerini anlattılar. İfade ettikleri düşünceler yol boyunca yer alan tabelalardır: “Burada ejderhalar yaşıyor”, “15 km sonra güzel bir manzara var”, “Bu kısım yağmur yağdığında tehlikeli oluyor.”

Üzgünüm ama artık programa gitme zamanım geldi.

Kent Beck, dizi danışmanı

Önsöz

Ekstrem Programlama ( eXtreme Programlama,XP), bir yazılım projesi üzerinde çalışırken kodlamayı önemli ve temel bir etkinlik olarak tanımlar. Bu yanlış olabilir!

Yazılım geliştirme konusundaki kendi deneyimim üzerine düşünmeye değer olduğunu düşünüyorum. Geliştirilmekte olan ürünün sürekli çalışır durumda olduğu ve aynı zamanda üzerinde sürekli değişikliklerin yapıldığı bir ortamda çalışıyorum. Bir sonraki çalışan sürümün yayınlanması için son tarih son derece kısıtlı ve aynı zamanda tüm bunların üzerinde büyük bir teknik risk var. Böyle bir ortamda meslektaşınızı düzeltme becerisi, onsuz hayatta kalamayacağınız bir sanattır. Hem bir ekip içinde hem de genellikle coğrafi olarak ayrı olan birkaç ekip arasında bilgi alışverişi kod kullanılarak yapılır. Yeni veya değiştirilmiş sistem yazılımı arayüzlerinin tasarımını anlamak için kod okuruz. Karmaşık nesnelerin yaşam döngüsü ve davranışı, test senaryoları, yani yine kod kullanılarak belirlenir. Sorun raporlarına, yine kod kullanılarak sorunu gösteren test senaryoları eşlik eder. Son olarak, mevcut kodu sürekli olarak geliştirerek onu daha performanslı, daha esnek ve daha anlaşılır hale getirmekle meşgulüz. Açıkçası böyle bir ortamda yazılım geliştirme neredeyse tamamen kodlamaya dayanıyor ancak aynı zamanda projeleri zamanında başarıyla tamamlayabiliyoruz, dolayısıyla bu yaklaşım oldukça uygulanabilir.

Bir yazılım projesini başarılı bir şekilde uygulamak için ihtiyacınız olan tek şeyin dikkatsiz ve şiddetli programlama olduğunu varsaymayın. Yazılım geliştirmek çok zordur, kaliteli yazılım geliştirmek ve işi zamanında tamamlamak ise daha da zordur. Tanımladığım yaklaşımın işe yaraması için önemli ek kuralların ve tekniklerin tutarlı bir şekilde uygulanması gerekir. Kent Beck'in İK hakkındaki düşündürücü kitabına burada başlıyor.

Kent, Smalltalk ortamında karmaşık mühendislik uygulamaları geliştirmeye yönelik birleşik programlama tekniklerinin muazzam potansiyelini fark eden Tektronix yöneticileri arasındaydı. Kent, Ward Cunningham ile birlikte kalıp programlamanın (ayrıca kalıp programlama olarak da bilinir) geliştirilmesine ilham verdi. desen programlama Bu benim kariyerimi büyük ölçüde etkiledi. XP, programcıların iş organizasyonu konusunda zengin bir literatürü incelemiş ve bir yazılım ürünü geliştirmeye yönelik birçok yöntem ve prosedürü pratikte test etmiş çok sayıda başarılı geliştiricinin kullandığı teknikleri birleştiren bir yazılım geliştirme yaklaşımını tanımlar. Desen programlama gibi, XP de yazılım modüllerini test etme, çift programlama ve kodun yeniden işlenmesi gibi bir dizi en iyi uygulamayı oluşturur. XP'de bu teknikler birbirini tamamlayacak ve sıklıkla kontrol edecek şekilde birleştirilir. Bu kitabın temel amacı çeşitli tekniklerin etkileşimi ve ortak kullanımından bahsetmek. Tüm programlama tekniklerinin tek bir amacı vardır; belirli bir son tarihe kadar belirli bir işlevselliğe sahip bir yazılım ürünü oluşturmak. OTI'nin son derece başarılı Tam Zamanında Yazılım süreci saf XP değildir ancak iki yaklaşım arasında pek çok benzerlik vardır.

Kent ile işbirliği yaptım ve XP bölümlerini JUnit adında küçük ama tanınmış bir projede kullandım. Yazılım geliştirmeye yönelik görüşleri ve yaklaşımları bana her zaman kişisel olarak bir yazılım projesi üzerinde nasıl çalıştığımı düşündürdü. Kuşkusuz XP, programlama endüstrisinde kullanılan geleneksel yaklaşımların çoğuna meydan okuyor. Bu kitabı okuduktan sonra işinizde XP kullanmanız gerekip gerekmediğine kendiniz karar verebileceksiniz.

Erich Gama

giriiş

Bu kitap aşırı programlamayla ilgilidir ( eXtreme Programlama, XP). Extreme Programming, belirsiz veya hızla değişen gereksinimler altında bir yazılım ürünü geliştiren küçük ve orta ölçekli uzman ekipleri için basitleştirilmiş bir üretim metodolojisidir. Bu kitap, XP'nin durumunuza uygun olup olmadığını belirlemenize yardımcı olmak için tasarlanmıştır.

Birçoğu için İK, sağduyu açısından, işi organize etme yöntemleri açısından tamamen kabul edilebilir ve haklı bir dizi gibi görünüyor. O halde neden XP yöntemlerine uygun programlamaya aşırı deniyor? Mesele şu ki, XP birçok yaygın ve yaygın olarak kullanılan programlama ilkesini aşırı seviyelere taşıyor.

Kodun gözden geçirilmesi iyiyse, kodu sürekli olarak inceleyeceğiz (eşli programlama);

Test iyiyse, her proje katılımcısı program kodunu sürekli olarak test edecek (birim testi), hatta müşteriler (fonksiyonel test);

Tasarım iyiyse, tasarım proje katılımcılarının her birinin günlük çalışmasının ayrılmaz bir parçası haline getirilmelidir (kodun yeniden işlenmesi);

Basitlik iyiyse, sistemi mevcut gerekli işlevsellik düzeyini sağlayan en basit tasarımda tutmalıyız (çalışması en muhtemel en basit şey); eğer mimari önemliyse, o zaman proje katılımcılarının her biri mimariyi (metafor) tanımlamak ve revize etmek için sürekli çalışacak;

Entegrasyon testi önemliyse, geliştirilmekte olan sistemi günde birkaç kez monte etmek ve test etmek gerekir (sürekli entegrasyon);

Eğer küçük yinelemeler iyiyse, yinelemeleri çok çok küçük yapmanız gerekir - saniyeler, dakikalar, belki saatler, ama haftalar, aylar ve hiçbir şekilde yıllar (planlama oyunu) değil.

XP'nin özünü kendim için formüle etmeye ilk karar verdiğimde, kontrol panelinde bir dizi düğme hayal ettim. Her tutamaç belirli bir tekniğe karşılık geliyordu; kişisel deneyim Oldukça etkili olduğunu biliyordum. Her düğme belirli bir tekniğin belirli bir dereceye kadar kullanılmasına izin verdi: 1'den 10'a kadar. Tüm düğmeleri mümkün olan maksimum konuma (10) ayarlamayı denedim ve düşündüğüm tüm tekniklerin sabit, öngörülebilir kaldığını görünce şaşırdım. ve esnek.

XP iki grup vaat üretir:

XP, programcılara her birinin her iş gününde gerçekten önemli sorunları çözmek için çalışacağına söz veriyor. Her biri kendilerini hiçbir zaman tek başına zor durumda bulamayacak. Her biri, geliştirilmekte olan sistemin başarılı olması için ellerinden gelen her şeyi yapabilecektir. Her biri tam olarak yetkin olduğu alanda karar verebilecek ve eğer bir alanda yeterince yetkin değilse karar alma sürecine katılmayacaktır.

XP, müşterilere ve yöneticilere, proje üzerinde çalıştıkları her haftadan mümkün olan maksimum getiriyi alacaklarını vaat ediyor. Birkaç haftada bir belirledikleri hedeflere doğru ilerlemeyi görebilecekler. Ek olağanüstü maliyetlerden korkmadan, geliştirmenin ortasında projenin yönünü değiştirme fırsatına sahip olacaklar.

Özetle XP, aynı anda proje riskini azaltmayı, iş değişikliğine yanıt verme yeteneğini geliştirmeyi, proje üretkenliğini artırmayı ve yazılım geliştirme sürecini daha keyifli hale getirmeyi vaat ediyor. Şaka yapmıyorum, gülmeyi bırak. Sadece bu kitabı okuyun ve deli olup olmadığımı kendiniz görün.

Bu kitap

Bu kitap XP tekniğiyle ilgili şeylerden bahsediyor - kökleri, felsefesi, çeşitli hikayeleri ve mitleri. Kitap, XP'yi sisteminizde kullanıp kullanmayacağınıza dair bilinçli bir karar vermenize yardımcı olmak için tasarlandı. kendi projesi. Bu kitabı okuduktan sonra projenizde XP kullanmamaya karar verirseniz, sanki bu kitabı okuduktan sonra ihtiyacınız olan şeyin XP olduğuna karar vermişsiniz gibi, ulaşılan ana hedefi değerlendireceğim. Kitabın ikinci amacı ise halihazırda XP kullananlara yardımcı olmaktır. Kitabı okuduktan sonra bu tür okuyucular bu tekniği daha iyi anlayabileceklerdir.

Bu kitap, Ekstrem Programlama sürecinin tam olarak nasıl yürütülmesi gerektiğine dair kesin talimatlar sağlamamaktadır. İçinde çok fazla örnek, algoritma veya programlama hikayesi görmeyeceksiniz. Tüm bunları elde etmek için internette arama yapabilir, projelerdeki katılımcılardan bazılarıyla konuşabilir, kendisine ayrılmış kitapların çıkmasını bekleyebilir veya bu tür materyalleri kendiniz oluşturabilirsiniz.

Bahsettiğim XP yazılım geliştirme disiplininin gelecekteki kaderi, mevcut sistemlerden memnun olmayan bir grup insanın (belki de siz de onlardan birisiniz) elindedir. şu anda programcıların çalışmalarını organize etmenin geleneksel yöntemleri. ihtiyacın var en iyi yol yazılım geliştirme, müşterilerinizle daha üretken ve dostane ilişkiler geliştirmek istiyorsunuz, liderliğiniz altındaki programcıları daha mutlu, daha sadık ve daha üretken kılmak istiyorsunuz. Kısacası önemli bir avantaj elde etmek istiyorsunuz ve bu avantajı elde etmek için yeni fikirleri kullanmaktan korkmuyorsunuz. Ancak herhangi bir risk almadan önce en azından tamamen aptal olmadığınızdan emin olmak istersiniz.

XP size işi alışık olduğunuzdan tamamen farklı bir şekilde yapmanızı söyler. Bazı durumlarda XP'nin önerileri genel kabul görmüş normlarla tamamen çelişmektedir. Şu anda XP'yi yalnızca mevcut düzeni değiştirmek için zorlayıcı nedenleri olanların kullanabileceğine inanıyorum. Ancak bu gibi nedenler mevcutsa hemen XP kullanmaya başlayabilirsiniz. Bu nedenleri daha iyi öğrenebilmeniz için bu kitabı yazdım.

XP nedir?

XP nedir? XP, yazılım geliştirmenin basitleştirilmiş, verimli, esnek, öngörülebilir, bilime dayalı ve son derece eğlenceli, düşük riskli bir yoludur. XP aşağıdaki yönlerden diğer yöntemlerden farklıdır.

Son derece kısa geliştirme döngüleri kullanan XP, hızlı, gerçek ve sürekli geri bildirim sunar.

XP, genel bir proje planının oldukça hızlı bir şekilde ortaya çıkmasına neden olan artımlı planlamayı kullanır, ancak bu planın projenin ömrü boyunca geliştiği anlaşılmaktadır.

XP, şu veya bu işlevselliğin uygulanması için, işin değişen doğasına ve bununla bağlantılı olarak değişen müşteri gereksinimlerine verilen yanıtı iyileştiren esnek bir program kullanır.

XP, hem programcılar hem de müşteriler tarafından geliştirilen otomatik testlere dayanmaktadır. Bu testler sayesinde geliştirme sürecini takip etmek, sistemin doğru evrimleşmesini sağlamak ve sistemde var olan aksaklıkları anında tespit etmek mümkün olmaktadır.

XP sözlü bilgi alışverişine, testlere ve kaynak kodu. Bu üç araç, bir sistemin yapısı ve davranışı hakkında bilgi alışverişinde bulunmak için kullanılır.

XP, sistemin kendisi var olduğu sürece devam eden gelişen bir tasarım sürecine dayanmaktadır.

XP, en yaygın beceri ve yeteneklere sahip programcılar arasındaki yakın etkileşime dayanmaktadır.

XP, hem bireysel programcıların kısa vadeli içgüdülerini hem de tüm projenin uzun vadeli çıkarlarını tatmin eden tekniklere dayanmaktadır.

XP bir yazılım geliştirme disiplinidir. Bu bir disiplindir çünkü XP'de XP kullanacaksanız yapmanız gereken bazı şeyler vardır. Test yazıp yazmamayı seçmek zorunda kalmamalısınız, çünkü yapmazsanız yaptığınız programlama aşırı değildir: tartışmanın sonu.

XP metodolojisi, mevcut bilgisayar ortamının katı çerçevesine sıkıştırılmayan ve tümünün dahil olduğu iki ila on programcının üzerinde çalışabileceği projeler üzerinde çalışmak için tasarlanmıştır. gerekli çalışmaİlgili testler bir gün içinde tamamlanabilir.

XP, bu teknikle ilk kez karşılaşan bazı kişileri korkutur veya sinirlendirir. Ancak XP'nin altında yatan tek bir fikir bile yeni değil. Bir bakıma, İK metodolojisi muhafazakardır; çerçevesinde kullanılan tüm teknikler onlarca yıl (uygulama stratejisi açısından) ve hatta yüzyıllar boyunca (yönetim stratejisi açısından) test edilmiştir.

XP'deki yenilikler aşağıdaki özellikleri içerir:

Uzun zamandır bilinen tüm bu teknikler tek bir çatı altında toplanmıştır;

Bu tekniklerin günlük çalışmalara uygulanma yoğunluğu en uç noktalara taşınıyor;

Kullanılan teknikler birbirini mümkün olduğu kadar desteklemektedir.

Yeterlilik

Eserlerinde Orman İnsanları ve Dağ (Dağ Halkları Halkları) Antropolog Colin Turnbull birbirinden çok farklı iki toplumu anlatıyor. Dağlarda yaşam için gerekli kaynaklar kıttır ve insanlar her zaman açlığın eşiğindedir. Bu koşullarda ortaya çıkan kültür dehşet verici görünüyor. Anneler hayatta kalabilmek için çocuklarını terk ediyorlar. Yiyecek ölüme neden olabilir. Zulüm, hayvanlarla cinsel ilişki ve ihanet yaygındır ve her gün yaşanır.

Dağların aksine orman kaynaklar açısından zengindir. Bir kişinin kendisine bütün gün boyunca yiyecek sağlaması için yalnızca yarım saat harcaması gerekir. Orman kültürü dağ kültürünün ters yansımasıdır. Yetişkinler, kendi başlarının çaresine bakabilecek kadar yetkin hale gelene kadar sevgi ve ilgiyle büyüyen sıradan çocukların yetiştirilmesinde ve yetiştirilmesinde rol alırlar. Eğer bir kişi kazara diğerini öldürürse (kasıtlı cinayet bu insanlar tarafından bilinmiyor), o kişi toplumdan atılır. Ancak bu durumda sürgünün ormana çekilmesi ve orada birkaç ay geçirmesi gerekir; o zaman bile kabilenin bazı üyeleri ona yiyecek ve hediyeler getirir.

XP şu soruyu cevaplamaya yönelik bir girişimdir: Yeterli zamanınız olsaydı kişisel olarak nasıl program yapardınız? Aslında fazladan zamanınız yok çünkü sonuçta programlama bir iştir. Her işte işi daha hızlı yapan kazanır. Ancak vaktiniz olsaydı muhtemelen test geliştirmeye dikkat ederdiniz; bunun gerekli olduğu sonucuna varırsanız muhtemelen sistem mimarisini yeniden tasarlarsınız; muhtemelen müşterinizin yanı sıra programcı arkadaşlarınızla daha fazla iletişim kurarsınız.

Bu yeterlilik duygusu, programcıların tüm güçleriyle verilen zaman çerçevesi içinde kalmaya çalıştıkları, programın gerisinde kaldıkları ve projeyi zamanında teslim etmek için çok sayıda son derece önemli işi tamamlayamadıkları durumların aksine daha insani görünüyor. zaman. Acele, programcıların yeteneklerini tam olarak ifade etmelerini ve işlerinden keyif almalarını engeller. Ancak XP'yi öğrenmeye başladığınızda, yeterli hissetmenin de iyi bir iş olduğunu anlamalısınız. Tıpkı eksiklik duygusunun işte başarısızlık yaratması, kusurlara, kalitenin düşmesine ve sonuçta verimliliğin düşmesine yol açması gibi, yeterlilik duygusu da bir verimlilik kaynağı haline gelir.

Kitabın taslağı

Kitap sanki sen ve ben birlikte yeni bir yazılım geliştirme disiplini yaratıyormuşuz gibi yazılmıştır. Temel yazılım geliştirme anlayışımızı inceleyerek başlıyoruz. Ondan sonra aslında yeni bir disiplin oluşturuyoruz. Daha sonra yarattığımız şeyin sonuçlarını, pratikte nasıl uygulanabileceğini ve kullanılabileceğini, ne zaman kullanılmaması gerektiğini ve işletmelere ne gibi fırsatlar sunduğunu araştırıyoruz.

Kitap üç bölüme ayrılmıştır.

Sorun: başlayan bölümlerde Risk: asıl sorun ve bitiyor Temel bilgilere geri dön Extreme programlamanın çözmeye çalıştığı problem tanımlanır ve çözümün kalitesinin değerlendirilebileceği kriterler oluşturulur. Bu bölümde Extreme Programming metodolojisi hakkında genel bir fikir edineceksiniz.

Çözüm: başlayan bölümlerde Kısa genel bakış ve bitiyor Test stratejisi Kitabın ilk bölümünde sunulan soyut fikirler, disipline özgü bir dizi tekniğe dönüştürülüyor. Bu bölümde anlatılan teknikleri pratikte tam olarak nasıl uygulayabileceğinize dair herhangi bir bilgi yer almamaktadır. Bunun yerine konuyla ilgili genel form yöntemlerin her biri. Her tekniği tartışırken onu kitabın ilk bölümünde tartışılan konu ve ilkelerle ilişkilendiriyorum.

XP uygulaması: başlayan bölümlerde XP uygulaması ve bitiyor XP iş başında XP'nin uygulanmasıyla ilgili birçok konu tartışılıyor - XP nasıl uygulanmalı, XP projesine dahil olan farklı kişilerden neler beklenmeli, iş dünyasındaki insanlar nasıl bir XP algısına sahipler.

Teşekkür

Okuyucularla birinci şahıs bakış açısıyla konuşuyorum, kitap kendi fikirlerimi sunduğu için değil, size bu fikirlere dair kendi algılarımı anlattığım için. XP'de kullanılan tekniklerin çoğu tüm programlama kadar eskidir.

Bu kitaptaki materyaller için birincil kaynağım Ward Cunningham'dır. Her neyse, son on beş yılımı Ward'ın uzun süredir pratikte neler yaptığını diğer insanlara anlatmaya çalışarak geçirdim. Ron Jeffries'e de bunu denediği ve çok daha iyi hale getirdiği için teşekkür ederiz. Tüm bunları basit, nazik bir dille ve bütçeyi zorlamadan açıkladığı için Martin Fowler'a teşekkür ederiz. Erich Gamma'ya Lymm'deki kuğular üzerine tefekkürle birleşen uzun sohbetler için ve ayrıca kafamda kötü düşüncelerle ayrılmama izin vermediği için teşekkür ederim. Ve elbette, programlama becerilerini uzun yıllar boyunca geliştiren babam Doug Beck gibi bir rol modelim olmasaydı hayatımda bunların hiçbiri olmayacaktı.

Araştırmam boyunca bana yol gösterdiği için Chrysler'deki C3 ekibine teşekkür ederim. Yöneticilerimiz Sue Unger ve Ron Savage'a bizi deneme cesaretini gösterdikleri için özellikle teşekkür ederiz.

Bu kitabın yazılmasındaki yardımlarından dolayı Daedalos Consulting'e teşekkür ederiz.

Materyal izleme dalındaki şampiyon ödülü, bol, kısa ve öz, titiz ve çoğunlukla düpedüz sinir bozucu yorumlarından dolayı Paul Chisholm'a veriliyor. Onun yardımı olmasaydı bu kitap bu kadar popüler olamazdı.

Yazdıklarımı önizleyen herkesle etkileşimde bulunmaktan gerçekten keyif aldım.

Onların çalışmalarının bana çok büyük katkısı oldu. Birçoğu yabancı dilde yazılmış olduğundan, tüm bu düzyazıları sonuna kadar okuma sabrına sahip oldukları için şükran sözlerini bulamıyorum.

Greg Hutchinson, Massimo Arnoldi, Dave Cleal, Sames Schuster, Don Wells, Josha Kerievsky, Thorsten Dittmar, Moritz Becker, Daniel Gubler, Christoph Henrici, Thomas Zang, Dierk'e teşekkürler (onlardan aldığım yorumları belirli bir sıraya göre sıralamıyorum) Koenig, Miroslav Miroslav Novak, Rodney Rayan, Frank Westphal, Paul Trunz, Steve Hayes, Kevin Bradtke, Jeanine De Guzman, Tom Kubit, Falk Bruegmann, Hasko Heinecke, Peter Merel, Rob Mee, Pete McBreen, Thomas Ernst, Guido Guido Haechler, Dieter Holz, Martin Knecht, Dierk Krampe, Patrick Lisser, Elisabeth Maier, Thomas Mancini, Alexio Moreno (Alexio Moreno), Rolf Pfenninger ve Matthias Ressel.

Yayıncıdan

Yorumlarınızı, önerilerinizi ve sorularınızı şu adrese gönderin: e-posta [e-posta korumalı](Peter yayınevi, bilgisayar baskısı).

Fikrinizi duymayı çok isteriz!

Kitapta yer alan tüm kaynak metinlere adresinden ulaşılabilir. http://www.piter.com/download.

Yayıncının web sitesinde http://www.piter.com bulacaksınız detaylı bilgi Kitaplarımız hakkında.

Sorun

Kitabın bu kısmı Aşırı Programlamanın ortaya çıkacağı sahneyi hazırlıyor. Yeni bir yazılım mühendisliği disiplini oluşturularak çözülmesi gereken problemin çeşitli yönlerini açıklar.

Bu bölümde, yazılım geliştirme uygulamalarını seçerken göz önünde bulundurmamız gereken temel varsayımlar - araba kullanma metaforu, dört anlam, bu anlamlardan oluşturulan ilkeler ve yeni yazılım geliştirme disiplini içerisinde yapılandırılması gereken faaliyetler tartışılmaktadır.

Risk: asıl sorun

Mevcut yazılım geliştirme disiplinleri çalışmıyor ve istenilen ekonomik etkiyi sağlayamıyor. Bu sorunun çok büyük ekonomik ve insani önemi var. Yazılım geliştirmenin yeni bir yoluna ihtiyacımız var.

Yazılım geliştirmedeki temel sorun risk.

İşte bazı risk örnekleri.

Grafik ofseti– işin teslim tarihi geldiğinde müşteriye, geliştirilmekte olan sistemin altı ay daha hazır olmayacağını bildirmek zorunda kalırsınız.

Projenin kapatılması– birçok program değişikliği ve teslim tarihinin ertelenmesinden sonra, proje çalışma koşullarında test aşamasına bile getirilmeden kapatılır.

Sistem kullanışlılığını kaybediyor– geliştirilen yazılım gerçek üretimde başarıyla kurulur çalışma ortamı Ancak birkaç yıllık kullanımdan sonra değişiklik maliyeti ve/veya kusur sayısı o kadar artar ki, sistemi yeni bir tasarımla değiştirmek daha ucuz hale gelir.

– yazılım sistemi gerçek bir üretim çalışma ortamına kurulur, ancak kusur ve eksikliklerin sayısı o kadar fazladır ki sistem kullanılmaz.

– Bir yazılım sistemi gerçek bir üretim çalışma ortamına kurulur, ancak başlangıçta çözmeyi amaçladığı iş sorununu aslında çözmediği ortaya çıkar.

İşin doğasının değişmesi– bir yazılım sistemi gerçek bir üretim çalışma ortamına kuruldu, ancak son altı ay içinde sistemin çözmek üzere tasarlandığı sorun artık önemsiz hale geldi ve bunun yerine işletme yeni, çok daha ciddi bir sorunla karşı karşıya kaldı.

Fırsat Eksikliği– Yazılım sistemi, her birini programlamak zevkli olan birçok potansiyel ilginç özelliğe sahiptir, ancak bu özelliklerin hiçbirinin müşteriye fazla fayda sağlamadığı ortaya çıktı.

Personel cirosu– iki yıllık çalışma süresi içinde hepsi iyi programcılar Projede çalışan birbiri ardına gelişmeden nefret ediyordu yazılım sistemi ve başka bir işe gitmek üzere ayrıldım.

Bu kitabın sayfalarında aşırı programlama hakkında okuyacaksınız ( eXtreme Programlama, XP), geliştirme sürecinin her düzeyinde riski azaltmaya odaklanan bir yazılım geliştirme disiplinidir. XP, üretkenliği önemli ölçüde artırmaya ve geliştirilen programların kalitesini artırmaya yardımcı olur, ayrıca tüm katılımcılarına büyük keyif veren çok eğlenceli bir uygulamadır.

XP daha önce listelenen riskleri nasıl azaltır?

Grafik ofseti– XP, her yeni sürüm için çok kısa yayın süreleri kullanmayı öneriyor. Sistemin her bir ardışık kullanıma hazır versiyonunun maksimum birkaç ay içerisinde geliştirildiği varsayılmaktadır. Bu nedenle, her versiyondaki çalışma kapsamı sınırlıdır, yani bir değişiklik olması durumunda bunun önemi daha az olur. Her sürüm, müşterinin talep ettiği özelliklerin birden çok yinelemesini içerir ve her yinelemenin geliştirilmesi bir ila dört hafta sürer. Bu, esnek ve duyarlı olmasını sağlar geri bildirim müşteriyle birlikte çalışarak işin mevcut durumu hakkında fikir sahibi olur. Her yinelemede, bir sonraki yinelemeyi elde etmek için çözülmesi gereken çeşitli görevler açısından XP'ye uygun planlama gerçekleştirilir. Her göreve bir ila üç gün arasında tahsis edilir. Sonuç olarak ekip, yineleme sırasında bile sorunları tespit edip düzeltebilir. Son olarak XP, en yüksek öncelikli özelliklerin ilk önce uygulanacağını ima eder. Bu nedenle, yazılım ürününün bir sonraki sürümünde uygulanamayan herhangi bir özelliğin önceliği daha düşüktür.

Projenin kapatılması– XP çerçevesinde müşteri, programın iş sorunlarını çözme açısından anlamlı olan minimum uygulanabilir sürümünün sahip olması gereken kabul edilebilir en küçük yetenek kümesini belirlemelidir. Bu nedenle programcıların müşterinin bu projeye ihtiyacı olup olmadığını anlamasını sağlamak için minimum düzeyde çaba sarf etmesi gerekecektir.

Sistem kullanışlılığını kaybediyor- XP'de, sistemde herhangi bir değişiklik yapıldıktan sonra (günde birkaç kez) başlatılan ve yeniden başlatılan çok sayıda test oluşturulur ve sürdürülür, bu sayede geliştirilen programın kalitesini dikkatli bir şekilde izlemek mümkündür. XP, sistemi her zaman mükemmel durumda tutar. Kusurların birikmesine kesinlikle izin verilmez.

Kusur ve eksikliklerin sayısı– XP'de geliştirilmekte olan sistem, hem geliştirilmekte olan her bir işlev için testler oluşturan programcılar tarafından, hem de sistemin uygulanan her bir özelliği için testler oluşturan müşteriler tarafından test edilir.

Çözülen problemle tutarsızlık– XP'de müşteri, proje üzerinde çalışan ekibin ayrılmaz bir parçasıdır. Proje spesifikasyonu, projenin tüm süresi boyunca sürekli olarak revize edilir; bu sayede müşterinin geliştirme ekibine ilettiği açıklamalar ve keşifler, geliştirilen programa anında yansıtılır.

09.09.2007

Yazılım geliştiricileri değişime yabancı değiller: Bu işteki her şey kesinlikle değişiyor ve baş döndürücü bir hızla. Bu tartışamayacağınız bir aksiyomdur. Onunla tartışmıyorlar. Böyle bir durumda nasıl davranılması gerektiğini tartışıyorlar. Kabaca söylemek gerekirse, iki seçenek vardır: her ne pahasına olursa olsun bu değişiklikleri öngörmeye ve engellemeye çalışın, dokümantasyon için kağıt yığınlarını ve toplantılarda çalışma saatlerini boşa harcayın ya da değişiklikleri geliştirme sürecinin kendisine dahil ederek ve onları hoş karşılayarak akışa devam edin. mümkün olan her şekilde. İkinci seçenek biraz sıradışı görünüyor, bu nedenle bu ilkelere dayanan yazılım geliştirme metodolojisine aşırı denmesinin nedeni muhtemelen budur. Aslında bunda aşırı bir şey yok - asıl vurgu herkes tarafından iyi bilinen hükümlere dayanıyor: test etme, geliştiriciler ve müşteriler arasında doğrudan iletişim, ekipte yakın iletişim. Programlama dünyası kadar eski olan bu ilkelerin yeni bir yorumla şaşırtıcı bir sonuç vermesi şaşırtıcı: projeler daha hızlı, daha kaliteli ve nihayet daha eğlenceli yaratılıyor.

Metodolojinin kurucularından biri ve ana propagandacısı Kent Beck'in "Extreme Programming: Embrace Change" adlı kitabı (Rusça çeviride, başlığın ikinci yarısı mucizevi bir şekilde başlıktan kayboldu, bu önemsiz bir şey) Bu metodolojinin temel ilkelerinin oldukça eksiksiz bir sunumu, neşeli, neşeli bir üslupla ve öfkeyle yazılmış. Kitap, XP ile tanışmak üzere olan ve bu metodolojinin kendileri için ne kadar uygun olduğuna karar vermek isteyenler için hazırlanmıştır. Mükemmel bir sunum dili, açıklayıcı, Bekovvari iddialı bir materyal sunumu.

Bu kitabın (birkaç makale hariç) en popüler esnek metodolojilerden birini konu alan ilk Rusça kaynak olması doğaldır. Yayınevi seçimi sevindirici, sevindirmeyen tek şey “ilk gözleme” com için kaçınılmaz olan. Bu durumda bu bir çeviridir. Dünyaya kaç kez herhangi bir metnin (şu metin hariç) söylendiğini söylediler. telefon rehberleri) edebi düzenlemeye ihtiyaç duyar. Aceleyle düzeltmeleri bile yapılmayan zayıf bir çeviri çalışması görmek ne kadar utanç verici: normal Rusça yerine satır arası yerlerdeki gülünç terminolojik hatalar, çarpık ad ve soyadlar (kayıt, 4 harfli kelime başına 2 hatadır!). Orijinal kitabın okunması kolaydır, Rusça versiyonu çok daha ağır ve "daha hantaldır." Arada sırada orijinaldeki hatalara, yazım hatalarına ve bariz yanlış anlamalara rastlarsınız.

Yani zıt duygularla mücadele ediyorsunuz: ya sevinmek için - "Yaşasın Beck Rusça konuştu" ya da editör-çevirmen'e fırlatmak için çürük bir domates aramak. İyimser olalım. Söylentilere göre "Peter" "metodolojik" diziye devam edecek. Anlamsal ve dilsel hatalarla dolu başka bir çok satan kitabı yayınlamak için acele etmemelerini diliyoruz. Acele etmeye gerek yok. Metodolojiler "Photoshop 7.0" veya "den daha uzun sürer" Microsoft Ofisi 2000". Kitabı tercüme etmek, kontrol etmek, düzenlemek ve ardından yazılım geliştirme sürecinin verimliliğini artırmakla ilgilenen herkesin neşesi ve yararı için yayınlamak için yeterli zamanınız olabilir.