Büyük bir projeyi bitirmek için onu aşamalara bölmek ve bunları sırayla gerçekleştirmek en doğal yöntem olarak görülür. Ancak bu yaklaşımın yanlış olduğu görüşü giderek yaygınlaşmaktadır. Çünkü bu yöntemle çalışınca ürün, bütün aşamalar bittikten sonra ortaya çıkar. Ya ortaya çıkan şey istenen ve ihtiyaç duyulan şey değilse? İlk yapılan analiz veya tasarım yanlışsa? Veya her şey baştan doğru planlanmışken sonradan ortaya çıkan veya farkedilen gerçekler ilk düşünülenleri geçersiz veya gereksiz kılmışsa?
Bir projeyi analiz, tasarım, kodlama ve test gibi aşamalara bölmeye Şelale ( Watefall ) yöntemi deniyor. Proje yukarıdan aşağıya akan bir su kaynağı gibi ilerliyor. Su, en tepedeki bölgeden geçmeden asla son bölgeye gelmiyor. Buna alternatif bir yöntem olarak Yinelemeli Geliştirme ( Iterative Development) düşünülmüş. Proje aşamalara bölünmez. Çalışabilecek, çok kısıtlı sayıda özelliği bulunan bir sürümü en kısa zamanda üretilir. Daha sonra ortaya çıkan hatalar, bazı eksiklikler ve bozukluklar giderlir. Daha da sonra bir önceki adımdan dolayı ortaya çıkan hatalar giderilir ve sırası gelen başka özellikler eklenir. Her yinelemede projeye katkısı bulunan bütün kişiler işlerini tümleşitiriler. Böylelikle "Tümleştirme Cehennemi" ( Integration Hell ) denilen durumla karşılaşılmaz. Tümleştirme cehennemi, bir projeyi oluştura parçalar bitirildikten sonra bir arada çalışamaması durumudur. Her bir parça kendi işlevini gerçekleştirir (ya da öyle görünür). Ancak biraraya geldiklerinde istendiği gibi çalışmadıkları, hatta hiç bir arada kullanılamadıkları anlaşılır. Yinelemeli geliştirme bunu engeller. Proje sık sık tümleştirildiği için, her bir bileşeni yapanlar aynı zamanda tümleştirmede çıkabilecek sorunları kısa sürede farkederler. Tümleştirme sorunları projenin sonunda değil ilk aşamasından itibaren ortaya çıkar.
Yinelemeli geliştirmenin bir yararı da müşteriden Geri Besleme alınmasıdır. Bütün iş bittikkten sora işin yapılmasını isteyen kişilerin ortaya çıkan şeyden hoşnut olmadıkları sık görülmektedir. "Ben bunu istemedim ki?" diyebilir müşteri. Oysa ilk aşamada ortaya çıkan işi inceleyen müşteri istemediği veya beğenmediği özellikleri baştan söyleyebilir. Geiliştirmeyi yapanlarda müşterinin istediği yönde ilerleler. Müşterinin bir sözle devre dışında bırakacağı bir özellik için günlerce çalışmazlar. Bazı durumlarda bir projeye başlandığında müşteri (veya kullanıcılar) ne istediklerin net olarak bilmezler. Zaman geçtikçe her şey ortaya çıkar. Böyle durumlarda en başta bir tasarım yapıp sonuna kadar ona göre ilerlemek mümkün de olmaz.
Yinelemeli geliştirmenin bir başka yararı da projeyi geliştirenlerin proje hakkında bilgilerini arttırmasıdır. Uzun bir süre sonunda ortaya çıkacak bir projenin bir bileşenini yapmak, geliştiricinin olayın bütünü görmesini engeller. Bütünü göremeyen kişi de sadece kendisinden isteneni gerçekleştirir ve yaptığı işin diğer kişilerle uyumlu çalışıp çalışmayacağını dikkate almaz. Dikkate alsa da bunu deneme şansı olmaz. Çünkü geliştirilen bir bileşenin istendiği gibi olup olmadığı diğerleriyle entegre olmadan bilinemez. Oysa sık sık entegre olan projelerde ortaya çıkan şey herkes tarafından görüldüğü için herkes ne yaptığını ve ne yapması gerektiğini bilir.
Özellikle yeni öğrenilen bir teknolojiyle geliştirme yapıldığında yinelemeli geliştirme çok daha fazla yararlıdır. Daha doğru dürüst bilinmeden tasarlanan projede teknoljinin bilinmeyen bir özelliği yüzünde tüm proje durabilir. Yinelemeli projelerde geliştirilicler bir yanda çalıştıkları teknolojiyi öğrenir ve yanlış varsayımlardan bulunmaz. Yaptıkları yanlışları da ilk sürümde öğrenir. Dahası Yeniden Üretim ( Refactoring ) yinelemeli geliştirmede daha fazla mümkün olur. Geliştiriciler "Keşke şöyle yapsaydık" demeden, bir sonraki geliştirme aşamasında kodu tekrar düzenleyebilirler. Oysa şelale yönteminde akla kara projenin ancak sonunda belli olduğu için kodu elden geçirmek, yanlış yapılmış noktaları tekrar yazmak için zaman kalmaz.
Görüldüğü gibi Yinelemeli Geliştirme bugün bir çok yazılım projesinin karşılaştığı sorunlara çözüm getirmektedir. Elbette bu yöntemin de kendine özgü sorunları vardır. Ayrıca bu yöntemin benimsenmesi sürecinde de insanlaraın alışkanlıklarını değiştirmek kolay olmaz. Özellikle "Gözlerimi kaparım, vazifemi Yaparım" anlayışında olan insanların gerçekleştiridiği projeler bu yönteme uygun değildir. Ancak öğrenmeye va çalışmaya istekli, katılımcı ve paylaşımcı, yanlışlarında sırara etmeyen insalardan oluşan ekipler için Yinelemeli Geliştirme son derece uygundur.