İç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şimsel Gelişim ve Refaktoring Odaklı Test

Gelişim, yeni ve faydalı bir şeyi yinelemeli olarak yaratmaktır.

Gelişim denince akla genellikle yeni ürün geliştirme gelir. Bu, tek tek ürünler üreten imalattan farklıdır; bunun yerine, ürünler için tasarım spesifikasyonları veya kalıplar oluşturmayı içerir.

Bu nedenle, yeni ürün geliştirme yoluyla oluşturulan planlar veya kalıplar, fabrikalarda çok sayıda özdeş ürün üretmek için tekrar tekrar kullanılır.

Bireysel yeteneklerin geliştirilmesi veya toplumların ve ulusların geliştirilmesi gibi kullanımlar da vardır. Bunlar, yalnızca sahip olunan şeylerin artmasını değil, geliştirilen yetenekleri tekrar tekrar kullanma ve bunlardan faydalanma yeteneğini de ima eder.

Bireylerin ve toplumların ekonomik gücü, ekonomik koşullar nedeniyle dalgalanabilse de, geliştirilen yetenekler temelde kalıcıdır.

Azalsalar bile, bu ekonomik refahın inişli çıkışlı dalgalanmalarından ziyade bir düşüş olarak kabul edilir.

Bunların ötesinde, teknoloji ve bilgi geliştirme de vardır. Bireylerin veya belirli toplumların yeteneklerinden farklı olarak, bunlar kolayca paylaşılabilir olma özelliğine sahiptir.

Ve bu gelişmelerin sonuçları olan ürünler, yetenekler, bilgi ve teknolojiler arasında, bazıları sonraki gelişmelere katkıda bulunabilir.

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

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

Genel olarak, geliştirme önemli zaman ve çaba gerektirmiştir. Özellikle toplum ilerledikçe ve çeşitli şeyler daha karmaşık hale geldikçe, yeni şeyler yaratmak daha da zorlaşmaktadır.

Ancak, üretken yapay zekanın ortaya çıkışıyla bu durum değişmektedir. Şu anda, üretken yapay zekanın yüksek programlama yetenekleri sayesinde yazılım geliştirme dramatik değişiklikler geçirmektedir.

Bu ortamda, ü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şlamıştır.

Şu anda bir geçiş aşamasındayız. 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, yapay zeka odaklı yazılım geliştirme olarak adlandırılmaktadır.

Gelişimsel Gelişim

Üretken yapay zeka yazılım geliştirmeyi daha verimli hale getirdiğinde, yalnızca nihai hedef yazılımın geliştirilmesini değil, aynı zamanda gelişimin kendisine yardımcı olan yazılımların geliştirilmesini de kolaylaştırabilir.

Daha önce belirtildiği gibi, geliştirmeyi kolaylaştıran çıktılar, kapsamını genişletir ve verimlilik ile kaliteyi artırmaya yardımcı olur. Dahası, etkili bir şekilde oluşturulursa, diğer geliştirme projelerinde yeniden kullanılabilirler.

Bu nedenle, yazılım geliştirme süreci sırasında geliştirmeye yardımcı olan yazılımları geliştirerek, genel verimlilik artırılabilir ve bu varlıklar gelecekteki geliştirmeler için kullanılabilir.

Geleneksel olarak, bu tür yardımcı yazılımları geliştirmek yaygın bir uygulamaydı, ancak kendi geliştirme süresini ve çabasını gerektiriyordu, bu da dikkatli değerlendirme ve odaklanmış yürütmeyi zorunlu kılıyordu.

Üretken yapay zekayı kullanarak, akla gelen küçük görevleri otomatikleştirmek için hızlıca basit bir yazılım oluşturulabilir. Görev net bir işlem içeriyorsa, üretken yapay zeka programı neredeyse hatasız bir şekilde doğru bir şekilde üretebilir.

Sonuç olarak, yazılım geliştirme süreci sırasında geliştirmeye yardımcı olacak yazılım geliştirmek eskisinden daha kolay hale gelmiştir.

Ve, bu konuyu derinlemesine düşündüğümüzde, süreç boyunca geliştirmeye yönelik faydalı araçların sürekli olarak oluşturulduğu, böylece geliştirme metodolojisinin kendisini dönüştüren bir geliştirme tarzı ortaya çıkar.

Buna "gelişimsel gelişim" diyeceğiz.

Gelişimsel gelişimi uygulamak için, kişinin kendi yazılım geliştirmesini objektif olarak gözlemleme, hangi kısımların yazılım tarafından, hangi kısımların yalnızca insanlar tarafından ele alınabileceğini düşünme alışkanlığına ve bu tür yardımcı yazılımları geliştirme becerisine ihtiyacı vardır.

