| Bu yazıda 
"yazılım yapılış yönetimi" hakkında temel bilgiler verilecektir. 1. YAZILIM YAPILANIŞI YÖNETİMİ - 
GİRİŞBir sistem, belirli fonksiyon ya da fonksiyonları yerine getiren bileşenler 
topluluğu olarak tanımlanabilir. Bir sistemin yapılanışı yani konfigürasyonu ise 
sistemin donanım, bellenim (firmware), yazılım karakteristiklerinin ve 
fonksiyonlarının tanımlanmasıdır. Ayrıca, belirli bir amaca yönelik olarak 
yazılım, donanım ve bellenim öğelerinin belirli versiyonlarının bir araya 
getirilmiş bir topluluğu olarak da düşünülebilinir.
 Yukarıdaki açıklamaları dikkate alırsak,  
Yapılanış Yönetimi (YY), sistem yaşam döngüsü boyunca bir sistemin 
yapılanışını belirgin noktalar ile tanımlayan, değişiklikleri sistematik olarak 
kontrol eden, yapılanışın bütünlüğünü ve izlenebilirliğini sağlayan bir 
disiplindir. diyebiliriz.
 
 Yapılanış Yönetimi (YY) resmi tanımı:
 
 Bir yapılanış öğesinin fonksiyonel ve fiziksel karakteristiklerini tanımlayan 
ve belgeleyen,bu karakteristiklerin değişimini kontrol 
eden, değişim sürecini ve gerçekleştirim durumunu kaydeden ve denetleyen, 
belirlenmiş gereksinimlerle uyumluluğunu doğrulayan bir disiplindir.
 
 
 
  
    | Not: 
    Donanım yapılanış yönetimi ile 
yazılım yapılanış yönetimi arasında farklar olsa da, yapılanış yönetimi 
kavramları ikisine de aynı şekilde uygulanır. |  2. YAZILIM YAPILANIŞI AKTİVİTELERİYazılım yapılanışını, en iyi olarak aktivitelerini inceleyerek anlayabiliriz. Bu 
bölümde yazılım yapılanışın aktiviteleri detaylı olarak ele alınacaktır. Yazılımsal Yapılanış Yönetimi (YYY) aktiviteleri genel olarak şu şekilde 
belirlenmiş ve dünyada bir standard olarak kabul görmüştür:
 
 
  
    | * 
Yazılım Yapılanışı Yönetimi sürecinin yönetimi, |  
    | * 
Yazılım Yapılanışı tanımlaması, |  
    | * 
Yazılım Yapılanışı kontrolü, |  
    | * 
Yazılım Yapılanışı durumu kontrolü, |  
    | * 
Yazılım Yapılanışı denetlenemesi, |  
    | * 
Yazılım yayım yönetimi ve dağıtımı |   
 Şekil 1 – Yazılım Yapılanış Aktiviteleri
 
 Şimdi şekilde görmüş olduğumuz parçaları tek tek inceleyeceğiz:
 
 
 
2.1.  
Yazılım Yapılanışı Yönetimi (YYY) Sürecinin YönetimiYYY, yazılım yaşam döngüsünü destekleyen, geliştirme ve bakım aktivitelerine, 
projenin tamamına, son kullanıcılara, müşterilere yarar sağlayan bir süreçtir.
 Yönetimsel bir bakış açısıyla bakarsak, YYY, bir ürünün gelişimini, ürünün 
öğelerini tanımlayarak, değişimi yöneterek, kontrol ederek, yapılanış bilgisini 
raporlayarak kontrol eder. diyebiliriz. Geliştirici bakış açısıyla bakacak 
olursak, YYY, geliştirmeyi ve değişimleri gerçekleştirmeyi kolaylaştıran bir 
süreçtir. diyebiliriz. Başarılı bir YYY, dikkatli bir planlama ve yönetimi 
içerir. Bu da, YYY sürecinin kurumsal kavramını, sınırlarını, kavramını anlama 
ile sağlanabilir.
 
 
 
