Pan Innovation House Pan Innovation House
ÖZEL YAZILIM · DEVRALMA VE KURTARMA

Yazılım Devralma ve Kurtarma

Yazılımcısına artık ulaşılamayan, kaynak kodu eksik ya da hiç dokümantasyonu olmayan bir programa bağımlı çalışıyorsanız; o sistemi devralır, nasıl çalıştığını kanıta dayalı olarak çıkarır ve yeniden yaşatılabilir hale getiririz.

Türkiye'de üretim yapan pek çok işletme, on beş yirmi yıl önce tek bir yazılımcıya yazdırdığı özel bir programla çalışmaya devam ediyor. Sistem çalıştığı sürece sorun görünmez; ancak yazılımcı emekli olduğunda, iletişim koptuğunda ya da ilişki bozulduğunda ortaya çıkan tablo aynıdır: kaynak kod ya yoktur ya eksiktir, kimse programın içinde hangi hesabın nasıl yapıldığını bilmemektedir, yeni bir özellik eklenemez ve küçük bir hata bile üretimi durdurma riski taşır.

Bu durum bir yazılım geliştirme problemi değil, bir arkeoloji problemidir. Yeni bir program yazmak, çalışan sistemin yerini alacak doğru davranışın ne olduğunu bilmeden mümkün değildir; o davranış da yazılı hiçbir yerde durmaz, yalnızca çalışan kodun ve veritabanının içinde yaşar. Dolayısıyla işin ilk adımı kod yazmak değil, kanıt toplamaktır: derlenmiş uygulamadan iş mantığının çıkarılması, veritabanındaki nesnelerin haritalanması ve hangi bilginin kesin, hangisinin çıkarım olduğunun açıkça ayrılması.

Pan Innovation House olarak bu işi daha önce uçtan uca yaptık. Derlenmiş bir kurumsal uygulamanın tamamını satır satır çözümledik, menü ve yetki hiyerarşisini yeniden kurduk, veri erişim modelini çıkardık ve raporda her bulguyu kanıt seviyesine göre etiketledik: koddan doğrudan okunanı kesin, dolaylı kesişimden geleni olasılık, kaynağı yetersiz olanı ise açıkça doğrulanamadı diye işaretledik. Bir sistemi devralırken en tehlikeli şey, tahmini bilgiymiş gibi devretmektir; yöntemimizin merkezinde bu ayrım vardır.

Kimler için?

Yazılım Devralma ve Kurtarma kimler için uygun?

Yazılımcısına ulaşılamayan fabrikalar

Üretim, kesim, sipariş veya hakediş takibi tek kişinin yazdığı bir programla yürüyen ve o kişiye artık ulaşılamayan işletmeler. Sistem hâlâ çalışıyor olabilir; ama değiştirilemiyor, taşınamıyor ve arızalandığında müdahale edecek kimse yok.

Tedarikçisiyle yolları ayrılan işletmeler

Yazılım firmasıyla ticari ilişkisi biten ya da hizmet kalitesinden memnun olmayan şirketler. Devir sürecinde kaynak kodun eksiksiz teslim edilip edilmediğini doğrular, sistemi bağımsız olarak ayağa kaldırabildiğimizi göstererek geçişi güvenli hale getiririz.

Anahtar kişi bağımlılığı taşıyan şirketler

Kritik sistemi tek bir çalışanın veya danışmanın taşıdığı işletmeler. Bu kişi ayrılmadan önce bilgiyi kuruma aktarmak, ayrıldıktan sonra çıkarmaya çalışmaktan çok daha ucuzdur; devir dosyası bu bağımlılığı ölçülebilir biçimde azaltır.

Devralma ve yatırım öncesi inceleme yapanlar

Bir şirketi, bölümü veya yazılım varlığını satın almadan önce teknik durumunu bağımsız olarak görmek isteyenler ile ikinci kuşağa geçen aile şirketleri. Neyin devralındığını, hangi riskin taşındığını ve devamlılığın neye bağlı olduğunu yazılı hale getiririz.

Ne geliştiriyoruz?

Yazılım Devralma ve Kurtarma kapsamında neler yapıyoruz

