ScholarGate
Asistan

Yazılım Konfigürasyon Yönetimi

Yazılım konfigürasyon yönetimi (SCM), bir sistemin yaşam döngüsü boyunca durumunun bilinebilir ve yeniden üretilebilir olmasını sağlamak amacıyla yazılım öğelerinin sürümlerini ve değişikliklerini tanımlama, kontrol etme ve izleme disiplinidir.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

Yazılım konfigürasyon yönetimi, konfigürasyon öğelerini tanımlama, bunlardaki değişiklikleri kontrol etme, değişiklik durumunu kaydetme ve raporlama, ayrıca eksiksizlik ve doğruluğu doğrulama faaliyetlerinin bütünüdür; bu sayede gelişen yazılım kontrollü ve yeniden üretilebilir bir şekilde yönetilmektedir.

Kapsam

Bu konu, konfigürasyon tanımlaması ve temel çizgileri; sürüm kontrol sistemleri ile dallanma (branching) ve birleştirme (merging) modellerini; değişiklik kontrolünü ve değişiklik kontrol kurulunun rolünü; derleme (build) ve sürüm (release) yönetimini; konfigürasyon durumu muhasebesi ve denetimini; ve SCM süreçlerini tanımlayan ISO/IEC/IEEE 828 gibi standartları kapsamaktadır.

Temel sorular

  • Konfigürasyon öğeleri nasıl tanımlanır ve temel çizgileri nasıl belirlenir?
  • Sürüm kontrolü ve dallanma modelleri eş zamanlı değişiklikleri nasıl yönetir?
  • Değişiklikler nasıl önerilir, incelenir ve onaylanır?
  • Konfigürasyonların durumu ve bütünlüğü nasıl kaydedilir ve denetlenir?

Temel kuramlar

Temel Çizgiler ve Konfigürasyon Kontrolü
Temel çizgi, kararlı bir referans noktası olarak hizmet eden, resmi olarak gözden geçirilmiş bir konfigürasyondur; temel çizgiye alınmış öğelerdeki değişiklikler kontrollü bir inceleme ve onay sürecinden geçerek sistemin bilinen, yeniden üretilebilir bir durumda kalmasını sağlamaktadır.
Dağıtık Sürüm Kontrolü ve Dallanma
Git gibi modern sistemler, her geliştiriciye tam bir depo (repository) sağlamakta ve ucuz dallanma (branching) ve birleştirme (merging) işlemlerini destekleyerek, sürekli entegrasyon ve teslimatın temelini oluşturan paralel çalışma ve entegrasyon iş akışlarına olanak tanımaktadır.

Klinik önem

SCM, derlemelerin yeniden üretilebilir, değişikliklerin izlenebilir ve sürümlerin kontrol edilebilir olmasını sağlamaktadır; SCM olmadan ekipler, yayınlanmış bir sürümü güvenilir bir şekilde yeniden üretemez, eş zamanlı çalışmaları koordine edemez veya neyin değiştiğini denetleyemezler; bu durum güvenilir teslimat ve DevOps otomasyonu için temel bir öneme sahiptir.

Kanıt ve kılavuzlar

ISO/IEC/IEEE 828, konfigürasyon yönetimi süreçlerini belirtmekte olup, SWEBOK Yazılım Konfigürasyon Yönetimi bilgi alanı, SCM faaliyetleri için fikir birliğine dayalı bir referans sunmaktadır.

Tarihçe

Sürüm kontrolü, 1970'ler ve 1980'lerde SCCS ve RCS gibi erken araçlardan, CVS ve Subversion gibi merkezi sistemlere ve 2000'lerde Git gibi dağıtık sistemlere doğru evrilmiştir; resmi konfigürasyon yönetimi uygulamaları, donanım ve savunma standartlarından ana akım yazılım mühendisliğine geçiş yapmıştır.

Tartışmalar

Dallanma Stratejileri
Ekipler, ana hat tabanlı geliştirme (trunk-based development) ile uzun ömürlü özellik dalları (long-lived feature branches) ve Git-flow gibi iş akışlarını tartışmaktadır; sık entegrasyon ile ana hat tabanlı geliştirme sürekli teslimatı desteklerken, daha yoğun dallanma, zorlu birleştirmeler pahasına çalışmayı izole edebilmektedir.

Öne çıkan isimler

  • Walter Tichy
  • Linus Torvalds
  • Marc Rochkind

İlgili konular

Temel eserler

  • ieee828
  • chacon2014
  • swebok2014

Sıkça sorulan sorular

Konfigürasyon yönetimi sadece sürüm kontrolü müdür?
Hayır. Sürüm kontrolü merkezi bir araç olmakla birlikte, SCM daha geniş bir kapsamdadır: aynı zamanda konfigürasyon tanımlamasını, temel çizgileri, değişiklik kontrolünü, derleme ve sürüm yönetimini, ve sadece kaynak kodu değil, tüm konfigürasyon öğelerinin durum muhasebesi ve denetimini de kapsamaktadır.
Temel çizgiler neden önemlidir?
Temel çizgi, yeniden üretilebilen ve üzerine inşa edilebilen, bilinen iyi bir konfigürasyonu kaydetmektedir; kontrollü değişiklik için kararlı bir referans sağlamakta, ekiplerin geri dönmesine olanak tanımakta ve yeniden üretilebilir sürümler ile denetimler için temel bir öneme sahiptir.

Bu kavram için yöntemler

İlgili kavramlar