Arşiv

Archive for the ‘BİLGİSAYAR MÜHENDİSLİĞİ’ Category

MÜŞTERİLERİNİZE KULAK VERİN !

Ocak 4, 2008 1 yorum

sccc.jpgÇoğu zaman bir yazılım projesini veya bir uygulamayı hata geçirmeden evvel aklımızda temel bir şablon olur. Bunu kağıda yada dijital bir ortama aktarınca hatlar belirginleşir. Bu sırada aklımıza yeni fikirler gelir ve bunu da şablonumuza ekleyip resmin son şekline iyice yaklaşırız. Bu yeni fikirlerin çoğu kullandığımız benzer ürünlerden esinlenmeler yada kopyalamalardır. (Düşünün: bir audio player yazacak olsanız uygulamanıza ne gibi özellikler eklerdiniz ? Ses ayarları, graphic equalizer, farklı dosya formatlarını destekleme, müzik kütüphanesi, internetten içerik getirme ,belki audio ripping, harici depolama birimleri için destek ve senkronizasyon vs vs. Muhtemelen çoğunuzun aklından bunlar geçti.) Bu süreci tamamlayınca artık development ‘a hazır hissederiz kendimizi ve uygulamamızı exception almadan çalıştırınca “bizden mutlusu olmaz 🙂” Güya çoğu ihtiyaca cevap verdik , hemen herşeyi hallettik. Kodlayan mumnun kullanan memnun. Acaba atladığımız bir ihtiyaç, aklımıza getirmediğimiz bir özellik olamaz mı?

Olur, olurmuş. Bunu Aqua Data Studio ‘nun e-posta grubuna gönderilen “New Feature” taleplerini okudukça daha belirgin bir şekilde görüyorum. Bakın bugün nasıl bir talep geldi:


I am a big fan of ADS. At this point there is only one feature lacking to make it perfect, for my needs at least.
As I type this, my licensed copy of ADS 6.5.0 has 25 servers registered into it: some Oracle, some MS SqlServer, and a some MySql.
My problem is that over time I lose the passwords to some of these databases. I can still connect through ADS because I entered the password correctly months or even years ago, but I can’t make a new connection because I have no idea what I typed back then into the password field.
What I would like to have is a field in each server registration where I could type some comments to remind me about salient features of each server. Putting the password into the comments is one example.
I can do that when I define a database connection into the IBM Webpshere 6.1 application server using that product’s administrative console– that’s the reason I thought to request this ability to add a comment for each registered server within ADS.


Açıkcası ben de hem Java hem de ASP.NET ile 2 adet database administration tool yazmıştım. (Basit ama ihtiyaçlarmı gören ve bana çok şey öğreten uygulamalardı) Amaç hem birşeyler öğrenmek hem de diğer araçlarla yaşadığım karmaşayı aşmaktı. Önce JDBC ile Java tabanlı minik bir uygulama geliştirdim. Sonra AsP.NET öğrenince ADO.NET+AJAX+ASP.NET kombinasyonuyla SQL SERVER 2005 üzerindeki tabloları ve bunlara ait bilgileri listeleyen web tabanlı bir uygulama yazmıştım. Son yazdığım uygulama AJAX sayesinde bağlandığım remote database server ‘ım üzerinde işlem yaparken kendimi daha az bekliyor gibi hissettirmiş ve beni SQL Server Management Stuido ‘nun kilitlenmelerinden bir dönem korumuştu.Bu tip uygulamaların en temel aşaması veritabanı ile bağlantı kurmaktır. Kullanıcıdan gerekli bilgileri (IP,Port,Username,Password) alıp, bağlantıyı kurduktan sonra, ilgili API ‘lerin getirdiği kolaylılara bir de bağlandığınız ürünün kendine has yeteneklerini ekleyip işinizi görebilirsiniz. Ama her iki uygulamamda da hiçbir şekilde yukarıdaki gibi bir PASSWORD HINT tarzı açıklama alanına yervermemiştim. (Açıkcası akıl edememiştim.)Bazılarınız için bu abartılası birşey değil. (Hatta güvenlik açığı diye düşünenler olabilir. Sonuçta sizin şifreyi hatırlamanızı kolaylaştıran birşeyler – eğer mesajı iyi gizlememişseniz- başkalarının da şifreyi daha kolay tahmin etmesine neden olabilir.) Fakat geçen gün aynı durumu enteresan yollarla çözmeye çalışmış birisi olarak ben faydalı bir istek olarak gördüm bu eklentiyi. Geçtiğimiz ay BETA database ‘inin şifresi lazım olmuştu ve DBA arkadaşlar diğer sunuculardakinden farklı bir şifre seçmişler. (Sağolsunlar) İlgili connection bilgileri ekibimizdeki bir arkadaşın kullandığı SQL Developer uygulamasında kayıtlıydı. Tabii password bilgisi asterix (*) karekterlerinin arkasına gizlenmişti. Bahsi geçen arkadaş da şifreyi hatırlayamayınca tahmin edin ben ne yaptım ?Asterix Revealer dediğimiz uygulamalar ile SQL Developer ‘dan şifreyi almaya çalıştım ama asıl işimi görecek uygulamaları bulunduğum şirketin güvenlik politikası gereği indirip kullanamadım. (Allahtan başka ekipteki arkadaşlardan şifreyi hatırlayanlar çıktı…)

