Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

GENVEK (Genel Veri Erişim Katmanı)

ÖZET
GENVEK , genel veri erişim katmanının kısaltmasıdır . Projenin yapılış amacı programcının farklı veritabanı yönetim sistemlerine daha az kod yazarak genel bir erişimini sağlamaktır . GENVEK Visual Studio .NET platformunda , C Sharp programlama dili kullanılarak geliştirilmiş bir bileşen olup , veritabanlarına erişim ihtiyacı duyan .NET platformunda geliştirilecek projeler için kullanımı hedeflenmiştir . Veritabanı uygulamaları temel olarak kayıt arama , kayıt silme , kayıt güncelleme ve kayıt ekleme işlemlerine ihtiyaç duymaktadır . GENVEK veritabanındaki tabloların özelliklerini öğrenip otomatik sorgular oluşturarak veritabanı işlemlerini gerçekleştirebilmektedir . GENVEK kullanılan projelerde , uygulama ile veri erişim katmanı birbirinden ayrılarak çok katmanlı bir yapı oluşturulur . Bu katmanı kullanarak uygulama kodunun anlaşılırlığını artırabiliriz .

ABSTRACT
GENVEK is the abbreviation of the General Data Access Layer . The purpose of the project is to achive communication between programmers and database management systems by less coding . GENVEK is developed in Visual Studio .NET platform by using C Sharp programming language and aimed to use projects which needs database . Database applications are basicly need record searching , record deletion , record updating ana record insertion operations . GENVEK learns the attributes of the tables and creates queries automaticly . That is to say , number of the columns and rows are known by GENVEK and allows database operations without create any query . GENVEK includes these basic operations to make it easier for the programmer . The projects which is use GENVEK , the application and data access layers are distinct and this means n-tier structure . By using this layer we can do our code more understanding

1 Projenin Tanımı

Veritabanı uygulamalarında basit arama , kaydetme , güncelleme ve silme işlemleri çok sık yapılan işlemlerdir . Aynı kod satırları birbirlerini sürekli tekrar ederler , bu da kodun uzayıp karmaşıklaşmasına sebep olmaktadır . GENVEK veri erişim katmanı kullanılarak bu veritabanı işlemlerini daha kısa ve kolay bir şekilde gerçekleştirmek mümkündür . GENVEK sınıfının amacı farklı veritabanı yönetim sistemlerine aynı kod satırlarını kullanarak genel bir erişim sağlamak , defalarca aynı kodun tekrarlanmasından kurtulmaktır . Yani her veritabanı işlemi için farklı kodlar yazmaya gerek kalmaksızın işlemler gerçekleştirilebilir . Bu da program yazan kişiye büyük kolaylık sağlamaktadır . Örneğin SQL veritabanında arama yapmak için yazılan kod ile Access veritabanında arama yapmak için yazılan kod , fonksiyonlara verilen parametreler haricinde aynıdır .

GENVEK ile basit olarak veritabanına bağlanma , arama , kaydetme , güncelleme , silme , tablonun bütün kayıtlarını getirme , tablo isimlerini getirme işlemleri yapılabilir . GENVEK ‘in use-case diyagramı kullanıcısının yapabileceği işlemleri göstermektedir (Şekil 3.1) .

Şekil 3.1 : GENVEK use-case diyagramı

GENVEK bir bileşendir , yani başka uygulamaların kullanımına sunulmuş , değişkenleri ve fonksiyonları olan bir sınıftır diyebiliriz . Visual Studio.NET ‘te bileşen yaratmak oldukça kolaydır . Bir bileşen yaratmak için File – New – Project deyip önümüze çıkan pencereden Class Library’i seçmemiz yeterli olacaktır (Şekil 3.2) . Daha sonra yapılandırıcısı olan boş bir sınıf karşımıza çıkacaktır . Artık yapmamız gereken tek şey bu sınıfın içine kodlarımızı yazmaktır . Yazdığımız kodu derlediğimiz zaman “bin-Debug” klasörünün içinde .dll uzantılı bir dosya otomatik olarak oluşturulacaktır ve bu dosyayı artık farklı projelerde kullanabiliriz .

