Her iki prototipleme yöntemi de, sistemin tamamen anlamadığınız bir yönü olduğunda kullanılır. Bununla birlikte, temel fark, kullandığınız yaşam döngüsü yöntemidir. Evrimsel prototiplemeyle, genellikle sistemin bazı yönlerini anlarsınız ve diğerlerinden emin olmazsınız. Kullanıma hazır prototiplemede, üretime hazır bir sistem oluşturmadan önce tamamlamanız gereken genel bir anlayış eksikliğiniz vardır.
Unutmayın ki bir çok çeşit prototipleme vardır ve hiçbiri tüm sistemle sınırlı değildir. Örneğin, bir kullanıcı arabiriminin kağıt veya beyaz tahta eskizlerinin kullanılması, atlamalı prototipleme olarak düşünülebilir. Evet, birkaç yinelemeden geçebilir ve önceki bir tasarımı atabilirsiniz, ancak aynı zamanda sistemdeki son prototipi kullanmazsınız (biri için fiziksel olarak mümkün değildir).
Genel yazılım mühendisliği konuları ve SE'nin genişliği ile ilgileniyorsanız, teklif ettiğim Sommerville kitabını almanızı şiddetle tavsiye ederim. Konuların genişliğini kapsamak için gerçekten iyi. Süreç modelleri ve metodolojileri ve bunları çeşitli projelere nasıl uygulayabileceğinizle daha fazla ilgileniyorsanız, McConnell kitabını öneriyorum - evrimsel prototipleme için ayrılmış bir bölümün ve kalıcı prototipleme için ayrılmış bir bölümün tamamı var.
Yazılım prototipleri hakkındaki Wikipedia makalesine de hızlıca baktım . Bazı bölümleri biraz garip (en azından hızlı okuduğumda), ancak düpedüz katılmadığım bir şey yok gibi görünüyor. Bazıları belirli bir yön üzerinde biraz odaklanmış, ama gördüğüm aslında yanlış değil. Aşağıdaki tanımları tercih ederim, ancak çeşitli prototip türlerinde ilginç bir okuma olabilir.
Evrimsel Prototipleme
Sürecin amacının, gereksinimlerini keşfetmek ve nihai bir sistem sunmak için müşteriyle birlikte çalışmak olduğu keşif geliştirme. Geliştirme, sistemin anlaşılan kısımlarıyla başlar. Sistem, müşteri tarafından önerilen yeni özellikler eklenerek gelişir. (Sommerville: Yazılım Mühendisliği, 8. Baskı)
Evrimsel Prototipleme, sistemin kademeli olarak geliştirildiği, son kullanıcı ve müşteri geri bildirimlerine yanıt olarak kolayca değiştirilebileceği bir yaşam döngüsü modelidir. Evrim-prototipleme çabalarının çoğu, kullanıcı arayüzünün prototiplenmesi ve daha sonra tamamlanmış sistemin bundan geliştirilmesiyle başlar, ancak prototipleme herhangi bir yüksek riskli alanla başlayabilir. Evrimsel Prototipleme, Throwaway Prototyping ile aynı değildir ve evrimsel bir prototip mi yoksa bir deneme prototipinin mi geliştirileceği konusunda doğru seçimi yapmak başarının anahtarıdır. Başarının diğer anahtarları arasında deneyimli geliştiricilerin kullanılması, program ve bütçe beklentilerinin yönetilmesi ve prototip faaliyetinin kendisinin yönetilmesi yer alır. (McConnell: Hızlı Geliştirme: Vahşi Yazılım Programlarını Taming)
Atma Yolu Prototiplemesi:
Throwaway prototipleme, evrimsel gelişim sürecinin amacının müşterinin gereksinimlerini anlamak ve böylece sistem için daha iyi bir gereksinim tanımı geliştirmektir. Prototip, iyi anlaşılmayan müşteri gereksinimlerini denemeye odaklanır. (Sommerville: Yazılım Mühendisliği, 8. Baskı)
Throwaway Prototyping ile kod, sistemin başarısı için kritik olan faktörleri keşfetmek için geliştirilir ve daha sonra bu kod atılır. Prototip oluşturma uygulaması, hedef dil ve uygulamalardan çok daha hızlı olan programlama dillerini veya geliştirme uygulamalarını veya her ikisini de kullanır. Kullanıcı arayüzü, sistemin diğer kısımlarından çok daha yaygın olarak prototiplenir, ancak bazı sistemlerin diğer kısımları da prototiplemeden yararlanabilir. Gereksinim belirtme yardımı olarak kullanıldığında, Throwaway Prototyping uygulaması, DoD projeleri gibi geleneksel yaşam döngüsü modellerine dayanan projeleri hızlandırabilir. Yönetim veya teknik düzeyde başlatılabilir. (McConnell: Hızlı Geliştirme: Vahşi Yazılım Programlarını Taming)