-

SSIS- Sql Server Intergration Services (Sql Server Entegrasyon Servisleri) Uygulama Örnekleri

Microsoft’un sunduğu İş Zekası çözümlerinde kullanılan teknolojilerin bir kısmı aşağıdaki gibidir;

  • Sql Server veri tabanı motoru (database engine), uygulama veri tabanı ve veri ambarları için kullanılır,
  • ETL işlemleri, Microsoft Sql Server Integration Services (SSIS) ile yapılır,
  • Veri temizliği, Data Quality Services (DQS) ile,
  • Veri yönetimi (Master Data Management), Master Data Services (MDS) ile,
  • Depolama ve sorgu (query) işleme, Sql Server Analysis Services (SSAS) ile,
  • Rapor yayınlama ve gönderme, Sql Server Reporting Services (SSRS) ile

yapılır.

Sql Server Entegrasyon Servisleri Uygulama Örnekleri

Entegrasyon Servisleri ETL işlemlerini gerçekleştiren servistir. Günlük veri tabanından Veri Ambarı’na geçilme aşamasında SSIS ile oluşturulan paketler çalıştırılır. Bu yazıda  verilen Entegrasyon Servisleri ile ilgili senaryo örnekleri aslında bu geçiş esnasında çalıştırılan paketlerdir. Hangi paketlerin oluşturulacağı ise şirket verisinin analiz edilmesi ve sık ihtiyaç duyulan raporlardan yola çıkılarak karar verilir.

Entegrasyon servisleri için gösterilen örneklerde veri tabanı olarak Microsoft’un ücretsiz kullanıma sunduğu veri tabanı, AdventureWorks kullanılmıştır. AdventureWorks uluslararası bisiklet ve bisiklet aksesuarları satan bir şirketin satış, ürün, kullanıcı gibi bilgilerini tutan ilişkisel veri tabanıdır

Entegrasyon Servisleri 1.Senaryo

Senaryo:  AdventureWorks  veri tabanındaki Product tablosu üzerinde bulunan ürün renklerini farklı diller ile ifade edilmesi.

Bu örnekteki amaç Veri Ambarı’nda çok dilli olma özelliğinin nasıl katılabileceğini göstermektir.

Sql Server Data Tools üzerinde spesifik işler yapmak üzere tanımlanmış task adı verilen yapılar mevcuttur. Bu senaryo için “Oledb Source” ismindeki task eklenir, bu task’a kaynak olarak AdventureWorks veri tabanı verilir.

Oledb Source task için aşağıdaki Sql komutu kullanılır:

Select ProductID, Name, Color, Size, and ListPrice from Production.Product

Bu senaryo için renkleri farklı dillerde ifade etme işlemi için farklı dillerdeki renk bilgilerini tutmak üzere bir lookup tablosuna ihtiyaç duyulur. ColorTranslation ismindeki aşağıda gösterilen bilgileri içeren tablo oluşturulur.

ID İngilizceRenk TürkçeRenk  İspanyolcaRenk
1 Red Kırmızı Roje
2 Black Siyah Negro
3 Blue Mavi Azul
4 White Beyaz Blanco
5 Null Renksiz No Color

Renkleri eşleştirme ve ürün rengini farklı renklerde gösterme işlemini yapmak üzere araçlar içerisinden “Lookup” ismindeki task eklenir. Product ve ColorTranslation tablolarını bağlamak üzere iki tabloda bulunan, ortak bir kolona ihtiyaç duyulur. Bu kolon aşağıdaki şekilde görüldüğü gibi EnglishColor dır.

kolon

Aşağıdaki şekilde verinin akış diyagramındaki tek yönlü oklar bir task’dan diğerine bilgi taşımaktadır. Eşleşen ve eşleşmeyen renkleri göstermek üzere araçlar içerisinden iki adet “Audit” ismindeki task eklenir. 504 üründen 414 tanesinin rengi lookup tablosundaki renklerle eşleşirken 90 adet ürün renginin tablodaki renklerden farklı renkte olduğu anlaşılmaktadır.

diagram

Aşağıdaki şekildeki senaryo çıktısında görülebileceği gibi İngilizce renklere karşılık gelen Türkçe ve İspanyolca ürün renkleri eklenmiştir.

result

Entegrasyon Servisleri 2.Senaryo

Senaryo: AdventureWorks  veri tabanındaki Product tablosundaki ürünleri mavi ve kırmızı renk ve pahalı ürünler olarak ayrıştırma işleminin gerçekleştirilmesi.

Tablodaki verileri belirlenen özelliklere göre ayırmak mümkündür. Bu senaryo için ayırma işlemini yapmak üzere “Conditional Split” ismindeki task kullanılır. Bu işlemden önce boş (null) alan temizliğinin yapılması gerekir. Bu işlem için “Derived Column” ismindeki task eklenir. Bu taskta yapılması gereken işlem için REPLACENULL(Color,”No Color”) fonksiyonu kullanılır, Color kolonu için Null görünen yerleri “No Color ” olarak güncellemiş olur.

Şartlı  ayrıştırma (conditional split) işlemi için şart faktörleri aşağıdaki gibidir:

•          Pahalı Ürünler: ListPrice > 1500,

•          Kırmızı Ürünler: Color == “Red” ,

•          Mavi Ürünler: Color == “Blue”

Aşağıdaki diyagramdan görülebileceği üzere, veri kaynağı devamında null temizliği ve şartlı ayırma işlemi yapılır. Şartlı ayırma işlemi sonrasında ürünler kırmızı, mavi, pahalı ürünler ve bunlar dışında kalan ürünler olarak ayrıştırılmış olur.

conditionalSplit

Aşağıdaki şekilde kırmızı renkli ürünlerin çıktısını göstermek üzere eklenmiştir.

kırmızı

 Kaynaklar

  1. Bt Akademi’den aldığım Sql Server 2012 ile İş Zekası Uygulamları Eğitimi

İŞ ZEKASI BİLEŞENLERİ

Birçok İş Zekası çözümü Veri kaynağı, ETL, Veri Ambarı, Analitik Veri Modeli (Analytical Data Model), Raporlama ve Analiz gibi temel İş Zekası bileşenlerini barındırır. Bütün platformlar için uygun olan ve bileşenler arasındaki ilişkiyi gösteren aşağıdaki şekil bu bileşenleri özetler niteliktedir. İş Zekası çözümü bir veri kaynağı ile başlar, veri işlenir ve Veri Ambarı ya da veri modeli oluşturulur. Sonuç olarak son kullanıcıya anlamlı rapor ve analizler sunulur.

İŞzekasıbileşenleri

Veri Kaynağı

Veri kaynağı İş Zekası çözümlerine temel oluşturan bileşendir. Şirketlerin birçoğu operasyon işlemlerinde Enterprise Resource Planning (ERP), Supply Chain Management (SCM), satış odaklı işlemler için Customer Relationship Management (CRM) ya da perakende satış işlemleri için Point-of-Sale (POS) gibi yazılımlar kullanırlar. Bu sistemler İş Zekası çözümlerinde başlangıç noktası olacak veri kaynağını üretirler. Uygulama veri tabanı genellikle Sql Server, Oracle ya da Access gibi ilişkisel veri tabanı yönetimi sistemleri (relational database management systems) olarak tasarlanır. İş Zekası çözümlerinde kullanılan veri kaynağı bulut tabanlı veya web servis örneğinde olduğu gibi harici ya da uygulama veri tabanı örneğinde olduğu gibi dahili olabilir.

ETL

ETL, üç ayrı işlemin tek bir işlem gibi yapıldığı bileşendir. ETL sistemleri genel anlamda verinin operasyonel veri tabanlarından veri ambarlarına aktarma işlemini gerçekleştirir. Verinin kaynaktan Veri Ambarı’na kopyalanmasından çok daha fazlasıdır. ETL veriyi kaynak sistemden çıkarıp veri içeriğini Veri Ambarı şemasına iletir ve Veri Ambarı’na yükler.

