Başta XP (eXtreme Programming) olmak üzere, çevik yazılım geliştirme süreçlerinde; set otomasyonu ve sürekli tümleştirme (Build Automation and Continuous Integration) işlemleri önemli bir yer tutmaktadır. Bu işlemlerin temel amacı, set yapımı ve kod entegrasyonu maliyetlerini düşürmektir. Ek olarak, ileride yapılacak geliştirmelere bağlı olarak değişim maliyetlerini düşürmek hedeflenmektedir.
Büyük ve kapsamlı projelerin set yapım süreçleri de aynı derecede karmaşıktır. Farklı birçok kişi ya da grupların çalışmış olduğu projelerin ve dosyaların bir araya getirilmesi, entegre edilmesi ve uygulamaların test edilmesi yüksek maliyetler oluşturmaktadır. Bu işlemlerin süreklileştirilmesi ve otomatikleştirilmesi, ayrıca yazılım geliştirme süreçlerinin bir parçası haline getirilmesi, önemli kazanımlar getirecektir. İşte tam da bu noktada FinalBuilder gibi çeşitli uygulamalar kullanılmaktadır. FinalBuilder, Vsoft Technologies firmasının geliştirmiş olduğu görsel olarak oluşturulabilen scriptleri ile kullanımı oldukça kolay ve güçlü bir “Automated Build & Release Management” aracıdır.
Bu süreçleri özetlemek gerekirse, yazılım ekipleri tamamlamış oldukları geliştirmeler sonucunda, proje ve dosyalardaki değişikliklerin kaynak kod kontrol sistemine gönderilmesi ile başlayacaktır. Sonrasında;
- Set yapımının gerçekleştiği serverda sürecin tetiklenmesi. Bu işlem bir değişiklik algılandığında yada belirli zaman aralıklarında başlayacak şekilde oluşturulabilir. Her gün akşam saatleri çalışacak şekilde yönetilebilir. Optimum yöntemi kendi süreçlerinize göre belirliyebilirsiniz.
- Kaynak kodun ve dosyaların son halinin kaynak kontrol sisteminden alınması (TFS yada SourceSafe gibi uygulamadan kodun son halinin yerel klasörlere alınması.)
- Set yapımı sırasında değişiklik yapılacak dosyaların check-out’lanması ve tüm projelerin versiyonlanması.
- Önceki setlerin sistemden kaldırılması ve derleme öncesi gerekli dosyaların silinmesi.
- Tüm kaynak kodların derlenmesi ve farklı projelerde oluşturulan dosyaların kullanılması durumlarında, derleme sırasında gerekli yerlere kopyalanması. Ve derleme işlemlerinin tamamlanması
- Set yapımına başlamadan önce sürece olumlu katkıları olacak çeşitli analizlerin ve birim testlerinin yapılması ve raporlanması sürecinin işletilmesi
- Statik kod analizlerinin çalıştırılması ile kod karmaşıklıklarının tespit edilmesi, kod standartlarının kontrolü işlemleri yapılması ve raporlanması
- Dinamik kod analizlerinin çalıştırılması ve olası performans sorunlarının tespit edilmesi ve raporlanması
- Çeşitli tasarım metriklerinin oluşturulması ve raporlanması
- Birim testlerinin çalıştırılması ve yapılan değişikliklerin, birimlerin kendi başına hatasız görevlerini yerine getirip getirmediğinin tespiti ve sonuçların raporlanması
- Kod kapsam analizlerinin yapılması ve raporlanması
- Set uygulamalarının çalıştırılması ve yeni setlerin oluşturulması
- Yeni setlerin sisteme kurulması ve testlerin başlaması için uygun ortamın hazırlanması
- TestComplete gibi bir test aracı ile testlerin çalıştırılması
- Entegrasyon testlerinin çalıştırılması ve raporlanması
- Fonksiyonel testlerin çalıştırılması ve raporlanması
- Kabul testlerinin çalıştırılması ve raporlanması
- Set ve Test sürecinde kod ve dosyalar üzerindeki değişikliklerin kaynak kontrol uygulamasına gönderşlmesi (Check-in işleminin yapılması)
- Yayınlanacak sete ait kaynak kod ve dosyaların “Etiketlenmesi” ve gerektiğinde ilgili kodlara ulaşılabilmesinin sağlanması (TFS Apply Label işleminin yapılması)
- Set’in yayınlanması ve ilgili değişikliklerin raporlanması
- Sonuç raporların ilgili kişilere mail ile iletilmesi
Bu işlemlerin süreklileştirilmesi kodun her an denetiminin yapılması ve geri bildirim verilmesi anlamına gelecektir. Bu işlemlerin ardından ilgili raporların değerlendirilip gerekli düzelmelerin hemen koda eklenmesi, süreç içersinde mutlaka işletilmelidir. Böylelikle refactoring ve reengineering işlemleri süreklileştirilmiş olacak ve kodun her an yayınlanabilir durumda bulundurulması sağlanabilecektir. Hata oluşma riski azalacak ve hataların yayınlanmadan hatta test edilmeden ortaya çıkması sağlanabilecektir.
Uzun zaman önce yapılan geliştirmelere ait test scriptlerinin sürekli çalıştırılacak olması, yapılan geliştirmelere bağlı hataların tekrar ortaya çıkmasını önleyecektir. Test ekibinin tekrar tekrar aynı testleri yapması sorununu çözecektir. Bu nedenle kod büyüdükçe hem yeni fonksiyonel testlerin hem de hatalara istinaden oluşacak yeni birim testlerinin sürece tekrar dahil edilmesi gerekmektedir.
Set otomasyonu, set yapılması kolaylaşacak ve buradaki zaman kaybını önleyecektir. Test ekibine büyük iş hacmi oluşturan ve sürekli tekrar edilmesi gereken standart testler otomatikleşecek, test ekibinin, gerçek anlamda testlere odaklanabilmesine olanak sağlayacaktır.
Projenin dağıtımı öncesinde testlerde ortaya çıkabilecek büyük değişiklikleri gerektiren geliştirmeler projenin gecikmesinde önemli bir risk oluşturmaktadır. Sürekli tümleştirme yaklaşımları ile bu tip gecikmeler en aza inecektir. Planlanan set dağıtım tarihleri aşılmayacaktır. Sıklıkla teslimatlar yapılabilecektir. Daha hatasız setler ile kolay ve sorunsuz kurulumlar yapılabilecektir.
Ayrıca TFS gibi bir araç yardımı ile kodun minor ve major değişiklikler için sahadaki farklı versiyonlarının farklı branchlerde tutulması sağlanmalıdır. İlgili kod branchlerinde oluşturulan test ve set scriptlerinin de bulundurulması önem kazanacaktır. Her versiyon için bu test sürecinin otomasyonu, eski versiyonlarda da yapılacak değişikliklerin maliyetini düşürecektir.
Uygar MANDUZ
Yorumlar
Yorum Gönder