Toparlamak gerekirse geliştirdiğiniz uygulamaları kolayca test edilebilir bir şekilde insanlara sunup 3., 4., 5. hatta N. şahısların görüşlerini mutlaka alın. Bu yazıdaki çok basit bir örnek. Ama emin olun bundan daha güzel istekler de geliyor ki bu sayede ADS bugün çok güçlü bür uygulama haline geldi. Bir de bu örneğin bir istisnası var. Uygulamayı kullananların çoğu ya uygulama geliştirici yada veritabanı yöneticisi yani işten anlayan insanlar. Bazen de müşterilerinizden uygulamanızın arka planda Kurtlar Vadisi ‘nin polifonik melodisini çalması yönünde talepler gelebilir. Bu gibi talepleri ve bu gibi şahıslardan gelen DİĞER TALEPLERİ sağlığınız açısından ciddiye almamakta fayda var. Şimdilik benden bu kadar… En kısa sürede daha farklı ve daha güzel yazılarla karşınızda olacağım…Sağlıcakla kalın…

ORACLE SEMİNERİNE DAVETLİSİNİZ

Kasım 13, 2007 Yorum bırakın

CETURK olarak seminer organizasyonlarımıza Oracle semineri ile devam ediyoruz. Uzun zamandan beri gerçekleştirmeyi hayal ettiğim bu seminer için kısmet bu haftasonunaymış ve nihayet Hasan Tonguç Yılmaz CETURK üyeleriyle buluşuyor. Seminer için yer olarak Yıldız Teknik Üniversite ‘sini seçtik. ( Benim için de okuluma gidecek olmak ayrı bir keyif.)

Seminerin basitten zora doğru giden bir içeriği var. Temel olarak Oracle DBMS ile başlayıp ,daha sonra performans dar boğazlarının aşılması için neler yapılması gerektiği üzerinde durulacak. Son noktada da Event 10046 bizlere ne gibi ipuçları verir bunlardan bahsedilecek.

Her zamanki gibi çekilişimiz ve kitap hediyemiz de var. Bir aksilik olmazsa ben de orada olacağım. Seminere katılmak isteyenler buradan kayıt yaptırabilirler. Seminer detayları aşağıdaki gibi. Seminerde görüşmek üzere hoşçakalın…

ETKİNLİK DETAYLARI
Etkinlik Konusu : Oracle Trace Utility’e Giriş Ve Temel Performans Denklemini Anlamak
Etkinlik Türü : Seminer
Hedef Kitle : Oracle DBMS üzerinde uygulama geliştirenler ve uygulamalarindan daha fazla performans almak isteyeneler.
Kontenjan : 100
Etkinlik Tarihi – Saati : 17.11.2007 — 10:30-13:00
Süre : 1 Gün
Eğitimi Veren : H.Tonguç Yılmaz
Etkinlik Yeri : Yıldız Teknik Üniversitesi Merkez Kampüsü Sergi Salonu Adres için TIKLAYINIZ
ETKINLIK IÇERİĞİ
1.Oracle veritabanına giriş
http://tonguc.yilmaz.googlepages.com/Oracle-introduction-for-newbies.htmhttp://tonguc.yilmaz.googlepages.com/Oracle-Quality-and-Performance-for-F.htm
2. Başarım temel kavramları
3. Bekleme olaylarına giriş


http://tonguc.wordpress.com/2007/09/12/oracle-waits-defined-by-kyle-hailey/
4. Olay 10046 ve çözümlemesi