ETL İş Zekası çözümünün kalbi olarak düşünülebilir. ETL sistemleri veriyi sürekli olarak pompalayarak Veri Ambarı’nın güncel olmasını ve veri entegrasyonunu sağlayarak İş Zekası çözümünün bir bütün olarak devam etmesini sağlar. Etkili bir ETL tasarımı daha etkili bir İş Zekası çözümü elde edilebilmesine katkıda bulunur.

Veri Ambarı (Data Warehouse)

Veri Ambarı bütün raporlama ve analizlere temel oluşturan merkezi veri depolama birimi olduğundan İş Zekası çözümünün beyni olarak düşünülebilir. Günlük veri tabanlarında işlemler halen devam ediyor olduğundan rapor ya da analiz yapmak için uygun değildirler. Operasyonel veri tabanlarında select sorgusu çalıştırmak uzun süre alır. Select sorgusu üzerine yoğunlaşılmaktadır çünkü raporlar veya analizler genel olarak karmaşık select komut setlerinin çalıştırılması ile alınır. Bu zamanı kısaltmak için veri tabanının kopyasını almak yeterli olmaz. Günlük veri tabanlarının yükünü azaltacak bir yapıya ihtiyaç vardır. Bu ihtiyaçlar Veri Ambarı yapısının kullanılması ile giderilmiş olur.  Günlük veri tabanları ETL operasyonlarından geçirilerek verinin daha rahat analiz edilebileceği ve kolaylıkla rapor alınabileceği veri ambarları oluşturulur.

Veri Ambarı şirketin hafızasıdır. Bilgiyi detaylı ve geçmişini de içerecek şekilde tutar. Operasyonel veri tabanlarında verinin güncellendikten sonraki son haline ulaşmak mümkündür. Veri Ambarı’nda ise verinin güncellenmeden önce ve sonraki bütün versiyonları tutulur. Örneğin veri tabanında çalışan bilgilerinin tutulduğu bir tablo olduğunu varsayalım. Çalışanlardan birinin 2011 yılında 2 çocuğu olsun ve çalışanın 2014 yılında bir çocuğu daha doğuyor olsun. Günlük veri tabanında çalışanın 3 çocuğu olduğu bilgisi tutulurken Veri Ambarı’nda ise çalışanın 2011 yılında 2 çocuğu, 2014 yılında 3 çocuğu olduğu bilgileri yer alır. Anlaşılabileceği üzere Veri Ambarı’ndan çalışanla ilgili geçmiş bilgilere de ulaşılabilmektedir. Bunun bir sonucu olarak Veri Ambarı günlük veri tabanına göre çok daha fazla yer kaplamaktadır.

Günlük veri tabanında aynı kelime farklı şekillerde ifade edilebildiğinden veri kirliliği vardır. Veri Ambarı’nda ise aynı kelimeye denk gelen bütün kelimeler orijinal versiyonu ile ifade edilecek şekilde veri temizliği yapılır böylece veri kirliliği azaltılmış olur.

Veri Ambarı oluşturulurken denormalizasyon, tabloları birleştirme ve sadeleştirme, işlemi uygulanır, bunun sonucunda tablo sayısı azalır, tablo içerisindeki veri miktarı artar, birden fazla tablo tek bir tablo olarak ifade edilmiş olur.

Veri ambarları güncel veriyi tutmaz. Günlük veri tabanından ETL işlemlerini gerçekleştirmek üzere tanımlanan paketler, belirli saatlerde çalışarak Veri Ambarı’nı günceller, genellikle bu paketler 6 saatlik periyotlarla çalıştırılır.

Veri Ambarı oluşturulurken tablo ve sütun isimleri anlamlı olmalıdır. Böylece rapor alırken her defasında isimlendirmektense raporda kullanılacak şekilde isimlendirme yapmak zamandan tasarruf edilmesini sağlayacaktır.

Analitik Veri Modeli

Şirketler analiz ve raporlama işlemlerini direkt olarak Veri Ambarı üzerinden yapmak isteyebilirler. Diğer bir yöntem ise analitik veri modeli üzerinden rapor çekip analiz üretmektir. Analitik veri modeli için kaynak olarak genellikle Veri Ambarı kullanılır. Analitik veri modellerinin amacı işleyiş için Veri Ambarı’ndan çekilen veriye değer katarak gerekli olan anlamlı bilgiyi üretmektir. Analitik veri modeli Veri Ambarı’nda olmayan KPI (Key Performance Indicator), önceden hesaplanmış ölçümler (calculated measures),  kullanıcı tanımlı hiyerarşiler (user-defined hierarchies) gibi ek faydalar sağlar. Analitik veri modelleri küp (cube) isminde çok boyutlu yapılar oluşturur, küpler özellikle eklenmiş hesaplamaların bulunduğu yapılardır.

 Raporlama

İş Zekası çözümlerinin sağladığı temel faydalardan bir tanesi kurumların iş performansını arttırması ve işleyişi takip edebilmesi amacıyla rapor ve analizler üretmektir. Rapor; gelecek yıllarda hangi aksiyonların alınması gerektiği amacı ile oluşturulan, iş performansı ve aktivitelerin bir özetidir.

İş Zekası çözümlerinin çoğu standart raporların alındığı raporlama elementlerini barındırır. Raporlar doğrudan günlük veri tabanından, Veri Ambarı’ndan ya da analitik veri modelleri kullanılarak alınabilir, bu ihtiyaca ve senaryoya göre değişir.

Kaynaklar

[1]   Microsoft Corporation, 2012, Designing Business Intelligence Solutions with Microsoft Sql Server 2012, Microsoft Corporation, Product Number: 20467B.

[2]  Veri Ambarı ve İş Zekası Yapısal Teorisi, http://www.cevizbilgi.com.tr/veri-ambari-ve-zekasi-yapisal-teorisi/, [Ziyaret tarihi:20 Şubat 2015].

[3]  Loshin, D., 2003, Getting Onboard with Emerging IT, Business Intelligence: The Savvy Manager’s Guide, Morgan Kaufmann Publishers, ISBN-10: 1558609164, SanFrancisco, 100-120.

 

ICSEM-Uluslararası Sistem Mühendisliği ve Modelleme Konferansı,Roma-En İyi Makale Ödülü

Yüksek lisans tezim ile ilgili çalışmaya devam ederken ikinci kez uluslararası bir konferansa makalemi sunmak üzere katılma tecrübesi  yaşadım. Clute Institute tarafından San Francisco’da organize edilen konferansta İş Zekası ile ilgili makalemizi sunmuştum onun devamı olarak bu kez Microsoft Sql Server Raporlama Servisleri ile ilgili bir makale çalışması yaptım. İş yerinden arkadaşım Ergül Azizler de yüksek lisansa devam ediyor, ayrı ayrı makale göndermeyi düşünüyorduk ikimizin de makalesi yetişmeyince birlikte çalışmaya karar verdik, tez danışmanım Yrd.Doç.Dr. Emel Arslan’ın katkıları ile  “Implementation Scenarios of Reporting from Data Warehouse for Business Intelligence” ismindeki makalemizi ortaya çıkardık. Bu çalışmada genel olarak Microsoft Sql Server Raporlama Servisleri’nden bahsedip, bir uygulama çalışması yaptık, günlük veri tabanından rapor almak ile veri ambarından rapor çekmek arasındaki farkı ortaya çıkarak bir çalışma oldu. İstanbul Üniversitesi Bilgisayar Mühendisliği Bölümü’nden hocam Yrd.Doç.Dr. Zeynep Orman IACSIT(Internation Association of Computer Science and Information Technology) organizasyonunun düzenlediği konferansın komitesinde yer almıştı, Zeynep Hoca ve Emel Hoca’nın önerisi ile IACSIT organizasyonunun düzenlediği ICSEM (International Conference on System Engineering and Modeling ),Roma’da gerçekleştirilen konferansa makalemizi yolladık. Aradan yaklaşık 1 ay geçtikten sonra makalemizin konferansa kabul edildiği haberini aldık :) Konferans 18,19 Mayıs tarihlerinde Roma’da gerçekleşti. Konferans katılımı için Ericsson’dan destek aldık, geçen sefer San Francisco’ya makale sunmak üzere gittiğimde yine Ericsson ve İstanbul Üniversitesi sponsor olmuştu.Kabul edildiğimiz haberini aldıktan sonra başladık hazırlıklara; bir yandan sunum vesaire hazırlanırken bir yandan da  Avrupa’ya gitmişken İspanya tur planı yaptık. İş yerinde iki haftalık izin aldık.

