Koray Kırdinli

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

Yazılım Metoforları – Code Complete C2

CHAPTER 2

Yazılım Metoforları – Yazılım Geliştirmeyi Daha İyi Anlamak

Yazılım geliştirirken 2 yöntem kullanırırız. Birincisi sezgisel o an ihtiyacımız ne ise onu yaparız ve sezgilerimiz bizi götürür. Diğeri ise algoritma yöntemi ; bu yöntem ile daha once yapılmış bir çözüm var ise onu uygulayarak programlamayı daha kolay ve tahmin edilebilir yapabiliriz. Fakat programlama da hiçbir zaman tek çözüm yoktur bir problem farklı yollarla çözmek mümkündür.Bugüne kadar yazılımla alakalı metoforlar geliştiriciler tarafından ortaya atıldı. Bunlara kısaca değinelim.Metoforların türkçe anlamlı birer isim bulmakta oldukça zorlandım bulamadım da zaten.

 

Yazılım Hattatlığı – Kod Yazma : Çok genel olan bu yaklaşımda yazılım geliştirmede olağan harfler yazmayı öneriyor.Kalemi elinize alırsınız ve kağıda baştan sona yaarsınız. Planlamaya ihtiyaç yoktur ve ne isterseniz onu yazarsınız.

 

Yazılım Tarımı : Sistemi Büyütmek : Bazı geliştiriciler yazılımı bir bitkyi büyütmeye benzetir.Kodun bir parçası dizayn edilir , kodlanır ve test edilir ve siteme ilave edilir.Küçük parçalara bölündüğü için olası sorular büyümeden önlenir.

Bu metoforun kötü tarafı yazılımın nasıl geliştirileceği ile ilgili direk bir kontrolün bulunmamasıdır.

 

Yazılım İstiridye Tarımı – Sisteme İlave Etme:

Bir önceki metofora benzer bir yapıya sahip ancak daha anlaşılır bir görüntüye sahip.Burada büyüme harici bir ekleme veya içerme yapılarak gerçekleşir. İlk önce sistemin çalışabilmesi için en basit versiyon yazılır ve iterative olarak  geliştirilir. İlk önce gerçek data ile ilgilenilmez sadece aptal sınıflar yazılır ve iskelet oluşturulur.

 

Yazılım İnşası:

Daha önceki metoforlardan daha yararlıdır.Planlama , hazırlık ve çalıştırma ayrı prosesler olarak görür. Yazılım geliştirmenin bir bina inşa etmeden farkı yoktur. Eğer baştan binada kapı koymayı unutursanız proje başarısız olacaktır.

 

Yazılım Teknikleri Uygulama – Zeki Araç Kutusu:

Programlamada iyi olabilmek için yazılımcının bir araç kutusu olmalıdır ve bu araçları yeri ve zamanı geldiğinde etkili kullanmasını bilmelidir.

 

Metoforların Birleşimi:

Metoforlar algoritmik olmaktan çok sezgiseldir ve birbirlerinden ayırmak zordur.Bir yazılım geliştirirken bumetoforların birleşimi projenize uygulayabilirsiniz.

 

ANAHTAR NOKTALAR:

Metaforlar algoritmik değil sezgiseldir

Metoforlar yazılım geliştirme prosesini diğer bağlantılı bileşenlerle birlikte daha iyi anlamanıza yardımcıolur.

En iyi metaphor projeye uygun olan metoforların birleşimidir.

Ekim 23, 2009 Posted by | Yazılım | , , | Yorum bırakın

Yazılım İnşaası (Kodlama) – Code Complete C1

Arkadaşlar bu aralar Steve McConnell ‘ın Code Complete Second Edition ı okuyorum ve okuduklarımdan alığım notları ara ara sizlerle paylaşacağım.

CHAPTER 1

Yazılım İnşaası Nedir ? (Construction) Kodlama

Yazılım geliştirmek karmaşık bir takım işlemlerden oluşmaktadır. Araştırmalara göre bunları şu şekilde sıralayalım :

–          Problemin Belirlenmesi

–          İsterlerin Belirlenmesi

–          İnşa Planı (Kodlama)

–          Yazılımın mimarisi veya üst seviye dizayn

–          Detaylı Dizayn

–          Kodlama ve hata ayıklama

–          Birim testler

–          Entegrasyon Testleri

–          Entegrasyon

–          Sistem Testleri

–          Bakım ve Düzeltmeler

 

Yukardaki listenin detaylarına inecek olursak : Aşağıdaki liste yazılım inşaasının kapsadıklarıdır. Yönetim , ister analizi ,yazılım mimarisi ,UI design , sistem testi  ve Bakım bu katogori altında toplanamaz.