Bilgi için tıklayınız
5. Kapanış
KONUŞMACI
Okullar Fethiye Lisesi, ITU Bilgisayar Müh., Bilgi MBA
İş Tecrübesi 1996-.. Finans ve Telco şirketleri, BT bölümleri
Uzmanlık Oracle ile sürüm 7.3 tanıştı,9+ sene,
Oracle ACE ve OCP,OracleTURK grubu yönetici(1999),Turkcell Akademi Oracle veritabanı ve ürünleri iç eğitmeni
Uyarı “Guru” veya bir başka pazarlamacı değil!
Daha fazlası http://tonguc.wordpress.com/about/
  H.Tonguç Yılmaz tonguc.yilmaz at gmail.comhttp://tonguc.yilmaz.googlepages.com
ETKİNLİK HEDİYEMİZ
Seminere katılan 3 üyemize çekilişle aşağıdaki kitaplardan hediye edilecektir.:

UML SEMİNERİ

Kasım 6, 2007 1 yorum

CETURK olarak bilişim alanındaki seminer organizasyonlarımız sürüyor.  Sibnet ile birlikte gerçekleştirdiğimiz Java ile Kurumsal Mimariler seminerinin ardından sırada UML semineri var. Semineri Netron Bilişim Akademisi ‘nden Aykut Taşdelen verecek ve Microsoft ‘un bu konudaki çözümlerine değinecek. Microsoft Türkiye Marmamara Salonu ‘nda gerçekleştireceğimiz seminerimize hepiniz davetlisiniz. Tek yapmanız gereken buradan kayıt yaptırmak.

Ayrıca seminer organizasyonlarımıza Oracle ,Silverlight ve Microsoft ‘un Expression ürün ailesi ile devam edeceğimizi de buradan sizlerle paylaşmış olayım.

Seminer ile ilgili detaylar aşağıda. Seminerde görüşmek üzere….

ETKİNLİK DETAYLARI
Etkinlik Konusu : UML (Unified Modelling Language) Semineri
Etkinlik Türü : Seminer
Hedef Kitle : Uml ile ilgilenenler
Kontenjan : 80
Etkinlik Tarihi – Saati : 10.11.2007 — 14.00 – 18.00
Süre : 1 Gün
Eğitimi Veren : Aykut TAŞDELEN
Etkinlik Yeri : Microsoft Türkiye İletişim Bilgileri
ETKINLIK IÇERİĞİ
Bu seminerde UML (Unified Modelling Language) yanı sıra Microsoft’un çok da fazla
bilinmeyen bir ürünü olan MS Visio ile örneklemeler yapılacaktır. Seminerde ele
alınacak konu başlıklarından bazıları şunlardır :
UML (Unified Modelling Language)
UML Kullanımının Getirileri
Nesne Yönelimli Tasarım
Temel Kavramlar
Use Case Diyagramları
Use Case Tanımları
Use Case’lerin Yeniden Kullanımı
Aktörlerin Türetilmesi
Arayüzler (Interface’ler)
Use Case’lerin Sınıf Tasarımında Kullanımı
Sınıf Diyagramları
Nesneler Arasındaki İlişkiler
Durum (State) Diyagramları
Aktivite (Activity) Diyagramları
Sequence Diyagramları
Deployment Diyagramları
Microsoft Visio
ETKİNLİK SPONSORUMUZ
ETKİNLİK HEDİYEMİZ
Seminere katılan 3 üyemize çekilişle aşağıdaki kitaplardan hediye edilecektir.:

Asp.Net AJAX


UNIT TESTING & TDD (Test Driven Development)

Ağustos 29, 2007 1 yorum

Geçtiğimiz haftadan bu yana üzerinde çalıştığımız projenin test aşamasını iyileştirebilmek (yada gerçekleştirebilmek) adınatest.jpg Unit Testing ve Test Driven Development ile ilgili araştırmalar yapıyorum. Bu süreçte bir yandan birşeyler öğrenme bir yandan da bu öğrendiklerimi hali hazırda yürüttüğümüz projeye uygulama şansına sahibim. Bu nedenlerden ötürü geçtiğimiz haftayı Unit Testing ve Test Driven Development üzerinde araştırma yaparak geçirdim. Bu noktada bana düşen en önemli görev developer arkadaşları Unit Test yazmanın bir lüks değil bir gereklilik olduğuna ikna etmek. O nedenle bu gerekliliğe kendimi iyice inandırmaya çalıştım ve yüzlerce linki , yazıyı taradım. Bu süreçte öğrendiklerimi belirli başlıklar altında sizlere paylaşmak güzel olacaktır diye düşündüm.

(NOT: Test-Driven Development = Test Güdümlü Yazılım Geliştirme ,Unit Test= Birim Testi olarak kullanılacaktır.)

Test Güdümlü Yazılım Geliştirme Nedir?

