DigiGoods
← Tüm ürünler

Vaka çalışması

qlity

Geliştiriliyor

Stored procedure'lardaki iş mantığını, kanıtıyla koda taşır

SQL Server stored procedure'larının envanterini çıkarır, onları okunabilir C# koduna çevirir ve yeni kodun eski prosedürle aynı sonucu ürettiğini gerçek çağrılarla kanıtlar. Çevrilemeyeni nedenini söyleyerek reddeder.

1021 / 1041
mojoPortal'da üretilen ve eşdeğer kanıtlanan prosedür
635 / 682
DNN Platform'da, her biri kendi prosedürüne karşı
Sıfır çağrı
araç müşterinin makinesinden dışarı çıkmaz

Neden başladı

On yıllık bir .NET ve SQL Server sisteminde binlerce stored procedure olması olağan; iş kuralları zamanla oraya yerleşir. Kod review'dan, testten ve sürüm kontrolünden geçmeyen bu kod, buluta geçişin, servislere ayırmanın ve yapay zekâ destekli geliştirmenin önünde duvar olur: araçlar göremedikleri koda dokunamaz. Piyasadaki göç araçları prosedürü başka bir veritabanının prosedürüne çeviriyor, yani problemi taşıyor. Prosedürü uygulama koduna çevirip eşdeğerliğini kanıtlayan bir araç yoktu.

Kritik kararlar

  1. 01

    Asıl ürün çeviri değil, kanıt

    Kurumsal bir ekip, yirmi yıllık bir prosedürü "muhtemelen doğru" bir çeviriyle silmez. Bu yüzden kanıt katmanı çeviriden önce kuruldu: üretilen kod ve eski prosedür, tek kullanımlık bir veritabanı kopyasında aynı çağrılarla yan yana çalıştırılır; dönen sonuç da veritabanında kalan değişiklik de karşılaştırılır.

  2. 02

    Yaklaşık çevirme, reddet

    T-SQL'in NULL mantığı üç değerli, C#'ınki iki. Koşulu göründüğü gibi yazmak, NULL parametreli bir çağrıda prosedürün döndürmediği satırı döndürüyordu — ölçüldü. Üretilen kod bu yüzden T-SQL'in anlamını açıkça taşıyor; o anlamla yazılamayan her yapı da gerekçesiyle reddediliyor.

  3. 03

    Motor ortak, çıktının şekli müşterinin

    Her ekibin istediği kod farklı: kendi repository deseni, kendi katmanları, kendi dosya düzeni. Motor ara bir temsil üretir, şablonlar onu ekibin koduna basar. Değişken kısım tek katmanda kaldığı için ürün her müşteride aynı kalır; müşteriye özel iş, kodu ekiple birlikte mevcut projeye taşıyan danışmanlıkta yapılır.

  4. 04

    Veri makineden çıkmaz

    Tek dosya bir komut satırı aracı, müşterinin kendi makinesinde çalışır ve dışarı hiçbir çağrı yapmaz. Kapalı bir aracı üretim veritabanına bağlayacak kurumun ilk sorusu "bu ne gönderiyor?" olur; cevabı baştan hazır.

Bugün nerede

Envanter ve kanıt katmanları bitti, kod üretimi ilerliyor. Dapper ve EF Core hedefleri açık şemalarda ölçülüyor; üretilen her metot kendi prosedürüne karşı kanıtlanıyor. Sırada daha fazla T-SQL yapısı, T-SQL dışında kaynaklar ve C# dışında hedefler var.

Ürünün kendisi

Özellik listesi, ekran görüntüleri ve dokümantasyon ürünün kendi sitesinde.

qlity.io ↗