18 Mayıs’da konferans kaydımızı yaptık, 19 Mayıs’da da sunumlar oldu. Konferansa Keynote ve  açılış konuşmaları ile başladık. Cardiff Üniversitesi’nden Prof.Alexander Balinsky ve  Florida Teknoloji Enstitüsü’nden (The Florida Institute of Technology in Melbourne, Florida, USA) Prof. Wiliam Arrasmith açılış konuşması yaptılar. Açılış konuşmasından sonra Prof. Alexander, Prof. William ve  Paris Üniversitesi’nden Prof. Ben-Othman Jalel çalışmalarını sundular. İlk bölümden sonra aşağıdaki grup fotoğrafını çektik :)

group photo (1)

Konferans iki oturumdan oluşuyordu, bizim sunumumuz öğleden sonraki ilk oturuma dahil edilmişti. Öğleden sonraki ilk oturumda ikinci sırada makalemizi sunduk. Sunumu Ergül ile birlikte yaptık. Konferansta Amerika, İngiltere, Kore, Bulgaristan, Tayvan, Çin, Japonya, Hindistan, Ekvador, Mexica, Cezayir gibi çok farklı ülkelerden  insanlar vardı. Uluslararası bir etkinliğe katılmanın en güzel yanı farklı milletten insanlarla tanışıp kültürlerini tanımaktır. Farklı kültürler oldum olası ilgimi çekmiştir. Örneğin ilk defa Ekvador’dan biri ile tanıştım ve komik olan ülkeyi Ekvator çizgisinin üzerinde Sigapoure’a yakın bir yerlerde sanıyordum sohbet sırasında öğrendim ki Güney Amerika’da imiş, yaşayarak öğrenmiş oldum yani  bu bilgiyi :)  Kayıt günü tanıştığımız Güney Kore’li arkadaş ile o günü birlikte geçirip gezdik, yine onunla Kore’ye ve dünyaya dair sohbet ettik. Prof. Alexander İsrailli idi, acayip özgüvenli ve konuşkan bir kişilikti hemen hemen bütün sunumlarda müdahale edip yorum yapıyordu neyse ki bizim sunumda salonda değildi :) Kendisi ile de konferansın sonlarında bayağı samimi olduk, hayat hikayesini ve tecrübelerini dinledik. Bütün bunlar paha biçilmez tecrübe oldu bizim için.

Konferans sonunda en iyi makale ödül töreni ve akşam yemeği vardı. Her oturumdan bir makale seçilmişti veeee en iyi makale ödülü (Best Paper Award) bize geldi :)  Doğrusu hiç beklemiyorduk, süpriz oldu bizim için, harika bir andı. Prof. Alexandar’ın sertikamızı verirkenki mutluluğumuz aşağıdaki kareye yansımıştır.

session 1

Makalemiz IJMO dergisinde de yayınlandı, buradan okuyabilirsiniz.

Roma’dan sonra Barcelona’ya geçtik, iki arkadaşımız ile buluştuk, daha sonra araba kiralayıp güneye indik; Valenciya, Granada, Malaga, Ronda ve Cadiz’e gittik. Son iki günde ben aile ziyareti için Belçika’ya geçtim. Harika bir tatil geçirdik.

Konferans katılımıza destek olan Ericsson’a , Yrd. Doç. Dr. Emel ARSLAN’a, Yrd. Doç. Dr. Zeynep Orman’a, yaptığı harika gezi planı ve rehberliği için Ergül Azizler’e , tatil boyunca birlikte vakit geçirdiğimiz Serap Şen’e ve Volkan Çiçek’e, Belçika’daki akrabalarıma bu seyahatimin ve harika tecrübenin parçası oldukları için sonsuz teşekkürler :)

 

MIS Eğitimi-Yazılım Mühendisliği ve İşletmelerde Yazılım Geliştirme Yaklaşımları-Proje Yönetimi

MIS eğitimizin son haftasında çok beğendiğim eğitimlerden biri olan  Yrd.Doç.Dr.Gülfem Işıklar Alptekin’in “Yazılım Mühendisliği ve İşletmelerde Yazılım Geliştirme Yaklaşımları” konulu sunumu ile ilgili aklımda yer edinenleri aktarmak isterim.

Yazılım geliştirme süreçleri üzerine konuştuk.En çok kullanılan yazılım geliştirme süreci modelleri:

  • Çağlayan/Şelale(Watefall Model)
  • Evrimsel Geliştirme(Evolutionary/Iterative/Agile Development)
  • Bileşen Esaslı Geliştirme(Component-based Software Engineering)
  • Kitle Kaynak(Crowdsourcing)

Waterfall Model

Yazılımı kesin çizgiler ile aşamalara bölen bir modeldir.

Waterfall model yazılımı;

  • İhtiyaç analizi
  • Sistem ve yazılım tasarımı
  • Uygulama ve birim testleri
  • Entegrasyon ve testleri
  • Bakım

diye ayırır.

Her aşamadan sonra dökümanı yazılmalıdır.Bu model daha çok ihtiyaçların çok iyi bilindiği ve değişiklik yapılmasının pek beklenmediği durumlar için uygundur.Bu yüzden ihtiyaçların çok iyi belirlenmesi önemlidir,çünkü bu modelde geçmişe yönelik bir çalışma yapılmaz.Savunma sanayi projelerinde ya da kamu projelerinde bu model daha çok tercih edilir.

Waterfall modelinde yapılan yazılımdaki hatalar test aşamasında ortaya çıkar,bu sırada zaman bayağı ilerlemiştir, başa dönüp düzeltme yapmak çok maliyetlidir,aynı şekilde eğer isterlerde yanlışlık varsa ortaya istenenden farklı çok değişik bir yazılım çıkmış olabilir :) Bu modelde süreç ilerlerken değişiklik yapmanın zor olması ve bir aşama bitmeden diğer aşamanın başlayamaması dezavantaj olarak söylenebilir.

Evrimsel Geliştirme(Evolutionary Development)

Bu model daha çok küçük ve orta büyüklükteki etkileşimli projelerde veya büyük sistemlerin bazı bölümlerinde tercih edilir.Bu modelde bir uygulama yazıp kullanıcıdan gelen yoruma göre uygulama iyileştirilip tekrar kullanıcıya sorulur, süreç sürekli böyle devam eder.Yazılım tamamlanana kadar ortaya birçok versiyon çıkar.Sürecin müşteri onayı ve kontrolünde gerçekleşmesi avantajdır, fakat genel bir plan olmadığı için sürecin ileri evreleri öngörülemez.Genelde bu model ile geliştirilen sistemlerin ana yapısı sağlam değildir.Waterfall modelin aksine burada düzenli bir dökümantasyon yoktur,dökümantasyon yerine çalışan bir uygulama oluşur.Proje yöneticileri gelişmeyi yönetmek için düzenli rapor görmek isterler, bu da onları sıkıntıya sokabiliyor.

