2000'li yılların yazılım çözümü, her şeyi düzeltmeye veya yeniden düzenlemeye çalışmalı mıyım?


9

Belli bir şirketin şu anda kullandığı ve bununla ne yapılması gerektiğini tartışmak için gönderildim.

Şirket çeşitli karton ekranlar üretmektedir. Bu sistem müşterileri, siparişleri ve fiyatları takip etmek için geliştirilmiştir. Sistemin yaratılmasından bu yana çok şey oldu ve sistem şimdi tarif ettiği gibi, " kilitli " ve " sorunlu ", "dinamik değil" ve "kararsız" olarak tercüme ediyorum.

Sistem hakkında bazı bilgiler

  • 2000 yılı civarında geliştirilmiştir
  • Oldukça küçük bir sistem, 2-5 kullanıcı, 6 form, ortalama veri miktarına sahip ~ 8 tablo
  • Erken Visual Basic, sürükle ve bırak tasarımı ile oluşturulan formlar üzerine inşa edilmiştir. Arayüz temelde sadece menü ve bazı formları içeren bir penceredir
  • Verileri depolamak için MSSQL veritabanını (SQL2005 sunucusu) ve sorgulamak için ODBC sürücüsünü kullanır, veriler bu sistemden önce excel'den taşınır ve excel'den önce elle ve kağıtla işlenir, hesaplanır ve yazılır
  • Kullanıcılar Microsoft XP ortamında çalışır (ve üstü)

Temel sorunları, fiyatları ayarlayamamaları ve hesaplayamamaları, yeni karton türleri vb. Ekleyememeleri, sunucudaki verilere dokunamadıkları (veya daha doğrusu nasıl yapıldıklarını bilmedikleri).

3 olası çözüm önerdim

  1. Mevcut sistemi düzeltme girişimi
  2. Yepyeni bir arayüz oluşturun (tercihen benzer ortam, VB.net veya VB tabanlı)
  3. Çok küçük bir sistem olduğunu düşünerek bir Excel çözümüne geri getirin

Daha fazla seçenek olabilir, ama bunlar aklıma gelenler.

Sorularım

  • Ne tavsiye etmeliyim ve neden?
  • Bu alternatiflerin artıları ve eksileri neler olabilir veya olabilir mi?
  • Başka (muhtemelen daha iyi) alternatifler var mı?

3
Veritabanı şemalarını belgeleyene kadar geçerli sistemin ne kadar bozuk olduğuna karar veremezsiniz.

@ ThorbjørnRavnAndersen Bu doğru. Sadece veritabanına baktım. Yaratıldığı yaştan yola çıkarak, gerçekten çok tasarlanmış ve ilk yardıma ya da cerrahiye ihtiyacı olduğunu varsayacağım .
ShadowScripter

1
Orijinal sistemi kimin yazdığını biliyor musunuz? Bu bir kurum içi çaba mıydı yoksa sözleşmeli miydi?
maple_shaft

7
Bunu yapma. Müşteriye, veritabanının durumunun çeşitli seçeneklerin maliyeti için çok önemli olduğunu ve hangi seçeneği seçtiklerinden bağımsız olarak yapılması gerektiğini söyleyin. Sıfırdan yeniden yazmak için bile, büyük olasılıkla verilerinin taşınmasını istiyorlar.

4
Geliştiriciler varsayılan olarak "sıfırdan yeniden yazma" ve yeniden düzenleme işlemlerini yalnızca gerektiğinde yapmaktan hoşlanırlar. "Yavaş yavaş refactor" varsayılan ve sadece gerektiğinde yeniden yazmak istiyorum.
quant_dev

Yanıtlar:


5

Sadece 6 form ve benzeri bir şeyin daha modern bir çerçeve üzerinde yeniden oluşturulması kolay olmalıdır . Düzinelerce sınıf ve veritabanı tablosu ile birlikte yaklaşık 200 formu olan VB6 projelerini taşımakla çalıştım. Dağınık bir şeye bakmış gibi görünmüyorsunuz ama görünüş aldatıcı olabilir.

