Bildiğim kadarıyla patch için her client bir patch dosyası indirip çalıştırıyor. Hotfix'te ise server tarafında düzeltme yapılıyor, clientlar servera bağlandıklarında düzeltilmiş datayı görüyorlar.
Mesela bilgisayarınızda bir program var diyelim, bu programda bir tablo var. Tablonun renkleri, yazı karakteri bilgileri vs. statik şeyler olduğu için sizin bilgisayarınızda (client) tutuluyor olsun. Tablodaki bilgi de mesela günlük thy uçuşları olsun. Programı her çalıştırdığınızda thynin serverlarına bağlanıp uçuş bilgilerini alıp tabloya yazıyor olsun.
Thy bu programdaki tablo renklerini değiştirmek istedi diyelim bir patch yayınlaması lazım, sizin bunu indirip çalıştırmanız ve patchin bilgisayarınızdaki statik datayı güncellemesi lazım.
Thy uçuş bilgilerinde bir hata farketti diyelim o zaman bir hotfix ile kendi serverindaki uçuş datasını güncelleyebilir. Clientların hiçbirşey yapmasına gerek yok. Programı çalıştırdıklarında serverdan güncel bilgi gelecektir.
yazılım geliştirilirken programa yeni özellikler ekleneceği zaman bu bir planlama dahilinde olur ve bunun için versiyon çıkartılır. versiyon çıkartıldıktan sonra, var olan versiyonda bulunan hataları gidermek ( yeni özellik eklemeden ) için çıkarılan yeni versiyona "patch" ( yama ) denir. bu yamaların da belirli bir planlaması ve takvimi vardır. eğer versiyon çıkartıldıktan sonra sistem için kritik bir hata ( örneğin güvenlik sorunu ) bulunmuş ise, bu hata düzeltilerek sıcağı sıcağına düzeltme ( hotfix için çakma türkçe çeviri oldu ) çıkatılır. hotfix için herhangi bir takvim yoktur, kod düzeltildikten ve tüm testlerden ( kalite testi diye bir kavram yoktur o ayrı, test yazılımın kalitesini yükseltmek için geçirilen süreçlerden birisidir sasdece ) geçtikten sonra release/deploy edilir. Gerçi microsoftun dahi bir hotfix çıkartırken başka şeyleri bozduğu vakidir ve bunun için alay konusu olmuştur zamanında.
kısaca patch içerisinde çok kritik olmayan birden fazla bugfix vardır genellikle, hotfix ile sistem için kritik önem arzeden bugfix in acil olarak yayınlanmasıdır..
Benim bildiğim kadarıyla da hepsi yamadır. patch > fix > hotfix diye gider. patch, fixten farklı olarak sadece hata gidermek için değil, aynı zamanda bazı özelliklerin değiştirilmesi içindir ve genelde yazılımda daha büyük ölçekli değişim yapar.
Benim bildiğim kadarıyla da hepsi yamadır. patch > fix > hotfix diye gider. patch, fixten farklı olarak sadece hata gidermek için değil, aynı zamanda bazı özelliklerin değiştirilmesi içindir ve genelde yazılımda daha büyük ölçekli değişim yapar.
haklısınız, hepsi yamadır arada planlama ve yayınlama stratejisi farkı söz konusu. fakat var olan yazılıma yeni bir özellik katıldığı zaman buna verilen isim "release" (versiyon) dir. minor ve major release ler olur o başka bir konu.
işin biraz daha teknik kısmına inersek, örneğin bir yazılım için 1.1 versiyonu çıkarılmış olsun. 1.2 için developmenta başlanmadan önce 1.1 versiyonundan kullanılan versiyon kontrol sistemi ne ise ( svn, cvs, git, mercury vs. vs. ) bir branch oluşturulur.
yayınlanan 1.1 versiyonunda hatalar bulunmuş ise ( biz buna kısaca bgf1, bgf2, bgf3 diyelim ) bu düzeltmeler hem 1.1 branchi içerisinde hem de developmentı devam eden 1.2 içerisinde yapılır. bu daha sonra atıryorum 1.1.0.1 ismi verilen bir patch sürüm yayınlanır ve buradan yine bir branch oluşturulur.
şimdi bu ayrım niye yapılır dersek, 1.1 i yayınladıktan sonra 1.2 yi geliştirirken buraya yeni özellikler ekledik. ( f1, f2, f3 diyelim biz bunlara ). 1.1 den ayrılmış branchde değilde, 1.2 üzerinde yapılan düzeltmelerden verirsek yeni yazılımı bu sefer f1, f2, f3 için henüz integration test, performans testi, tüm yazılım için regression test, smoke test vs. yapılmamış olabilir.( bu tür kapsamlı testler genelde yazılım geliştirme iterasyonu bittikten sonra bu işte uzman başka bir ekip tarafından yapılır ) bu durumda mantıklı bir yazılımcı olarak kullanıcılarımıza henüz tam olarak test edilmemiş f1, f2, f3 yeniliklerini değil daha sağlam testlerden geçmiş 1.1 versiyonu üzerinden sadece düzeltmeleri veririz. bu düzeltmeler için var ise test/kalite ekipleri gerekli çalışmaları yapar, ağırlıklı olarak düzeltilen kısımları yoğun olarak test ederler incelerler.
program gelistirirken karsima cikan bu iki kelime arasindaki fark nedir?