Hızlı Uygulama Geliştirme olarak Türkçe’ye çevirebileceğimiz Rapid Application Development(RAD), yazılım geliştirme süreçlerine ilişkin uygulanan ve bu süreçlerin mümkün olduğunca hızlı bir şekilde gerçekleştirilmesini destekleyen yöntemler bütünüdür. Süreçlerin hızlı bir şekilde tamamlanmasını destekler nitelikteki bu metodun ana hedefleri; yüksek hız, yüksek kalite ve düşük maliyet olarak açıklanabilir. Yazılım geliştirme süreçlerinin kalitesinin yükseltilmesine ve maliyetlerin azaltılmasına yönelik bu metodoloji zamandan da büyük tasarruf sağlaması itibariyle güncel bir yöntem durumundadır.

Günümüz yazılım geliştirme süreçlerine bakıldığında; geliştirme aşamasından önce kullanıcı istekleri belirlenir, belirlenen bu kullanıcı isteklerinden sonra tasarım aşamasına geçilir. Tasarımı ve kodlama işi bitirilen yazılım test aşaması geçildikten sonra işleme sokulur. Ancak belirlenen kullanıcı istekleri doğrultusunda oluşturulan yazılım tasarımı hedeflenen süreç içerisinde bitirilmez kodlama ve bitirme arasında aylarla tabir edilecek süreler geçerse iş süreçlerinde olabilecek değişimler kullanıcı isteklerine yansıyacaktır. Kullanıcı isteklerine yansıyan bu değişimler yazılımın temelini oluşturan tasarım aşamasına da etkiyecek ve yazılımın zamanında bitirilmesi ihtimalinden tamamıyla uzaklaşılmasını beraberinde getirecektir. Bu noktada Rad yöntemi, geliştirilmesi planlanan yazılımın tasarım ve geliştirme aşamalarının hızlı ve kaliteli bir şekilde gerçekleştirilmesi için CASE(Computer Aided Software Engineering – Bilgisayar Destekli Yazılım Mühendisliği) araçlarının kullanılması gerekliliğini savunmaktadır. Bu araçların neler olduğunu ve tam olarak ne şekilde kullanılacaklarına yazının ilerleyen bölümlerinde yer yer değineceğiz.

Hızlı uygulama geliştirmede ’Hız’ kavramı

Hızlı uygulama geliştirmeyi savunan bu metedolojide amaç hızlı ve dağInık yazılımlar ortaya koymak değildir. Tam tersine önemli noktalara dikkat çekerek süreci hızlandırmayı ve dikkat çektiği bu noktalarla süreci hızlandırırken kaliteyi de arttırmayı amaçlamaktadır. Peki nedir bu kritik noktalar;
– Yazılım tasarımında mutlaka son kullanıcılarda yer almalı ve isteklerini en ince ayrıntısına kadar belirtmeli,
– Kullanıcıların sisteme çabuk adapte olabilmeleri açısından fikir verici, sistemi canlandırıcı ptorototipler,örneklendirmeler yapılmalı,
– Yazılım geliştirme aşamasında CASE araçları denilen ve yazımızın başında da bahsettiğimiz araçlar kullanılmalı, (Örneğin : delphi, vb.net birer case aracı olarak gösterilebilir)
– Yazılımdaki hataların başlangıç aşamasından tam sürüme varana kadar temizlenmesi aşamasında da CASE araçlarından faydalanılmalı,
– Projeye dahil olan kullacıların görev tanımları yazılım tasarım aşamasında belirlenmeli

şeklinde özetleyebileceğimiz bu noktalar yazılımın gelişmesine hız kazandıracak RAD yönteminin başlıca kriterleridir.

Hızlı Uygulama geliştirmede Kalite kavramı

Kalite, Rad yönteminin önem verdiği ilk kavramıdır. Eğer ortada Rad yöntemi kullanılarak geliştirilen bir yazılım varsa bu yazılımın hedef kullanıcıları geliştirilen bu ürünü en iyi şekilde kullanabilmeli,kullanışı kolay olmalı aynı zamanda ürünün bakım maliyetleri, oluşabilecek aksaklıklarda sisteme müdahale etme kolaylığı barındırmalıdır. Bununla birlikte kullanılacak sistemin kalitesi kullanılmasıyla birlikte karşılaşacağı iş gerekleri ya da kullanıcı gerekleri ve bunlara cevap vermesiyle ölçülür bir değerdir. Bu bakımdan hızlı uygulama geliştirme eğer uygun yerde ve uygun şekilde kullanılırsa süreçlere kaliteyi ve başarıyı getiren bir metoddur.

Rad yönteminin önem verdiği hız ve kalite kavramına kısaca değindikten sonra rad yöntemin uygulandığı bir yazılımda ne gibi aşamalar gerçekleştirilir bunlardan bahsedelim. Rad yöntemi genel olarak 4 aşamadan oluşur;

İhtiyaçların planlanması
Bu aşamada geliştirilecek uygulamanın etki edeceği sahanın bir ön değerlendirmesi yapılır. Kabaca sistemin neler içerdiği belirlenmeye çalışılır ve bu yönde yazılımın sahip olması gereken fonksiyonlar belirlenmeye çalışılır.