Bileşen Esaslı Geliştirme(Component-Based Software Development)

Bu modelde daha önceden yazılmış bileşenler sistematik bir biçimde diğer projelerde de kullanılır.Bu süreçteki adımlar aşağıdaki gibidir:

  • Bileşen analizi
  • İhtiyaçların düzenlenmesi
  • Tekrar kullanılan bileşenlerle sistem tasarımı
  • Geliştirme ve enterasyon

Bu model daha fazla kullanılmaya başlanıyor.

Kitle Kaynak(Crowdsourcing)

Bu model aslında çok yerde geçmiyor,hocamızın kendi derlemelerinden anlattığı bir modeldir.Bu modelde topluluğa yazılım geliştirtmek gibi bir yol izleniyor.Hocamız bu modeli çok iyi örnekleyen Topcoder ismindeki bir topluluktan bahsetti .Şirketler Topcoder’a yazılım ihtiyaçlarını iletiyor,onlar da bunun analizini yapıp tasklara bölüyorlar,daha sonra her bir task için yarışma yapıp ödül belirliyorlar.Siteye kayıtlı olan yazılımcılar bu task içi yazılım üretiyor ve gönderiyorlar, en iyi yazılım seçiliyor ve yazılımcıya ödül veriliyor,diğer yazılımcılara da puan veriliyor.Böylece işin maliyetini çok düşürmüş oluyorlar, hem de ortaya kaliteli yazılım çıkmış oluyor.Ben de bu topluluğu ve yöntemi  ilk defa duydum ama maliyetler düşük olduğu için şirketler de bu yöntemi tercih ediyormuş ve yazılımclar için de freelance çalışma olanağı doğmuş oluyor. Topcoder’ın yaptıkları çok daha kapsamlı aslında ama ben en genel hali ile bahsettim.

Çevik Yaklaşımlar ve Scrum 

Scrum ile ilgili internette sayısız kaynak bulabilirsiniz amacım Scrum’ı baştan sona anlatmak değil de,hiç fikri olmayan birinin baktığında fikir edinmesini sağlayacak nitelikte açıklamalar olacaktır.

Scrum metodunda iş parçalara bölünüyor,o parçaların her biri ekipler tarafından yapılıyor,her bir iterasyonda ortaya bir ürün çıkıyor,bu ürün müşteriye gösteriliyor sonra başka kısmına geçiliyor.

Bu çalışma boyunca Product Owner da süreçlere dahil edilir,buradaki Product Owner müşteriyi temsil eden kişidir.Scrum metodolojisinde iş bölümlerinin her birine sprint deniyor,sprintler genelde 1-4 hafta olabiliyor.Her bir sprintde çalışacak ekip üyeleri belirlenir ve her bir sprintde bir Scrum Master olur.Scrum Master süreci yöneten kişidir ve günlük Scrum toplantılarına öncülük eder.Sprintin ilk toplantısında; yapılacak işler görev dağılımları ve süreler belirlenir. Sprint süresi uzatılmaz, yetişmeyen işler diğer sprinte aktarılır.Scrum’ı diğer  metotlardan ayıran özelliklerden biri olarak; ekip elemanları birden fazla rolde yer alabilirler veya her sprinde farklı işler yapıyor olabilirler.Bu arda her sprintdeki elemanlar farklı olabiliyor.Günlük toplantılar olduğunu söyledim, bu günlük toplantılar genelde 10-15 dakika olabiliyor,sabah işe başlamadan ekip üyeleri toplanıp o gün neler yapacaklarını,problemleri varsa dile getirebilecekleri minik toplantı yapıyorlar,bu toplantıları scrum master yönetir.Bizim ofiste de her sabah bir tahta önünde ellerinde çay kahve minik notları tahtaya yapıştırıp konuşanları falan görüyorum.Onların da scrum uyguladıklarını düşünüyorum :) biraz özeniyorum açıkçası,scrum uygulayan bir ekiple çalışmak isterdim.

Scrum metodu Amerikan futboluna benzetilebilir,herkes itiş kakış bir araya geliyor ve takım oyunu oynuyor.Waterfall ise bir bayrak yarışı gibidir,aşamalıdır, bir aşama biter diğeri başlar.

Scrum uygulayan bilindik firmalar arasında Yahoo,Bbc,Siemens,Ikea,Microsoft,Nokia,IBM…sayılabilir.

Bir de Scrum-But olarak adlandırlan metod varmış,bunda Scrum kısmi olarak uygulanıyor,bir şeyler eksik kalıyor.

Bu eğitimde aynı zamanda UML(Unified Modeling Language),LIS(Legacy Information Systems),yazılım test süreçleri,test çeşitleri üzerine konuştuk.MIS eğitimi boyunca en faydalı bulduğum oturumlardan bir tanesi oldu.Hocamıza çok teşekkürler.

Geçtiğimiz hafta eğitimimiz son buldu,genel olarak faydalı bir eğitim olduğunu söyleyebilirim.Olayların dışına çıkıp büyük çerçeveyi görmemi sağladı.Çalıştığım sektör ile ilgili daha fazla bilgi sahibi oldum,süreçleri öğrendim.Eğitim Kordinatörü Temel Öncan Hocamıza ilgisinden dolayı teşekkürler.Eğitim ile ilgili sertifika sınavına da girdim, sınavı geçmişim :)Böylece eğitimde mutlu son oldu :)

 

MIS Eğitimi-Crm ve Uygulamaları

Galatasaray Üniversite’si tarafından organize edilen Mis Eğitimi’nde geçtiğimiz hafta Yusuf Tokmakçı “CRM ve Uygulamaları” konulu sunumu ile bizlerle oldu. Yusuf Bey son 11 senedir Siemens’de çalışıyor,8 sene Kanada Siemens’de çalışmış şuanda da Türkiye Siemens’de IT Director olarak çalışıyor. Kendisinin mütevazi ve samimi tavırları çok hoşuma gitti. Sunumdan aklımda kalanları aşağıdaki gibi özetleyeceğim.

Ben de şuan VodafoneNet CRM Projesi’nde çalışıyorum. CRM’e biraz dışardan bakmak, farklı yönlerini görmek benim için faydalı oldu. CRM’in açılımı Customer Relationship Managemet dir, yani Müşteri İlişkileri Yönetimi. Hocamızın tanımına göre CRM müşteri ilişkilerini oluşturma, müşterileri şirkete kazandırma ve kurulmuş ilişkilerini yaşatmayı sağlayan birçok alana entegre bir yaklaşımdır. CRM müşterilerin işin esas merkezi olduğu prensibine dayanır ve şirketin başarısının müşteri ilişkileri ile orantılı olduğunu savunur.

CRM Çeşitleri:

  • Operasyonel CRM
  • Analitik CRM
  • İşbirlikçi CRM

CRM Bileşenleri:

  • Satış: Ürünü müşteriye satmak, karşılığında para almak,
  • Pazarlama: Tanıtım, sunum, reklam, kampanya, fırsata öncülük etmek,
  • Servis: İşi destekleme,
  • Çağrı Merkezi
  • Elektronik Ticaret

CRM projeleri ile ilgili ilginç bir analiz; dünyada yapılan CRM projelerinin %50 den fazlası başarısız oluyormuş. Başarısız olan CRM ler ihtiyaçları karşılamıyor ya da müşteriyi memnun etmiyor olabilir.

CRM Uygulama Tüpleri:

  • Enterprise: Şirket sunucuları üzerine kurulup kullanılan,
  • On-Demand: Web üzerinde kurulup browser aracılığı ile erişilen CRM servisi.