Ayrıca, üretken yapay zeka bu yazılım araçlarına dahil edilebilir. Yazılımın içine gömülerek, üretken yapay zeka ajanlarından farklı olarak, işleme kapsamı bir dereceye kadar daraltılabilir ve yollar tanımlanabilir.

Yapay zeka ajanları komutlar aracılığıyla benzer sonuçlar elde edebilirken, gömülü üretken yapay zekaya sahip yazılımlar, hem programları hem de komutları birleştirerek doğruluğu daha kolay artırabilir.

Böyle bir gelişimsel gelişim uygulanabilirse, ikinci proje ilkine kıyasla hem kalite hem de maliyette iyileşmeler gösterecektir. Ayrıca, sonraki her projeyle (üçüncü, dördüncü vb.) iyileşmeler artmaya devam edecektir.

Bu, yalnızca yazılım geliştirmek için üretken yapay zekayı kullanmaktan tamamen farklıdır. Üretken yapay zeka araçlarını yalnızca ustaca kullanan ekipler ile gelişimsel gelişimi uygulayan ekipler arasında zamanla önemli bir fark ortaya çıkacaktır.

Refaktoring Odaklı Test

Test Odaklı Geliştirme (TDD) adında bir kavram vardır; burada testler öncelikle spesifikasyonlara göre tasarlanır ve ardından bu testleri geçmek için yazılım geliştirilir.

Başlangıçta, ben de üretken yapay zekayı kullanarak otomatik testler için test programları geliştirmenin kolay olacağını ve TDD'yi uygulanabilir kılacağını düşünmüştüm.

Ancak, gelişimsel geliştirmeyi uygulamaya başladığımda, testleri uygulamadan önce düşünmenin her zaman en uygun yaklaşım olmadığına inanmaya başladım.

Özellikle kullanılabilirlik ve görsel tasarım gibi sübjektif yönleri içeren ve doğrudan etkileşime girilen web uygulamaları gibi yazılımlar için, yazılımı fiilen çalıştırmanın ve onunla etkileşimde bulunmanın detaylı testlerden önce geldiğini fark ettim.

Bunun nedeni, yazılımla etkileşimde bulunduktan sonra UI/UX düzeyinde önemli bir memnuniyetsizlik varsa, çerçeve, temel mimari, veri modeli veya kullanım senaryoları gibi temel kısımları değiştirmek isteme olasılığının bulunmasıdır.

Mevcut kişisel yazılım geliştirme projemde, özellik esnekliği ve performansla ilgili sorunlar fark ettim ve sonuç olarak iki çerçeveyi farklı olanlarla değiştirdim.

Ayrıca, verimsiz bellek kullanımı nedeniyle bazı alanlardaki işlemleri tamamen gözden geçirmek zorunda kaldım.

Testin ilk kez bilinçli bir düşünce haline geldiği anlar, işte bu refaktoring anlarıdır.

Eğer bu geliştirmenin erken bir aşamasıysa veya işlevler ve spesifikasyonlar zaten önemli ölçüde değişecekse, testler gereksiz olabilir.

Ancak, geliştirme zaten oldukça ilerlemişse ve kontrol edilecek birçok öğe varsa, refaktoringin işlevsel kusurlar veya eksiklikler getirmediğini doğrulamak için testler gerekli olacaktır.

Bu nedenle, geliştirme belirli bir ölçüde ilerlediğinde ve refaktoring gerekli hale geldiğinde test programları oluşturma yaklaşımı kötü bir fikir değildir.

Bu noktada anahtar, tüm kod için testler oluşturmak değil, gelecekte çok fazla değişme olasılığı düşük olan olgun kısımları test etmeye odaklanırken, değişken kısımları otomatik testsiz bırakmaktır.

Buna Refaktoring Odaklı Test denilebilir.

Sonuç

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

Önceki bir makalemde, geleneksel tam yığın mühendisinin ötesine geçerek çeşitli alanları, altyapıları ve yürütme ortamlarını birleştiren sistemler geliştirebilen bir "Çok Yönlü Mühendis" olmayı hedeflemenin öneminden bahsetmiştim.

Ayrıca, odağın spesifikasyonları uygulamayla hizalamak değil, yazılım davranışları aracılığıyla kullanıcı deneyimini iyileştirmek olduğu "Deneyim ve Davranış Odaklı Geliştirme" çağına girdiğimizi öne süren bir makale de yazmıştım.

Gelişimsel geliştirme ve refaktoring odaklı test, tam olarak yazılım geliştirmedeki bu yeni ufuklara yol açan şeylerdir.