–          Zemini ne kadar doğru hazırlarsak kodumuz o kadar iyi olur.

–          Kodun nasıl test edileceğini belirlemek

–          Sınıfları ve içindeki metodları tasarlamak ve yazmak

–          Değişkenleri ve sabitleri tanımlamak

–          Kodun birim ve entegrasyon testlerini yazmak

–          Diğer takım arkadaşları ile birlikte alt seviye dizaynı kontrol etmek

–          Kodu parlatmak J ve yorum satırlarını düzenlemek

–          Harici kullanılan bileşenleri entegre etmek

–          Daha az kaynak tüketerek kodu daha hızlı çalıştırmak

Kodlamaya başlanmadan once isterler net olarak belirlenmeli ve yazılımın tasarımı doğru bir şekilde yapılmalıdır ancak günümüz projelerinin çoğunda direk kolamaya geçildiği için zamanında bitmeyen bir çok yazılım projesiyle karşılaşılmaktadır. Çoğu zaman test işlemi de hatalı kodlamalar çok olduğundan atlanabilmektedir. Kodlama genel sürecin projenin büyüklüğüne göre %30 ile 80 arasında bir zaman alabilmektedir.

Ekim 22, 2009 Posted by | Yazılım | , , , , , | Yorum bırakın

Bilgisayar Mühendisliği Sıkıcı Bir İş mi?

Arkadaşlar bu yazımızda bilgisayar mühendisliğinin nasıl bir meslek olduğu ve nasıl olması gerektiğini kendi cümlelerimle anlatma daha doğrusu içimi dökmeye çalışacağım.
Aslına bakarsınız mesleğe yeni başladığınızda o kadar eğlenceli bir iş ki sürekli yeni şeyler öğreniyorsunuz ve sürekli bir heyecan yaşıyorsunuz. Beyinler tabiki ilk etapta taze olduğundan her gelen bilgi fotoğraf çeker gibi hafıya alınıyor. Sürekli kod yazmak birşeyler okumak yeni şeyler öğrenmek için can atıyorsunuz. Dışarıdan size ne manyak adam kafayı yiyecek diyorlar ancak tabi bu sizin umrunuzda değil çünkü yaptığınız işi çok seviyor ve mesleğinizde ilerlemek için ne gerekirse yapmaya hazırsınız ve yapıyorsunuz.
Ancak Türkiye şartlarında kendinizi geliştirme imkanınız bir süre sonra yavaşlayabiliyor. Tabi ki bu çalışmakta olduğunuz firma kültürüyle de alakalı. Eğer firmanız çalışanını kendisini geliştirmek için fırsatları önünüze açmıyorsa , zaman zaman eğitim ve bilgilendirme toplantıları yapmıyorsa ve eğer siz de kendinizi akışa bırakırsanız kendinizi bir rutin içerisinde buluveriyorsunuz. İşte bilgisayar mühendisinin bana göre başına gelebilecek en kötü şey.
Bizler şartlar ne olursa olsun kendimizi sürekli güncel tutmalıyız aksi halde bir rutin içerisine girer ve yaptığımız işten haz almamaya başlayabiliriz. Durum böyle olunca da bu sosyal hayatımıza da yansır çünkü günümüzün büyük bölümü zaten işte geçiyor. İşinde huzurlu olmayan birisinin sosyal hayatında huzurlu olması beklenemez.
İşin bir de diğer boyutu öğrenilecek teknolojilerin fazlalığı da bir buhrana yol açabilir. Kendinizi yetersiz hissedip hepsini öğrenmem lazım dediğinizde bir anda kaos ortamı oluşturmanız kaçınılmaz. Bunun için bizler plan yapmayı , organize etmeyi , zamanı efektif kullanmayı herkesten daha iyi öğrenmeliyiz. Kendimden bir örnek vereyim eğer planımı yapıp bir yapılacaklar listesi oluşturup sırayla her bir işi bitirip listeden çıkardığımda kendimi daha iyi ve verimli hissediyorum.
Tabiki her zaman plan yapmakta mümkün olmayabiliyor ancak mümkün oluğu kadar hem iş hem de sosyal hayatımızı planlamak gerçekten önemlidir.
Günümüz şartlarında en önemli şey zaman. Zamanı yetirebilmek ve keyifli geçirebilmek çok önemli çünkü zaman çok hızlı akıyor ve bizim bir şekilde onu yakalamamız ve yeri geldiğinde kontrol altına alabilmemiz lazım.

Ekim 9, 2009 Posted by | Yaşam | , , , | 6 Yorum