İçeriğe Atla
Bu makale, yapay zeka kullanılarak Japoncadan çevrilmiştir
Japonca oku
Bu makale Kamu Malı (CC0)'dır. Özgürce kullanmaktan çekinmeyin. CC0 1.0 Universal

Geliştirmeye Dayalı Geliştirme ve Yeniden Düzenleme Odaklı Test

Geliştirme, tekrarlı bir şekilde yeni ve faydalı bir şeyler yaratmaktır.

"Geliştirme" dendiğinde akla genellikle yeni ürün geliştirme gelir. Bu, tek tek ürünlerin üretiminden farklıdır; bir nevi ürünün taslaklarını veya kalıplarını oluşturmayı ima eder.

Bu nedenle, yeni ürün geliştirmeyle ortaya çıkan tasarımlar ve kalıplar, fabrikalarda tekrar tekrar kullanılarak aynı ürünlerin seri üretimi yapılır.

"Geliştirme" kelimesinin bireysel yetenekleri geliştirme veya toplum ve ulus geliştirme gibi kullanımları da vardır. Bunlar sadece sahip olunan şeylerin artması anlamına gelmez, aynı zamanda geliştirilen yeteneklerin tekrarlı bir şekilde kullanılması ve bunlardan faydalanılması yeteneğini de ima eder.

Bireylerin ve toplumların ekonomik gücü ekonomik koşullara göre dalgalanabilirken, geliştirilen yetenekler genellikle kalıcıdır.

Azalsalar bile, bu ekonomik refah gibi bir dalgalanma olarak değil, bir düşüş olarak görülür.

Ayrıca, teknoloji ve bilginin geliştirilmesi de vardır. Bunlar, bireylerin veya belirli toplumların yeteneklerinden farklı olarak, kolayca paylaşılabilir olma özelliğine sahiptir.

Ve bu geliştirmelerin sonuçları arasında —ürünler, yetenekler, bilgi ve teknolojiler— bazıları sonraki geliştirme için faydalı olabilir.

Bu tür faydalı sonuçları geliştirerek, geliştirme kapsamı genişler, verimlilik ve kalite de artar.

Yapay Zeka Odaklı Yazılım Geliştirme

Genel olarak, geliştirme önemli zaman ve çaba gerektiriyordu. Özellikle toplum geliştikçe ve çeşitli şeyler daha sofistike hale geldikçe, yeni şeyler yaratmak giderek zorlaşıyordu.

Ancak, üretken yapay zekanın ortaya çıkışıyla bu durum değişiyor. Şu anda, üretken yapay zekanın yüksek programlama yeteneklerinin faydasıyla yazılım geliştirme dramatik bir dönüşüm geçiriyor.

Üretken yapay zekaya dayalı otonom ajanların yazılım mühendisleri olarak yazılım geliştirmede merkezi hale geldiği bir gelecek vizyonu şimdiden gerçek olmaya başlıyor.

Şu anda bir geçiş dönemindeyiz. Geliştirmeyi tamamen üretken yapay zekaya emanet edemesek de, üretken yapay zekayı ustaca kullanmak yazılım geliştirmeyi güçlü bir şekilde ilerletebilir.

Bu duruma Yapay Zeka Odaklı Yazılım Geliştirme denir.

Geliştirmeye Dayalı Geliştirme

Üretken yapay zeka, yazılım geliştirmeyi düzene soktuğunda, sadece nihai hedeflenen yazılımın geliştirilmesini daha verimli hale getirmekle kalmaz, aynı zamanda geliştirmenin kendisine yardımcı olan yazılımların geliştirilmesini de hızlandırır.

Daha önce belirtildiği gibi, geliştirmeye yardımcı olan çıktılar, geliştirme kapsamını genişletir ve artan verimlilik ve kaliteye katkıda bulunur. Dahası, etkili bir şekilde oluşturulurlarsa, diğer geliştirme projelerinde de yeniden kullanılabilirler.

Bu nedenle, yazılım geliştirme sürecinde faydalı yazılımlar geliştirilerek, genel verimlilik nihayetinde artırılabilir ve bu varlıklar gelecekteki geliştirmeler için de kullanılabilir.

Geleneksel olarak, sahada bu tür geliştirmeye yardımcı yazılımlar geliştirmek yaygın bir uygulamaydı, ancak bu, kendi geliştirme süresini ve çabasını gerektirdiğinden dikkatli bir değerlendirme ve hedeflenmiş uygulama gerektiriyordu.

Üretken yapay zekadan faydalanarak, küçük, anlık görevleri otomatikleştirmek için basit yazılımlar hızla oluşturulabilir. Net süreçlere sahip görevler için, üretken yapay zeka neredeyse hiç hatasız doğru programlar üretebilir.

Bu, yazılım geliştirme sırasında geliştirmeye yardımcı olan yazılımları geliştirmeyi her zamankinden daha kolay hale getirir.

Ve daha derinlemesine düşündüğümüzde, geliştirme sürecinde faydalı araçların sürekli olarak geliştirildiği, böylece geliştirme yönteminin kendisini dönüştüren bir geliştirme stili ortaya çıkar.

Buna Geliştirmeye Dayalı Geliştirme adını vereceğiz.