Bu aşama sonucunda yazılım projesinin içerisinde hangi işlevlerin yer aldığını belirten bir taslağı oluşturulur, sistemin kapsamı ve geliştirilecek bu yeni sistemin maliyeti çıkartılır.

Kullanıcı destekli tasarım
Bu aşamada geliştirilecek olan yazılımla ilişkili iş aktivitelerinin detaylı analizleri yapılır. Analizler esnasında ilgili aktiviteleri yürüten kullanıcılardan yapılacak kısa toplantılar yardımıyla mutlaka yardım alınmalıdır. İş aktivitelerini ayrıştırarak, sistemle ilgili tüm tanımları baştan yapmak gerekir. Bu analizin sonucunda süreçler ve bilgi arasındaki bağlantıyı sağlayacak akış diyagramları tanımlanmış olmalıdır. Böylece yazılım sisteminin işleyişi tanımlanmış, kullanıcılara fikir verecek yeterlikte bir taslak ve prototipler çıkartılmış olur.

Yapılandırma
Yapılandırma aşamasında geliştirici ekipten oluşturulacak ufak bir takım, yazılımın kullanıcısı olacak departman ya da saha elemanlarıyla birebir çalışarak sistemin tasarımı ve geliştirilmesi aşamasını sonlandırır. Bu aşamada bire bir tasarla ve yap aşamasında yazılımcıyla birlikte bulunan elemanlar sistemin çalışmasıyla birlikte doğacak ihtiyaçları ufak değişiklikleri görür ve ince düzeltmelerle bunlar ortadan kaldırılarak projeye son şekli verilir.

Uygulamaya geçiş
Son aşama olarak geliştirilen yeni yazılım sistemi varsa eski sistemin yerine entegre edilir ve yapılması gereken değişiklikler uygulamanın sağlıklı çalışması açısından bir süre yönetilir. Bu yönetim aşaması yeni sistemin eski sistemle bağlantılı olası bölümlerinin olması, eski sistemin kullandığı bilgilerin(data) yeni sisteme uygun hale getirilmesi ya da çevirilmesi, kullanıcıların eğitimi gibi aktivitilerin yapılmasını gerektirebilir ancak bunlar yeni sistemin kısa sürede uygulanabilir hale gelmesi için vazgeçilmez aşamalardır. Bu aşamalarda geçildikten sonra kullanıcı onayı alınana dek hata ayıklanması ve adaptasyon çalışmaları devam eder. Kullanıcı onay verdikten sonra uygulama aşamasıyla birlikte Rad yöntemi uygulanarak geliştirilen yazılım sistemi nihayetine erdirilmiş olur.

Riskler

Rad tekniğinin şimdiye kadar bahsettiğimiz olumlu yönleri yanında bazı riskli tarafları da yok değil. Rad tekniği kullanılarak geliştirilmeye çalışılan sistemler kullanıcı istekleriyle bütünleştiğinde değişime zorlanabilir. Yeniden yapılandırılmış ve hızlı bir sürece bağlanarak disipline edilmiş yazılımın çözüm getirdiği iş alanında sisteme girmesiyle birlikte bu iş alanını ilgilendiren işletmeye ait diğer özel işler uyum sağlayamayabilir, birlikte tam verimli olarak çalışamayabilir. Yeni geliştirilen yazılımın daha farklı sistemde çalışması, daha geniş açıdan olaylara çözüm getirmesi daha önceden kullanılan sistemin ise tekrar gözden geçirilmemiş olması ve daha farklı verilerle, daha farklı datalar ile çalışıyor olması arada kopukluk oluşturabilir. Bu bakımdan sistem geliştirilirken iş süreçlerinde birbirini ilgilendirecek tüm aktivitelerin bir den gözden geçirilmesi ve sistem akışının birbirinden etkilenmeyecek şekilde tasarlanması koordinasyon riskini ortadan kaldıracaktır.

Rad tekniği iş süreçlerine en uygun zamanda çözüm getirebilmek için bu süreçlerin tanımlanmasını, planlanmasını gerektirmektedir. Ancak kimi işletmelerde bu tür tanımlamalar çoğu zaman yapılmamakta ve geliştirilen sistemler belirli bir iş planı olmadığı için çoğu zaman başarısızlığa uğrayabilmektedir. İş süreçlerinin net bir tanımının olması gerekliliği rad tekniğinin uygulanabilirliği açısından bir diğer risk öğesidir.

İşletmelerde yapılan iş hacmi büyüdükçe süreçler daha kompleks, değiştirilmesi daha zor bir hale gelir. Karmaşık bir yapıya sahip işletmelerde bu süreçlere müdahale etmek oldukça risklidir. Yapacağınız en ufak bir müdahalenin cevabı en kısa zamanda olumsuz bir şekilde size geri verilecektir. Bu bakımdan iş süreçlerini yakından ilgilendiren RAD  tekniğinin uygulandığı bir sistemde bu problemlerle başa çıkabilmek için altyapının hızlı değişimlere ayak uydurur nitelikte olması gerekmektedir.

Görüldüğü üzere hız, kalite ve maliyet bakımından sağladığı avantajlar yanında risklere de sahip olan bu yöntem uygun işletmelerde, uygun iş süreçlerine uygulandığında oldukça olumlu sonuçlar verir bir metod.