Uygulama geliştirme süreci IBTech içinde sistematik bir yaklaşımla ele alınmaktadır. Müşteri ve çalışanların memnuniyetini üst düzeyde tutmak amacıyla projeleri hedef sürelerinde, gereksinimleri doğrultusunda ve olabildiğince az hatalı olarak gerçekleştirmek temel hedeflerdendir.
Yönetilebilir bir proje ve yazılım süreci kurmak ve bu süreci sürekli daha iyiye götürmek bu hedef için vazgeçilmez unsurlar olarak görülmektedir. Yazılım süreç ve proje yönetimi konusundaki araçlar, yaklaşımlar ve süreçler uluslararası yayınlar, enstitüler, firmalar ve teknoloji takip edilerek şirket ihtiyaçları doğrultusunda özümsenip, uyarlanmakta ve şirket içinde yazılan uygulamalarla süreci destekleyen ürünler yaratılmaktadır. Ayrıca bu ürünler COBIT, BDDK, SOX, CMMI gibi bankacılık ve IT sektörüne yönelik denetim ve sertifikasyonların daha yönetilir olmasını sağlamaktadır.
Bu doğrultuda IBTech içerisinde aşağıdaki araçlar hazırlanmış ve aktif olarak uzun yıllardır kullanılmaktadır.
Yazılım kodları, component, query servis gibi metadata bilgileri deployment sistemi kapsamı içinde geliştirme ortamları ve üretim sistemleri arasında transfer edilir.
Bazı önemli özellikleri aşağıdaki gibi sıralanabilir:
Deployment’a yönelik tüm transfer ve değişiklik işlemleri (üretim ortamlarına ve geliştirme ortamlarına) tüm detaylarıyla loglanır.
Alınan önlemlerle ve iş akışı yöntemleriyle üretim sistemlerine sadece kontrolleri yapılmış yazılım bileşenleri transfer edilir. Örneğin teknik olarak review edilmemiş fonksiyonel testleri yapılmamış bileşenlerin transferine izin verilmez. Hatalı transferlerde geri dönüş hızlı ve kolay bir şekilde gerçekleştirildiği gibi, sistem bütünlüğü de korunur. Sistem tüm birleşenleriyle eski haline getirilir.
Deployment sistemi, sürümlerin oluşturulmasına olanak sağlar. Sürümün planlanması, derlenmesi, kontrol edilmesi, geriye dönülmesi (rollback), birden fazla ortama tutarlı transferi gibi işlemler gerçekleştirilir. Sürüm bazında olduğu proje bazında da deployment yapmak mümkündür.
Deployment akışının planlanmasıi yetkili kişilerin onayından geçmesine yönelik iş akışları tanımlanabilir. Yetkilendirme mekanizmasıyla, ancak yetkisi olan kullanıcı bir kodun Deploy talep hakkına sahip olmakta ve yetkisi olduğu ortamlara, eğer ilgili yazılım bileşeni o ortamda çalışmaya yetkili ise talep girebilmektedir.
Konfigurasyon yönetim sisteminin ana modulleri aşağıda verilmişir.
Sistem dahilinde tüm konfigurasyon bileşenleri versiyonlanabilir. Sistemde 2 seviye versiyonlama bulunur. İlk seviye sadece bileşenlerin versiyonlanması diğer seviye ise entegrasyon seviyesidir. Entegrasyon seviyesi birbirleriyle ilişkili bileşenlerin versiyonlamasına yönelik bir mekanizmadır. Entegrasyon versiyonları atomik olarak deploy edilebilir veya geri alınabilir.
Sistemlerde kullanılan tüm meta veri, veri sözlüğü içinde saklanır. Yazılım geliştirme içerisinde yer alan her bir parça veri sözlüğü içerisinde tanımlanabilmektedir. SOA mimarisini kullanan tüm yazılım bileşenleri ve onlara ait servis, web servis, batch, ekran, bileşenleri bu sistem tanımlanır.
Eclipse ortamlarında (RAD (Rational Application Development), RSA, Eclipse) Java ile uygulama geliştiren yazılım ekiplerinin kullandığı bu eklentiler aracılığıyla yazılım ekipleri arka tarafta hangi konfigürasyon aracının olduğunu bilmeksizin sadece yetkili oldukları yazılım bileşenleri üzerinde class, package, proje bazında versiyon atabilmekte, ve aynı şekilde çalışma ortamlarına (Workspace) istedikleri versiyonu alabilmektedirler. Eclipse içinden ilgili componentın hangi versiyonun hangi ortamda (dev, test, prod) çalıştığını görebilmekte ve ilgili versiyonu lokaline alıp değişiklik yapabilmektedir.
SDLC sistemi ile bir projenin kickoff’undan tamamlanmasına kadar geçen süreçte üretilen tüm bileşenler, dökümanlar sistemsel olarak versiyonlanır ve saklanır. Ayrıca tüm akış kontrol edilir herhangi bir anda akışın hangi aşamada olduğu belirlenebilir. Akış çeşitli metodolojilerde tanımlanabilir. (Waterfall, RUP, Agile gibi.)
Kalite Yönetimi Sisteminin ana özellikleri aşağıda verilmiştir.
Yazılım ekiplerinin kod kalitesini ölçümlemek amacıyla Object Oriented kod metrikleri ve bu metrikler için optimum değerler incelenmiş, sonrasında IBTech içerisinde etkili olarak kullanılabilecek metrik kriterleri ve olması beklenen değerleri belirlenmiştir. Bu kriterlerin kod geliştirme sırasında yazılım ekiplerine yön vermesi için Eclipse ortamında çalışan bir Metrik Plug-in’i geliştirilmiş ve istenilen kodun üzerine tıklanarak kod metriklerinin ölçülebilmesi sağlanmıştır.
Kod metrik ölçümü ayrıca Deployment sistemine entegre edilerek Deploy edilen her kodun metriği ölçülüp standarda uymayan kodlar Deployment akışında web üzerinden izlenebilmekte, kodun tüm metrik değerleri gözlenebilmektedir.
Açık kaynak kodlu Checkstyle statik analiz aracı ihtiyaçlara ve mevcut kodlama standartlarına göre geliştirilerek kullanılmaktadır.
Tüm query’ler üretim ortamına atılmadan önce performans ve query standartlarına yönelik kontrollerden geçer. Üretim ortamında fazla yük oluşturacak veya tutarsız sonuçlar alınmasına neden olacak query’lerin sisteme transferine izin verilmez.
Yazılım bileşenleri bazlı SOA mimarisinde bir serviste yapılan değişikliğin hangi kodları etkilediği, yan etkilerinin ne olacağı test aşamasından çok önce, tasarım ve geliştirme aşamalarında bilinmesi, sonradan çıkacak test ve live hatalarını daha da azaltmaktadır. Bu amaçla servislerin birbirlerini çağrıları ve diğer kod ilişkileri Deployment talebi girildiğinde taranarak kaydedilmekte, web üzerinden açılan bu uygulama aracılığıyla yazılım ekipleri istedikleri anda kodlar arasındaki bağımlılığı sorgulayabilmektedirler.
Yazılım geliştiricilerin daha kolay birim testi gerçekleştirmeleri için web uygulaması olarak hazırlanmıştır. Servisler bazında tanımlı input ve output parametrelerine test edilmesi istenen değerler aralık (range), küme (set) ve direkt değer (value) olarak girilebilmekte, beklenen output parametrelerinin değerleri ve beklenen problemler (exception) de tanımlanmaktadır. Araç içinde Mock servis tanımlamaları da sağlanabilmektedir.
Yukarıda sayılan kontroller otomatik olarak yapılan kontrollerdir. Ayrıca tüm yazılım bileşenleri konusunda deneyimli ve uzman kişiler tarafından incelenir. İş Analizi, ekran tasarımları, yazılım tasarımları, kod parçaları incelenir. Kalite yönetimi sistemi kontrol listeleri, puanlama cetvelleri, inceleme analizleri yapılmasına olanak sağlayacak araçlar sunar.
Bu modülle test ekipleri test senaryolarını ve bunlara ait test adımlarını planlı ve standart bir biçimde tanımlayabilmekte, fonksiyonalite ve kullanıcı kabul testleri sırasında senaryo bazlı test yaparak, senaryolara ait bulguları girebilmektedir. Deployment sistemiyle de entegre olan bu modülle üzerinde bulgu olan veya tanımlanmış test senaryoları test edilmeyen projelerin üretim ortamına gitmesi engellenebilmektedir.
Kalite sistemi üretilen tüm logları analiz ederek performans ve sistem kalitesine yönelik raporlar oluşturur. Örnek olarak, uzun çalışan servisler, uzun çalışan query’ler, en fazla üretilen exception’lar, servis çağrım sayılarındaki artışlar, çalışma süreleri artan servisler verilebilir. Bu raporlardan yararlanılarak proaktif olarak önlem almak ve sistemi istenen performans ve kalitede tutmak mümkündür.
İhtiyaçların belirlenmesinden, spesifikasyon hazılranmasına ve sistem tasarlamaya kadar tüm yazılım hayat döngüsü bu araçlar üzerinde takip edilir.
Araçların ana özellikleri aşağıda verilmiştir:
Analiz ve tasarım çalışmaları tamamlandıktan sonra iş analizi ve sistem tasarımına yönelik dökümanlar araçlar vasıtasıyla otomatik olarak üretilir. Dökümanlar Microsoft Word dökümanı olarak üretilmektedir.
Sistemdeki tüm bileşenler (ihtiyaç, spesifikasyon, tasarım modelleri ve diagramları vb.) zengin içerikli formatda hazırlanabilir ve versiyonlanabilir. Ayrıca versiyonlar arası karşılaştırma yapmak da mümkündür.
İş analizleri analistler tarafından önceden hazırlanmış iş modelleri üzerine kurgulanır. Yazılım mimarları da aynı modelleri kullanarak tasarım modellerini hazırlar.
Müşteri taleplerinden, spesifikasyonlara, tasarım ve kodlamaya ve deploylara kadar tüm etkileşimler (Hangi spesifikasyon hangi ihtiyaca göre oluşturuldu, hangi deploy hangi spesifikasyona göre oluşturuldu vs.) izlenebilmektedir. Matris içinde herhangi bir noktada değişiklik durumunda sistem gözden geçirilmesi gereken bileşenleri otomatik olarak belirler (örneğin bir ihtiyacın değişmesi durumunda ektilenecek spesifikasyonlar ve tasarımlar) ve yazılım ekibindeki ilgili kişileri uyarır.