Mevcut kod tabanını yeniden yazmanın veya yeniden düzenlemenin en iyi olacağını söylemek için kodu, veritabanını ve iş gereksinimlerini analiz etmem gerekir. Söylediklerine bakılırsa, yeniden yazmaya eğilimliydim. Ancak, şu anda görmediğiniz gizli zorluklar olabilir.


Küçük boyutu göz önüne alındığında, katılıyorum. Bir bakışta, o da çok karmaşık görünmüyor. Cevaplardan yola çıkarak, yeniden yazma en uygun gibi görünüyor. Yine de son kararı vermeden önce daha yakından bakacağım. Tavsiye için teşekkürler! :)
ShadowScripter

@ShadowScripter Siz yazarken VB'den daha iyi bir dilde yazmaya bakarım. Açık kaynak lazarus projesine göz atın .
Spencer Rathbun

5

Şu ana kadar verilen yanıtların çoğunda biraz farklı tavsiyelerim var.

Mevcut sistemi düzeltme girişimi

En azından mevcut sistemi müşteriye nasıl kullanılacağını açıklayacak kadar iyi öğrenirdim. Mevcut sistemdeki kusurları açıklamak, olumsuz kelimelerden kaçınmak, bilinen tüm hatalar düzeltilse bile ne yapamayacağını söylemek için bu zamanı alırdım.

Yepyeni bir arayüz oluşturun (tercihen benzer ortam, VB.net veya VB tabanlı)

Mevcut kurulumuyla her şeyi öğrendikten sonra. Onlara seçenekler sunun, eğer mevcut sistemleriyle ilgili endişelerini giderebiliyorsanız, mevcut sistemlerinde gerçekten yanlış bir şey yoktur. Elbette tek endişe, Visual Basic 6 desteğinin 5 yıl içinde mevcut olmayabilir.

Başka bir endişe veritabanı ile iletişim biçimidir. Microsoft, veritabanı ürünleriyle (Access, MSSQL) iletişim kurmanın eski yollarından yavaşça kurtularak, bu ürünlerle etkileşim kurma şekliniz çözümün gelecekte Windows 9 ve Windows 10'da kullanıp kullanamayacağını belirler.

Bu cevap tamamen uygulamanın kendisinin kaynağına sahip olmasına bağlıdır. Kaynağa sahip değillerse, endişelerini gidermek, mevcut büyük hataları düzeltmek veya hatta gerçekten kullanabilecekleri bir araç haline getirmek zor olacaktır.

Bir Visual Basic 6 uygulaması ile "yanlış" bir şey olduğunu hissetmiyorum, yanı sıra, gelecekteki sürümleri için destek bilinmemektedir. Bugün bile Windows 7 ve 64 bit işletim sistemleriyle desteklenmesi gittikçe zorlaşıyor. Bu, 64 bit desteği ile modern bir dile yeniden yazmanın önemli bir nedeni olabilir.

Bu noktada kaynağa sahip değillerse, yeniden yazma gerçekten tek çözümdür.


" Microsoft is slowly getting rid of some of the older ways to communicate..." İçin bir referans verebilir misiniz ? Bu konuda daha fazla okumak istiyorum.
ShadowScripter

@ShadowScripter - Örneğin, işlem 32 bitlik bir işlem olmadığında eski Access veritabanı dosyalarına erişmek için Microsoft.Jet.OLEDB.4.0 Sağlayıcısı desteklenmez. WinRT ayrıca bu Microsoft ürünlerine bağlanma şeklimizi de değiştirebilir. Gelecekteki bir değişiklik hakkında nerede okuduğumu unutuyorum, anlayışım MSSQL 2012'den sonra Microsoft, yalnızca ona bağlanmanın belirli bir yolunu destekleyecek. Tabii ki bu, Windows'a yerleşik sağlayıcılar ve geliştirme teklifleri
bağlamında