Geliştirmeye Dayalı Geliştirme'yi uygulamak için, kişinin kendi yazılım geliştirmesini objektif bir şekilde gözlemleme alışkanlığına sahip olması ve hangi kısımların yazılıma devredilebileceğini, hangi kısımların yalnızca insanlar tarafından yapılabileceğini düşünmesi ile birlikte bu tür geliştirmeye yardımcı yazılımları geliştirme becerisine sahip olması gerekir.

Ayrıca, üretken yapay zeka bu yazılım araçlarına entegre edilebilir. Yazılımın içine gömülerek, bağımsız bir üretken yapay zeka ajanından farklı olarak, işlem kapsamı daraltılabilir ve belirli bir ölçüde açık bir yol tanımlanabilir.

Yapay zeka ajanları komut istemi yoluyla benzer sonuçlar elde edebilirken, üretken yapay zekayı entegre eden yazılımlar, hem programları hem de komut istemlerini birleştirerek doğruluğu daha kolay artırabilir.

Geliştirmeye Dayalı Geliştirme uygulanabilirse, ikinci proje ilkine kıyasla hem kalite hem de maliyet açısından iyileşmeler görecektir. Dahası, üçüncü, dördüncü ve sonraki her projeyle birlikte iyileşmeler artmaya devam edecektir.

Bu, yalnızca üretken yapay zeka kullanarak yazılım geliştirmekten tamamen farklıdır. Üretken yapay zeka araçlarına sadece hakim olan ekipler ile Geliştirmeye Dayalı Geliştirme'yi uygulayan ekipler arasında zamanla önemli bir fark ortaya çıkacaktır.

Yeniden Düzenleme Odaklı Test

Önce spesifikasyonlara dayalı testler tasarlamayı ve ardından bu testleri geçmek için yazılım geliştirmeyi içeren Test Odaklı Geliştirme (TDD) adında bir kavram vardır.

Başlangıçta ben de, üretken yapay zekanın otomatik testler için test programları geliştirmeyi kolaylaştırmasıyla Test Odaklı Geliştirme'nin uygulanabilir olabileceğini düşünmüştüm.

Ancak, Geliştirmeye Dayalı Geliştirme'yi uygulamaya başladığımda, testleri uygulamadan önce tasarlama yaklaşımının her zaman uygun olmadığına inanmaya başladım.

Özellikle, web uygulamaları gibi, etkileşim kurularak deneyimlenebilen kullanılabilirlik ve görsel tasarım gibi öznel yönleri içeren yazılımlar için, yazılımı gerçekten çalıştırmanın ve onunla etkileşim kurmanın ayrıntılı testlerden daha öncelikli olduğunu fark ettim.

Bunun nedeni, etkileşimde bulunulduğunda UI/UX düzeyinde önemli memnuniyetsizlikler varsa, çerçeve, temel mimari, veri modeli veya kullanım senaryoları gibi temel kısımların değiştirilmesi gerekebilmesidir.

Mevcut kişisel yazılım geliştirme projemde ben de işlevsel esneklik ve performansla ilgili sorunlar fark ettim, bu da iki çerçeveyi farklı olanlarla değiştirmeme neden oldu.

Bellek kullanım verimliliği zayıf olan bir kısım da vardı, bu da işlemin tamamen elden geçirilmesini gerektirdi.

İşte bu yeniden düzenleme aşamalarında test etme ilk kez bilinçli bir düşünce haline gelir.

Eğer bu geliştirmenin erken aşamalarında gerçekleşiyorsa veya özellikler ve spesifikasyonlar zaten önemli ölçüde değişecekse, testlere gerek olmayabilir.

Ancak, geliştirme zaten iyi bir şekilde ilerlemişse ve kontrol edilecek birçok madde varsa, yeniden düzenleme sırasında işlevsel eksiklikler veya ihmaller olmadığından emin olmak için testlere ihtiyaç duyulacaktır.

Bu nedenle, geliştirmenin belirli bir düzeye gelip yeniden düzenleme gerektiğinde test programları oluşturma fikri kötü bir fikir değildir.

Bu noktada anahtar, tüm kod için testler oluşturmak değil, gelecekte çok fazla değişmeyecek olgunlaşmış kısımlara odaklanmak ve hala akışkan olan kısımları otomatik testler olmadan bırakmaktır.

Buna Yeniden Düzenleme Odaklı Test denebilir.

Sonuç

Üretken yapay zeka, yazılım geliştirmeyi dramatik bir şekilde dönüştürüyor.

Önceki makalelerde, geleneksel tam yığın mühendis rolünün ötesine geçerek çeşitli alanları, altyapıyı ve yürütme ortamlarını birleştiren çok yönlü sistemler geliştirebilen bir Çok Yönlü Mühendis olmayı hedeflemenin önemini yazmıştım.

Ayrıca, yazılım davranışıyla kullanıcı deneyimini artırmaya odaklanan Deneyim ve Davranış Odaklı Geliştirme çağına girdiğimizi, bunun spesifikasyonları uygulamayla hizalama geleneksel yazılım geliştirme yaklaşımından farklı olduğunu öne süren bir makale de yazmıştım.

Geliştirmeye Dayalı Geliştirme ve Yeniden Düzenleme Odaklı Test, yazılım geliştirmede bu yeni ufuklara bizi götürecek yaklaşımlardır.