Şekil 3.2 : C#’ta bileşen yaratmak

GENVEK kodların yazıldığı .cs uzantılı bir sınıf , veritabanına erişim için gerekli bağlantı dizelerinin bulunduğu bir XML dosyası , veritabanlarındaki tabloların şemalarının bulunduğu SqlDataset ve OledbDataset isimli dataset nesnelerini bünyesinde bulundurur .

XML dosyasında veritabanlarına erişim için gerekli bağlantı dizeleri bulunur (Şekil 3.3) .

Şekil 3.3 : baglantilar.xml

Dataset’lerde ise tabloların xml şemaları bulunur (Şekil 3.4). Bizim yapacağımız uygulamanın Sql ve Access olmak üzere iki adet tablosu bulunmaktadır . Bu tabloları sürükle bırak yöntemi ile dataset’imize atıyoruz ve xml kodu otomatik olarak üretiliyor .

Şekil 3.4 : Tabloların XML şemaları

Projenin Tasarımı

GENVEK bileşeni soyut fabrika (abstract factory) desenini (design patern) kullanmaktadır . Soyut fabrika deseni creational grubunun bir desenidir . Creational grubundaki desenler bir yada daha çok nesnenin çeşitli şekillerde oluşturulması ile ilgili desenlerdir . Bu kategoride ele alınan soyut fabrika birbiri ile ilişkili veya birbirlerine bağlı olan nesnelerin oluşturulmasını en etkin şekilde çözmeyi hedefler . Bunu gerçekleştirebilmek için soyut sınıflardan (abstract class) ve arayüzlerden (interface) yoğun bir şekilde faydalanmaktadır . Soyut fabrika deseninin ana teması belirli sınıfların içerdiği ortak ara yüzü soyut bir sınıf veya ara yüz olarak tasarlamaktır . Böylece nesneleri üreten sınıf hangi nesnenin üretileceği ile pek fazla ilgilenmez . İlgilenmesi gereken nokta oluşturacağı nesnenin hangi ara yüzü desteklediği yada uyguladığıdır . Bu deseni oluşturduğumuz anda çalışma zamanında (run-time) hangi nesnenin oluşturulacağını bilmeden nesnelerin oluşturulmasını yönetebiliriz . Nesne oluştururken “switch” yada “if” deyimleri ile hangi nesnenin oluşturulacağına karar veriliyorsa soyut fabrika deseni ile daha az kod kullanılarak bu işlem gerçekleştirilebilir .

GENVEK bileşeninde de temel olarak soyut fabrika desenindeki bir yapı vardır. Bir tane soyut sınıf ve bu soyut sınıfın alt sınıfları , bir de soyut sınıfın alt sınıflarından hangisinin nesnesinin yaratılacağına karar veren fabrika sınıfı . GENVEK ’teki soyut sınıfın adı “databases” sınıfıdır . Bu sınıfın “sqlDatabases” ve “oledbDatabases” olmak üzere iki adet alt sınıfı mevcuttur . “databaseFactory” sınıfı ise bu iki alt sınıftan hangisinin nesnesinin yaratılacağına karar veren sınıftır . Yani kullanıcı hangi alt sınıfın kullanılacağına bu fabrika sınıfı ile karar verir fakat detayları bilmez .

Şekil 3.5 : GENVEK sınıf diyagramı

Reklamlar

Eylül 6, 2008 Posted by | C# | , | Yorum bırakın

İŞLETMELER YAZILIMA NEDEN İHTİYAÇ DUYAR

Merhaba arkadaşlar bu makalede artan rekabet koşullarında firmaların neden yazılıma ihtiyaç duyduklarına değineceğim.

