Proje Yönetimi Konusunda Matematiksel Yaklaşımlar - Kazanılmış Değer Yönetimi

by Burak Uluocak 13. July 2010 17:27

Günümüzün hiyerarşik katmanları gittikçe azalan ve yataylaşan şirketlerinde, buna paralel olarak, proje yönetimine verilen önem de artmaktadır. Ayrıca, yeni ürünleri zamanında ve bütçe sınırları içerisinde pazara sunmak için çalışan büyük şirketlerin hemen hemen tümü üretim, pazarlama ve finans gibi farklı birimleri koordine edebilmek için proje yönetimi becerilerine ihtiyaç duymaktadır.
 
Buna karşılık diğer yönetim disiplinleri ile karşılaştırıldığında modern proje yönetimi çalışmaları oldukça yenidir. Modern proje yönetimi ilk olarak 1950'lerde ABD'de devlet programlarının yönetilmesinde kullanılmaya başlanmış, 1990'lardan itibaren ise özel şirketler tarafından - günümüze kadar artan bir biçimde - kullanımına devam edilmiştir. Günümüzde, insanlar ve birimler arasında gerekli koordinasyonun sağlanması için sosyal yeteneklerin önemi belirtilmekle beraber, proje performanslarının objektif olarak ölçülebilmesi ve gerekli aksiyonların zamanında alınabilmesi için teknik yaklaşımlarında önemi vurgulanmaktadır. Bu çalışmada, proje yönetiminde önemli teknik ve matematiksel yaklaşımlardan biri olan "Kazanılmış Değer Yönetimi" (Earned Value Management)  üzerinde durulmaktadır.
 
Çalışmanın ilk bölümünde proje yönetimi ile ilgili genel kavramlar açıklanmaktadır. Takip eden bölümlerde ise önemli 2 proje kısıtı olan "zaman" ve "maliyet" yönetimi teknikleri üzerinde durulmaktadır. "Kazanılmış Değer Yönetimi" ise son bölümün konusudur.

Çalışmanın İngilizce orijinal dosyası için tıklayın (PDF, 355,71 kb)

Yazılım Geliştirmede Üretkenlik – 1

by Yalçın Sertkaya 19. November 2009 10:34

Yazılım geliştirmede üretkenlik tek yazıda incelenemeyecek kadar geniş bir konu. Çünkü üretkenliği etkileyen çok sayıda etken var. Yazılım dilleri, yazılım geliştirme metodolojileri, yazılım framework’leri, zamanla edinilmiş tecrübeler vs. Bu ilk giriş incelemesi, daha sonra diğer etkenlerin incelemesi ile devam edecek.

En çok kullanılan yazılım dillerine baktığımızda aşağıdaki gibi bir sıralama çıkıyor karşımıza: (Kaynak langpop.com)

Bu sıralama arama motorlarından yazılım dillerinin daha çok aranmasıyla elde edilmiş bir sıralama. Her ne kadar kesin bir sonuç vermesede fikir verebilir. Tabloya baktığımızda C, Java, C++ gibi static typed ve performansı yüksek dillerin ilk sıralarda yer aldığını görüyoruz. Daha alt sıralarda Perl, Python, Ruby gibi dynamic typed dillerinde azınsanmayacak derece kullanıldığını görebiliyoruz. Bu alt sıradaki dillerin performans olarak üst sıradakilerle yarışamamalarına karşın toplamda Java kullanımına yakın bir kullanım elde etmelerinin sebebi nedir.

Neal Ford, productive programmer kitabında yakın geleceğin yazılım dilleri katmanlarını aşağıdaki gibi göstermiş

Bu şekle göre en alt katmanda, ana fonksiyonalitenin yazıldığı güçlü ve sağlam (büyük ihtimalle static typed bir dil) bir dil, orta katmanda günlük işlerin ve çevre birimlerin hızlı geliştirilmesine olanak sağlayan üretken bir dil (büyük ihtimalle dynamic typed bir dil), en üst katmanda da IT-business alignment’a olanak sağlayan iş analistleri ile yazılımcıların aynı dili konuşmasına zemin hazırlayan domain spesific bir dil.