Test Güdümlü Yazılım Geliştirme: önce gerekli test koşullarını yazıp ardında da bu testleri geçecek ve hedeflenen işi yapacak kodu yazmayı öngören bir yazılım geliştirme modelidir.

Bu yazılım geliştirme modeli dahilinde aşağıdaki adımlar izlenir:

• Öncelikle yazılımın ilgili birimi için basitçe bir test yazılır.
• Bir sonraki adımda teste tabi tutulacak birim yazılır.
• Eğer o birim, testi geçerse test geliştirilir ve birim tekrardan test edilir.
• Eğer birim testi geçemezse gerekli değişiklik yapılır ve tekrar test edilir.
• Birim son halini alana kadar her değişiklikte test edilir.
• Birim beklenen işi gerçekleştiriyorsa ve tüm testleri geçiyorsa süreç tamamlanır.

Test Güdümlü Yazılım Geliştirme , geliştirme sürecimizi hem hızlandırır hem de iyileştirir çünkü yazılan kodların bir hata durumunda tekrardan yazılması veya hatanın bulunmaya çalışılması ciddi bir maliyet oluşturur.
Test Güdümlü Yazılım Geliştirme yöntemi bir Sürüm Yönetim Sistemiyle birlikte kullanılırsa çok daha verimli olacaktır çünkü bu yaklaşım hata durumunda tüm testleri geçen sürüme geri dönülmesi kolaylığını getirir ve de kodun içerisinden hata ayıklamaktan daha efektiftir.

Birim Testi Nedir?

Birim Testi yazılım projemizdeki her bir birimin (Object-Oriented Programming çerçevesinde en küçük birim sınıftır) doğru bir şekilde çalışıp çalışmadığını anlamak amacıyla oluşturduğumuz testtir.

Birim testi hem Test Güdümlü Yazılım Geliştirme Sürecini kolaylaştırır hem de uygulamamızın her bir biriminin sorunsuzca çalıştığından emin olmamızı sağlar.

Neden Önce Birim Testi Yazılmalıdır ? (Test-First Approach)

Yazılım geliştiriciler için Birim Testi yazmanın yada Test Güdümlü Yazılım Geliştirme Süreci ‘ne adapte olmanın en zor noktası henüz yazılmamış bir birim için test yazmaktır. Bu noktada alışkanlıkların değiştirilmesi biraz zaman alabilir.

Testi , işi yapacak birimden önce yazmamızın nedeni: testi yazabilmek için o teste tabi tutulacak birimin ne iş yapacağını iyice anlamamızı gerektirmesidir. Eğer ilgili birimin verilen giriş bilgisine karşılık çıkışta ne üreteceğini iyice anlamışsak ancak o koşulda testini yazabiliriz. Testi yazdıktan sonra da o testi geçecek kodu yazmak daha kolay olacaktır çünkü testin yazımı sırasında o birimin yapacağı iş kafanızda netleşmiş olur.

Birim testini önce yazmak konusunda yapılan en büyük hata; ilk seferde doğru testi ve bu teste uygun birimi yazmayı hedeflemektir. İlk başta hem test hem de teste tabi tutulacak birimde hatalar ve eksiklikler olabilir fakat test ve düzeltme süreci yukarıda bahsedildiği şekilde tekrarlandıkça bu süreç sonunda ortaya daha kaliteli ve daha güvenilir bir ürün ortaya çıkacaktır.

Birim Testini Projemdeki Hangi Bileşenler İçin Yazmalıyım?

Bu noktada karar uygulama geliştiriciye aittir. Fakat Nesne Yönelimli Programlamada genel yaklaşım bir sınıf içerisindeki tüm public metodlar için birim testi yazmak yönündedir.

Öte yandan değişkenlere erişimi düzenlemek amaçıyla kullandığımız (Accessors- Mutators) metodlar ve bir bakışta işlevi anlaşılıp hata olduğunda kolaylıkla bulunabilecek metodlar için birim testi yazılmayabilir.

Tüm metodlar için birim testi yazmamanın tek dezavantajı projemizin Code Coverage (Code Coverage:Bir projedeki test edilen kodların, tüm kodlara oranı ) yüzdesini düşürmesidir.

Birim Testi ile İşlevsellik Testi (Functional Test) Arasındaki Temel Fark Nedir?

Birim Testi uygulama geliştiricinin kendi perspektifinden, yazdığı kodun doğru çalışıp çalışmadığından emin olmak amacıyla yapılırken , İşlevsellik Testi kullanıcının perspektifinden bakılarak yazılan kodun kullanıcı ihtiyaçlarını karşılayıp karşılamadığını tespit etmek amcıyla yapılır.