2.1.1. Kurumsal Yapı ile İlişkiBir
proje için   bir Yazılım Yapılanışı 
Yönetimi planlayabilmek için kurumsal yapıyı kurum içi bölümler arası ilişkileri 
bilmek gereklidir çünkü YYY, bazı kurumsal birimlerle ve aktivitelerle içiçe 
olacaktır.
 YYY, yazılım kalite güvencesi, yazılım doğrulama gibi süreçlerle birlikte yaşam 
döngüsünü destekleyen bir süreç olarak görülmektedir. Kurumsal birimler bu 
süreçlerin düzgün olarak yapılandırılmasından sorumludurlar. Bazı YYY 
aktivitelerini gerçekleştirmek başka kurumlara bırakılsa da, genel sorumluluk 
direkt olarak kurumun kendisinde olmak zorundadır.
 
 Yazılım sık olarak donanım ve bellenim elemanlarını da içeren büyük sistemlerin 
bir parçası olarak geliştirilir. Bu durumda, donanım ve bellenim ile paralel bir 
geliştirme yapılması zorunlu duruma gelmektedir. İşte bu yüzden, kurumun 
birimleri bilinmelidir.
 
 Yazılım Yapılanışı Yönetimi, Yazılım Kalite Güvence süreci ile yakından 
ilgilidir. Hatta bazı projelerde, Yazılım Kalite Güvencesi’nin önkoşulu Yazılım 
Yapılanışı Yönetimi olmaktadır. Buna bağlı olarak, YYY içinde bulunan bazı 
öğeler, yazılım kalite güvencenin de öğeleri olabilecek kadar birbirleriyle 
ilgili olabilirler.
  Tabiki en yakın ilişki, yazılım 
geliştirme ile yazılım bakım arasında olmaktadır. Yazılım ortamı aşağıdakileri içerir:
 
 
 
    Bu 
ortam, gördüğünüz gibi, aynı zamanda bir çok yazılım yapılanış kontrolleriyle de 
ilgilidir.
      | * Yazılım yaşam döngüsü modeli ve planları, |  
      | * Proje stratejileri |  
      | * Yazılım tekrar kullanılabilirlik süreçleri |  
      | * Geliştirme platformları |  
      | * Yazılım geliştirme araçları. |  
 
 
2.1.2. Yazılım Yapılanışı Yönetimi 
Rehberi ve KısıtlamalarıYYY kısıtlamaları ve rehberlikleri bir çok kaynaktan gelmektedir. Bir projenin 
yazılım yapılanış yönetimini, yapılan birçok anlaşma ve önceden var olan 
anlaşmalar kısıtlanabilir. Buna ek olarak, müşteri ile yapılan kontratta da 
süreci etkileyici maddeler bulunabilir. Örneğin, kontratta bazı yapılanış 
denetlemelerinin istendiği belirtilmiş olabilir ya da bazı belirlenmiş öğeler 
yazılım yapılanışı yönetimine özel olarak bırakılmış olabilir. Bunlardan başka, 
seçilen yazılım geliştirme metodolojisi de etkileyici bir faktör olabilir. YYY rehberi, Yazılım Mühendisliği Enstitüsü’nün yayımlamış olduğu CMM ya da ISO 
SPICE gibi standardlardan, süreçlerden elde edilebilir.
 
 
2.1.3. Planlama AşamasıYazılım Yapılanışı Yönetimi için yapılacak olan plan, kurumsal kavramlara, 
kısıtlamalara ve rehberlere, projenin doğasına, yapısına uygun olarak 
hazırlanmalıdır. Ele Alınan Planlama 
Adımları:
 
 
  Bunlara ek olarak, kurum, sorumluluklar, 
