Posted under Programlama
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
- AccuRev CM - Software Change Management - the 21st Century
- Aide-de-Camp/Pro (ADC/Pro) - True Software Inc.
- AllChange
- AllChange Professional Change and Configuration Management - Intasoft
- Apps*Integrity
- BitKeeper
- BuildForge
- Change Man
- Change Man MVS SCM, Optima Software
- CIG Suite for e-business - Chicago Interface Group
- ClearCase
- CMIS Product Services Home Page
- CMstat Corporation
- CMVC
- CMVision - CMF (Expertware)
- CMZ
- CO-OP
- Code Co-op
- ComponentSoftware RCS
- Configuration Management Solutions
- Continuus/CM
- Control, Control-CS, nciGENESIS
- CS-RCS Pro
- CVS
- Depot
- DevMan
- Diamond CM
- ENDEVOR/WSX
- EPM Technology
- HOPE — Human-Oriented Programming Environment
- InSync CM/PDM
- Librarian, JSSL
- LIFESPAN
- Merant PVCS and Merant Collage
- MKS RCS
- Multi-Platform Code Management Tools
- Object Technology International�s ENVY/Developer
- ObjectCycle
- OkCatalyst
- Openmake
- PCMS (by Doug Toppin)
- Perforce
- Platinum CCC/Harvest
- QVCS — Quma Version Control System
- Razor
- RCE - Revision Control Engine
- Sablime - Lucent Technologies
- SCLM
- SiberLogic Inc. - SourceTrack
- SoftBench CM Product
- SoftLanding Systems, Inc. - TurnOver
- StarBase Corporation - StarTeam
- Sun WorkShop TeamWare
- Surround SCM
- TeamVizor Developer
- Tesseract CM tools
- TrackWise Change Management Software
- VCS - Version Control System
- Visual Build
- Visual SCCS
- Voodoo - Versions Of Outdated Documents Organized Orthogonally
- VSMake
EK 2 � KULLANILAN BEDAVA YAZILIM YAPILANIŞI YÖNETİMİ ARAÇLARI
- /BriefCase 3
- AEGIS
- Anthill Build Management Server
- BCS - Baseline Configuration System
- CS-RCS
- The CVS Bubbles - Concurrent Version System
- CVSup
- Freepository
- ICE - Incremental Configuration Engine
- Librarian V1.4 Source Code Version Control Software
- PRCS - Project Revision Control System
- QVCS - Quema Version Control System
- RCS - Revision Control System
- SCCS - Source Code Control Syste
- Shape Tools
- Subversion