Birim Testi kod yazımından önce yapılırken , İşlevsellik Testi ürün müşteriye verilmeden evvel yapılır.

Birim Testinin Yazılım Geliştirme Sürecine Katkıları Nelerdir?

• Refactoring işlemlerini kolaylaştırır: Tüm birim testlerden başarıyla geçmiş bir kod bloğu üzerinde refactoring yaptığınızda kodunuzun bozulup bozulmadığını birim testini tekrar çalıştırarak rahatlıkla anlayabilirsiniz.
• Sonradan ortaya çıkabilecek hataların oluşturacağı maliyeti en aza indirir.
• Yazılımış kodları inceleme (Code Inspection) işleminden daha kolay ve daha verimlidir.
• Uzun vadede testsiz kod yazmaktan daha hızlı kod yazmayı sağlar çünkü aynı kodların hata durumunda tekrardan düzenlenmesi ihtiyacını en aza indirger.
• Birim testi yazmak, bizleri yazacağımız kodun işlevini en ufak detayıyla anlayama iter çünkü işlevini tam olarak anlayamadığımız bir birimin testini yazma şansımız yoktur. Bu da yazılan birimlerin daha doğru olmasını sağlar.
• Yazılan kodlar için bir çeşit dökümantasyon sağlar çünkü yazılan test koşulları incelenerek o kod bloğunun işlevi rahatlıkla anlaşılabilir.

Yukarıda bahsi geçen konularla ilgili öğrenme sürecim hala sürüyor o nedenle blogumda bu konuyla ilgili paylaşımlara devam edeceğim. Kısa bir süre içinde bu konuyla ilgili faydalanabileceğiniz linkleri kategorize ederek sizlerle paylaşmayı planlıyorum. Şimdilik benden bu kadar. Bir sonraki yazıma kadar sağlıcakla kalın…

NOT: Bu gece 3 gün sürecek ufak bir İzmir tatiline çakacağım. Umarım orada da blogumu güncellemeye fırsatım olur?

KARİYERİNİZE TURKCELL ‘DE YÖN VERMEYE NE DERSİNİZ?

Ağustos 19, 2007 1 yorum

turkcell_oracle1.jpgDaha önce blogumda IBM ve Microsoft ‘taki yaz okulu ve staj çalışmalarından bahsetmiş ve bunların önemini vurgulamıştım. Bu sırada çok önemli bir çalışmayı atladığımı fark ettim ve geç de olsa yolun başındaki arkadaşlara yol göstermesi açısından bu konuyu bloguma taşımaya karar verdim.
Turkcell ‘de son senelerde yoğun bir emek harcanarak R&D Software Development ekibine stajyer arkadaşlar alınıp , eğitilerek kariyerlerinde önemli bir adım atmaları sağlanıyor.

Eğer bu süreci yeterince iyi bir şekilde değerlendirirseniz kariyerinize Turkcell ‘de devam etme şansınız da var. Şöyleki staj döneminden sonra part-time çalışma şansına ardından da okul bitiminde full-time çalışma şansına sahip olabilirsiniz.

Her yılın Temmuz ayında başlayan ve Eylül ayının sonunda biten 3 aylık bir süreci kapsıyor bu staj dönemi. Burada 3 ay staj yapmak zorunlu. Yani yoğun ve ciddi bir staj dönemine hazırlıklı olun. Elbette bu dönem sonunda da kolay kolay hiçbir yerde elde edemeyeceğiniz bir bilgi birikimine sahip oluyorsunuz.

Staj döneminiz Turkcell ‘in kullandığı teknolojilere bağlı olarak Oracle ve Java ağırlı bir çalışma dönemini kapsıyor. Bu konularda üç aylık bir dönemi kapsayan teori ve uygulamayı birarada bulabileceğiniz bir staj dönemi geçiriyorsunuz. Burada Turkcell ve Oracle kelimelerini yanyana görmek sizlere birisini çağrıştırdı mı?

Evet bildiniz Hasan Tonguç YILMAZ. Eğer bu staj sürecine dahil olursanız Hasan Tonguç YILMAZ ile birlikte çalışma ve kendisinin deneyimlerinden faydalanma şansına da sahip olacaksınız. Kendisini tanıyanlar ve blogunu takip edenler Tonguç Abi ‘nin engin Oracle bilgisini sadece kendi işi için kullanmayıp etrafındaki kişilere çeşitli yollarla (forumlar,e-mail grupları , blog yazıları vb. ) paylaştığını bilirler. (O nedenle benim gözümde pek çok Oracle uzmanından daha değerlidir.)

