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önetimi
YYY, 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şki
Bir
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:
* 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ı. |
Bu
ortam, gördüğünüz gibi, aynı zamanda bir çok yazılım yapılanış kontrolleriyle de
ilgilidir.
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ı:
* 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ı |
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.
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 Çizelgeleri
Yazı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ştirim
Yazı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:
* 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. |
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.
Ş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:
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 Versiyonları:
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ışı Denetleme
Yazı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 Denetleme
Fonksyionel 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 Denetleme
Fiziksel 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önetimi
Yayı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ÇA
Berczuk,
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ÇLARI
EK 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
|