kaynaklar, zaman çizelgeleri, araç seçimi, gerçekleştirim, arayüz kontrolü gibi 
konular da planlama içinde değerlendirilir. Planlama aktivitesinin sonucunda 
oluşan plan, Yazılım Yapılanış Yönetimi Planı olarak adlandırılır. Bu plan, 
yazılım kalite güvencesi denetlemesi için bir kaynak olmaktadır.
    | * Yazılım Yapılanış 
    Tanımlamaları |  
    | * Yazılım Yapılanış 
    Kontrolü |  
    | * Yazılım Yapılanış Durum Kontrolü |  
    | * Yazılım Yapılanış Denetlemesi |  
    | * Yazılım Yayım Denetimi ve Dağıtımı |  
 
 
2.1.3. Yazılım Yapılanış Yönetimi 
Organizasyonu ve SorumluluklarıYapılması gereken yazılım yapılanış yönetimi aktivitelerinin kimin yapacağını 
karıştırmamak için, sorumluluklar, görevler tam olarak belirlenmek zorundadır. 
Belirli yazılım yapılanışı yönetimi sorumlulukları ve görevleri, belirli 
kurumsal birimlere, kişilere atanmalıdır. Yazılım yapılanışı yönetimi genel 
yetki mekanizması açıkça belirtilmelidir.
 
 
2.1.4. Yazılım Yapılanış Yönetimi 
Kaynakları ve Zaman ÇizelgeleriYazılım yapılanış yönetimi planı, gerekli aktiviteleri yapabilmek için gerekli 
olan arçları, grupları belirler. Görevlerin arasındaki ilişkileri ve sıralarını 
belirleyerek zaman çizelgesi sorunlarını ortadan kaldırır. Gerekli olan herhangi 
bir eğitim de bu plan sayesinde ortaya çıkar ve belirlenir.
 
 
2.1.5. Araç Seçimi ve GerçekleştirimYazılım yapılanış yönetimi için, değişik özelliklerde araçlar mevcuttur. İçinde 
bulunulan duruma bağlı olarak bu araç özelliklerinin hangilerine ihtiyaç 
duyulduğu belirlenir ve birden çok araç geretiren durumlarda bu araçların 
kombinasyonu kullanılabilir. Otomatik araçlar, büyüyen ve büyüdükçe karmaşıklaşan projelerde, büyük yarar 
sağlarlar. Bu araçların destekledikleri konuları 
şöyle sıralayabiliriz:
 
 
  Aşağıdaki şekilde, Yazılım Yapılanış Yönetimi Araçlarının yapabildikleri 
aktiviteleri ve bunların Yazılım Yapılanış Yönetimi ile nasıl örtüştükleri 
gösterilmektedir.
    | * Yazılım Yapılanış Yönetimi Kütüphanesi |  
    | * Yazılım değişimi istekleri ve süreçleri |  
    | * Kod 
ve değişim yönetimi görevleri |  
    | * Yazılım yapılanış durumu raporlamaları |  
    | * Yazılım denetlemesi |  
    | * Yazılım build’leri oluşturmak |  
    | * Yazılım yayımlarını ve dağıtımlarını kontrol etmek. |  
 
  
 Şekil 2 – Yazılım Yapılanış Yordamları ve Araçları
 
 Yukarıdaki şekilde, kod yönetim sistemleri yazılım kütüphanelerinin çalışmasını 
kütüphane elemanlarına erişimi kontrol ederek, birden çok kullanıcının 
aktivitelerini kontrol ederek desteklemektedir. Diğer araçlar yazılım ve yayım 
belgeleri oluşturmayı desteklemektedir. Bunlar dışındaki araçlar ise veritabanı 
yönetimi desteği, yönetim için raporlama mekanizmaları desteği sağlamaktadır. 
Araçların bazılarının yetenekleri yazılım yapılanış yönetimi içine entegre 
edilebilir.
 
 
 