En alt katmanda C, Java gibi dilleri görüyoruz. En üst katmana genel olarak yazılımın geliştirildiği alana spesifik uygulamaları koyabiliriz. Örnek vermek gerekirse, iş akışlarının çizildiği ve akışının sağlandığı BPEL formatını veya BPM (Business Process Management) sistemlerini sayabiliriz. Veya son zamanlarda populerliği artan VHLL (Very High Level Programming Language) dilleri de bu katmana koyabiliriz. VHLL tipi diller konuşma diline çok yakın, güçlü semantic analiz yeteneği olan diller. Yazılımı bir yazılımcı tarafından değilde iş mimarları tarafından geliştirilmesine olanak sağlayan bu diller henüz işin çok başında.

Orta seviyeye Python, Perl, Ruby gibi dilleri koyabiliriz. Gerçekten Python’un kullanım alanlarına baktığımızda benzeri amaçda kullanımlara rastlıyoruz. Her ne kadar bir projeyi tamamen bu dillerde geliştirmek mümkün ve bunun çok sayıda örneği olsada çevre birimlerinin geliştirilmesinde de çok sayıda örnek verebiliriz:

  • Türkçe işletim sistemi Pardus; Python’u yönetim birimlerinin ve sistem boot modullerinin yazılımında kullanmış.
  • Gentoo Linux; paket yönetimi modullerini Python’da geliştirmiş.
  • Red Hat Linux ise kurulum programlarını için Python’u kullanmış.
  • Linux, Mac OS X, Open BSD gibi pek çok işletim sistemi ise script ortamı için Python’u tercih etmiş.

Orta seviyede üretkenliğe yönelik diller olduğunu söyledik. Peki üretkenliğin tanımı nedir. Capers Jones, 1996 yılında 500’e yakın yazılım dilini üretkenlik açısından karşılaştırmış. Bu işi yaparken ortak algoritmalar belirlemiş ve bu algoritmaları her dilde en optimum şekilde kodlamış. Aynı algoritmaların dillerdeki kaç satırda kodlanmasından da dil seviyeleri elde etmiş. Dil seviyesinin daha yüksek olması o dilin daha üretken dil olduğunu gösteriyor. Tüm sonuçlar bu linkde: blog.csdn.net  Özet sonuçlar şöyle: (Çalışma yapıldığında Python, Ruby dilleri değerlendirilmemiş, çalışmayı devam ettirenler tarafından sonradan eklenmiş.)

Yazılım Dilleri Üretkenlik Karşılaştırma Tablosu

Satır sayısının azalması dilin daha üretken olduğunun bir göstergesi midir?. Daha az satır daha az test, daha az hata ihtimali ve daha kısa sürede kodlama anlamına geldiğinden bir bakıma göstergesi. Ancak daha üretken dillerin genelde dynamic typed diller olması başka bir olumsuz kriteri beraberinde getiriyor. Static typed diller pekçok kontrolu derlenme aşamasında yaptığı için daha az hata bulundurma potansiyeline sahipler. Dynamic diller ise çalışma esnasında bu hataları alıyorlar. Tabiki güçlü birim test kodlarıyla bunun üstesinden gelinebilir.

