AI COBOL'u Java'ya Hızla Taşır, Doğruluğunu Kanıtlamak Asıl Zorluk
AI, COBOL'u Java'ya hızla taşıyor ama doğruluğu kanıtlamak farklı bir sorun. SMT tabanlı eşdeğerlik doğrulayıcının gizli hataları nasıl yakaladığını görün.
AI araçları COBOL kodunu derlenen Java koduna hızla çevirebiliyor, ama bu 'çeviri doğruluğu' ile 'göç eksiksizliği' aynı şey değil. Onlarca yıllık dokümante edilmemiş iş kurallarının ve uç durum davranışlarının hayatta kalıp kalmadığı, sadece kod satırlarına bakarak anlaşılamaz. Legacy ve göç edilmiş sistemi aynı girdilerle karşılaştıran spot-test yöntemi yalnızca mühendislerin test etmeyi düşündüğü yolları kanıtlar; asıl kırılan noktalar tam olarak bunun dışında kalır. Örneğin COBOL'un sabit noktalı aritmetiği Java'da sessizce kayan noktalıya dönüşürse, milyonlarca hesap üzerinde birikerek ay sonunda denetim bulgusuna dönüşen bir sapma oluşur.
Buna karşılık, SMT çözücü kullanan bir farksal eşdeğerlik doğrulayıcı geliştirildi: legacy ve göç edilmiş kodun aynı girdiler için aynı çıktıları üretip üretmediğini biçimsel olarak kanıtlıyor. Eşdeğerliği kanıtlayamadığında güven skoru değil, gerçek ve tekrar çalıştırılabilir bir karşı örnek döndürüyor. v1 sadece aritmetik ve dallanma mantığını kapsıyor; döngüler, dosya G/Ç, REDEFINES ve string işleme gibi konuları sessizce atlamak yerine açıkça kapsam dışı olarak işaretliyor.
Geliştirme sırasında ekip kendi hatasını yakaladı: ardışık değişken kullanımının naif şekilde ele alınması yanlış eşdeğerlik sonuçlarına yol açabiliyordu; bu, her adımın durumunu açıkça takip ederek ve karşı örneklerin gerçekliğini doğrulayan bir yöntemle düzeltildi. Doğrulayıcı 14 gerçek müşteri COBOL sistemine (yaklaşık 200 bin satır, 300 modül, 8.700 üretilmiş regresyon testi) karşı çalıştırıldığında 412 semantik uyuşmazlık tespit etti — bunlar yalnızca spot-test yapılsaydı fark edilmeden geçecek sapmalardı.