CRM uygulaması alırken dikkat edilmesi gerekenler konusunda konuştuk. Yeni alınacak CRM sisteminin mevcut sistemleriniz ile uyumlu olması çok önemli bir faktör. CRM Programının sadece sizin işnize yarayacak kadar özelliği ile ilgilenin fazlası zarar olabilir :) Best-practice sharing önemli, uygulamayı kullananlardan feedback almak gerekirmiş. CRM projelerinin %50 den fazlasının başarısız olduğunu düşünürsek başlangıçta çok yazılım/donanım yatırımı yapmamak gerekir.

EN popüler CRM uygulamaları :Oracle On Demand; şuan Siemens’de kullanılıyormuş, Salesforce.comCRM;hocamız bunu çok başarılı bulduğunu paylaştı, Sage Act, Sap CRM, Maximizer CRM,…

Bir CRM projesi yapacaksanız düzgün bir Business Case hazırlamak gerekir, maliyetlerin yanı sıra faydalara da odaklanmalıyız. CRM yapılacağına karar verilmişse yatırım yapmakdan kaçınmayın, ya başlamayın ya da başlamışken masraftan kaçmayın demişti hocamız :) CRM projelerinde en önemli etken iş ekipleridir, bunlarla kesinlikle kordineli çalışılmalıdır. Şuan çalıştığım projeden de söyleyebilirim, arada senkronizasyon bozukluğu olduğunda yapılması gerekenden çok farklı işler ortaya çıkabiliyor.

Faydalı ve eğlenceli sunum için Yusuf Bey’e teşekkürler.

 

MIS Eğitimi-IT Governance

Galatasaray Üniversitesi’nde aldığımız MIS eğitimin’de geçtiğimiz hafta Dr.Şahin Akkargan’dan “IT Governance” konusunu dinledik.Şahin Bey 5 sene akademisyen olarak çalıştıktan sonra yaklaşık 15 senedir IT sektöründe farklı pozisyonlarında çalışmış .Şu anda NovaBold Bilgi Teknolojileri Şirketi’nde Genel Müdür olarak çalışmaktadır. Eğitimde en çok dikkatimi çeken ve aklımda kalan kısımları özet olarak aktarmaya çalışacağım.

IT Governance’ın ne olduğu ile başlamak faydalı olacaktır, Governance kavramını Türkçe’ye Yönetişim olarak çevirebilir.IT yönetişimi için Gartner’ın yaptığı şöyle bir tanım bulunmaktadır :“BT yönetişimi ,bir organizasyonun iş hedeflerine ulaşabilmesi için Bilgi Teknolojilerinin etkin ve verimli kullanılmasını sağlayan süreçler topluluğudur.” Hocamızın ifadesi ile “IT stratejilerinin iş birimleri stratejileri ile paralelleştirilmesidir.”

Yönetim ve Yönetişim birbirinden farklı kavramlardır ve bunları karıştırmamak gerekir. COBIT 5 ile bu kavramlar birbirlerinden net şekilde ayrılmıştır. Yönetişim; değerlendirme, yönlendirme, büyük resmi izleme(Evaluate, Direct,Monitor) adımlarını, Yönetim ise planlama, geliştirme, uygulama ve izleme(Plan,Build,Run,Monitor) adımlarını içerir.

Şirketlerin müşterileri/paydaşları ile yaptıkları anketlere göre IT nin çıkardığı iş kendisine göre her zaman çok iyidir ancak müşteri her zaman aynı düzeyde memnun kalmaz. Anket sonuçları da bunu kanıtlar nitelikte.IT Governance’ın yapmak istediği tam olarak bu iki farklı bakış açısını mümkün olduğunca birbirine yaklaştırmaktır. Dersimizde “IT birimleri verdiği hizmetleri müşterilerinden daha çok beğeniyor olabilir mi?” sorusunu tartıştık. Kendi çalıştığım projelerden de düşünüyorum, IT biriminde çalışan biri olarak genelde yaptığımız işleri yeterli görüyorum :) fakat müşterilerimizin aynı oranda memnun kalmadığı zamanlar olabiliyor.

Global IT Governance modelleri vardır. Bu modelleri kullanmak genelde faydalı olsa da bazı dezavantajları da vardır. En büyük avantajları IT profesyonellerinin en iyi pratiklerinden derlenmiş yaklaşımlardır, birçok kurum önceden uygulamış örnekleri mevcuttur ve bağımsız denetimi kolaydır. Dezavantaj olarak da uzun uyarlama süresi ve yüksek uyarlama maliyeti söylenebilir. En çok bilinen modeller; Cobit, ISO 31000,ITIL,Togaf,Cmmi,ISO 27000,ISO 38500 dir. Ders kapsamında bunlardan 38500 ve Cobit üzerine konuştuk. Cobit, ISO 38500 standartlarının tamamını kapsar. Her iki standartda da üst yönetimin görevleri değerlendirme,yönlendirme ve gözlemlemedir(Evaluate,Direct,Monitor) .Cobit 5 Framework ile Governance of Enterprise IT olarak tabir edilmiştir, açılımı Control Objectives of Information and Related Technolgies dir.Cobit 5 kurumların iş hedeflerine ulaşmak için IT’den en yüksek faydayı sağlamasına yardımcı olan bir iş yönetim çerçevesidir. Cobit,Cobit1 ile  1996 yılında ilk versiyonu çıkarmıştır,2012 itibari ile de Cobit5 standartları kullanılıyor. Cobit 5 in kendine özel prensipleri mevcuttur. Derste bunları detaylı konuştuk, hatta hocamız bu aldığımız eğitim ile Cobit sertifikası alabileceğimizi ekledi.

Faydalı bir eğitim oldu, Şahin Bey’e teşekkürler.

MIS Eğitimi-Başarılı bir Elevator Pitch(Asansör Görüşmesi)

Galatasaray Üniversitesi MIS eğitiminin ikinci haftasında Ali Şir Olgaç “ICT ve Satış” konusu ile tecrübelerini bizimle paylaştı. Sunumunu çok faydalı ve keyifli buldum, eğitimden çok kısa bir bölümü aktarmak isterim.

Biraz hocamızdan bahsedecek olursam;4 sene Galatasaray Üniversitesi’nde akademisyen olarak görev yapmış, akademisyenliğin kendisine çok uygun olmadığını düşünerek sektörde çalışmaya başlamış. Son 14 senedir Orange Business Services şirketinde çalışıyor , Mühendis olarak girdiği şirkette şuan Türkiye Genel Müdür Yardımcısı, Satış tarafında görev yapıyor. Mühendislikten sonra aynı şirkette teknik taraftan satışa geçmiş. Bu da ilginç geldi bana doğrusu, zamanla kendi yeteneklerinin satışa daha uygun olduğunu görmüş ve genel müdür yardımcısı olmasından anlıyoruz ki başarılı da olmuş :)

Konuya ICT den başladık, ICT; Information Communication Technologies in kısaltmasıdır. Satış, pazarlama aslında hayatımızın her alanında vardır. Ali Bey’in de dediği gibi aslında hayatımızın her alanında kendimizi bir şekilde pazarlıyoruz, iş ararken, ikili ilişkilerimizde  ya da çocuğumuza iyi ahlakı pazarlıyoruz, iyi yönlerini gösterip benimsemesini sağlıyoruz.

Başarılı bir elevator pitch nasıl olur üzerine konuştuk ve simülasyon yaptık. Daha önce elevator pitch duymuştum ama nasıl olması gerektiği konusunda çok da fikrim yoktu. Türkçeye çevirisi asansör görüşmesidir. “Çok kısa bir vaktin var yatırımcıya/yöneticine fikrini aktaracaksın, bu kısa sürede en düzgün biçimde nasıl ifade edilir”, şeklinde özetleyebiliriz.