Burada en önemli nokta paylaşımın ve iletişimin staj döneminden sonra da devam etmesi. Açıkcası benim öğrenciyken en çok imrendiğim ve başımı taşlara vurmama sebep olan nokta bu olmuştu. (Tonuguç Abi ‘nin Oracle Cost-Based Optimization çalıştayında stajyerlerine ne kadar çok değer verdiğini ve ne kadar çok şey kattığını görünce kıskanmadım desem yalan olur.)

Yazının başında da belirttiğim gibi şu anda staj süreci sürüyor. Bir sonraki alımlar seneye yapılacak ama şimdiden hazırlık yapmakta fayda var. Bu blog yazısına özel bir kaç da tüyo vereyim. Eğer Turkcell ‘deki bu staj sürecine kabul edilmek istiyorsanız önünüzdeki bu eğitim öğretim yılını çok iyi değerlendirin ve SQL, PL/SQL, APEX, JAVA konularına ağrılık verin. Bu noktada yapabileceğiniz en faydalı şey ara projenizi veya diğer derslerden aldığınız projeleri bu teknolojileri kullanarak gerçekleştirmek olacaktır.

Bu teknolojilerle ilgili olarak Oracle ‘ın sitesinde fazlasıyla kaynak mevcut. Ama ben yine de APEX (Application Express) ile yeni tanışacak olanların bu yazıya ve Oracle ile yeni tanışacak olanların da bu yazıya bakmalarını önereceğim. Turkcell ‘deki bu staj süreci ile ilgili olarak Hasan Tonguç Yılmaz ‘ın blogunda yazdığı bu yazıya bakmak da faydalı olacaktır. Yine aynı şekilde staj süreci hakkında bilgi alabileceğiniz diğer bir kaynak da şu anda hala stajyer olarak Turkcell ‘de bulunan Bilal Hatipoğlu ‘nun Blogu. Bilal gerçekten de çok yalın ve anlaşılır bir dille bu süreci ve öğrendiklerini bloguna taşımış. (Bu güzel paylaşımından ötürü Bilal ‘i tebrik ediyorum.)

Umarım bu blog yazısı öğrenci arkadaşlar için motive edici ve yol gösterici olur. Bu yıl içerisinde gereken çabayı gösterip yazıda bahsi geçen teknolojilere odaklanarak seneye siz de Turkcell ‘de stajyer olmaya ve kariyerinize yön vermeye ne dersiniz?

İŞLEMİNİZ BAŞARIYLA TAMAMLANMIŞTIR ?

Temmuz 31, 2007 2 yorum

Bir uygulamadan duyacağınız en güzel cümledir “İşleminiz Başarıyla Tamamlanmıştır” cümlesi fakat bu güzel cümle bazen sizi çok kötü biçimde aldatıyor olabilir.Geçen hafta başıma bu tip bir olay geldi ve ben de sizlerle paylaşmak istedim.

Geliştirmekle sorumlu olduğum modülün düzgün bir şekilde çalışıp çalışmadığını anlamak için öncelikle farklı tablolardan bazı verileri alıp bir look-up table oluşturmam gerekiyordu. (Select sorgusundan istediğim kritelere uygun verileri çekip look-up tabloma ekleyecektim.) Bunun için de verileri alacağım tabloları uygun verilerle doldurmam gerekti. Ben de tablo doldurma işini SQL cümleleriyle değil de o tablolara kayıt ekleyen ekranları kullanarak yapmaya karar verdim. Hem böylelikle arkadaşlarımın yaptığı ekranları da test etmiş olacaktım. (Ayrıca tablolar arasında PK-FK ilişkisi olduğundan veritabanı bütünlüğünün bozulmaması için verileri bu şekilde girmek daha sağlıklı olacaktır diye düşündüm)

Öğle aramı bu iş için ayırıp 58 tane kayıt girdim. (Yani en azından ben öyle sanıyordum.) Sonra bir güzel ADS ‘yi (Aqua Data Studio) açıp master tabloya select count … diyerekten sorgumu yolladım ve gördüm ki ben 58 tane kayıt girmek için öğle aramı heba etmeme rağmen tabloda sadece 22 tane kayıt vardı. (Bir an yorgunluktan kaydet butonuna basmadığımdan bile şüphelendim) Sonra 10 tane daha kayıt girdim ve gördüm ki kayıt sayısı 27 olmuş. O zaman anladım ki bir yerlerde “insert” yerine “update” yapılıyordu. Olmayan bir kaydın neyini update ediyordu peki? Cevap basit kaydı aradığımız kriter yanlıştı ve ne ilginçtir ki tabloda o yanlış kritere uyan kayıtlar vardı.