Günümüzde firmalar arası rekabet inanılmaz boyutlara ulaştı. Firmalar daha az maliyete , daha kaliteli üretim yapabilmek için yarış halindeler . Artık müşterilerin ellerinde sınırsız imkan var , çoğu sektörde tekelleşme yok ve özgür bir şekilde istedikleri ürünü uygun fiyatlara bulabiliyorlar. Tabi maliyetlerin ucuzlaması bazen kaliteyi de düşürebiliyor , fakat kaliteyi ucuza mal edebilen firmalar ayakta kalabiliyor ve büyüyebiliyorlar. Bunu yapabilmek için de sistemin sürekli sorgulanması , ar-ge çalışmaları , otokontrol , iyileştirmelerin yapılması , vasıflı iş gücü ve teknolojiyle mümkün olabiliyor.

Ben hiç yabancısı olmadığım iplik boyahanelerini makalenin geri kalan kısmında canlı bir örnek olarak kullanacağım. Öncelikle boyahane ne iş yapar biraz ondan bahsedeyim ondan sonra mantığı anlamak sanırım daha kolay olur. Boyahaneler ham iplik bobinini alıyorlar siparişe göre bir renge boyanıyor. Bobinleri yumuşatılıp düdüklü tencere mantığıyla çalışan kazanların içine atılıyor . Kazana boya ve kimyasal madde konulup kaynatılıyor. İşlem tamamlanınca kurutulup , tekrar sarılıp sevk ediliyor. Mantık bu kadar basit aslında , fakat o kadar çok varyasyon var ki takip etmek çok zor . Öncelikle yaşadıkları sorunların bazılarından bahsedeyim.

Depoya mal geldiğinde sevkıyatçıya sorulmadan mal gelip-gelmediği belli olmuyor

İplikleri boyamak için her miktar için elle hesaplama yapılıyor bu da hata şansını artırıyor.

Müşteriye siparişi ile ilgili hızlı ve net bilgi verilemiyor

Alınan siparişi son aşamaya kadar ne işlem gördüğünü takip edilemiyor.

Maliyetler net hesaplanamıyor, kaçak çok oluyor.

Müşteriye doğru fiyat verilemiyor.

Raporlamalar için saatler , günler harcanıyor.

Fabrika kar mı zarar mı ediyor bilinmiyor

Bu kadar bilgiyi elle takip etmek gerçekten çok zor. Fabrikanın bütün bölümlerinde iyi bir yazılım kullanılsa bu sorunları çözmek daha kolay olacaktır (MRP veya ERP).

Yazılım bir işletmeye faydaları :

İşletme çalışanlarını ortak bir dille konuşmasını sağlar

Hesaplama hatalarını sıfıra indirir

Raporlamaların otomatik ve anında oluşturulmasını sağlar

Müşteriye hızlı ve doğru bilgi verir

Stoklarını ve stok maliyetlerinin doğru hesaplanmasını sağlar.

Çapraz sorgulamalar yapabilmeyi sağlar

Verimlilik ortaya çıkar

Birim maliyetler ve karlılık hesaplanabilir

Çalışanların performans değerlendirmesi yapılabilir.

Vs…

Şimdi aklımıza şöyle bir soru gelebilir?Bu kadar yararlı olan yazılımları neden her işletme kullanmıyor.

Yazılımın ciddi bir maliyetinin olması.Bu maliyet hem parasal , hem de işletmeye uyum sürecindeki zaman maliyeti olarak tanımlayabiliriz

İşletme personelinin işlerinin artacağını düşünüp yazılıma direnç göstermesi. Bu direnç teknolojiden korkmayla da alakalı olabilir.

İşletme çalışanın yazılımın onu işinden edebileceğini düşünmesi

Projenin başarısız olma ihtimalinin olması

Tabi ki böyle bir yazılımın alınmasına karar vermek işletme yöneticileri açısından çok zor.Bu karar verilirken yazılım detaylı bir şekilde incelemeli , artılarını eksileri değerlendirmeli , risk analizlerini yapmalı , maliyeti hesaplanmalı ve bütün olarak çalışanların fikirleri sorulmalıdır. Eğer yazılım tercihi doğru yapılmaz ise projenin adaptasyon süreci uzayabilir veya işletmeye hiç adapte edilemeyebilir.