Bunun nasıl başarılı olabileceği ile ilgili hocamız bir kaç madde sıralamıştı:

  • Kendinizi tanıtma ile başlayın,
  • Esas konuya odaklanın,
  • İşin jargon kısmını çok kullanmayın, en sade şekilde anlatın,
  • Bir hikaye ile bağdaştırın,
  • Hedef kitlesi kim olacak,
  • Daha detaylı konuşmak üzere bir randevu alın ya da o kadar etkili anlatın ki görüştüğünüz kişi sizi davet etsin.

Konuya kendimizi tanıtmakla girmemiz gerekirmiş; kimiz, ne iş yapıyoruz gibi. Konuştuğumuz kişinin ajandasını iyi bilmek, takip etmek gerekiyormuş; örneğin asansörde yakaladığımız kişi bir CTO(Chief Technology Officer) ise anlatacağımız konuyu teknolojik ihtiyaçlarla bağdaştırabiliriz ya da CFO(Chief Finance Officer) ise ilgilendiği konu cost reduction (maliyet düşürmek) dir, önereceğimiz çözümün  maliyeti ne kadar azaltacağına odaklanabiliriz gibi. Fikrimizle ilgili hikayeyi konuştuğumuz kişinin ajandasına göre şekillendirmeliyiz.İşin jargonundan uzak durmalıyız, örneğin  anlattığımız konu projemizde ihtiyaç duyduğumuz bir ürün ise teknik terimlerden uzak durmamız gerekir, çünkü  konuştuğumuz kişi teknik biri olmayabilir. Hikayeyle birlikte problemin ne olduğunu ve bizim önerdiğimiz çözümün ne olduğunu ve dahası nasıl etkileri olacağını söylemek gerekir. Tabi bütün bunları söylemek için çok kısıtlı bir vaktimiz var :) Öyle etkileyici anlatmalıyız ki daha biz randevu istemeden o bizi davet etmeli :) çağırmıyorsa da kendi ayıbı,biz yine de randevu istemeliyiz :)

Bu Tren de (Asansör :) )her zaman gelmez, treni kaçırmamak gerekir…

 

 

MIS(Management Information Systems) Eğitimi 1. Hafta

Geçen haftasonu(15.11.2014) itibari ile Galatasaray Üniversitesi S.E.M ve Istanbul Instititue’nin organize ettiği 6 haftalık MIS(Yönetim ve bilişim sistemleri) eğitimimiz başladı.Eğitime şirketten 4 arkadaşım ile birlikte katılıyorum,Ericsson eğitim sponsorluğumuzu yapıyor sağolsun :)

Doğrusu eğitime başlamadan önce Bilgisayar Mühendisliği’nden mezun ve sektörde çalışan biri olarak acaba bildiğim şeyler mi olacak diye tereddüt etmiştim ama kesin içerik yayınlandıktan ve ilk haftayı geride bıraktıktan sonra tereddütlerimi de geride bıraktım.Şuan için ilk izlenimlerim olumlu diyebilirim.

Galatasaray üniversitesi’nden manzara mükemmel , manzarayı görünce biz de üniversite mi okuduk diye geçirmekten kendimi alamadım,Beşiktaş ile Ortaköy arasında,boğaz manzaralı bir üniversite,eğitim sayesinde bol bol  manzaranın keyfini çıkaracaz :)

Eğitimin ilk gününde GSÜ öğretim üyesi Doç.Dr. Temen Öncan bizimle birlikte oldu,kendisi eğitim kordinatörü ve bizler ile yakından ilgili.İlgisinden ve sürekli feedback almaya çalışmasından çok hoşnut oldum.Kendisi “Yönetim Bilişim Sistemlerine Giriş”  başlığı ile değerli bilgilerini paylaştı.Ders interaktif geçti ve sürekli sorular sorarak bizleri konuşturmaya çalıştı.Temel Hoca’nın dersinden en çok aklımda kalanlar şu şekilde:

Misyon(özgörev) ve Vizyon(özgörüş) üzerine konuştuk,şuan çalıştığımız şirketlerin misyon ve vizyonlarını tartıştık,bireysel olarak da misyon ve vizyonumuz olması gerektiğini vurguladı.

PEST(Political Economical Social Technological) Analiz ve SWOT(Strenght Weakness Opportunities Threats) Analiz,bunları hep duyardım ama ne oldukları konusunda aydınlanmış oldum.Aile içinde ya da diğer ilişkilerde zaman zaman SWOT analiz yapmak gerekirmiş.

Web of things(Wot) ve Internet of Things(Iot) üzerine konuştuk. Wot RFID teknolojisinin bir tık üstü sayılabilir,kısacası nesnelerin internete bağlanması diyebiliriz.Iot ise daha kapsamlı bir teknoloji,herşeyin birbirine bağlanması.En basit örnek olarak buzdolabında bazı ürünlerde azalma olduğu zaman cep telefonunuza online sipariş için onay düşmesi senaryosu düşünülebilir.Bunlarla ilgili eğlenceli videolar izledik,akıllı ev sistemlerini konuştuk.

2. gün Sedef B.Arslan tecrübelerini bizimle  paylaştı.Konusu “Business Case Hazırlama” idi.Kendisi 1983 yılında çalışma hayatına başlamış çeşitli banka ve kuruluşlarda çalışmış,hatta kendisi de şirket kurmuş,sonrasın Kanada’da bir bankada Project Manager,Senior Audit Manager ve son olarak director olarak çalışmış.Daha sonra Türkiye’ye dönüp IBM’de çalışmış ve şuan serbest çalışıp danışmanlık hizmetleri veriyormuş.Yaptıklarını ayrıntılı yazdım çünkü süper tecrübeli bir insandı,çok mütevazi,neşeli,enerji dolu bir insan,tanıştığım için çok mutlu oldum.Business Case hazırlama konusunda bizi bilgilendirdi.Özellikle kendisinin dahil olduğu projelerden örnekler verdi,hem sucess hem de fail olan projelerden bahsetti.En kaba tabir ile aslında business case, iş planı oluşturmak diyebiliriz.İşin maliyetinden tutun da risk analizine kadar bütün durumlar düşünülürek yapılan analizdir..İş planında project ve operational cost lar çıkarılıyor.Sedef Hoca’nın dediği gibi bir iş yapılacaksa business case mutlaka hazırlanmalıdır,mendil arkasına bile olsa planınızı yapıp,kafanızda oturtmaya çalışın demişti.Patrona ben böyle iş yapacam dediğimizde business case leri de önüne koymamız gerekir.Kanada’da çalıştığı bankada fail olan bir projeden bahsetmişti.Plan çıkarılırken zaman zaman varsayımlarda bulunuluyor,bu varsayımların seçimi çok kritik rol oynuyor.Bunların belirlenmesi de tabi hazırlayan kişinin öngörüsüne,tecrübesine göre netice buluyor.Bahsettiği projede kredilerin merkezi olarak takip edilmesi ve kişinin aldığı krenin bütün bankalar tarafından görülmesi tarzında bir projeymiş.Bu proje kapsamında kredi büroları ile anlaşılıyor.Proje çalışmaya başladıktan sonra bakıyorlar ki kredi bürolarının bilgileri güncel değil, çekilen kredi birkaç gün sonra yansıyor ve hesaplar birbirine karışıyor.Küçük ama önemli bir ayrıntı, birkaç gün içersinde proje geri çekiliyor ve iş süreçlerinde olanların hepsi işten çıkarılıyor.Sedef Hoca’nın dediğine göre aslında çok da küçük bir ayrıntı değilmiş hesaba katılması gerekirmiş,kredi bürolarının bilgileri kontrol edilmeliymiş aslında. Bu şekilde gerçek hayattan kendisinin dahil olduğu projelerden örnekler vererek, business case hazırlama konusunun hafızamızda yer edinmesini sağladı.Kendisini hayranlıkla dinledim.