Ufak bir debug operasyonundan sonra hatayı bulup düzelttik. (Tesadüfen bulduk ama olsun) Yine ne ilginçtir ki bu ekranın testi de yapılmıştı. Yani Test-Case ‘leri “genelde “Kullanıcı saçma sapan birşeyler yapınca ne olur” şeklinde olduğundan bu hata gözden kaçmıştı.

Sanırım bu yanılgıya çoğu uygulama geliştirici (ben de dahil olmak üzere) düşüyor. Yani yeterince Exception-handling yaptıysak ve kendimize de birazcık güveniyorsak “İşleminiz Başarıyla Tamamlanmıştır” mesajına hemen kanı veriyoruz. Bu yapımızdan ötürü de bu tip SİNSİ hatalar gözümüzden kaçıveriyor.

Okuldaki projeler sırasında da bu tip hatalar başıma geldiğinden veritabanına kayıt atarken mutlaka attığım kayıtları kontrol ederim. Hem ekran ile veritabanındaki tablolar arasındaki boyut kısıtlamalarının uyumunu kontrol etmek hem de beklediğim kayıtların gerçekten BAŞARIYLA kaydedildiğini görmek için. Aksi halde uygulamayı geliştirdiğiniz sırada yapmış oladuğunuz mantık hatalarını kolay kolay görmeniz mümkün olmuyor. Hem bu tip hatalarda bir hata mesajı yada anormallik olmadığından Production ortamında da o modülü kullanan son kullanıcının bir şikayeti olmuyor. (Taaki bir gün kaydettiği verileri görmesi gerekinceye kadar)

Öğle arama mal olan bu olaydan en azından testler sırasında daha dikkatli olunması gerektiğini öğrenmiş oldum. (Normal şartlarda testlerin , görevi yazılım test etmek olan kişilerce yapılması gerekir??) Geliştirdiğiniz uygulamaları test ederken “Umarım bir hata mesajı almam da bir an evvel yemeğe giderim” mantığından uzak durmanızı tavsiye ediyorum aksi halde ilerliyen zamanlarda uzun süre aç kalabilirsiniz. Şimdilik benden bu kadar. Sağlıcakla kalın…

[SOA]CILAR ve [ANTI-SOA]CILAR

Temmuz 25, 2007 3 yorum

soa.jpg

Geçtiğimiz hafta Cumartesi günü IBM ve Ceturk iş birliği ile keyifli bir SOA semineri düzenlemiştik. Seminere ait sunumu indirmek için Arden AGOPYAN ‘ın blogunu ziyaret edebilirsiniz. Bu yazıyı da sadece seminer sunumunu paylaşmak için yazacaktım ama konuyu bu kadar yüzeysel bırakmaya içim el vermedi.

SOA ‘ya karşı olan ilgim ben daha öğrenciyken okulumzda gerçekleştirilen Ulusal Yazılım Mimarileri Konferansı ‘a katıldığım bir sunumda başlamıştı. (Daha öğrenciyken dediğime bakmayın çok uzun zaman olmadı öğrenciliğimi sonlandıralı.) Konuşmacı olarak gelen kişi (Prof Dr. M. Naci Akkök) her ne kadar Oracle çalışanı (Chief Architect) olsa da seminer boyunca sık sık IBM ‘den ve SOA ile IBM arasındaki bağdan bahsetti durdu. Bir Oracle çalışanının bu kadar çok IBM ‘den bahsetmesi garibime gitmişti açıkcası. (Bu arada seminerin konusu: “A Practical and Methodical Interpretation of the Service-Oriented Architecture” idi)

Zamanla işin içine girdikçe IBM ‘in SOA alanındaki çalışmalarına ben de şahit oldum. Oracle adına bizlere SOA anlatmaya gelen kişi Oracle ‘ın bu alandaki ürünlerden ve SOA yaklaşımından da bahsetmişti ve o zamanlar anlattığı konuları anlamak bir hayli güçtü benim için. (Sadece benim için değil şu anki patronum Semih Çetin için de anlatılanlarda gariplikler ve anlaşılması güç noktalar vardı ki kendisi de sık sık sunumu bölüp hararetli sorular sormuştu.) Sunumda binlerce parçadan oluşan bir sisteme ait bir resim gösterildi ve SOA budur dendi. (Resimdeki parçaları seminerden 2 saat sonra yavaş yavaş çözmeye başlamıştım.) Güya iş akışını ve süreçleri basitleştiren SOA , o resmi gördükten sonra bana çok karmaşık birşeymiş gibi gelmişti.

