Bir inşaat mühendisi bina inşaatına pat diye başlamaz. Belki beyninde hiç yardımsız bina inşaatı yapacak kadar bilgi vardır ama yine de bina tasarlama konusunda eğitim almış deneyimli mimarlardan yardım almak daha akıllıcadır. Mimar ile inşaat mühendisi arasında belki hiç konuşma dahi olmayacaktır ama mühendisin yaptığı bina tam olarak mimarın düşündüğü şekilde olacaktır. Aradaki iletişimi proje denilen araç sağlayacaktır. O projenin üzerine konulan her işaretin bir anlamı, her sayının açıkladığı bir bilgi vardır. Alman mühendis Japon mimarın çizdiği projeyi eksiksiz yapabilir çünkü konuştukları dil inşaatcadır. Bir inşaat projesindeki şekillerin neyi ifade ettiğini bilen bir kişi o inşaatla ilgili her detayı görebilir. Hatta bu inşaata ne kadar malzeme gideceğini dahi hesaplayabilir. İnşaatın maliyetini çıkarabilir. Bir bina tasarımını hiç şekil kullanmadan sadece yazıyla ifade etmeye çalışsak çok şey yazmak gerekir. Hatta bunu da yapmadan sadece anlatarak çözmeye çalışsak ne kadar başarılı olabiliriz? Bazen basit bir şekil sayfalarca dökümandan daha açıklayıcı olabilir.
Programımız nesne tabanlı bir dille yazılmıyorsa da kullanabileceğimiz UML diyagramları vardır ama asıl olarak UML nesne tabanlı diller düşünülerek tasarlanmıştır. Eğer nesne tabanlı programlama konusunda yeterince bilgili değilsek önce o konuyu öğrenmemiz daha faydalı olacaktır. UML ile ilgili Martin Fowler'in UML Distilled kitabının 3. sürümünü önerebilirim. Aynı kitabın 2. sürümünün Türkçe çevirisi de var. Ancak Türkçe kaynak aranıyorsa Bora Güngören'in UML ile Nesne Tabanlı Çözümleme ve Tasarım kitabı bence daha derli toplu ve faydalı bir kitap. UML dilinin kullanımının yanı sıra yazılım mühendisliğinin önemli ve genellikle zor anlaşılan konularından da işin pratiğine yönelik eğlenceli örneklerle bahsetmiş. Ayrıca nesne yönelimli programlama (OOP) bilmeyenleri de düşünerek kitaba nesne yönelimli programlamaya giriş yaparak başlamış.
Hazır yeri gelmişken bir konuya daha değineyim. Yukarıda yazılım üretimi döngüsünü anlatırken bahsettiğim gibi, program yazma işi sırf kodlama işi değil. İşin mühendisliği ve sosyal bir boyutu da var. Kodlama aşaması, üzerinde uzmanlaşılması gereken temel aşamalardan sadece birisi. İşini ciddi yapan yazılımevlerini bir kenara ayırırsak genelde işin kodlama haricindeki kısmı önemsenmez veya çok yüzeysel uygulanır. Bunun en büyük nedeni iyi kodcunun iyi program yazmak için yeterli olacağıyla ilgili yanlış bir görüş olması ve eğitim eksikliği. Bunları kitap okumadan öğrenmek pek mümkün değil. Bu konularda Türkçe kitap pek yok. Genellikle program yazarken kullandığımız araçları öğreten kitaplar yazılmış. Bunların birçoğu da çeviri. Kodlama bilgisi elbette gerekli ancak analiz, tasarım, test, üretim metodolojileri, kalite güvence gibi konularla ilgili daha çok Türkçe kitap görmek istiyorum. Tabiiki bize düşen orjinal kitap satın alarak yazarlara destek olmak ve yenilerinin yazılması için bu potansiyele sahip kişileri teşfik etmek.