Modülün yetenekleri ve karşılığı
YetenekNe sağlar
Çalışan sistemden iş kuralı çıkarmaDerlenmiş uygulamanın çözümlenmesi, ekran ve menü hiyerarşisinin yeniden kurulması, hangi ekranın hangi tabloya dokunduğunun ve hesapların hangi sırayla yapıldığının çıkarılması. Sonuç, programın ne yaptığını anlatan okunabilir bir iş kuralı haritasıdır.
Kayıp veritabanı nesnelerinin yeniden kurulmasıKaynağı bulunamayan saklı yordam, fonksiyon ve görünümlerin; çağrıldıkları yerlerden, aldıkları parametrelerden ve ürettikleri sonuçlardan yola çıkarak yeniden yazılması. Her nesne için sözleşme ile gövde ayrı ayrı ele alınır, çıkan sonuç canlı veriyle karşılaştırılarak doğrulanır.
Çalışır derleme ortamının yeniden kurulmasıBağımlılıkların, lisansların ve yapılandırmanın tespiti; projenin sıfırdan derlenip çalıştırılabildiği bir ortamın kurulması. Bu adım tamamlanmadan hiçbir devir gerçek değildir, çünkü değiştiremediğiniz bir yazılım size ait sayılmaz.
Kanıt seviyeli devir raporuHer bulgunun kaynağıyla birlikte etiketlendiği bir rapor: koddan doğrudan okunan kesin bilgi, birden çok dolaylı bulgunun kesişiminden gelen olasılık ve kaynağı yetersiz olduğu için doğrulanamayan alanlar ayrı ayrı gösterilir. Böylece neyi bildiğiniz kadar neyi bilmediğinizi de bilirsiniz.
Acil müdahale ve sistemi ayakta tutmaDevir süreci boyunca sistemin çalışmaya devam etmesi: kritik hataların kapatılması, yedekleme ve geri dönüş provası, üretimi durduran arızalara öncelikli müdahale. Analiz sürerken işletme durmaz.
Kademeli modernizasyon ve paralel koşmaKarar yeniden yazma yönünde çıkarsa, eski ve yeni sistem bir süre yan yana çalıştırılır; aynı girdiyle üretilen çıktılar birebir eşleşene kadar geçiş tamamlanmış sayılmaz. Tek seferde kapatma yerine, geri dönüşü mümkün bir geçiş kurgularız.
Teknolojiler

Kullandığımız teknolojiler

  • Decompile analizi
  • .NET / WinForms
  • SQL Server
  • T-SQL
  • ADO.NET
  • Sorgu planı analizi
  • Veri göçü
  • Git
  • Docker
  • Otomatik test
  • Kanıt etiketli raporlama
Süreç

Keşiften canlıya nasıl ilerliyoruz

  1. 01

    Durum tespiti ve sistemi ayakta tutma

    Önce riski durdururuz: elinizde ne var (kurulum dosyası, kaynak kod parçaları, veritabanı yedeği, lisanslar) envanterini çıkarır, yedeklemeyi ve geri dönüşü güvence altına alırız. Bu aşamanın çıktısı, işin gerçekten yapılabilir olup olmadığına dair dürüst bir ön değerlendirmedir.

  2. 02

    Kanıta dayalı çözümleme

    Uygulama ve veritabanı satır satır çözümlenir; ekranlar, roller, tablolar ve hesap akışları birbirine bağlanır. Her bulgu kanıt seviyesiyle etiketlenir; sınıf veya dosya adı tek başına kanıt sayılmaz, çıkarımlar birden çok bağımsız izin kesişimine dayandırılır.

  3. 03

    Eksiklerin yeniden kurulması

    Kaynağı bulunamayan veritabanı nesneleri ve kod parçaları yeniden yazılır, ardından canlı veriyle doğrulanır. Doğrulanamayan alanlar rapora eksik olarak işlenir; kapatılmış gibi gösterilmez.

  4. 04

    Çalışır ortam ve devir dosyası

    Projenin derlenip çalıştığı bir ortam kurulur; kurulum adımları, bağımlılıklar, yapılandırma ve bilinen riskler yazılı hale getirilir. Devir dosyası, sizden başka birinin de bu sistemi sürdürebilmesi için gereken asgari bilgiyi içerir.

  5. 05

    Yol ayrımı kararı

    Elde edilen tabloyla birlikte iki seçeneği rakamlarıyla koyarız: mevcut sistemi yaşatmak mı, kademeli olarak yeniden yazmak mı. Karar sizindir; her iki yolun maliyeti, süresi ve riski aynı belgede karşılaştırılır.

Sıkça sorulan sorular

Yazılım Devralma ve Kurtarma hakkında merak edilenler

Kaynak kod elimizde yok. Yine de yapılabilir mi?

Çoğu durumda evet. Derlenmiş uygulama ve veritabanı elinizdeyse, programın ne yaptığı büyük ölçüde çıkarılabilir. Ancak baştan söyleyelim: bazı bilgiler yalnızca kaynakta yaşar ve derlenmiş halden geri getirilemez. Bu yüzden ilk aşamanın çıktısı bir taahhüt değil, neyin çıkarılabildiğini ve neyin çıkarılamadığını gösteren dürüst bir haritadır.

Sistemi kurtaracağınıza dair garanti veriyor musunuz?

Hayır, ve garanti veren birine temkinli yaklaşmanızı öneririz. Elimizdeki malzemeye bakmadan sonucu taahhüt etmek mümkün değil. Bizim taahhüdümüz süreyle ve kapsamla ilgilidir: sabit süre sonunda ne bulduğumuzu, sistemin hangi bölümlerinin yeniden kurulabildiğini ve bundan sonrasında hangi yolların açık olduğunu içeren bir rapor teslim ederiz. Bu rapor, kurtarma mümkün değilse de değerlidir; çünkü yeniden yazma kararını körlemesine değil bilerek verirsiniz.

Ne kadar sürer, maliyeti nedir?