Şimdilerde ise dahil olduğum projede Servis Yönelimli Mimari ‘yi (Service Oriented Architecture) elimizden geldiğince uygulamaya çalışıyoruz ve böylesine büyük bir projede ciddi manada faydasını görüyoruz. Hatta bazen tembellik edip “Kesin bunun servisini birisi yazmıştır” diyerekten ilgili işlemi yapacak servisi bulma çabasına giriyoruz. (Aslında tembellikten değil sadece projedeki kod tekrarını önlemek için) Yada başka birisinin üzerinde çalıştığı modül ile ilgili işlem yapmamız gerekiyorsa kendisine ihtiyacımızı anlatıp bize bir servis yazmasını istiyoruz (Yani gidip yüzlerce sayfalık o modüle ait dokümanı oturup okumuyoruz) Kısacası biz SOA ‘yı seviyoruz ve kullanıyoruz.

Fakat bunlar benim kişisel görüşlerim. Yani bir yandan birileri SOA ‘ya hayranlık duyarken birileri de SOA Facts yazısındaki gibi işin dalgasını geçebiliyor. Sanırım her yeni teknoloji (Hatta SOA ‘nın yeni bir yaklaşım olup olmadığı konusunda da tartışmalar var ) bizlere kutuplaşmak için bahane oluyor. Kim o teknolojiyi adam gibi kullanmayı becerebiliyorsa onu yerlere göklere sığdıramıyor ve ondan bir “SILVER BULLET” gibi bahsediyor. Bu kadar çok fanatiklikten rahatsız olanlar da hemen karşıt bir cephe oluşturuyorlar. Anlayacağınız şu anda ciddi bir SOA ve ANTI-SOA kutuplaşması yaşanıyor.

Burada suçlu olan elbette teknoloji değil. Yani birileri onu efektif bir şekilde kullanamıyorsa yada kullanmaması gereken bir durumda kullanmaya kalkıyorsa ve başarısız oluyorsa burada suç tamamen o kişe aittir. Öte yandan her zaman yaptığımız gibi SOA ‘yı ölümsüzlüğün formülü olarak görmeyi de doğru bulmuyorum. Hele de Yazılım Mühendisliği gibi bir alanda birşeyleri bu kadar sıkı savunmak bana pek de akıllıca gelmiyor. (Tabi bu işten para kazanıyorsanız durum değişir ??) Yazılım Mühendisliği anlanında “işte en iyisi budur” denen kavramlar bir süre sonra herşeyin suçlusu olarak gösterilebiliyor. Bu kadar çok kavramın türemesini bazı kişiler Yazılım Mühendisliği ‘nin sürekli gelişiyor olması şeklinde yorumlarken bazıları da Yazılım Mühendisliği alanının yeterince olgunlaşmamış olması şeklinde yorumluyor.

Bir önceki paragrafta SOA ‘nın efektif bir şekilde kullanılamamasından bahsetmiştim. Burada sanırım gözden kaçan en önemli nokta her teknolojinin her iş modeline uygun olmadığı noktası.. Hatta seminerde Arden SOA mimarisine geçmek isteyen şirketlerin önce iş süreçlerini incelediklerini ve gerekli değişiklikleri yaptıktan sonra SOA altyapısını oturttuklarını belirtmişti. Bu alanda yatırım yapmanın ciddi bir maliyeti olduğundan , adam akıllı bir geri dönüş alabilmek için işi kuralına uygun yapmakta fayda var. Yine bizlerin şirket içinde biribirimizden servis istediğinden bahsetmiştim. Burada da en önemli nokta TAKIM ÇALIŞMASI. Eğer şirket içi iletişim zayıfsa oluşturulan servis havuzu efektif bir şekilde kullanılamaycaktır.

SOA ile ilgili görüşlerimi belirttikten sonra şimdi size soruyorum siz hangi cephedesiniz? SOA mı ANTI-SOA mı ?

Sağlıcakla kalın…

Konuyla ilgili linkler:

SOA Hakkında Herşey
What is SOA, really?
Service Architecture – SOA
SOA From a Corporate Perspective
IBM Developerworks – SOA

NOT: Seminerden sonra bana enteresan e-postalar gönderen arkadaşlar için ek açıklama:

*SOA bir uygulama değildir.
*IBM ‘in SOA adlı bir ürünü yoktur.
*Haliyle SOA ‘nin Crack ‘i de yoktur.
*SOA bir ürün değildir ve haliyle SOA.exe diye de birşey mevcut değildir.
*SOA web servisi demek değildir ,web servisi de SOA demek değildir.