2.2.   Yazılım Yapılanışı Yönetim PlanıBir proje için belirlenen YYY 
planının sonuçları, Yazılım yapılanış Yönetimi Planında tutulur. Bu belge, 
Yazılım Yapılanış Yönetimi süreci için bir kaynak olur. Süreç boyunca, gerekli 
durumlarda güncellenir. Gerçekleştirim bölümünde ise, plandaki bazı parçaların 
daha detaylı açıklanması gerekebilmektedir. Bu yüzden bu belgeye yaşayan bir 
rapor diyebiliriz. Bir 
YYY Planında 6 kategoride bilgi bulunmaktadır:
 
 
  
    | 1 | Giriş -amaç, kavram, kullanılan teimrler |  
    | 2 | YYY Sürecinin Yönetimi -organizasyon, sorumluluklar, yordamlar |  
    | 3 | YYY 
Aktiviteleri -yapılanış tanımlaması, yapılanış kontrolü |  
    | 4 | YYY 
Zaman çizelgeleri -diğer proje aktiviteleri ile olan koordinasyonu |  
    | 5 | YYY 
Kaynakları -araçlar, insan kaynakları |  
    | 6 | Planın bakımı, güncelleştirilmesi |  
2.3. Yazılım Yapılanış TanımlamasıYazılım Yapılanış Tanımlaması 
aktivitesi kontrol edilecek elemanları belirler ve bu elemanların versiyonlarını 
kontrol eder. Ayrıca, bu kontrol edilen elemanların yönetiminde kullanılacak 
araçları belirler.
 
 
2.3.1. Kontrol Edilecek Elemanların 
TanımlanmasıDeğişim kontrolündeki ilk aşama, 
kontrol edilmesi gereken elemanların belirlenmesi işlemidir. Bu işlem, yazılım 
yapılanışının sistem yapılanışı ile birlikte ele alınıp anlaşılmasını, yapılanış 
elemanlarının seçimini, yazılım öğelerinin isimlendirilmesinde bir strateji 
belirlenmesini, aralarındaki ilişkilerin belirlenmesini gerektirir.
 Yazılım Yapılanış Öğesi:
 
 Yazılım yapılanış öğesi, yapılanış yönetimi için tasarlanmış olan yazılımın bir 
genellemesidir ve tek bir eleman olarak algılanır. Kod da dahil olmak üzere, 
çeşitli öğeler YYY tarafından kontrol edilir. Yazılım yapılanış öğeleri listesi:
 
 
 
  Yazılım Versiyonları:
    | Planlar |  
    | Belirtimler |  
    | Test materyalleri |  
    | Yazılım araçları |  
    | Kod ve çalıştırılabilir 
    kod |  
    | Veri kütüphaneleri |  
    | Bakım, kurulum belgeleri |  
 Yazılım projesi ilerledikçe, öğeler gelişir. Bir karışıklık sözkonusu olmaması 
için, bu gelişmelerin tutarlı, kontrollü bir şekilde ele alınması gereklidir. Bu 
da versiyonlar ile sağlanır. Bir yazılım öğesinin versiyonu, belirli 
özelliklere sahip olan bir öğedir. Uyarlama, geliştirilmiş olan bir yazılım 
versiyonuna verilen addır.
 
 
 
2.3.2. Yazılım Yapılanış Öğelerinin 
BulunmasıYazılım yapılanış öğeleri farklı faklı zamanlarda bulunup farklı zamanlarda 
yazılım yapılanış yönetimi kontrolüne verilebilir.(yazılım yaşam döngüsünün 
belirli adımlarında bulunabilir) Genelde, bitirilmiş bir resmi görev, gözden 
geçirme yeni öğeler bulmayı sağlamaktadır. Aşağıdaki şekilde Şelale Modeli ile öğelerin bulunması örneklendirilmektedir.
 
  
 Şekil 3 – Öğelerin Elde Edilmesi
 
 
 
2.4. Yazılım Yapılanış KontrolüYazılım yapılanış kontrolü, yazılım yaşam döngüsü boyunca oluşan değişiklikleri 
yönetir. Hangi değişikliklerin uygulanacağı, belirli değişikliklerin 
onaylanması, bu değişikliklerin hayata geçirilmesinin desteği gibi konuları 
kapsar.
 Yazılım değişiklikleri istekleri süreci, birçok araç kullanımını da beraberinde 