2. gün öğleden sonra Galatasaray Üniversitesi öğretim görevlisi Doç.Dr.A.Çağrı Tolga’yı dinledik. Konusu “Teknoloji ve Ar-ge Yönetimi” idi. Teknoloji, Innovasyon ile ilgili bilgilendirdi. Doğrusu sunumunun ilk bölümlerini  biraz teorik buldum,o kısımlar biraz daha azaltılabilirdi.

Innovasyon daha kapsamlıdır, Ar-ge innovasyonun alt birimidir. Dünyada Ar-ge ‘ye yapılan harcamaların GSYİH’ya (Gayrisafi Yurtiçi Hasıla) oranı Türkiye’de 1998 yılında %0,37,2010 yılında %0,84 imiş Amerika’da ise bu oran 1998 yılında %2,58,2010 yılında %2,91 imiş. Bu istatistiklerde Çin verileri eksik, çünkü Çin bilgilerini paylaşmak istemiyormuş.2. bölümde ise biraz hesap işlerine girdik :) Basit bileşik faizden bahsetti, aslında bankalardan kredi çekerken bileşik faiz hesaplanıyormuş, bu yüzden sürpriz paralar çıkabiliyor. Paranın şimdiki değere ve gelecek değere  getirilmesi hesaplamaları yaptık. Örneğin birine borç veriyorsunuz, ama verdiğiniz para 2 yıl sonra aynı değerde olmaz gibi. Bunlar konusunda bilgi sahibi olmak faydalı oldu.

Bütün Hocalarımıza teşekkürler. Fırsat buldukça eğitim ile ilgili değerlendirmelerimi ve aklımda kalan kısımları yazmaya çalışacağım.

The Clute Institute Uluslararası İş ve Eğitim Konferansı,San Francisco

Uzun süre sonra tekrar blog yazısı yazıyorum.İş hayatına geçtikten sonra bu konuda tembelleştiğimi itiraf etmeliyim.Yazmayı planladığım çok fazla şey olmasına rağmen sürekli erteliyorum maalesef.Şuan ise artık bloğumda yazmam gerektiğine kendimi ikna ettim :)  Yazmış olduğum makaleyi  uluslararası bir konferansta sunmak üzere davet aldım ve bu konudaki tecrübelerimi ,süreci aktarmam gerektiğini düşünüyorum.

Öncelikle akademik bir makale yazma fikri nasıl ortaya çıktı, buradan başlayabilirim.İstanbul Üniversitesi’nde Bilgisayar Mühendisliği Bölümü’nde yüksek lisans yapıyorum.Yüksek Lisans derslerinden birinde hocam  Yrd. Doç. Dr.Zeynep Orman araştırmak ve sunum yapmak üzere bir konu seçmemizi istemişti.Ben İş zekası konusunu seçmiştim.Konu ile ilgili makaleleri de araştırarak bir survey çalışması da yapmıştım.Konuyu araştırırken bu konudaki makalelerin azlığı ve olanların çok nitelikli olmadığını farkettik.Hocam bu konuda açık olduğunu ve bir çalışma yürütebileceğimizi önerdi.İlerleyen süreçte Bt Akademi’den Resul Çavuşoğlu’nun verdiği yaklaşık 3 ay süren Sql Server 2012 ile İş Zekası Uygulamaları Eğitimi’ne de katıldım.Bu eğitimin de katkıları bir ile makale çalışması yaptık.Makalemizde iş zekası ihtiyacından başlayarak bileşenleri,iş zekası projelerini teorik yönden  yer verdik ve Microsoft’un iş zekası platformuna yoğunlaşarak bunun için de uygulama örneklerine yer verdik.Yine yüksek lisansdan tez hocam olan Yrd. Doç. Dr.Emel Arslan’ın da katkıları ve önerileri ile makaleyi akademik formatlara uydurduk.Makaleyi The Clute Institute tarafından bu sene 3-7 Ağustos tarihleri arasında San Francisco,California’da düzenlenen Uluslararası İş ve Eğitim Konferansı’na yolladık.Yaklaşık bir hafta kadar sonra makalenin konferansa kabul edildiği iletildi,bizi sunum yapmak üzere San Francisco’da gerçekleşen  konferansa davet ettiler.Üniversite’den biletimi ödemek için onay almayı başardık.Şimdi çalıştığım şirketim Ericsson da konaklama konusunda sponsor oldu.Hocalarım konferansa gelemedi.Konferansdaki sunumu da yine hocalarımın önerileri  doğrultusunda  hazırladım.Doğrusu sunumun nasıl hazırlanması ve yapılması gerektiği ile ilgili tecrübeli olduğumu söyleyebilirim.Imagine Cup yarışmasına katıldığımız süreçte bu konuda eğitim de almıştık.San Francisco’daki süreçten bahsedecek olursam;3 gün konferansa katıldım.Türkiye’den gelen Çin Dili ve Edebiyatı Anabilim Dalı Başkanı Doç. Dr. Eyüp Sarıtaş ve Missouri Üniversitesi’nde doktorasına devam eden Ayça Değirmencioğlu ile tanıştım,Türkiye’den Hava Harp Okulu’ndan arkadaşlar da sunum yapmak için gelmişlerdi.Yine California State Üniversitesi’nden ve sektörden konferansa katılan kişilerle tanışıp sohbet etme imkanımız oldu.Konferansın 2. gününde sunumumu yaptım,beni dinleyenler teknik konulara çok hakim olmasalar da sunumumu beğendiklerini söylediler :)

WP_20140805_013

 

WP_20140811_008 (1)

Konferans  sayesinde San Francisco’yu da gezme şansına sahip oldum.Daha önce Amerika’ya Build 2012 Konferansı’na katılmak üzere New York ve Washington’a gitmiştim ama San Francisco’yu ayrı bir güzeldi.San Francisco’da gezmek çok kolay oldu,ulaşım ağı çok gelişmiş,her şey turistlere göre dizayn edilmişti sanki.Çok fazla turist vardı,birine bir şey soracakken sizin gibi bir turiste denk gelmiş olma ihtimaliniz çok yüksek.İlk gün hemen Golden Gate köprüsüne gittim,köprüyü yürüyerek geçip geri döndüm,yaklaşık 1,5 saatte tamamladım.Köprünün üzerinden Pasific Okyanus’un manzarası harikaydı.

WP_20140803_037

Türkiye’den gitmeden bir kaç tur ayarlamıştım.Okyanus kıyılarını gezdiren Monetery/Carmel turuna katıldım,silikon vadisini teğet geçtik :)  Zamanında Amerika’nın azılı katillerinin tutulduğu Alcatraz Island’a çok öncesinden bilet almışım,oradayken sorduğumda Ağustos sonuna kadar bilet olmadığını söylediler.Şu hep filmlerde gördüğümüz meşhur Amerikan hapishanelerini gördüm,sesli anlatım eşliğinde müzeye çevirdikleri hapishanede gezdim.Son 1,5 günümü de alışverişe ayırmıştım.Gitmişken alışveriş olmadan olmazdı.Outlet mağazaların yerlerini önceden öğrenmiştim Marshalls,Ross,Tj maxx forever :) Bir haftalık hem iş hem seyahat amaçlı gittiğim San Francisco’yu çok beğendim,keyif alarak gezdim.Farklı insanlar tanıdım benim için ciddi bir tecrübe oldu.Makalelerimizi yakın zamanda konferans proceeding de  ve seçtiğimiz journal larda yayınlayacaklar.Yayınlandığı zaman linkleri sitemden de paylaşırım .

