[Orjinal Yazım Tarihi 3/20/2013]
Merhaba Arkadaşlar,
Çoğu zaman geliştirilen yazılım ürünleri ile farklı profilden insanları ortak bir payda da buluşturmayı hedefleriz. Farklı özelliklere sahip insanları, ürüne nasıl katabileceğimizi keşfetmeye çalışırız. Tabi geliştirilen ürünün hedef kitlesi de burada önemli bir rol oynar.
Bazı ürünlerin arayüzlerinin son derece basit tasarlanması yeterli iken bazılarında ise tam tersi bir durum söz konusudur.
Hangisi olursa olsun kullanıcı bir insan olarak düşünüldüğünde çok da fazla zorlanmamalı veya kolayca adapte olabilmelidir. Ne kadar kolay kullanılırsa, hedef kitle içerisinde o kadar fazla sayıda farklı profile de ulaşılabilinir. Ancak bazı hallerde ürünün hedef kitlesi o kadar dağınıktır ki, hepsini çekebilmek ya da bir başka deyişle kazanabilmek için yapılan genişletmeler yeterli gelmeyebilir. Böyle bir durumda çevreye şu mesajı vermeniz gerekebilir;
Ey ahali…Bu gördüğünüz, ürünümüzün dışarıya açılmış olan servisi/servisleri/sdk’sı/api’si. Buyrun istediğiniz gibi uyarlayın, kullanın. Sonuçta ürünümüzün yaşamının bir parçası olabileceksiniz
Özellikle ALM(Application Lifecycle Management) gibi geniş konuların uygulandığı ürünlerin değerlendirildiği firmalar ve kalabalık ekipleri düşünüldüğünde, bu heterojenlik kendini iyiden iyiye hissettir. Dolayısıyla ürünün geliştiriciler açısından ne kadar ve nasıl genişletilebileceği önem kazanır.
Ekipleriniz içindeki profilleri düşünün! Yazılımcılar IDE’ leri, iş analistleri Word dokümanlarını, Müdür’ ler web browser üzerinden erişilebilen raporları, Release Manager’ lar Team Explorer’ ı, Proje Yöneticileri Ms Project’ i, CIO’ lar ise ürünlerinin hangi sprint’ ler de olup ne kadarlık işlerinin kaldığını okuyabildikleri e-postaları, sever. Listeyi uzatmak mümkün
Bu felsefeden baktığımızda bence Microsoft’ un Team Foundation Serverürünü epey önemli bir noktada yer alıyor. Hatta Gartner’ ın Application Lifecycle Management konusundaki bi raprunda yer alan MagicQuadrant grafiği de, bunu doğrular nitelikte. Kabiliyet ve sunulan vizyon açısından Microsoft liderler arasında en iyi noktada yer alıyor diyebiliriz (Rapor hakkında detaylı bilgiye bu adresten ulaşabilirsiniz)
Peki TFS takımı bunu nasıl başarıyor?
Bildiğiniz üzere Team Foundation Server ailesi içerisinde, .Net tabanlı kullanılabilen ObjectModeller(Client Object Model, Server Object Model, Build Process Object Model), yabancı ürünlerin entegre olabilmesini sağlayan Provider’ lar (MSSCCI Provider ve Team Explorer Everywhere), servis bazlı entegrasyon için XML Web hizmetleri var. Ayrıca bilindiği üzere TFS in Cloud tabanlı çalışan bir başka verisyonu daha bulunmakta.
Cloud Tabanlı TFS
TeamFoundationServer bilindiği üzere bir süredir Cloud Service olarak da hizmet vermekte. 5 Windows Live ID hesabına kadar ücretsiz kullanılabilen hizmet, sunucu modelli kurulum sonucu yapılabilen hemen herşeyi karşılamakta. Scrum, MSF, CMMI gibi şablonları doğrudan destekleyen servis, TFS Web Access arayüzü ile de oldukça kolay bir kullanıma sahip. Visual Studio ailesine, Excel gibi ofis ürünlerine kolayca bağlanabilmekte. Hatta son zamanlarda Git ile olan entegrasyonu sayesinde, Git fanatiği geliştiricilerin de dikkatini çekmeyi başardı.
Bir bulut servisi olduğu için, TFS ortamının kurulumunu düşünmemize gerek yok. Sadece abone oluyor veya lisanslı kullanıcı iseniz kira bedelini ödüyorsunuz. Kurulumu düşünmüyor olmanız beraberinde ölçeklenebilirlik(Scalability), sunucu performansı, donanım alımı, personel istihdamı gibi mevzuları da düşünmemize gerek olmadığı anlamına gelmekte.
Pek tabi bazı kurumlar halen daha bulut servislerine temkinli yaklaşmakta ve hatta doğrudan geri çevirmekte. Örneğin ülkemizdeki BDDK gibi kurumlar, bankaların bu tip bulut tabanlı yapılar ile çalışmalarını ve bilgi alışverişinde bulunmalarını epeyce sorgulamakta ve kolay kolay izin vermemekte.
Açıkçası askeri ve stratejik açıdan düşünürsek ülke ekonomisine ait değerli bilgilerin 3ncü parti sunucularda, ülke dışında tutmak çok da doğru değil bana kalırsa.
http://tfs.visualstudio.com adresinden ulaşılabilen hizmete son aylarda eklenen ve halen geliştirilme aşamasında olan önemli bir yenilikte OData(Open Data Protocol) servis desteği. XML(eXtensible Markup Language)üzerine oturan ve URL bazlı sorgulama yetenekleri tanıyan bu protokol, bir dünya standardı. Standardın hedefi ise veri odaklı yayınlayıcılar(Publishers).
Hal böyle olunca herhangibir veri kaynağının, özellikle internet ortamı üzerinden OData protokolüne göre sorgulanabilmesi mümkün hale geliyor. Bunun tam karşılığı ise, platform bağımsızlıktan başka bir şey değil. Ama bu son derece önemli bir yetenek. Nitekim bulut üzerinde koşan TFS hizmetini kullanabilecek istemcileri her hangi bir platform için geliştirebileceğimiz anlamına gelmekte.
OData protokolünün ön gördüğü veri odaklı sorgular bilindiği üzere tamamen URL bazlı olarak çalışmakta. Bu nedenle bulut TFS servisi üzerinde duran bilgileri basit bir tarayıcı uygulamayı kullanarak sorgulayabilirsiniz de. Bunun sonucu olarak dilerseniz TFS projenizin bazı raporlarını veya yönetsel arabirimi özelliklerini, örneğin mobil cihazınıza kadar indirebilirsiniz. (Bu konu ile ilişkili olarak Nisha Singh’ in Windows 8 uygulamasına bir göz atmanızı öneririm)
Gelelim bu yazımızdaki konumuza. Hiç kod yazmayacak ve geliştirme yapmayacağız aslında Bir tarayıcı uygulama, tfs.visualstudio.comüzerindeki hesabımız ve OData servislerinden yararlanarak sorgulamalar gerçekleştireceğiz.
Seddulbahir
Bu amaçla ben seddulbahir.visualstudio.com adresinde konuşlandırılmış olan ve sahibi olduğum Team Project Collection alanını kullanıyor olacağım. ODataörnekleri için çok basit olarak SoniK isimli uydurmasyon bir TeamProject oluşturdum. Söz konusu proje Scrum 2.2şablonuna göre kullanılmakta. Şimdilik tek üyesi benim ve tüm Task’ lar üzerimde
tfs.visualstudio.com servisinin en güzel yanlarından birisi de, son güncellemeleri haberiniz olmasa dahi hızla ve ilk elden implemente ediyor oluşu. Söz gelimi Scrum’ ın yeni bir versiyonunun çıktığını fark etmemiş olabilirsiniz. Ama bulut üzerinde bu güncelleme çıktığı gibi entegre edilmiştir de.
Tabi OData servisleri ile bir Team Project’ in sorgulanması denince dikkatler hemen Work Item içeriklerine çevrilecektir. Yani Product Backlog Item, Task, TestCase, Bug, Impediment gibi öğelere(Scrum için söz konusu olan bu Work Item çeşitleri, seçilen süreç şablonuna göre elbetteki değişiklik gösterebilir) Bu nedenle SoniK isimli proje içerisine aşağıdaki ekran görüntüsünde yer alan bazı Work Item’ ları ekledim ve bunları şimdilik, 2 haftalık süreye sahip olan Sprint 1 içerisinde değerlendirmeye aldım. Görüldüğü gibi TO DO’ dan IN PROGRESS’e aldığım iki Task’ ım var
Sorgulama işlemine başlamadan önce yapılması gereken küçük bir hazırlık daha var. OData servislerini etkinleştirmek için TFS hesabımızın profil özelliklerinden Enable Aternate Credentials seçeneğini aktif hale getirmemiz ve bir kullanıcı adı ile şifre belirlememiz gerekiyor.
Bu işlemin ardından https://tfsodata.visualstudio.com/defaultcollection adresine girerek başlama vuruşunu yapabiliriz domainAdı\kullanıcıAdı ve şifre ile giriş yapabiliriz. Örneğin benim TFS projem seddulbahir.visualstudio.com olduğundan, seddulbahir\AlternatifKullanıcıAdı ve şifre ile giriş yapmam gerekiyor. defaultcollection adresini sorguladığımızda standart bir OData servisinden beklediğimiz sonuçlar ile karşılaşırız. Bize TFS hizmeti için sorgulanabilir olan Entity adlarının adreslerini içeren bir sayfa üretilecektir. Aşağıdaki ekran görüntüsündeki gibi.
Dikkat edileceği üzere kullanıcılardan Area’ lara, Work Item’ lardan, Team Project Collection içerisindeki Team Project' lere, Build tanımlamalarından, Iteration’ lara kadar sorgulanabilecek oldukça geniş bir yelpaze söz konusudur. Şimdi dilerseniz örnek projemiz için bir kaç OData sorgusu icra edelim ve sonuçları görmeye çalışalım.
Örnek Sorgular
Aşağıdaki tabloda sorguya ait URL ifadeleri, bazı kısa açıklamalar ve SoniK için üretilen sonuçlara ait ekran görüntüleri yer almaktadır.
Şu an için TFSOdata servis sorgularında filter, count, select, orderby, top, skip, format ve callback anahtar kelimeleri kullanılabilmektedir. Ancak bu anahtar kelime seti artabilir. Sorgular sırasında ? ve $ harflerine de dikkat edilmelidir. Tüm OData komutlarının önünde dikkat edileceği üzere $ harfi yer almaktadır. Her ne kadar örneklerde ağırlıklı olarak Work Item’ lar üzerinde durulmuş olsa da DefaultCollection altında sunulan Entity’ lerin çoğu üzerinde sorgulamalar yapılabilir. Bunu denemenizi öneririm
Görüldüğü üzere söz konusu OData sorgularını kullanarak farklı platformlar üzerinde çalışacak istemci uygulamaların geliştirilmesinin önü son derece açıktır. Şu anda halen geliştirilmekte olan TFS OData servislerinin kullanımına ilişkin detaylı bilgileri bu adresten takip edebilirsiniz. Böylece geldik bir yazımızın daha sonuna. Tekrardan görüşünceye dek hepinize mutlu günler dilerim.
[Orjinal Yazım Tarihi 3/20/2013]