gerektirir. Ve bu araçlar (belgeleme arçları, koordinasyon araçları...) genelde geliştirme takımı tarafından yaratılır çünkü her 
projede, bu isteklerin tipi projeye bağımlıdır.
 
 Kabul edilmiş, onaylanmış değişiklikler belilenen yazılım yordamlrına uyularak 
gerçekleştirilir. Aynı anda birden çok değişikliğin gerçekleştirimi 
yapılabileceği için bu gibi durumlarda gerçekleştirimlerin birbirine uyumlu 
olması sağlanmalıdır.   Değişikliklerin gerçekleştirimleri bitirlikten 
sonra, sonuçların standardlara uygunluğu da test edilmelidir. Aşağıdaki şekilde değişim sürecini daha 
iyi görmekteyiz.
 
 
  
 Şekil 4 – Değişiklik Kontrolü
 
 2.5. Yazılım Yapılanış Durumu Kontrolü
 
 Yazılım Yapılanışı Durum Kontrolü, verimli bir yapılanış yönetimi için gerekli 
olan bilgiyi, raporlamayı sağlar. Durum Kontrolü tasarımı, mevcut bilgi 
sistemlerinin tasarımlarından yola çıkarak yapılabilir.
 
 Durum kontrolü aktivitesi, yaşam döngüsü boyunca, bilgiyi yakalamayı ve 
raporlamayı amaçlar. Her bilgi sisteminde olduğu gibi burada da, yapılanış 
durumu tanımlanmalı ve bakımı yapılmalıdır. Bu işlem içinde çeşitli ölçütler ve 
bilgiler gerekmektedir. Bu bilgiler yönetim kademesi, yazılım mühendisleri ve 
diğer kurumlardan elde edilecektir. Bilgi toplama esnasında, karışıklıkları 
kontrol etmek için bazı araçların kullanılmasında fayda vardır.
 
 Raporlanan bilgiler, geliştirme akmı, bakım takımı, proje yönetimi, kalite 
güvence takımı gibi gruplar tarafından kullanılacaktır. Raporlama rasgele ortaya 
çıkan isteklere bağlı olarak hazırlanabildiği gibi düzenli aralıklarla da 
hazırlanabilmektedir.
 
 Durum kontrolünden elde edilen bilgi, raporlamada kullanılabildiği gibi yönetim 
kademesinde bazı ölçütler için de kullanılabilir. Örnek olarak değişiklik 
isteklerinin sayısı ve bir değişikliğin gerçekleştirme zamanı verilebilir.
 
 
 
2.6. Yazılım Yapılanışı DenetlemeYazılım denetlemesi, yazılım 
ürünün kabul edilirliğinin, standardların, rehberlerin, yordamların 
değerlendirildiği bağımsız olarak gerçekleştirilen bir aktivitedir. 
Denetlemeler, iyi tanımlanmış olan birçok süreci kapsar. Bu süreçlerde, farklı 
farklı sorumluluklar mevcuttur. Her denetleme, çok iyi olarak planlanmalıdır.
 Denetlemeler, hangi öğelerin istenilen düzeyde olduğu, hangilerinin eksik olduğu 
hakkında bilgi verir.  
Bu denetlemeler proje yaşam döngüsünün önemli noktalarında yapılmalıdır. 
2 çeşit denetleme vardır: Fiziksel Denetleme ve Fonksionel Denetleme. Bu 
denetlemelerin sağlıklı olarak yaılması, ortaya çıkarılacak olan ürünün 
kalitesini de ortaya koyar.
 
 
 