Projenin başarısız olması maddi kaybın yanı sıra manevi kayıplara da yol açacaktır. İşletme çalışanları bundan sonra uygulamaya geçirilmek istenen bir başka projeye daha önyargılı bakacak ve bütün uğraşılarının boşa gittiği hissine kapılacaktır. Bu da o işletmede mevcut güveni sarsması yanında huzursuzluğa da yol açacaktır. Bu yüzden böyle projelerde çalışanlarla birlikte ortak hareket edip en doğru kararı vermek çok önemlidir.

Yazılımın seçimi aşaması geçtiğimiz zaman en az seçim aşaması kadar zorlu bir süreç işletmeyi beklemektedir.Bu , çalışanların ve işletmenin yazılıma uyum sağlama aşamasıdır.Bu uyum sürecinde her birim kendinle ilgili yazılım modüllerini kullanmayı öğrenir ve eksiklerini görmeye çalışır. İnsanların alışkanlıklarını değiştirmek zordur bu yüzden öğrenmeye direnen çalışanlarla karşılaşmamız doğaldır ve bu da zamanla aşılabilecek bir konudur. Yazılımın işletmeye uyum sürecini ne demektir ? Her yazılım bir paket halinde işletmeye verilip alıp bu yazılıma göre fabrikanızı tekrardan düzenleyin denilemez. Ortak bir nokta bulunması gereklidir. İşletmede , yazılımcılarda birbirlerine yaklaşmak zorundadırlar. İşletme için hayati önem taşıyan fakat yazılımda olmayan bir özellik eğer genel sistemin işleyişini bozmayacak bir eklenti ise bu yazılımcılar açısından da kabul görür. Ve ya işletmenin kullandığı bir rapor yazılımda mevcut değil ise bu rapor yazılıma dahil edilebilir.

Yazılım uyum sürecinde , bunu kullanacak olan çalışanlar yazılımı iyi kullanabilmesi ve nelerden sorumlu olduğunu çok iyi bilmesi gereklidir.Örneğin yine boyahaneleri ele alalım.Bir boyahanede minimum 6-7 bölüm mevcuttur.Bunlar ; planlama , pazarlama , üretim , laboratuar , satın alma , sevkıyat .Her bölümün yapması gerekenler işleri bellidir zaten. Bunlardan sevkıyat sorumlusunu ele alalım.Sevkıyatçı hazır olan partilerin çıkışını yapmalı , gelen malların giriş fişlerini kesmeli ve deposunda stok sayımı yapmalıdır.

Eğer her bölü
m kendi sorumluluklarını tam yaptığı sürece yazılımdan tam bir verim elde edilebilir. Örneğin planlamacı işini tam yapmaz ise üretimde sıkıntı çıkar veya laboratuar işini tam yapmazsa planlamada sıkıntı çıkar. Yani sistemin bütün halinde sağlıklı bir şekilde çalışması gereklidir ve bu sağlandığı zaman da işletmede raporlar sayesinde maliyet , fiyatlandırma , karlılık , verimlilik gibi kavramlar daha net ortaya çıkar hem de hiçbir ekstra emek harcamadan.

Görüyoruz ki eğer yazılım işletmede sağlıklı bir şekilde uygulanabilirse işletme yazılımın sınırsız nimetlerinden faydalanır.Tabi ki iyi bir yazılımın faydaları sadece burada bahsettiklerimle sınırlı değil mutlaka fakat en azından yazılıma neden ihtiyaç duyulur sorusuna bir parça da olsa ışık tuttuğumu düşünüyorum.

Eylül 3, 2008 Posted by | Yazılım | | Yorum bırakın

BİLGİSAYAR MÜHENDİSLİĞİ HAKKINDA

Merhabalar bu makalede bilgisayar mühendisliği öğrencilerinin ve ya henüz iş deneyimi olmayan mezun arkadaşların iş bulma sıkıntıları , iş hayatında karşılaşabilecekleri zorluklar , hayal kırıklıkları ve bunun gibi kafalarını kurcalayan konulardan bahsedeceğim. Ayrıca okul hayatından iş hayatına geçişi en acısız şekilde nasıl atlatabiliriz bunlara da değineceğim..