1

Sistemin nispeten küçük olması nedeniyle arayüzü yeniden yazmak mükemmel bir seçenektir. Avantajları -

  1. Geliştirilmiş kararlılık (iyi yaptığınızı varsayarsak!)
  2. Geliştirilmiş sürdürülebilirlik
  3. Modern arayüz

Ana dezavantaj, muhtemelen mevcut kodu hack etmekten daha adil bir maliyete mal olmasıdır.


Arayüzü yeniden yazmak benim de eğildiğim şeydi. Ve dürüst olmak gerekirse, bugünün standartlarına bakarak eski arayüzle nereden başlayacağımdan emin değilim, bu çok ... kötü.
ShadowScripter

1

Ayrıca yeniden yazma eğilimindeyim, ancak mevcut işlevselliği ve bozuk, eksik veya yetersiz olan tüm işlevleri tam olarak anladığınızdan% 100 emin olmanız gerekir. Son iki, fiyatların ayarlanması ve hesaplanmasından bahsettiğiniz gibi önemlidir. Bu özelliği eklemenin sonuçlarını tam olarak anlıyor musunuz?

Bir zamanlar bir "web sitesi" olması gereken şey üzerinde çalıştım, ama aslında 1990'ların sonlarından itibaren özel bir Access tabanlı CRM stili aracını devralarak modern, web tabanlı dünyaya getirdim. Orijinal geliştirici çoktan gitmişti, Veritabanı on beş kez değiştirilmişti, orijinal dokümantasyon bu yüzden güncelliğini yitirmişti ve kimse sistemin nasıl çalıştığını gerçekten anlamadı. Ama bunu nasıl kullanacaklarını biliyorlardı, sadece. Muhtemelen bu proje için bütçenin% 80'i üç şeyden geçti:

  • toplama gereksinimleri
  • mevcut sistemi anlama
  • yazılımı nasıl kullanmayı amaçladıklarına dair anlamlı bir veritabanı şeması oluşturmak

Proje finansal açıdan başarılı değildi!


Ne dediğini duyuyorum: son bir karar vermeden önce mevcut başarısızlıklarını, işlevlerini ve amaçlarını tam olarak anlamam gerekiyor. Silahlar çığlık atarak, çığlık atarak içeri girmek istediğim gibi değil All right, let's do this. LEEEEEEEROOOOOOOY...! : P
ShadowScripter

0

Başka bir seçenek, her şeyi yeniden yazmak ve mevcut uygulamayı hacklemek arasında bir uzlaşma olabilir.

Sıfırdan oluşturulmuş yeni bir uygulamada onlara yeni işlevler verin.

Bu, potansiyel olarak daha kolay olabilir ve tam bir yeniden yazma kadar maliyetli olmayabilir.

Bu yapıldıktan ve veri ekleyebildikleri / güncelleyebildikleri için mutlu olduklarında, iki uygulama yeni uygulamadaki mevcut işlevselliğin yerini alabilecek bir aşama açar.

Bu daha lezzetli bir yaklaşım olabilir.


1
Sanırım bu iyi bir fikir, ancak ikinci aşama asla gerçekleşmezse, diğer yeni uygulamaya bağımlı olan eski bir ayrı uygulama ile sonuçlanacak ve bunları iki uygulama ile bırakacak ve sorunu iki katına çıkaracaklar.
ShadowScripter

0

Yeniden yazma işlemleri genellikle bütçenin tükenme eğilimindedir ... Kötü.

Ancak uygulama için modern bir iskelete sahip olmak, özellikle de hiç kimse eski sistemin nasıl çalıştığını bilmiyorsa ve bunlara dokunmaya başlar başlamaz işler kırılırsa iyi bir yatırım olabilir.

Ayrıca, VB6 destek için kötüdür. 10 yıl içinde uzman bulmanız gerektiğinde, bu oldukça sorunlu olacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.