2.6.1. Fonsiyonel DenetlemeFonksyionel denetlemenin amacı, 
denetlenen yazılımın belirtimlerle olan uyumluluğunu ölçmektir.Yazılım Doğrulama ve Testlerinin 
çıktıları, bu denetleme için iyi birer girdidirler.
 
 
2.6.2. Fiziksel DenetlemeFiziksel denetlemenin amacı, 
tasarım dökümanının gliştirilmekte olan yazılım ürünü ile tutarlı olup 
olmadığını ölçmektir.
 
 
2.7. Yazılım Yayım YönetimiYayım kelimesi, geliştirme 
aktivitesi boyunca ortaya çıkarılan farklı özelliklerdeki öğeler anlamına 
gelmektedir. (Mesela bir araçın yeni, farklı özellikteki versiyonları) Bu 
öğeler, müşteriye gönderilen dışsal öğeler olabileceği gibi geliştirme takımı 
içinde kalan içsel öğeler de olabilir. Bi yazılımın yeni bir versionu 
oluşturulduğunda, bu versiyonun yayım olarak açılanmadan önce diğer yazılımların 
hangi versiyonları ile uyumlu çalışabileceği belirlenmeli ve buna göre bir paket 
oluşturulmalıdır. Bu iş için de kütüphaneler kullanılmalıdır.
 Çalıştırılabilir bir yazılım için, öğelerin doğru versiyonları bir araya 
getirilir ve kurulum paketi hazırlanır. Bu işlem yapılırken, en önemli nokta 
yazılımın çalışacağı donanımın yapılanışının doğu tespit edilmesidir. Çünkü 
donanım yapılanışı yanlış tespit edilmiş bir paket, çalışmayacağı için sonuç tam 
anlamıyla hüsran olacaktır.
 
 Buna göre, yazılım yayım yönetimi, bir ürünün öğelerinin tanımlanması, bir araya 
geirilmesi, dağıtımı gibi konuları ele alan önemli bir aktivitedir. 
(Çalıştırılabilir kod, dökümantasyonu, yapılanış bilgisi...) Yazlım yayım yönetiminin diğer bir görevi de ne zaman bir yayım yaratmak 
gerektiğine karar vermektir. Çözülen problemlerin önemi ve hataları ne kadar yok 
ettiği bu kararı belireyen etkileyici bir faktördür.
 
 
 3. KAYNAKÇABerczuk, 
Steve. Configuration Management Patterns, 1997.
 http://www.bell-labs.com/cgiuser/
 
 
 
 OrgPatterns/OrgPatterns?ConfigurationManagementPatterns.
 
 Compton, Stephen B,   Configuration Management for Software , 
VNR Computer Library,
 
 Van 
Nostrand Reinhold, 1993.
 
 
 
 Continuus Software Corp., Work Area Management,  
Continuus/CM: Change
 
 Management for Software Development.
 
 http://www.continuus.com/developers/developersACE.html.
 
 
 
 Dart, 
Susan, Spectrum of Functionality in Configuration Management Systems,
 
 oftware 
Engineering Institute, 1990.
 
 http://www.sei.cmu.edu/technology/case/scm/tech_rep/TR11_90/TOC_TR11_90.html
 
 
 
 Jameson, Kevin,   Multi Platform Code Management ,
O’Reilly & Associates, 1994
 
 Linenbach, Terris, Programmers’
Canvas: A pattern for source code management 1996.
 
 http://www.rahul.net/terris/ProgrammersCanvas.htm.
 
 
 
 Lyon, David D,
  Practical CM , Raven
Publishing, 1997
 
 McConnell, Steve, Best
Practices: Daily Build and Smoke Test,   IEEE Software , Vol.13, No. 4, July 1996
 
 van der Hoek, Andre, Hall, Richard
S., Heimbigner, Dennis, and Wolf, Alexander L.,Software Release
Management,   Proceedings of 
the 6th European Software Engineering Conference , Zurich, Switzerland, 1997.
 
 
 EK 1 – KULLANILAN TİCARİ YAZILIM 
YAPILANIŞI YÖNETİMİ ARAÇLARIEK 2 – KULLANILAN BEDAVA YAZILIM 
YAPILANIŞI YÖNETİMİ ARAÇLARI
                Makale:Yazılım Yapılanışı Yönetimi Yazılım Mühendisliği Tanıl Ergin
 |