Öncelikle klasik bir giriş yapalım ve bilgisayar mühendisi ne iş yapar onu belirleyelim.Okuyan bir çok arkadaşın eminim kafasında şu soru işareti vardır , ben ne iş yapacağım ve beni kim niye işe almalı . Okul bittikten sonra önümüzde birkaç yol var. Bunlardan bazıları : sistem mühendisi veya bilgi işlem sorumlusu olmak , networkta uzmanlaşmak , grafik tasarımlarına yoğunlaşmak , veritabanı yöneticisi olmak , uygulama programcısı olmak … (Ne kadar çok şey oluyormuş bizden) Ana başlıklar olarak sadece bunları seçtim fakat bunları detaylandırmakta mümkün. Aslına bakacak olursak bilgisayarla işi olan her yerde bilgisayar mühendisleri çalışabilir ; fabrikada , bankada , yazılım şirketinde , holdinglerde , evdeJ vs. Ama ben bunların hepsini öğrenirsem her yerde iş bulabilirim gibi bir fikre kapılmak bence çok yanlış. Tabiî ki bunların hepsini yapabilmek olağanüstü bir şey fakat yeni mezun bir arkadaşın bunların hepsini bilmesi çok zor (istisnalar hariç) . Amaç bu görev tanımlarından birisini kendine hedef seçmek ve o konuda uzmanlaşmaya gitmek olmalıdır ki bu karar o kişinin hayatının bundan sonraki kısmını nasıl yaşamak istediğiyle de doğru orantılı . Eğer yapmaktan zevk almadığı bir yolu seçerse o işte ne başarılı olabilir ne de ilerleyebilir diye düşünüyorum . Öncelikle kişi yaptığı işi sevecek , o işte nasıl daha verimli ve kaliteli olabilirim diye kendisini sürekli sorgulayacak ve geliştirecek. Aslında bu kararı daha okuldayken vermek daha mantıklı. Okuldan yeni mezun bir bilgisayar mühendisi ne konuda ilerlemek istediğini tam kestiremiyor ama genellikle baktığımızda yazılım sektörü kabul görüyor. Çoğu şunu diyor ben program yazacağım !!! Aslında bilgisayar mühendisinin görevi program yazmak değil , sistemin bütününü algılayıp , bunu çözülebilecek en küçük program parçalarına ayırarak daha sonra da birleştirmektir bana sorarsanız . Ortada zor bir problem var diyelim bu problemi kolay parçalara ayrıştırarak sistematik bir şekilde sonuca giden kişidir.

Bilgisayar mühendisi ayrıca yöneticilik meziyetlerini de bulundurması gerekir , bir takımı idare edebilmeli , insanlarla diyoloğu iyi olmalı. Çünkü her ne kadar mühendisin işi bilgisayarla olduğu düşünülse de aslında işimiz insanlarla. Bir yazılım şirketinde takım lideri olduğunuzu varsayın. Elinizde bir proje var , bir fabrikaya üretim programı yapacaksınız diyelim . Bu projenin detaylarını kimden alabiliriz , tabi ki fabrikanın müdürü , çalışanları hatta işçilerinden. Bu yönetim kadrosundan idari kadroya kadar herkesle iyi geçinmeliyiz demektir . Ne alakası vardır demeyin bir projenin başarılı olmasın kaderi sizin o işletmeden sağlam , güvenilir bilgiler almanıza bağlıdır. Analizleri yaptık , planladık , raporladık artık iş görevleri takım oyuncularına dağıtmaya geldi. İşin en zor kısımlarından biri de burası. Kim hangi işi daha iyi yapabilir , psikolojisi uygun mu vs. bir dünya soru işareti.Herkese ne iş yapması gerektiğini onun anladığı şekilde anlatmalıyız. Bir nevi çevirmenlik yapıyoruz.