Uygulamanın büyüklüğüne, veritabanının karmaşıklığına ve elinizdeki malzemeye göre değişir. Bu yüzden işi sabit süreli ve sabit kapsamlı paketler halinde kurguluyoruz; süre bitiminde ne çıktığını görüp devam edip etmeyeceğinize karar veriyorsunuz. Böylece ucu açık bir danışmanlık faturasıyla karşılaşmıyorsunuz.

Analiz sırasında üretim durur mu?

Hayır. Çözümleme, sistemin kopyası ve veritabanı yedeği üzerinde yürütülür; canlı ortama yalnızca sizin onayınızla ve önceden konuşulmuş bakım pencerelerinde dokunulur. Devir süreci boyunca üretimi durduran bir arıza çıkarsa öncelikli müdahale kapsamdadır.

Bu iş hukuken sorun yaratır mı?

Belirleyici olan yazılımın kime ait olduğudur. Program sizin siparişinizle, sizin için yazıldıysa devralma çoğunlukla kendi varlığınız üzerinde çalışmak anlamına gelir; ancak mali hakların devri sözleşmede açıkça yazılı değilse durum tartışmalı hale gelebilir. Çalışmaya başlamadan önce mevcut sözleşmenizi birlikte gözden geçirir, gerekiyorsa bir avukatla netleştirmenizi isteriz. Hukuki belirsizliğin üzerine iş kurmayız.

Sonunda elimize tam olarak ne geçiyor?

Dört şey: programın ne yaptığını anlatan kanıt seviyeli bir analiz raporu, yeniden kurulmuş veritabanı nesneleri, projenin derlenip çalıştığı bir ortam ve başka bir ekibin de devam edebilmesi için gereken devir dosyası. Bunların hepsi size aittir; bizde kalan bir bağımlılık oluşmaz.

Mevcut sistemi yaşatmak mı, sıfırdan yazmak mı daha doğru?

Bu kararı analiz bitmeden vermek doğru değil. Çalışan bir sistemin içinde, yıllar içinde birikmiş ve hiçbir yerde yazılı olmayan çok sayıda iş kuralı bulunur; bunları görmeden yazılan yeni program genellikle eskisinden daha eksik çıkar. Önce ne olduğunu çıkarır, sonra iki seçeneği maliyet ve risk olarak yan yana koyarız.

İletişim

Yazılım Devralma ve Kurtarma projenizi konuşalım

30 dakikalık keşif görüşmesinde ihtiyacınızı dinler, özele mi yoksa hazır çözüme mi ihtiyacınız olduğunu dürüstçe söyleriz.

İlgili

İlgili sayfalar ve rehberler

Sistem Performans Mühendisliği

Gün sonu kapanışta kilitlenen, ay sonu raporu bir türlü açılmayan, birkaç kullanıcı aynı anda girdiğinde duran sistemlerin nedenini ölçerek buluruz. Tahminle değil, sorgu planı ve profil verisiyle; önceki ve sonraki durumu aynı düzenekle ölçerek.

Detay

Yazılım Test ve Kalite Otomasyonu

Kritik iş akışlarınızı otomatik testlerle koruruz: kabul kriterlerinin yazılması, uçtan uca senaryolar, regresyon paketi ve sürüm öncesi otomatik koşum. Bir güncellemenin neyi bozduğu, müşteriden değil testten öğrenilir.

Detay

Uygulama Güvenliği ve Kod Denetimi

Teslim edilmiş ya da devralınmış uygulamalarda güvenlik denetimi yaparız: yetkilendirme ve veri erişim hataları, kimlik doğrulama zayıflıkları, enjeksiyon riskleri, sır ve anahtar yönetimi, bağımlılık zafiyetleri. Bulguları kapatma tarafında da çalışırız.

Detay

Mimari Danışmanlık ve Teknik Borç Denetimi

Mevcut yazılım varlığınızı bağımsız olarak değerlendiririz: mimari haritası, teknik borç envanteri ve önceliklendirmesi, bağımlılık ve tedarikçi kilitlenmesi riski, ekibin çalışma biçimi ve gerçekçi bir yol haritası. Kod yazmadan yön veren bir çalışmadır.

Detay

Yazılım Ürünleştirme: Projeden Ürüne

Tek müşteri için yazılmış ve çalışan bir yazılımı satılabilir bir ürüne dönüştürürüz: çekirdek ile müşteriye özel katmanın ayrılması, konfigürasyon motoru, çok kiracılı veri izolasyonu, kurulum ve sürüm yönetimi ile abonelik altyapısı.

Detay

Tedarik Zinciri Yönetimi (SCM)

Talep ile tedariğin nerede ayrıştığını, hangi tedarikçinin termininde durduğunu ve malın şu anda hangi noktada beklediğini tek yerden görünür kılarız. Amaç yeni bir ERP kurmak değil; mevcut sistemin bilmediği zincir dışı bilgiyi toplayıp planlama kararını veriye bağlamaktır.

Detay
Ara Ücretsiz keşif görüşmesi