Makale hazırlama sürecinden gidşime kadar yardımlarını esirgemeyen hocalarıma ve katkı sağlayan herkese sonsuz teşekkürler…

Konferans hakkında detayları cluteinstitute.com  bulabilirsiniz.

Makalemi okumak isterseniz burdan “2014 Conference Processdings” altından San Francisco konferansına bakarak erişebilirsiniz.

Exception Handling

1.      Exception Nedir?

Exception hata sayılabilecek ya da sayılmayacak yazılım veya donanım tarafından algılanan özel müdehale gerektiren programın çalışma ya da derlenme zamanında ortaya çıkabilcek herhangi beklenmedik durumdur.

Exceptionların Nedenleri

  • Donanımsal problemler,
  • Son kullanıcı kaynaklı,
  • Programlama mantığından gelen hatalar olabilir.

Sık Karşılaşılan Exceptionlar

  • Validasyonlarlara takılabilir,girilen veri geçersiz olabilir,
  • Network bağlantısı problemleri,
  • Veri tabanına bağlananamama sorunu,
  • Dosya path ini bulamama sorunu,
  • Tip dönüşüm hatası,
  • Dizi indexi dışında bir değer gelmesi,-1 gibi

2.      Exception Handling Nedir?

Hata algılandıktan sonraki özel müdehale sürecine exception handling,bu kod bloğuna da exception handler denir.Uygulamanın derleme veya çalışması sırasında ortaya çıkan herhangi bir sorun programla dili tarafından algılanır ve senaryoya göre önlemler alınır.Son kullanıcı bazlı problemler için ekrana uyarı verip hatayı düzeltmesini istemek örnek  verilebilir.

3.      Exception Handling Faydaları

  • Hata olduğu durumlarda hatayı giderdikten sonra program çalışmaya devam edebilir,
  • Hata olmadığı zamanlarda da performans kaybı olmaz,
  • Son kullanıcı kaynaklı bir hata ise kullanıcının hatayı gidermesine imkan tanır,
  • Exception Handling yazılımcının farklı durumlar üzerine düşünmesini sağlar.
Exception Handling Olmayan Dil Exception Handling Olan Dil:
Hata   meydana geldiğinde işletim sistemine gider mesajı gösterir ve programı   sonlandırır. Program   hatayı yakalar ve düzeltme şansı doğar bundan dolayı program sonlanması   yerine devam edebilir.

 

 

4.      Exception Handling Kontrol Akışı

Aşağıdaki akıştan da görebileceğimiz gibi kod akışı devam ederken bir hata olduğunda hata exception handlera iletilir.Handling senaryosana göre bir tepkide bulunur ve hata giderildiğinde kod akışına devam eder.

 se

5.      Exception Handling  Terminolojisi

Try

Try bloğu kaynak kodların normal şekildeki işleyişini içerir.Hata olmaz ise kod try bloğu içinde devam eder catch bloğuna girmeden sonlanır.

Catch

Hata olduğunda gireceği bloktur.Hata olduğu durumlarda ne yapılması isteniyorsa bu bloğa eklenir.Farklı hata tipleri için farklı tepki vermesi istenirse birden fazla catch bloğu eklenebilir.Catch blokları sırayla okunur, hangisinin bloğuna ilk girerse onun hatasını fırlatır.Her bir catch bloğuna tek parametre verilebilir ve parametreler tekil(unique) olmalıdır.

Finally

Kod akarken try veya catch bloklarından birinin içine girer,bunlardan bririne girdikten sonra kısıt olmaksızın finally kod bloğunu işler.

Throw

Throw un kelime karşılığı fırlatmadır.Hata meydana geldiğinde ne göstereceği ya da ne göndereceğine karar verir.Kütüphanelerdeki hazır throw ları kullanabileceğimiz gibi hata durumunda kendi özel throw umuzu da fırlatmasını isteyebiliriz.

6.      Farklı Dillerde Exception Handling

C++’da Exception Handling:

C++ diline 1990 yılında eklenmiştir.Temellerini  CLU,Ada ve ML den almaktadır. Bütün hatalar Exception sınıfından türer ve hatalı bir durum oluştuğunda program bu sınıfın bir nesnesini fırlatır.

Formatı aşağıdaki gibidir:

            try {

            — code that is expected to raise an exception

            }

             catch (formal parameter) {

            — handler code

            }…catch (formal parameter) { }

Formal parametreler hata bilgisini handlera iletmek için kullanılır.

Bir programda tanımlı olan hatalar fırlatılabilir,tanımsız olan bir hata görüldüğünde default exception olan unexcepted metodu çağırılır,bu da programı normal bir şekilde sonlandırır.

C++ Exception Hiyerarşisi

c++

Exception

description

bad_alloc thrown by new on allocation failure
bad_cast thrown by dynamic_cast when fails with a referenced   type
bad_exception thrown when an exception type doesn’t match any   catch
bad_typeid thrown by typeid
ios_base::failure thrown by functions in the iostream library

Java’da Exception Handling:

Temellerini OOP mimarisinden almıştır.Bütün hatalar Throwable sınıflarından türeyen sınıfların nesneleridir.

Java kütüphanesi Throwable için iki alt sınıf içerir:

java

  • Error

Yığın(heap) doluluğu gibi durumlarda Java yorumlayıcı tarafından fırlatılır

Kullanıcı programları tarafından handle edilemez.

  • Exception

Kullanıcı tarafından tanımlanan hatalar genelde bu alt sınıfa aittir.

İki tanımlı alt sınıfı vardır:IOExceptions ve RunTimeException.Örnek hatalar; ArrayIndexOutOfBoundsException and NullPointerException.

Try’ın syntaxi C++ daki gibidir.Hatalar c++ daki gibi throw ile fırlatılıyor.Çoğunlukla throw nesneyi oluşturmak new operatorü içerir.

throw new MyException();

Hata ve handlerın bağlantısı c++’dan daha kolaydır.

Hata geldiğinde handler yoksa program sonlandırılır.

Javadaki throws c++ daki throw dan oldukça farklıdır.Javadaki throws programcıya daha fazla ayrıntı verir.Error sınıfından ve RunTimeException türündeki ve onlardan türeyen bütün hatalara unchechked exception geriye kalanlara ise checked exception denir.Checked exception olanlar throws da geçiyordur ya da bir metod içinde handle ediliyordur.

public class ExcepTest{

   public static void main(String args[]){

      int a[] = new int[2];

      try{

         System.out.println(“Access element three :” + a[3]);

      }catch(ArrayIndexOutOfBoundsException e){

         System.out.println(“Exception thrown  :” + e);

      }

    finally{

         a[0] = 6;

         System.out.println(“First element value: ” +a[0]);

         System.out.println(“The finally statement is executed”);

      }   }  }

Output:

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3

First element value: 6

The finally statement is executed

Diller Arası Exception farklılıkları

Ortaya çıkan hatalar her dilde aynı etkiyi yaratmaz.

  • 0 a bölünme hatası C# dilinde DivisionByZero hatasını tetikler ama php ve javacsriptte kod akışını durdurmaz.
  • Javascriptte tanımlı olmayan bir fonksiyonu çağırmak exceptiona sebep olur ama php de aynı hata fatal error’a sebep olur kod akışı durur.

7.      Referanslar

  1. http://www.tutorialspoint.com/java/java_exceptions.htm
  2. http://www.cplusplus.com/doc/tutorial/exceptions/
  3. http://people.cs.aau.dk/~normark/oop-csharp/html/notes/exceptions-note-exception-hier-cs.html
  4. Exception Handling in C++,CS-2303 System Programming Concepts
  5. Concepts of Programming Languages,Robert W.Sebesta.Exception Handling Event Handling,Chapter 14
  6. Exception Handling, http://guvensahin.com/