Yazılım sektöründe çalışacakların kafasında bir şeyler şekillenmeye başlamıştır umarım. Peki bizim program yazmaya madem bu kadar ihtiyacımız yokta niye bu kadar kasıyoruz demeyin yanılırsınız çünkü takım lideri olmanız için o takımdaki herkesten daha iyi algoritma kurma ve kod yazma beceriniz olması gerekir ki başka türlü kimse sizi takmaz.Zaten okulu bitirdim hemen bir proje ekibinin başına geçeceğim değil olay , basamak basamak. Öncelikle bir ekipte piyon olacaksınız , kendinizi geliştirdikçe fırsatları değerlendireceksiniz. Ama emin olun ilk birkaç sene sıkıntılı geçecek. Sinirleriniz yıpranacak , rüyalarınızda kodlar göreceksiniz . Ama hemen korkmanıza gerek yok , zaten işinizi seviyorsanız ve bir hedefiniz varsa bunları aşacaksınız .

Peki kendimizi geliştirmek için işe girince sudan çıkmış balığa dönmemek için daha okuldayken neler yapmak gerekir? Sürekli ders mi çalışalım? Tabiî ki üniversite sadece mesleğinizle ilgili şeyleri öğrenmek için okunmaz , bir yandan da hayat öğrenilir. Bu yüzden bana sorarsanız sosyal yaşamdan kopmadan sorumluluklarınızı bilerek geçirmek üniversite hayatını en iyisi.Sadece planlı bir şekilde derslere , gerekli araştırmalara yönlenin ilk etapta yeterli. Okuldaki dersler sadece yönlendirme amaçlıdır. Bir dersi almak demek o konuda uzman olduğunuz anlamına gelmez. Örneğin nesne yönelimli programlama dersi aldınız işte sınıf,kalıtım,ara yüz kavramlarını öğrendiniz diyelim bu öğrendiklerinizi birkaç farklı proje içerisinde kullanmadığınız zaman o ders yarım kalmış demektir. Can alıcı nokta her zaman uygulamadır. Teoride bilinen bir şey pratikte hayata geçirilemiyorsa teorinin bir anlamı yoktur.

Bir diğer konu da stajlar: Her yaz mutlaka bir yerlerde staj yapın veya çalışın.Her yaz bir imkan yaratıp bir şirkete kapağı atın. Para falan önemli değil , gerekirse üstüne para verin işi öğrenmek için. Yaz dönemleri kendinizi geliştirmek için çok iyi bir fırsat (tabi yaz okulunuz yoksa) . Stajlarınızı bir şeyler öğrenebileceğiniz yerlerde yapmanız ve bilmediğiniz , aklınıza takılan her şeyi sormanız gereklidir. Yoksa kimse size işini bırakıp işi öğretmeye çalışmaz.

2007 BİLMÖK’e konuşmacı olarak katılmıştım. Konuşmadan sonra bana öğrenciler şu soruları sordular; Hangi programlama dilini öğrenelim?Hangisiyle iyi iş bulabiliriz? Aslında bu sorunun cevabı çokta önemli değil ,ben de orada zaten bunu anlatmaya çalıştım , programlamayı öğrenin , dili öğrenmek kolay.Algoritma kurabiliyorsan bütün dillerde mantık aynı.Sadece yazım şekilleri biraz değişik o da kısa sürede aşılabilecek bir şey. Yoğunlaşmamız gereken noktaları iyi belirlemeliyiz.

Umarım öğrencilerin ve yeni işe başlayacak olanların kafalarından bazı soru işaretleri kalkmıştır.Tabi her ne kadar burada ben anlatmaya çalışsam da insanın mutlaka tecrübe etmesi gerekiyor. Bazı şeylerin gerekliliği ihtiyaç anında ortaya çıkıyor. Neyse lafı fazla uzatmayalım. Herkese iyi çalışmalar . . .

Eylül 3, 2008 Posted by | Yaşam | , , | 1 Yorum

FAYDALI LINKLER

http://www.csharpnedir.com
http://www.ceturk.com
http://www.yazgelistir.com
http://www.yazilimuzmani.com
http://www.codeproject.com
http://www.wardom.org
http://www.forumson.com
http://www.donanimhaber.com
http://www.msakademik.net

Eylül 3, 2008 Posted by | Güncel-Genel | | Yorum bırakın