Kimyasal & Malzeme Mühendisliği
Yeniden yazma: Mühendislik Sistemleri için Doğru Seçim Yapmak
Table of Contents
Mühendislik sistemlerinin sürdürülmesi ve iyileştirilmesi, organizasyonlar genellikle kritik bir kararla karşı karşıya kalır: Mevcut bileşenleri yeniden yazabilmeli veya bunları tamamen yeniden yazmalı mı? Her yaklaşımın avantajlarını, avantajlarını ve dezavantajlarını anlamak, proje hedefleri ve kaynak kısıtlamaları ile uyumlu olan bilgilendirici seçimler yapmak için önemlidir.
Yeniden Düşünmek
Refaksiyon, temel işlevlerini değiştirmeden mevcut sistemlere daha fazla artışlar yapmayı içerir. Bu, sistemin davranışını korurken kod kalitesini, okunabilirliği ve kullanılabilirliği artırmayı amaçlamaktadır. Bu yaklaşım genellikle teknik borcu azaltmak ve gelecekteki gelişimi için sistemleri hazırlamak için kullanılır; Bu, gelecekteki değişiklikleri daha kolay, daha güvenli ve daha hızlı hale getirmek için kod iç yapısını geliştirmektir.
Aremental İyileştirmeler ve Kod Kokuları
Genellikle "kolay kokuları" hedef alır - genellikle sistemdeki daha derin sorunlara karşılık gelen işaretler. örnekler tekrarlanan kod, uzun yöntemler, büyük sınıflar ve aşırı darbeler içerir. Bu kokuları sistematik olarak ortadan kaldırarak, takımlar kodu daha modüler ve test edilebilir hale getirebilir.
Refaksiyona Ne Zaman Verilir
Mevcut sistemin hala yapısal olarak seslendiği en etkilidir, ancak orta teknik borçtan yoksundur. Ayrıca işletme mantığı karmaşık ve iyi düşünüldüğünde, yeniden yazma riski daha az risklidir, çünkü sürekli olarak gelişim döngüsünün bir parçası olarak yeniden faktörlenebilirsiniz (örneğin, “erkek pakt kuralı”), kodbase'in sağlıklı kalmasını ve büyük geri yazma ihtiyacının daha az riskli olduğunu bulur.Refaksiyon daha az risklidir.Refaksiyonlama testi ve küçük dağıtımlar yoluyla artacaktır.
Yeniden Yazmayı Anlamak
Yeniden yazı, diğer yandan, yeni bir sistem çizildikten veya önemli ölçüde mevcut olanı iptal etmekten alıkoymak içerir. Bu yöntem genellikle mevcut sistem çok karmaşık olduğunda veya artık iş ihtiyaçlarını karşılamaktadır.Regraph, modern mimarlık ve teknolojilere izin vermek için yeni bir başlangıç sağlayabilir. ancak, eski kodda gömülü yıllar boyunca silinir, optimizasyonlar ve kurumsal bilgi anlamına gelir.
Greenfield vs. Brownfield Rewrites
Yeşil alan yeniden yaz, tamamen yeni bir ortamda sistemi inşa etmeye başlar. Bu genellikle orijinal platformun eski olduğu zaman gerçekleşir (örneğin, Cobol'dan Java'ya kadar) veya sistem tamamen yeniden yorumlandığında. kahverengi alan yeniden yazma, başkalarını çalışırken - bazen “stranger deseni” olarak adlandırılır.
Yeniden yazılınca
Yeniden yazma, mevcut sisteme yeniden faktörlemenin yeniden inşa edilmesinden daha fazla maliyete ulaştığı bir noktaya ulaştığında haklıdır. Göstergeler şunları içerir: kodbase test edilemez, mimarlık gerekli değişiklikleri önleyemez (örneğin, mikro hizmet veya sunucusuz yeni paradigmalar kabul ederek rekabetçi avantaj elde etmek için stratejik bir hareket olabilir.
Riskler ve Maliyetler Karşılaştırma
Her iki yaklaşım da farklı risk profillerini ve maliyet yapıları taşır. Bu, takımların organizasyonel risk toleransı ve bütçe döngüleri ile seçimlerini uyumlulaştırmalarına yardımcı olur.
Risk Faktörleri
[FONT:0) Riskleri dikkate almak:[Dönetici:[Dönetici:0)En büyük risk, asla bitmemektedir - sistemin alt sorunları devam ederken sonsuz bir küçük iyileştirme döngüsü haline gelir. Başka bir risk "refak yorgunluk", takımın motivasyonunu kaybettiği için yavaş ve görünmez olmasıdır.
[FONT:0]Regraph riskleri:[Dönetici:0] En ünlü uyarı Joel Spolsky'nin makalesini ortaya koyar:2). ”Asings You Should Never Do, Part I.), bu yeniden yaz sık sık sık sık bir tampon taşımaya yol açtığını iddia ediyor, özellik değiştirme süresi geç.Regraph riskini (yeni sistem beklenenden daha uzun sürebilir) bilgi riski (iş kuralları çeviride kaybolmalı), bilgi riski (iş kuralları) ve entegrasyon riski (öteki göç ve diğer sistemlerle birlikte)
Maliyet Analizi Maliyet Analizi
Yeniden yazma maliyetleri zamanla yayılıyor. Yazılım Mühendisliği Enstitüsü tarafından yapılan bir çalışma, tasarım sırasında 10-100x daha fazla bir hata düzeltti - ancak yeniden yazmanın 3-5 yıl boyunca birçok kusuru artırması için yeniden düşünülemez.Regraph, büyük bir açıklığa ihtiyaç duyarsızlığa ihtiyaç duyar: yeniden tasarlanabilir, yeniden kodlayın ve her şeyi yeniden yazabilirsiniz.Reception, yeniden yazılabilirlik maliyeti (örneğin bulut lisansını) genellikle 3-5 yıl boyunca yeniden yazılabilir.
Mühendislik Liderliği İçin Karar Çerçeve
Yeniden yazma ve yeniden yazma arasında seçim, sistem karmaşıklığı, iş öncelikleri, mevcut kaynaklar ve uzun vadeli hedefler gibi çeşitli faktörlere bağlıdır. Aşağıdaki karar çerçevesi belirli durumunuzu değerlendirmenize yardımcı olabilir.
Sistem Sağlık Değerlendirme Sistemi
Kodbase'in cyclomatic karmaşıklığı gibi metrikleri kullanarak sistematik bir analiz yapın, kod kapsamı, darbe ve defekt yoğunluğu. SonarQube veya KodClimate gibi araçlar objektif veriler sağlayabilir. Sistem puanları yetersiz kalabilirse, iş mantığı yeterli olabilir.Eğer mimarlık temel olarak kusurlu olabilir (örneğin.g., monolithic spaghetti gibi).
İş Hedefleri
İş sonuçları için teknik karar. Hedef bir sonraki çeyrekte özellik teslimini hızlandırmak istiyorsa, yeniden faktörleme genellikle daha güvenli olabilir.Eğer hedef, radikal olarak farklı performans veya ölçeklendirme özellikleri gerektiren yeni bir pazara girmek istiyorsa, bir yazma haklı olabilir.
Takım Yetenek ve Kurumsal Bilgi
Refaksiyon mevcut sistemi anlamak için ağırlığa sahiptir. Orijinal yazarlar hala takımdaysa, refaksiyon daha verimlidir. codebase küçük belge ile küçük bir kutu test, eski sistemden önce tekrar yazma riski taşır - ancak bu durumda, "rewrite with protection" olarak düşünün: Yeni sistemden bağımsız olarak iş kuralları çıkarmak, ancak eski sistemden dikkatli bir şekilde okuma ve otomatik olarak denemeden önce otomatik olarak test etmek.
Gerçek-Dünya Örnekleri
Bu seçeneği nasıl gezmiş diğer örgütlerin pratik öngörüler sağlayabileceğini incelemek.
Örnek: Basecamp'in HEY'nin Yeniden Yardımcılığı
E-posta servisini geliştirirken, Basecamp'in ekibi mevcut Rails kodu sıfırdan yeniden yazmak yerine yeniden yazmayı seçti.Onlar sistematik olarak domain mantığını hizmet nesneleri haline getirdiler, kapsama ve ortadan kaldırılmış ölü kodu ortadan kaldırdılar.Bu, kodu muhafaza ederken ürüne izin verdi.
Örnek: FreshBooks' Rewrite
FreshBooks, bir muhasebe yazılımı şirketi, ünlü bir şekilde tüm platformlarını monolithic PHP uygulamasına modern, ölçeklenebilir bir sisteme hizmet etme konusunda yeniden yazdı. karar, performans ve mimari kısıtlamalarla mücadele ettikten sonra geldi.Yazar 2 yıldan fazla sürdü ve on milyonlarca dolara mal oldu, ancak daha büyük müşterilere hizmet etmek ve destek maliyetlerini azaltmalarını sağladı. CEO, "en zor şey yaptığımız şey" dedi.
Örnek: Martin Fowler'in Refaksiyon Topluluğu
Martin Fowler, seminal kitabın yazarı:0)Refaksiyon: Mevcut Kod Tasarımının iyileştirilmesi), herhangi bir takımın yeniden yazması için uzun savunucuları vardır. Fowler'in bakış açısı, çoğu sistemin otomatik test ve sürekli entegrasyona yatırım yapıp artırılabileceğini savunuyor.
Sonuç: Doğru seçim yapmak
Her iki rektörlük ve yeniden yazma, mühendislik sistemi yönetiminde yer almaktadır. Belirli durumun dikkatli bir değerlendirme, kod tabanının sağlık, iş hedefleri ile uyumlu, maliyet ve gelecekteki hazırlığı. Doğru bir yol genellikle bir kombinasyon içerir: Yeniden yazılabilir parçalar ve yeniden yazılabilir, ve yeniden yazılabilir olan bu bileşenleri geri yazabilirsiniz. Buradaki kodunuzu değerlendirmek için çerçeveyi kullanın, iş hedeflerini değerlendirmek için, ve ekip bilgilerini kullanarak.