FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Üniversite Adayları İçin Bilgisayar Mühendisliği Bilgisayar Mühendisliği Bölümü 2012 0 Fatih İstanbul FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Önsöz Bu çalışma; üniversite adaylarına meslek seçiminde yardımcı olmak amacıyla Bilgisayar Mühendisliği Bölümünü tanıtmayı amaçlamaktadır. Bir meslek seçerken birçok soru öne çıkar. Bu çalışmada; teknik ayrıntılara boğulmadan, basit, açık ve şekillere dayalı bir anlatım yöntemiyle aşağıdaki sorulara cevap aramaktadır. Bilgisayar Mühendisliği nedir? Niçin Bilgisayar Mühendisi olmalıyım? Nasıl Bilgisayar Mühendisi olunur? İş imkânları nelerdir? Zorlukları nelerdir? FATİH SULTAN MEHMET VAKIF Ü NİVERSİTESİ MÜHENDİSLİK MİMARLIK FAKÜLTESİ BİLGİSAYAR M ÜHENDİSLİĞİ B ÖLÜMÜ Bu belge bütünleşik olarak özgürce dağıtılabilir ve çoğaltılabilir. Ancak belge içerisindeki bilgiler sadece kaynak belirtmek suretiyle kullanılabilir. FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ İçindekiler Önsöz ....................................................................................................................................................... 2 Bilgisayar Mühendisliği Nedir? ................................................................................................................ 1 Yazılım.................................................................................................................................................. 2 Yazılım Mimarisi ve Yazılımın Çalışması........................................................................................... 3 Bilişim Sistemleri ve Yazılım geliştirme Süreci ..................................................................................... 4 Planlama .......................................................................................................................................... 5 Kapsam Belirleme ............................................................................................................................ 5 İhtiyaç Analizi................................................................................................................................... 6 Tasarım ............................................................................................................................................ 6 Gerçekleştirilme .............................................................................................................................. 7 Test .................................................................................................................................................. 7 Devreye Alma .................................................................................................................................. 8 Niçin Bilgisayar Mühendisliği? ................................................................................................................. 9 Teknolojinin merkezinde olmak .......................................................................................................... 9 Çok Geniş İş İmkânı.............................................................................................................................. 9 Problem çözme yeteneğini geliştirmek ............................................................................................... 9 İnsanlığa Hizmet Eden Gelişmelere Katkı Sağlamak ............................................................................ 9 Düşük Ar-GE Maliyetleri: Kendi Şirketini açabilmek ............................................................................ 9 Nasıl Bilgisayar Mühendisi Olunur? ....................................................................................................... 10 İş İmkânları ............................................................................................................................................ 11 Yazılım ve ARGE Şirketleri .............................................................................................................. 11 Kurum İçi yazılım Evleri.................................................................................................................. 11 Akademik ve Bilimsel Çalışmalar ................................................................................................... 11 Çalışılabilecek Pozisyonlar ................................................................................................................. 12 Yazılım Geliştirici............................................................................................................................ 12 Yazılım Mimarı ............................................................................................................................... 12 Kalite/Test Mühendisi ................................................................................................................... 13 Proje Yöneticisi .............................................................................................................................. 13 Sistem Analist ................................................................................................................................ 13 Ara Yüz Geliştirici ........................................................................................................................... 13 FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Sistem Uzmanı ............................................................................................................................... 14 Veritabanı Yöneticisi ...................................................................................................................... 14 Zorluklar ................................................................................................................................................ 15 Bilgisayar Mühendisli rutin bir masa başı işi değildir! ....................................................................... 15 Yazılım ürünleri karmaşıktır ............................................................................................................... 15 Bilgisayar Mühendisliği çok fazla alana dallanmıştır ......................................................................... 15 Yazılım hayata ve insana hitap eder. ................................................................................................. 16 Çalışma şartları özellikle ülkemizde ağırdır ....................................................................................... 16 Sonsöz .................................................................................................................................................... 17 FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Bilgisayar Mühendisliği Nedir? Hayatımızın birçok alanında bilişim sistemleriyle iç içe yaşıyoruz. İnternetten cep telefonlarına, kurumsal sistemlerden uzaya giden roketlerdeki kontrol sistemlerine kadar her alanda bu sistemler kullanılıyor. Nerdeyse her insan yazılım kullanıcısı. Bilişim sistemleri temelde iki altyapıdan oluşur: Yazılım ve Donanım (Şekil 1) Son Kullanıcılar Bilgisayar Ağları, İnternet Yazılım katmanı İşletim Sistemi Donanım katmanı Şekil 1 Bilişim Sistemleri Yazılım; temel olarak kodlardan oluşan bir üründür. Donanım; yazılımın çalışması için gerekli masaüstü-dizüstü bilgisayar, cep telefonu ve diğer gibi makine altyapısıdır. Yazılım, donanım üzerinde çalışır ve müşterinin beklediği hizmetler genellikle yazılım ara yüzleriyle yürütülür. Bilgisayar Mühendisliği, bilimi ve teknolojiyi kullanarak, yazılım ve donanımların birlikte çalıştıkları modern sistemlerin analiz, tasarım ve gerçekleştirilmesine yönelik çalışan mühendislik disiplinidir [ACM-2004]. Bilgisayar Mühendisleri özellikle yazılım kısmına yönelik çalışır. Donanım kısmı elektronik mühendisleriyle birlikte tasarlanır. Bir bilgi işlem projesi iki temel konunun bilinmesine ihtiyaç duyar. Ürün ve süreç Ürün; geliştirilecek sistemin bileşenleri, tasarım yöntemleri, geliştirme ortamı, yazılım dilleri gibi bilgiler bilinmesi gereken önemli bilgilerdir. Ürünü geliştirmekte kullanılan süreç; geliştirme aşamalarını ve aşamalar arası bağlantıların nasıl yapılacağını belirler. Ülkemizde Bilgisayar Mühendisliği eğitimi genellikle ürün odaklıdır. Oysa süreç de en az ürün kadar önemlidir. 1 FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Yazılım Yazılım; kişilerin ihtiyaçlarının bilgisayar ortamındaki yansımasıdır. Yazılımcılar; gerçek hayatta olanları anlar, yazılım modelini tasarlar ve gerçekleştirir(kodlar). Aşağıda gerçek hayattaki bir nesnenin(araba) yazılıma nasıl gömüldüğü gösterilmiştir(Şekil 2). (Kodlamalar java dili yazım biçimindedir.) Nense public class Araba { protected String renk; public String getRenk() { return renk; Özellik } public void setRenk(String renk) { this.renk = renk; } İşlev, Metot public void hizlan(){ } } Şekil 2 Yazılım ve gerçek hayat FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Yazılım Mimarisi ve Yazılımın Çalışması Sosyal medyada arkadaş eklerken veya internette yeni bir ürün sipariş ederken acaba arka planda neler oluyor? Her ikisinde de ekle butonuna basılıyor. Kullandığınız yazılımlarda ne kadar çok benzer iş yapıldığını düşünün. Aslında arka plandaki işleyiş de birbirine benzemektedir. Mimari, yazılım yapısının üst düzey bir resmidir. Günümüzde, geliştirilen yazılımlarda genellikle üç veya N katmanlı mimari kullanılır (Şekil 3). Bu mimaride kullanıcılar, ekran ve rapor gibi ara yüzler vasıtasıyla sisteme bilgi girer, değiştirir, gözlem ve analiz yapar. Uygulama sunucuları, yazılımların çalıştırılması ve yazılımlarda ortak olan işlemlerle ilgili gerekli altyapıyı sağlar. Veritabanları da veri saklama ve erişim amaçlı kullanılır. Kullanıcı Ara yüzü Adı Soyadı Sicil No … Ekle Kaydet 4 1 Uygulama Sunucusu 3 2 Veritabanı Veri Saklama Ortamı Şekil-3. Günümüzdeki yazılım geliştirme mimarisi ve yazılımın çalışması Yazılımın Çalışması 1. Kaydet gibi bir butona basılarak sistemde bir olay tetiklenmesi: Algoritmalar, kurallar ve ilişkiler ilgili kodların işletilmesi 2. Veritabanına ekleme, silme ve kaydetme gibi işlemlerin yapılması 3. Yapılan işlemin sonucunun döndürülmesi 4. Sonucun yorumlanması ve son kullanıcıya “Başarıyla kaydedildi gibi bir mesaj verilmesi” FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Bilişim Sistemleri ve Yazılım geliştirme Süreci Bilişim sistemleri geliştirme tek adımlık bir işlem değildir, adım adım ilerleyen ve bazen de geriye dönüşler olan bir süreç sonunda gerçekleşir(Şekil 4). Sürecin başında, projenin genel hedefi ve süresi özet bir plan çerçevesinde belirlenir. Sonra kullanıcı ihtiyaçları ayrıntılı analiz edilir. Takip eden tasarım aşamasında, analiz edilen ihtiyaçların nasıl karşılanacağının modeli oluşturulur. Bu model prototipler vasıtasıyla son kullanıcılara gösterilip fikirleri alınarak olgunlaştırılıt. Gerçekleştirme aşamasında nesne, ekran ve rapor gibi yapıların kodlaması yapılır. Yapılanlar test edilir, hatalar düzeltilir ve test sonucu başarılı olan proje devreye alınır. Devreye alındıktan sonra gelen istekler için proje bakım çalışmaları devam eder. Başlangıç ve genel planlama İhtiyaç Analizi Tasarım Gerçekleştirme Test Devreye alma Şekil 4 Sistem(yazılım) Geliştirme Süreci Yazılım geliştirme ekibinin her üyesi süreçteki yerini bilmelidir. Çünkü tüm uzmanlıklar firmaların yazılım geliştirme işlemi için kullandıkları süreçler içinde anlam kazanır. Bilgisayar Mühendisleri genellikle sürece önce geliştirme aşamasından dahil olur. Çünkü kodlama işin mutfağıdır ve diğer işlemlerin de hedefidir. Kodlama diğer işlemler için de bir temel oluşturur. Bilgisayar Mühendisleri kodlama konusunda tecrübe kazandıktan sonra mimari tasarım, takım lideri ve proje yöneticisi gibi daha fazla uzmanlık isteyen görevlere doğru kayar. Kodlama analizin ve tasarımın bir neticesi olduğundan Bilgisayar Mühendisleri özellikle sistem analiz ve tasarım yeteneklerini geliştirmek için ilk günden çalışmaya başlamalıdır. FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Planlama Planlama; genel olarak projedeki hedeflerine ulaşmak için, belirlenmiş süre ve mali kısıtlarını dikkate alarak, izlenecek yöntemin, yapılacakların, kullanılacak kaynakların ve süre takvimlerinin belirlenmesidir (Şekil 5) . Kapsam (Kalite) Kaynaklar(Maliyet) Kısıtlar (Zaman) Şekil 5 Proje yönetim üçgeni Kapsam Belirleme İhtiyaçlar sınırsız ancak imkânlar sınırlıdır. Yapılacak projede hangi ihtiyaçlara cevap verileceği seçilmelidir. Yapılacakları belirlemek genelde kolaydır yapılmayacakları belirlemek daha zor olabilir (Şekil 6). İhtiyaç: Personel eski işyerleri takibi İhtiyaç: Personel nüfus bilgileri takibi İhtiyaç: Unvan bilgileri takibi İhtiyaç: Personel çocuk bilgileri takibi İhtiyaç: Personel hobilerinin takibi İhtiyaç: Personel arkadaşlarının takibi Şekil 6 Kapsam belirleme FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ İhtiyaç Analizi İhtiyaç analizi, müşterilerin ihtiyaçlarının ve sistemden beklentilerinin ayrıntılı bir şekilde tanımlanmasıdır (Şekil 7). İhtiyaç veya beklenti; kullanıcılar tarafından sistemin gerçekleştirmesi istenen temel görev veya fonksiyondur. İhtiyaç: Personel nüfus bilgileri takibi İhtiyaç: Unvan bilgileri takibi İhtiyaç: Maaş hesaplam İhtiyaç: Personel çocuk bilgileri takibi İhtiyaç: Personel nüfus bilgileri takibi Bilgiler: Adı, Soyadı, baba adı, anne adı, doğum yeri … Kurallar: Doğum yeri Türkiye ise sadece Türkiye illeri seçilebilir. Şekil 7 İhtiyaç Analizi Tasarım Tasarım, yapılan analizin yazılım geliştirme araçlarının imkân, kural ve sınırları dâhilinde geliştirilecek yazılım üst seviye modeline dönüştürülmesi işlemidir (Şekil 8). İhtiyaç analizi ve tasarım uygulamada sık sık tek bir adımda gerçekleştirilmektedir. Ancak aralarındaki kavramsal farklılıktan dolayı bu çok hatalı sonuçlara yol açar. İhtiyaç analizinde kullanıcı isteklerinin alınmasını ve problemi öğrenmek amaçlanır. Tasarımda ise analiz sonucu ortaya çıkan ihtiyaçların, yazılım geliştirme araçlarına uygun çeşitli seviyelerde modelleri çıkartılır. İhtiyaç analizinde yön ihtiyacı anlamaya, tasarımda ise çözüme dönüktür. Tasarımda sınırlar keskindir. Tasarım Analiz İhtiyaç: Personel nüfus bilgileri takibi İhtiyaç: Unvan bilgileri takibi İhtiyaç: Personel çocuk bilgileri takibi Unvan Unvan_Id Adı Aciklama … Şekil 8 İhtiyaç Analizi ve Tasarım Personel Personel _Id Adı Soyadı … Çocuk Personel_Id ÇocukId … FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Gerçekleştirilme Gerçekleştirme aşamasında, müşteri talepleri için tasarlanan model yazılım geliştirme araçları vasıtasıyla yazılım ürününe dönüştürülür (Şekil 9). Bu aşamada fiziksel veri yapılarının veritabanında oluşturulması, kodların, bileşenlerin, kod kütüphanelerinin, kullanıcı ara yüzü ve raporların yazımı gibi işlemler yapılır. class Personel { … } class Cocuk { Tasarım Unvan Unvan_Id Adı Aciklama … Personel Personel _Id Adı Soyadı … … } Çocuk Personel_Id ÇocukId … class Cocuk { … } Adı Soyadı Sicil No … Ekle Kaydet Şekil 9 Tasarım ve gerçekleştirme Test Test, yapılanların kontrol edilmesidir (Şekil 10). Kontrol iki aşamalıdır. Hedefler ve yapılanlar test edilmelidir. “İstenilenler doğru anlaşılmış mı ?” ve “Yapılanlar doğru çalışıyor mu? ”. Yapılanlar isteği karşılayıp karşılamadığının onaylanması ve düşünülenlerin yapılıp yapılmadığının kontrol edilerek doğrulanması gerekir. Şekil 10 Test: Sağlam olmalı ama yine de bir bakalım! FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Devreye Alma Test aşaması tamamlamasından sonra kullanıcı eğitimleri verilmesi, pilot kurulumlar ve nihai proje kurulu yapılarak proje devreye alınır (Şekil 11). Devreye aldıktan sonra proje destek çalışmaları başlar. Devreye alma ve bakım da oldukça zaman alır. Kendi içlerinde birçok işlemden oluşur. Dolayısıyla bu aşamaların da ayrıntılı planlanması gerekir. Şekil 11 Devreye alma veya kullanmaya başlama FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Niçin Bilgisayar Mühendisliği? Bilgisayar mühendisliğini seçmek için çok fazla sebep var [ACM-web]. Teknolojinin merkezinde olmak Günümüz teknolojisinin merkezi bilişim sistemleri, bilişim sistemlerinin merkezi de yazılımlardır. Yazılım geliştirme bilgisi çevredeki insan ve sistemlerin ihtiyaçları ve çalışma sistemleri hakkında bilgi sahibi olmanın da bir yoludur. Çok Geniş İş İmkânı Günümüzde içerisinde yazılım olmayan hiçbir büyük proje yok! Bilgisayar mühendisleri hemen her kurumda çalışabilen ve her projede ihtiyaç duyulan neredeyse tek mühendisliktir. Birçok araştırma Bilgisayar Mühendisliğine talebin gelecekte de artarak devam edeceğini göstermektedir. ABD İşçi Bakanlığına göre 2008-2020 arasında bilgisayar alanındaki ihtiyaç %17, yazılım alandaki ihtiyaç %28 artacaktır [BLS-2008]. Problem çözme yeteneğini geliştirmek Sürekli yeni zihni keşifler yapmak ve problem çözmek, hayatta karşılaşılan farklı birçok problemin çözümünü de kolaylaştıracaktır. İnsanlığa Hizmet Eden Gelişmelere Katkı Sağlamak Bilgisayar mühendisliği insanlığa faydalı birçok alanın itici gücüdür. Hastalık teşhisi ve tedavisi, eğitimin yaygınlaşması, bilgiye ulaşmayı kolaylaştırmak ve özgür tartışma ortamları bu alanların sadece bir kaçıdır. Düşük Ar-GE Maliyetleri: Kendi Şirketini açabilmek Eşsiz bir fikriniz varsa Araştırma ve Geliştirme için siz, bilgisayarınız ve altyapı yazılımları yeterlidir. Açık kaynak kodlu ve ücretsiz altyapılarla dünya çapında sistemlerin temelini atmak mümkündür. Ülkemizde TÜBİTAK, Avrupa Birliği ve Kalkınma ajansları son yıllarda özellikle bilişim alanındaki eşsiz fikirlere geniş (hibe) kaynaklar sağlamaktadır. FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Nasıl Bilgisayar Mühendisi Olunur? Bir projede istekler, kısıtlar, hedefler, kullanıcı karakteri, yazılım bileşenleri, yazılım dilleri, ekip üyeleri, kurumsal yapılar, iş analiz adımları gibi yüzlerce parametrenin kaç tane kombinasyon oluşturabileceğini bir düşünün. Dolayısıyla her bilişim projesi özel ve benzersiz bir çabadır. Bilişim ve yazılım projeleri, araştırmaya, keşfe ve yeniliğe dayanır. Bu özellikleri sağlayan yeteneklerin bir kısmı doğuştan gelir veya yaşamın ilk kısmında kazanılır [Drucker2006] İyi bir üniversite eğitimi ileriye yönelik temeli kazandırır. Kendisini ve yeteneğini geliştirme yeteneği kazandırır. Ancak unutulmaması gereken en temel hakikat: Kimse sizi bilgisayar mühendisi yapamaz! Ancak kendi iradenizle; düşünerek, araştırarak, keşfederek, çalışarak, danışarak ve bilgi alışverişi yaparak “İyi bir bilgisayar mühendisi olabilirsiniz.” FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ İş İmkânları Bilgisayar Mühendisliği hemen her şirkette iş imkânı olan bir mühendisliktir. Çalışılabilecek şirket ve sahalar; yazılım şirketleri, akademik araştırmalar, telekom şirketleri, kamu kuruluşları, bankalar ve askeri kuruluşlar şeklinde sayılabilir. Bu şirketler kazancı bilişime dayanan ve diğer işlerini yürütmek için bilişimden bir hizmet olarak yararlanan şirketler olarak ikiye ayrılabilir. Yazılım ve ARGE Şirketleri Yazılım ve ARGE şirketleri para kaynakları bilişim proje ve hizmetleri olan şirketlerdir. Bunlar paket yazılım çözümleri geliştiren, şirketlere özel çözüm projeleri yapan, yurtdışı firmaların ürünlerini satan veya danışmanlık hizmetleri veren şirketlerdir. Bir şirket bu faaliyetlerden birkaçını ortak yürütebilir. Yazılım ve ARGE şirketleri teknoloji kullanımı konusunda genellikle öncü rol üstlenir. Birçok şirketin ortak ihtiyacına hitap eden ürünler çıkartırlar. Farklı kurumları tanıma, farklı teknoloji ve projelerde çalışma imkânı sunarlar. Ancak özellikle küçük ölçekli bilgi işlem şirketlerinin birçoğunda mesai saatlerinin çok düzenli olmadığını hatırlatmakta yarar var. Kurum İçi yazılım Evleri Ana parasal kaynakları bilişim projeleri olmayan, kurumun ana amacının bilişim projeleriyle desteklendiği şirketlerdir. Telekom şirketleri, kamu kuruluşları, bankalar, holdingler, fabrika ve diğer şirketler kendi bilgi işlem ekiplerini kurum içinde oluşturma yoluna gitmektedir. Kurum içi yazılım evleri, kurumun ana işi bilgi işlem olmasa da birçok teknolojiye ev sahipliği yapar. Büyük kurumsal yapıları tanıma ve bunlar için çözüm üretmek çok önemli tecrübelerdir. Bu ortamlarda çalışma saatleri daha düzenlidir. Ancak kişinin kendisini geliştirme imkânı bazı kurumlarda biraz daha kısıtlıdır denebilir. Çünkü kurumun ana amacı bilgi işlem değilse çalışmaların belli süre sonra rutinleşmesi tehlikesi vardır. Akademik ve Bilimsel Çalışmalar Bilişim projeleri, diğer bilimsel çalışmalara da altyapı sağlar. Bilgiye ulaşmayı kolaylaştıran sistemler, yapay sinir ağları, biyomedikal çalışmaları, robot araştırmaları, eğitim, genetik mühendisliği bu sahalardan birkaçıdır. Ülkemizde artan üniversite sayısı önemli bir akademisyen açığı ortaya çıkarmıştır. Görece yeni bir saha olan bilişim için bu açık daha da büyüktür. Teşvik ve desteklerle, akademisyenlerin ve özel sektörün birlikte çalıştıkları proje sayıları da hızla artmaktadır. FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Çalışılabilecek Pozisyonlar Bir bilgi işlem projesinde birçok farklı ve özelleşmiş görev bulunur (Şekil 12). İdari Teknik Yazılım Ekibi: Sistem analiz, yazılım mimarı, yazılım geliştirici, test mühendisi, Üst Yönetim Proje Yönetimi: Proje Yöneticisi, Takım Lideri, İdari Yönetim Müşteriler Altyapı Ekibi: Sistem uzmanı, veritabanı yöneticisi Danışman ve Uzmanlar Son Kullanıcılar Diğer Kişiler Şekil 12 Bilişim projesinde çalışma yapısı Yazılım Geliştirici Yazılımın gerçekleştirilmesinden sorumludur. Genellikle programcı olarak anılır. Gerçekleştirme kodlama, ekran ve raporların yazılması gibi faaliyetleri yapar. Gerçekleştirme yapılabilmesi için kodlama seviyesinde gerekli ayrıntılı tasarımların ve modellerin oluşturulması da yazılımcı sorumluluğundadır. Örneğin yapılacak bir sıralama işleminde hangi sıralama algoritmasının kullanılacağını yazılımcı seçer. Bilgisayar mühendisleri piyasada en çok yazılım geliştirici pozisyonunda çalışmaktadır! Yazılım Mimarı Yazılım mimarı, kullanıcı ihtiyaçlarını karşılamak için nasıl bir yazılım mimarisi kullanılacağını belirler. Yazılım mimarisi yazılımın üst düzey bir modelidir. Yazılım mimarisi ayrıntılı tasarımın nasıl olacağı konusunda da yol gösterir. Son yıllarda önemi artımıştır. Analiz, tasarım ve gerçekleştirilme aşamalarının birbiriyle tutarlı olabilmesi için yazılımın mimari yapısı doğru kurulmalıdır. Mimarinin belirlenmesi tecrübe gerektirir. Bu yüzden mimarinin konuyla ilgili en tecrübeli kişilerden oluşan çekirdek bir ekip tarafından hazırlanması ve diğer yazılımcıların bunu kullanarak yazılımı gerçekleştirilmesi önerilmektedir[Brooks-1995]. FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Kalite/Test Mühendisi Projenin kullanıcının isteklerini ve teknik gereksinimleri karşılayacak şekilde hatasız geliştirilmesi için gerekli kontrol ve testleri yapmaktan sorumludur. Kalite ve test farklı hedeflere yöneliktir. Kalite, istenilen alanda piyasadaki en iyi özelliklere sahip nitelikli bir ürün çıkarmayı hedeflerken; test, hata bulmaya yöneliktir. Bu yüzden bazı şirketlerde kalite ve test farklı kişiler tarafından yerine getirilebilir. Test ve kalite mühendisliği yeni yeni yaygınlaşan ve gelecek vaat eden bir sahadır. Proje Yöneticisi Projenin istenilen kalitede ve sürede tamamlanması için gerekli planın hazırlanması, plandaki faaliyetlerin koordinasyonu, görevlere uygun kişilerin atanması ve ekibinin plan uygun hareket etmesinden sorumludur. Projenin başarı ve başarısızlığı durumunda hesap verecek ilk kişidir. Kitabın tamamında görev ve sorumlulukları ayrıntılı olarak tartışılan kişi proje yöneticisidir. Üst yöneticiler ve müşteriler gibi teknik olmayan kişileri ve bu kişilerin yazılım ekibiyle çalışmalarını da proje yöneticisi koordine eder. Proje yöneticisi, projenin sağlıklı yürütülebilmesi ve izlenebilmesi için gerekli standart belirleme, belgeleme ve teknik altyapı seçimi gibi önemli kararları alır. Proje yöneticisinin alt seviyedeki işlere sürekli müdahale etmesi, ayrıntılarla uğraşması mümkün ve doğru değildir. Tecrübeniz geliştirdikçe bu göreve namzet olursunuz! Sistem Analist Kullanıcı ihtiyaçlarını tespit etmek, analiz etmek ve belgelemekle sorumludur. Gerçekleştirilen yazılım prototiplerini ve sürümlerini kullanıcılara sunarak geri beslemeleri yazılım ekibine aktarma işlemleri de sistem analistler tarafından yürütülür. Sistem analizi yazılım geliştirme ekibindeki en önemli rollerden birisidir. Kullanıcı ihtiyaçlarını anlamak kullanıcının iş sahasında belli ölçüde tecrübe kazanmayı gerektirebilir. Ara Yüz Geliştirici Kullanıcıyla yazılım arasında ara yüz sağlayan ekranların tasarımından sorumludur. Özellikle İnternet tabanlı yazılım geliştirme işleminde, kodlama ve kullanıcı ara yüz geliştirme şeklinde iki temel görev belirginleşmiştir. Burada ara yüz geliştirici ekranın grafik tasarımından ve özellikle de arayüzlerin görsel güzelliğinden sorumludur. Elbette arka plandaki kodlarla ekranlardaki görsel işlevler bütünleşik ve tutarlı olmalıdır. Bunu da grafik tasarımcıyla kodlayıcı ortak standartlara dayalı çalışarak sağlarlar. Ara yüz geliştirme faaliyetleri genellikle meslek yüksekokul mezunu programcılarla yürütülmektedir. FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Sistem Uzmanı Bir bilişim sisteminin sağlıklı çalışması; işletim sistemi, sunucu ve ağ altyapılarının sağlıklı kurulmasına bağlıdır. Sistem uzmanları donanımlar üzerine işletim sistemi, uygulama sunucusu, ağ protokolleri gibi yazılımların kurulumu, izlenmesini, en iyi performans için ayarlanması, yedeklenmesi, sürüm geçişi gibi görevleri yaparlar. Bu uzmanlık ağ uzmanı ve işletim istemi uzmanı gibi alt alanlara ayrılmaktadır. Veritabanı Yöneticisi Hemen her kurum verilerini veritabanlarında saklamaktadır. Veritabanı yöneticileri kurumsal veritabanlarının kurulumu, en iyi çalışacak şekilde ayarlanması, çıkan problemlerin çözümü, sistemlerin yedeklenmesi ve afet durumları için önlem alınması gibi işlemlerden sorumludur. Verilerin önemi bu görevi kritik hale getirmektedir. Sistem uzmanı ve veritabanı uzmanı görevleri birçok bilişim projesine hizmet verdiği ve kurumsal süreklik için kesinlikle gerekli olduğundan çok kritiktir. Mali kazançları aynı tecrübedeki bir yazılımcı geliştiriciden daha çok olabilir. Ancak bu görevler daha rutin, araştırma ve kariyer imkânları daha kısıtlıdır. Bu uzmanların sistemin daha az yoğun olduğu gece saatleri ve tatillerde sıklıkla mesai yaptıkları da unutulmamalıdır. Sistem kesintilerine karşı telefonları 7x24 açıktır. Her an çağrılma ihtimalinin nasıl bir psikoloji oluşturduğunu hayal ediniz! FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Zorluklar ve Çözümleri Bilgisayar mühendisliğinin olumlu yanları çok. Ancak her şey güllük gülistanlık değil. Doğru meslek seçimi yapmak ancak zorlukların da farkında olmakla mümkün! Zorlukları yenmenin ilk basamağı onların farklında olmaktır! Bilgisayar Mühendisli rutin bir masa başı işi değildir! Neredeyse her gün yeni bir teknolojik ürününü piyasaya çıkıyor. Bilgisayar mühendisleri sürekli kendilerini güncellemelidir. Temel konuları çok iyi bilmek, değişime açık olmak ve sürekli kendini geliştirmek bir Bilgisayar Mühendisinin temel ilkesi olmalıdır. Yazılım ürünleri karmaşıktır Yazılım, çok sayıda bileşenin ahenkli çalışmasını gerektiren bir üründür. Orta ölçekli bir projede bile binlerce satır kod, onlarca ekran, rapor ve birden fazla teknoloji bütünleşik çalışmalıdır (Şekil 13). Adı Soyadı Sicil No … Ekle Kaydet Veritabanı Şekil 13 Yazılım Bileşenleri arası ilişkiler Bilgisayar Mühendisliği çok fazla alana dallanmıştır Bilgisayar mühendisliği ve yazılım o kadar farklı alana dallanmıştır ki temel eğitim olarak ne verileceği tartışma konusu olmaktadır. Kurumsal yazılımlar, mobil yazılımlar, oyun, biyomedikal, yapay sinir ağları ve gömülü sistemler bilgisayar mühendisliğinin alt dallarının sadece birkaçıdır. Bölümün adı bile; bilgisayar bilimleri(computer science), bilgisayar mühendisliği(computer engineering), yazılım mühendisliği (software engineering) gibi farklı şekillerde belirtilmektedir. FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Yazılım hayata ve insana hitap eder. İnsani ilişkilerdeki tüm zorluklar yazılıma da taşınır. Sosyal problemlerin nasıl kesin çözümleri yoksa yazılım alanında da kullanıcı memnuniyeti doğrudan ölçülemez. Birileri memnunken aynı ekrana diğer kullanıcılar çok kötü diyebilir (Şekil 14). Yazılım projelerinde sürekli değişime ve son dakika taleplerine hazır olmanız gerekir. Kanaatimce, bu ekran çok güzel olmuş Kanaatimce, bu ekran güzel ama işlevsel değil Kanaatimce, bu ekran çok kötü olmuş Personel Müdürü Yazılım Ekibi Genel Müdür Son Kullanıcı Başka bir son kullanıcı Kanaatimce, bu ekran daha güzel olabilir Şekil 14 Kişisel kanaatler ve yazılım projeleri Bilgisayar Mühendisi olursanız konu komşu ve eş dostun çöken bilgisayarı, yeni aldığı modeminin kurulumu işlerini de yapmanız da gerekebilmektedir. Problemleri çözebilirseniz ne ala. Çözemezsiniz mühendisliğiniz kuşku götürür! Çalışma şartları özellikle ülkemizde ağırdır Yazılım ürünü geliştirme süreci kolayca ölçülemez. Bu yüzden aşırı iyimser ve kısa planlama sıklıkla görülür. Planlama hatalarını geliştirme ekibinin fazla mesai yaparak gidermesi sıklıkla istenir. Maalesef bilgisayar mühendisliği mesai dışı çalışmanın özellikle de kurumsal yapısı oturmamış şirketlerde sıklıkla görüldüğü bir alandır. ZORLUKLARI YENMEK İyi bir bilgisayar mühendisi olmak zorlukları yenmenin ilk basamağıdır. Temel alanları çok iyi bilirseniz yenilikleri anlamanız kolaylaşır. Kendinizi geliştirmeyi severseniz yenilikler ve yeni alanlar sizin için fırsattır. Birlikte çalışmayı severseniz insanlarla ekip ortamında birlikte çalışmak sizi mutlu eder. Sistemli çalışırsanız plansızlık sizi daha az etkiler. FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Sonsöz BİLGİSAYAR MÜHENDİSLİĞİNDE KEŞFEDİLECEK ALANLAR VE DAHA ÖNCE YAPILMAMIŞ PROJELER SİZ GENÇLERİ BEKLİYOR . GELİN BİRLİKTE BİLGİSAYAR MÜHENDİSLİĞİNİ KEŞFEDELİM ! FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ MÜHENDİSLİK MİMARLIK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ Kaynaklar ACM-web: http://computingcareers.acm.org/?page_id=4 ACM-2004: Computer Engineering, 2004, Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering BLS-2008: Employment by industry, occupation, and percent distribution,2008 and projected 2018, Biomedical Engineers, Bureau of labor statistics ftp://ftp.bls.gov/pub/special.requests/ep/indocc.matrix/occ_pdf/occupations.xls Brooks-1995: Brooks F.P., The MythicalManMonth, Essays on Software Engineering, ISBN-10: 0201835959, Addison Wesley, 1995 Drucker-2006: Drucker P.F., Klasik Drucker, Bahçeşehir Üniversitesi Yayınları, ISBN: 978-9944186-47-6, 2006