Aşağıdaki örnekde aynı algoritma (bir text dosya içindeki # karakterinin silinmesi) java ve Python da ayrı ayrı geliştirilmiş. Python’da 3 satıra Javada 20’nin üstündeki satır ile aynı algoritma sağlanmış.

Python

import fileinput, re

for s in fileinput.input(inplace = 1):
print re.sub("#.*", "", s),

Java

import java.io.*;

public class uncomment {
  public static void main(String[] args) {
    try {
      FileReader fr = new FileReader(args[0]);
      BufferedReader br = new BufferedReader(fr);

      File f = new File(args[0] + ".tmp");
      FileWriter fw = new FileWriter(f);

      String line = "";
      while ((line = br.readLine()) != null) {
         int pos = line.indexOf('#');
         if (pos > -1) line = line.substring(0,pos);
         fw.write(line + '\n');
      }
      fr.close();
      fw.close();
      f.renameTo(new File(args[0]));
    } catch(Exception ex) {
      ex.printStackTrace();
    }
    }
  }

Kod satırı sayısı olarak 2 dili karşılaştırdık. Birde performans değerlerine bakalım. Aşağıdaki örnekde 15 algoritma her 2 dilde kodlanmış. 1’den büyük değerler Javanın, küçük değerlerde Python’un üstünlüğünü gösteriyor. (Kaynak: shootout.alioth.debian.org ) Grafiğe göre Java açık ara performansda önde. Memory kullanımı ve beklenildiği üzere kaynak kod kısalığında ise Python önde.

Bir yazılım dilinde üretkenliği artıran tek etken satır sayısının az olması değil elbette. Bunun yanında sayabileceğimiz başka kriterler de var. Sonraki bölümde Python’u daha detaylı inceleyip üretkenliğe katkı sağlayan diğer özelliklerini inceleyeceğiz. Bu arada Python’un Java ile karşılaştırıldığındaki düşük performansı üstesinden gelinemez bir konu değil. Bu konu da sonraki bölümde ele alınacak konulardan birisi.

Tüm yönleriyle 3G

by Yalçın Sertkaya 19. November 2009 10:09

Son günlerde mobil telefonlar konusunda populer bir teknoloji olan 3G, mobil telefon üzerinden müzik indirme, tv izleme gibi özelikleriyle ön plana çıkarılsada aslında bundan daha fazlasını içinde barındırıyor. 3G; üçüncü generasyonun kısaltılmış hali ve IMT-2000’in daha bilinen adı. IMT-2000; ITU (International Telecomminication Union) tarafından 1999 yılında ilk olarak yayınlanmış mobil teknolojilere yönelik global bir standart. 3G ülkemizde yeni bir teknoloji gibi lanse ediliyor ama aslında ilk temeli 10 sene önce atılmış. Mobil teknolojiler 3G’ye gelene kadar bir kaç evrim geçirmiş.

Mobil Telefonların Tarihçesi

İlk mobil teknolojiye yönelik çalışma, 1946 yılında Motorola tarafından gerçekleştirilmiş. Bu çalışma her ne kadar mobil olarak görünsede aslında sadece iletişim yöntemi mobil, çünkü 20 kg’yu bulan ağırlığıyla bu cihazlar sadece arabalara ve kamyonlara monte edilebiliyormuş. Mobil tarihçesinde 0G olarak geçen bu evreden sonra gerçek anlamda ilk ticari mobil telefon –çünkü daha öncesinde askeri amaçlarla kullanımı olmuş – ise 1980 yılında Japonyada kullanılmaya başlanmış. NTT (Nippon Telegraph & Telephone) tarafından sunulan bu teknoloji tarihte analog teknolojiler olarak geçiyor ve 1G olarak biliniyor.

İlk digital teknolojiyi kullanan telefonlar 1991 yılında Finlandiyada kullanım alanı buluyor. İskandinav ülkeleri mobil teknolojilerin gelişmesinde her zaman öncü olmuş ülkeler. Ülkelerinin kolay ulaşım sağlanamayan coğrafi yapısından dolayı iç kesimlere hat döşemek çok zor olduğundan mobil iletişime yönelmişler. Nokia, Ericcson gibi en büyük telefon üreticilerinin bu ülkelerde olması tesadüf değil. 2G olarak geçen bu dönemdeki teknoloji GSM olarak isimlendiriliyor. GSM ile birlikte sesin yanısıra limitli de olsa ilk veri transferi de gerçekleşiyor. 14 kbit/s veri hızı ilk aşamada sadece SMS servislerinin kullanımına izin veriyor. Daha komplike veri servisleri 2.5G olarak adlandıran GPRS teknolojisi ile hayat buluyor. Veri transfer hızları 114 Kbit/s ulaşıyor ve MMS(Multi Media Messaging Service), WAP, PTT(Push To Talk), Wireless Village veri hizmetleri bu dönemde hayata geçiyor. Wireless Village dışındaki uygulamalar yoğun olarak Türkiyedede kullanım alanı bulmuş uygulamalar. Wireless Village ise bir instant messaging servisi, iş dışında iken veya kesilmek istemediğiniz bir toplantıda arayacak kişiye bilgi vermenize yönelik bir servis.

Cep telefonlarında maillerimizi görmemizi sağlayan teknoloji EDGE teknolojisi ve mobil evrimde 2.75G olarak yerini almış. Sunduğu bağlantı hızı 473 kbit/s. Bu arada, evrimlerde verdiğim veri hızları sağlanabilecek maksimum veri hızları. Teorik olan bu hızlara pratikte her zaman erişilmiş değil. Hızlarla ilgili önemli 2. bir noktada verilen hızlar downlink hızları. Şöyleki, mobil teknolojilerde 2 hızdan bahsedilir: Uplink ve downlink olmak üzere. Uplink cep telefonunun baz istasyonuna veri gönderme hızı iken , downlink tam tersi yani istasyonun cep telefonuna veri gönderme hızı. Downlink daha önemli bir hız olduğundan, hız belirtilirken bunu kullanmakta fayda var. Kesin kural olmamakla birlikte fikir oluşturması için belirtmek gerekirse uplink hızları downlink hızından yaklaşık 1/3 oranında düşük oluyor.

3G ile birlikte tüm şebeke ve baz istasyon yapıları değişiyor. Bu generasyonda sağlanan veri hızları 2Mbit/s. 3G’nin kullandığı teknoloji, önceki teknolojilerin aksine CDMA, ki önceki teknolojilerde TDMA ve FDMA kullanımı yaygın idi. Packet-switched veri altyapısıda 3G’yi önceki altyapılardan ayıran önemli bir faktör. 3G ile birlikte gelen özelliklere ileride daha detaylı değineceğiz. 3G’den sonra mobil teknolojileri bekleyen kilometre taşları neler diye baktığımızda 3 adım şimdilik net olarak görülebiliyor. HSPA teknolojilerinin kullanım olanağı bulacağı ve 42 Mbit/s hıza ulaşılması hedeflenen 3.5G, LTE (Long Term Evolution) olarak adlandırılan ve en az 100 Mbit/s hızların hedeflendiği 3.9G ve IP tabanlı güvenli sistemlerin kullanılacağı 4G. 4G ile birlikte hedeflenen veri hızları ise bugunun çok ötesinde: 1Gbit/s. Hızlar çok uzak gibi görünsede 4G teknolojileri dünyada bir kaç noktada bölgesel olarak kullanılıyor ve mobil teknolojinin öncülerinden NTT 2010 başında bu teknolojiyi tüm Japonyada kullanıma geçireceğinin demeçlerini şimdiden verdi.

3G’ye dönersek ilk 3G networku 2001’de yine NTT tarafından japonyada uygulamaya geçiyor. ABD ve Avrupada 2003 yılında afrikada ise 2004 yılında ilk uygulamalarını görüyoruz. Bugün dünyada 120 ülke 3G’yi kullanıyor ve Türkiye 121. ülke olacak.

3G’nin özellikleri

3G’nin özellikleri neler diye baktığımızda en önemli 4 özelliğini şöyle sıralayabiliriz.

• Yüksek veri hızı. Özellikle LTE ile birlikte 100 Mbit/s’lere ulaşım hedefleniyor. Yüksek hız taşınabilir bilgisayar veya mobil telefon üzerinden internet bağlantısına da izin veriyor. Bu önceki teknolojilerde de mümkün olsada hiç bir zaman kabul görür hızlara erişilemedi.
• Güvenlik. Bugune kadar 54 bit şifreleme mümkünken 3G ile birlikte gelecek olan KASUMI yöntemi 128 bit şifrelemeye izin verecek. 2G de bulunan pek çok güvenlik problemi de 3G ile birlikte tarih olacak. Her ne kadar KASUMI’nin güvenlik açıkları olduğu konuşulsada 2G’ye karşın güvenlik bir hayli üst düzeyde.
• Aynı anda ses ve veri taşınması. Öncelki teknolojilerde mobil hatlardan ses ve veri taşımak mümkün olsada aynı anda bunlardan sadece biri taşınabiliyordu. 3G ile birlikte ses taşınması sırasında mobil hatlar üzerinden veri de gönderilebilecek.
• Parlay X/OSA API. Parlay X telefon network servislerini mobil teknoloji detayını bilmeden kulanmaya olanak sağlayan bir API spesifikasyonu. Bu API sayesinde mobil teknolojiler üzerinde yazılım geliştirmek çok daha kolay olacak, Geocoding, Multimedia streaming gibi konuyu bilmeyen birisi için komplike olabilecek mobil servisleri web servis çağırarak kullanılabilecek. Bu tip API kütüphaneleri mobil ticaretin ve mobil web’in gelişmesine olanak sağlayacak.

Kullanım Durumu

3G’nin dünyada kullanımına bakarsak mobil telefon kullanıcılarının ortalama %20’sinin bu servisi aldığını, 2007 yılı itibarı ile 400 milyonun üzerinde 3G kullanıcısı olduğunu görüyoruz. Google trend verilerine göre 2006’dan itibaren 3G arama eğilimleri artış gösteriyor.


Türkiye'de 60 milyonun üzerinde mobil kullanıcısı olduğunu düşünürsek yakın zamanda bu kullanıcların %20’si yani en az 12 milyon 3G kullanıcısına ulaşmamız mümkün. Genç nüfüsun avrupa ülkelerinden daha yüksek olduğunu düşünürsek bu oranın %20 ‘nin çok çok üzerine çıkmasıda muhtemel.

3G ile gelen sorunlar

3G ile ilgili bir takım ufak tefek sorunlarda çıkıyor karşımıza. Örneğin 3G; hareket halindeki bir araba içinde veri hızları konusunda o kadar başarılı değil. 3G ile TV izlemek en önemli özelliklerinden biri gibi gösterilsede görüntü kalitesi en azından giriş seviyesinde çok başarılı değil. Gerçek anlamda TV izlemek için 3.9G’yi hatta 4G’yi beklemek gerekecek.

3G’nin göz ardı bir özelliğide tüm şebekelerin ve baz istasyonlarının 10 kat daha yüksek radyasyon ve manyetik alan yayacak şekilde yenilenmiş olması. Bu açıdan sağlıksız olsada telefon kullanımı için kulağa götürmek yerine gözden 20-30 cm. uzakta izlenmesi teknolojiyi daha sağlıklı hale getiriyor. Telefonun baş seviyesine yaklaşmasıyla beraber daha tehlikeli olduğu bilinen bir gerçek.

Sorun olarak bahsedebileceğimiz son konu da bateri kullanımı ile ilgili. Daha fazla bateri tüketen 3G, hem kısa sürede bateri tüketiyor hem de pil ömrünü azaltıyor.

Türkiyede Durum

Türkiyede ilk 3G ihalesi Eylül 2007’de açıldı. Ama Turkcell dışındaki mobil operatorler numara taşınabilirliği servisi olmadan ihaleye katılmayacağını bildirdiğinden ihale iptal edildi. 2008 son çeğreğinde tekrar açılan ihale sonucu Turkcell, Avea ve Vodafone 3G lisanslarını aldılar. Önümüzdeki 70 yıl boyuncada yeni ihale açılmayacak, mevcut sözleşme koşulları gereğince mobil operatorler gelecek teknolojileri herhangi bir ihale beklemeden sunuyor olacaklar.

3G için geç mi kaldık sorusunun kötümser bir cevabı yok. Çünkü 3G uyumlu telefonlar son zamanlarda ucuzlamaya ve yoğun kullanım sahası bulmaya başladılar. Ayrıca yurtdışında Türkiyedekinin 40 katı pahalı satılan lisanslar yüzünden geniş bir kullanım alanı bulamadı. Türkiyede ise en azından şimdilik görülen 2G teknolojilerinden daha pahalı olmayacağı.

3G Uygulamaları

3G ile yapılabilecek uygulamalara baktığımızda aslında, hemen hemen tamamı hızın artmasına yönelik kazanılan uygulamalar olduklarını görüyoruz.

Kişisel kullanım için uygulamalar

• Telefondan TV izleme (Görüntü kalitesi çok yüksek olmasada)
• Online olarak video çekimi ve gösterimi
• Güvenlik kamerasıyla ev, işyeri vs. izleme
• Video Blog
• Müzik download
• VideoCam uygulamaları (Gideceğiniz bir şehirde hava durumunu izleme, trafik durumunu izleme vs.)
• İşitme engeliler için telefonu kullanma
• Film izlemeye olanak sağlayan mobil gözlüklerin kullanımı
• Taşınabilir bilgisayardan mobil olarak internete bağlanma


 
Kurumlar için uygulamalar

• Mobil konferans. Konferansa katılan kişiler ister bilgisayarının başında ister dünyanın başka bir yerinde telefonunun başında olsun herkesin birbirini görerek bir konferans gerçekleştirmesi mümkün.
• Video Yardım masası. Sık rastlanan problemlerin çözüm talimatlarını içeren video klipler sorunların çözülmesinde sesle iletişime nazaran daha etkili olacaktır.
• Mobil sunum. Bir sunumun bilgisayar veya telefon başındaki herkes tarafından izlenebilmesine olanak sağlayan teknolojiler ile toplantıların mobil telefon üzerinde yapılması mümkün.
• Telemetri uygulamaları. Uzaktaki insansız bir noktayı izlemek, bir doktorun hastasını uzaktan incelemesi gibi uygulama sahaları.
Bankalar için uygulamalar
• Görüntülü çağrı merkezi. Telefonun bir ucunda müşteri diğer ucunda çağrı merkezi yetkilisinin birbirlerini görerek işlem yapma uygulaması. Bu yöntemle müşteri şubeye gelmişcesine işlemlerini yaptırıbilir.
• Görüntülü dış arama. Ürün tanıtmak için müşterilere bağlanılarak canlı ve görsel olarak sunum yapma işlemi.
• Interaktif çağrı merkezi. Müşteri çağrı merkezi yetkilisini telefonda görmenin yanısıra, hesaplarına ait ekstre, dekont bilgisi vs. gibi bilgileri de gözlemlemesi mümkün.
• Video Broşür. Bilgi veren ve ürünlerini tanıtan video ve görsellerden oluşan zengin içeriklerin müşteri telefonlarına gönderimi.
• Video Menu. En fazla kullanılan uygulamalardan birisi. Bu yöntemle menuden işlemleri dinlemek yerine görerek seçmek mümkün. Böylece işlem süresi beşte bir oranına iniyor hem işlem süresi hemde işlem maliyeti bir hayli azalıyor.
• En yakın banka. GPS benzeri servislerin kullanımıyla, müşterileri en yakın bankaya, ATM’e veya acil durumlarda ihtiyaç duyulacak yerlere (Hastane, Eczane) harita üzerinden yönlendirme.
• Sanal asistan. Bazı self service uygulamalarda, müşteri temsilcisi yerine, yazılımla kontrol edilen sanal temsilciler kullanılabilir. Verdiği bilgiye, müşterinin özelliklerine göre mimiklerini ve ses tonunu değiştirebilen oldukça gelişmiş bu tip uygulamalar pek çok dil konuşabiliyor, konuşulanı imitli de olsa anlayabiliyor.
• Video Portal. Web portallarde olduğu gibi video içeriği bulunan portallerin oluşturulması ve mobil telefonlar için erişilebilir olması mümkün.
• İşitme engelliler için çağrı merkezi. 3G’nin önemli kazançlarından biride işitme engelliler için telefonu kullanma imkanı sunması. Video menu uygulaması ses değil görüntü üzerine kurulduğundan işitme engelliler tarafından kullanılabilir. Veya işaret dilini bilen bir çağrı merkezi temsilcisi (gerçek veya sanal) ile görüntülü olarak işlem yapabilir.
• Gelişmiş WAP uygulamaları. WAP yeni bir teknoloji olmamasına rağmen, düşük hızlar ve güvenlik sorunları nedeniyle gerçek bir kullanım alanı bulamadı bugune kadar. Artık bu tip sorunlar 3G ile aşıldığından WAP kullanımının daha geniş kullanımı olacağı düşünülüyor.
• Yüz analizi ile Müşteri tanıma çözümleri. Şifre yerine yüz analizi ile bir kişiyi tanımlamak mümkün. Görüntü kalitesinin daha da iyileşmesiyle bu tip uygulamaların artması bekleniyor.
• 3G kanal entegrasyonu. 3G için yapılan uygulamaların başka kanallara açılması da kolaylıkla sağlanabilir. Görüntülü telefon temsilcisine internetden veya kiosk makinalardan ulaşılabilir.
• Güvenlik amaçlı kayıt. Tüm banakalr güvenlik amaçlı olarak telefon yapılan konuşmaları kayıt ederler. Görüntünün kayıt edilmesi ses nazaran dah güvenli olacaktır.

Son olarak

3G’nin mobil iletişimde bir milat olacağı kesin. Kısa zaman içinde daha da artacak veri hızları ile zaten pek çok konuda bilgisayarlarımızı yakalamaya başlamış smartphone kullanımının artışı mobil telefonları hayatımızın vazgeçilmez parçalarından biri yapacak. Büyük ihtimalle kısa süre içinde adı da telefon olmaktan çıkacak, sesli iletişim bu cihazların pek çok özelliğinden biri olarak kalacak.

Java Tasarım Desenleri (Design Patterns)

by Doğu Gül 9. October 2009 10:59

Yazılım projeleri sırasında, yazılım mühendisleri birbirine benzer zorluklarla karşılaşmaktadırlar. Bu zorlukları aşabilmek için, belirli tasarım şablonları uygulanılabilir. Tasarım desenleri, çözümler için bir çeşit şablon olarak düşünülebilir. Aynı problem kümesi için aynı Tasarım Deseni (Design Patterns) uygulanabilir.

Nesneye dayalı programlamada, tasarım desenleri (Design Patterns) sınıflar veya nesneler arası ilişkiyi gösterir. Yazılım mühendisi en uygun tasarım deseni (Design Patterns) veya desenlerini bulur ve belirli bir probleme uygular.

Ibtech yazılım birimi yazılım projelerinde uygun olan yerlerde tasarım deseni kullanma yaklaşımını benimser. Tasarım desenlerinin kullanımı yazılım geliştirme sürecini hızlandırmaktadır. Tasarım desenleri (Design Patterns), onların kullanımını bilen uygulama mimarları ve yazılım geliştiriciler için kodların daha anlaşılır olmasını sağlamaktadır. Ayrıca uygulama desenleri, yazılımın mimarisinin, uygulanan tasarım deseni veya desenlerinin isimlerini belirterek kolayca anlaşılmasına olanak sağlamaktadır.

Tasarım desenleri (Design Patterns) birer şablon olmalarına rağmen, yazılım problemleri üzerine uygulanması kolay bir işlem değildir. Uygulama mimarı karşılaştığı sorunu analiz eder ve bir veya birden fazla aday uygulanabilir tasarım deseni belirler. Uygulama mimarı deneyimi doğrultusunda, uygulamak için en uygun tasarım desenini seçer.

Tasarım desenleri (Design Patterns) yaratılışsal, yapısal ve danranışsal olmak üzere gruplanır:

  • Yaratılışsal tasarım desenleri farklı nesne oluşturma yöntemlerini içerir.
  • Yapısal tasarım desenleri, farklı işlevler elde etmek için nesneler arasındaki ilişkilere odaklanır.
  • Davranışsal tasarım şablonları nesnelerin sorumluluklarını saptamak için nesneler arası etkileşimi belirler. Ayrıca davranışsal tasarım desenleri nesnelerin davranışlarını kapsarlar.


Ibtech yazılım stratejisinin bir diğer görüşü yeniden tasarım (refactoring) yönteminin kullanılmasıdır. Yeniden tasarım sırasında, mevcut kodlar mantıksal daha küçük parçalara bölünür ve gerekli görüldüğü durumlarda tasarım desenleri (Design Patterns) uygulanır.

Ibtech'te, yazılım kalitesini değerledirmek için belirli yazılım metrikleri kullanılır. Derinlemesine ve detayli bir araştırma sonucunda metrikler belirlenmiş ve en gerekli olanları seçilmiştir. Geliştirdiğimiz her yazılım bileşeni belirlenen metrik kriterlerine uyması gerekir.

Ibtech yazılım birimi, tasarım desenleri (Design Patterns), yeniden tasarım yöntemleri ve yazılım metrikleri kullanarak, geliştirdiği tüm uygulamaların daha kolay anlaşılmasını ve sürdürülebilmesini sağlamaktadır.

Month List