Üniversite Adayları için Bilgisayar Mühendisliği
Fatih Sultan Mehmet Vakıf Üniversitesi
Mühendislik-Mimarlık Fakültesi
Bilgisayar Mühendisliği Bölümü
Bu çalışmanın üniversite adaylarının doğru seçim yapmasında faydalı olması temennisiyle.
1. FATİH SULTAN MEHMET VAKIF ÜNİVERSİTESİ
Üniversite Adayları için
Bilgisayar Mühendisliği
MÜHENDİSLİK-MİMARLIK FAKÜLTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
HAZIRLAYAN: YRD. DOÇ. DR. ALİ NİZAM
HALİÇ YERLEŞKESİ
İSTANBUL – 2012
2. Meslek Seçiminde
Cevap Bekleyen Sorular
• Bilgisayar Mühendisliği nedir?
• Niçin Bilgisayar Mühendisi olmalıyım?
• Nasıl Bilgisayar Mühendisi olunur?
• İş imkânları?
• Zorluklar ve Çözümler?
Bu sunumun her hakkı Fatih Sultan Mehmet Vakıf Üniversitesine aittir. Sunum, bütünlüğü bozulmamak kaydıyla özgürce paylaşılabilir.
Ancak bir kısmı veya tamamı referans verilmeden kopyalanamaz.
3. Bilgisayar Mühendisliği Nedir ?
• 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 mühendislik
disiplinidir 1.
• Çalışma alanı özellikle yazılım geliştirmedir.
1 - ACM-2004: Computer Engineering, Curriculum Guidelines for Undergraduate Degree Programs in Computer Engineering
4. Bilgisayar Mühendisliği Nedir ?
Bilgisayar Mühendisinin Sahip Olması Gereken
İki Temel Bilgi
• Ürün bilgisi
• Süreç bilgisi
5. Bilgisayar Mühendisliği Nedir ?
Ürün Bilgisi
• Geliştirilecek sistemin bileşenleri, tasarım
yöntemleri, geliştirme ortamı, yazılım
dilleri, çalışacağı donanım gibi bilgilerdir.
• Yazılım; kişilerin ve kurumların ihtiyaçlarının
bilgisayar ortamındaki kodlara yansımasıdır.
• Yazılımcı; gerçek hayatta olanları anlar, yazılım
modelini tasarlar ve gerçekleştirir(kodlar).
• Donanım; yazılımların üzerinde çalıştığı
bilgisayar, sunucu, cep telefonu gibi aygıtlardır.
6. Bilgisayar Mühendisliği Nedir ?
Bilişim Sistemleri: Bilişim sistemleri yazılım ve donanım bileşiminden
oluşur. Yazılım ve donanım arasında işletim sistemleri, yazılımla son
kullanıcı ve diğer bilişim sistemleri arasında bilgisayar ağları hizmet verir.
Son Kullanıcılar
Bilgisayar Ağları, İnternet
Yazılım katmanı
İşletim Sistemi
Donanım katmanı
7. Bilgisayar Mühendisliği Nedir ?
Yazılım, gerçek hayattaki ihtiyaçların bilgisayar ortamına (kodlara) yansımasıdır.
Nesnel Örnek: Bir arabanın bilgisayar kodundaki karşılığı.
nesne
public class Araba {
protected String renk;
özellik
public String getRenk() {
renk return renk;
}
public void setRenk(String renk) {
this.renk = renk;
}
Fonksiyon, olay:
metot public void hizlan(){
….
}
}
8. Bilgisayar Mühendisliği Nedir ?
Geliştirme Süreci: Geliştirme aşamalarını ve
aşamalar arası bağlantıların nasıl yapılacağını belirler.
class Personel {
…
Personel } class Cocuk {
Personel _Id
…
Adı
Unvan } class Cocuk {
Soyadı
Unvan_Id …
…
Adı }
Aciklama
…
Çocuk
Personel_Id
ÇocukId
…
Planlama Gerçekleştirme Test Devreye Alma
Tasarım
Analiz Kodlama
9. Bilgisayar Mühendisliği Nedir ?
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.
Ülkemizde Bilgisayar Mühendisliği eğitimi genellikle
ürün odaklıdır. Oysa süreç de en az ürün kadar
önemlidir!
10. Bilgisayar Mühendisliği Nedir ?
Sürecin Aşamaları: Planlama
Hedeflenen kapsamı, süre ve maliyet gibi kısıtları dikkate alarak
elde mevcut kaynaklarla gerçekleştirmek için yapılacak temel
işlemleri belirlemektir.
Kapsam (Kalite)
Kısıtlar (Zaman) Kaynaklar(Maliyet)
Denge Üçgeni
11. Bilgisayar Mühendisliği Nedir ?
Sürecin Aşamaları: Kapsam Belirleme
Yapılacakları ve yapılmayacakları belirlemektir.
İhtiyaç: Personel eski işyerleri takibi
İhtiyaç: Personel arkadaşları takibi
İhtiyaç: Personel nüfus bilgileri takibi
İhtiyaç: Unvan bilgileri takibi
İhtiyaç: Personel çocuk
bilgileri takibi
İhtiyaç: Personel hobilerinin takibi
12. Bilgisayar Mühendisliği Nedir ?
Sürecin Aşamaları: İhtiyaç Analizi
İhtiyaç analizi, müşterilerin ihtiyaçları ve sistemden
beklentilerinin ayrıntılı bir şekilde tanımlanmasıdır.
İhtiyaç: Personel nüfus
İhtiyaç: Unvan bilgileri
takibi
bilgileri takibi
İ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.
13. Bilgisayar Mühendisliği Nedir ?
Sürecin Aşamaları: 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ın
üst seviye modeline dönüştürülmesi işlemidir.
Analiz Tasarım
Personel
Çocuk
Personel _Id*
Personel_Id*
İhtiyaç: Personel nüfus Adı
ÇocukId*
Unvan Soyadı
bilgileri takibi İhtiyaç: Unvan bilgileri …
Unvan_Id* …
takibi Adı
İhtiyaç: Personel çocuk Aciklama
bilgileri takibi …
14. Bilgisayar Mühendisliği Nedir ?
Sürecin Aşamaları: Analiz ve Tasarım
• İhtiyaç analizi ve tasarım farklı kavramlardır.
• İhtiyaç analizinde işin nasıl yapıldığını/iş
problemini öğrenmek amaçlanır.
• Tasarımda ise yön çözüme dönüktür.
• Tasarımda yazılımın kısıtlarından dolayı çizgiler
daha keskindir.
15. Bilgisayar Mühendisliği Nedir ?
Sürecin Aşamaları: Gerçekleştirilme - Kodlama
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.
class Personel {
…
Tasarım class Cocuk {
}
Personel … class Cocuk {
Çocuk
Personel _Id
Personel_Id
} …
Adı
ÇocukId }
Unvan Soyadı
…
Unvan_Id …
Adı
Aciklama
… Adı
Soyadı
Sicil No
…
Ekle Kaydet
16. Bilgisayar Mühendisliği Nedir ?
Sürecin Aşamaları: Test
• Test, yapılanların kontrol edilmesidir. Kontrol iki
aşamalıdır. Hedefler ve yapılanlar test edilmelidir.
– İstenilenler doğru anlaşılmış mı ?
– Yapılanlar doğru çalışıyor mu?
Sağlam olmalı ama yine de bir bakalım!
18. Niçin Bilgisayar Mühendisliği 2?
• Teknolojinin merkezinde olmak
– Günümüz teknolojisinin merkezi bilişim sistemleridir.
– Bilgisayar Mühendisliği kültürü, çevredeki insan ve
sistemlerin, ihtiyaçları ve çalışmaları hakkında bilgi sahibi
olmayı sağlar.
2- ACM-web: http://computingcareers.acm.org/?page_id=4 (2012)
19. Niçin Bilgisayar Mühendisliği ?
• Çok Geniş İş İmkânı
– Günümüzde içerisinde yazılım olmayan hiçbir büyük proje
yoktur!
– Bilgisayar mühendisi, her kurumda çalışabilen ve her
projede ihtiyaç duyulan neredeyse tek mühendistir.
Kurumsal Yazılımlar …
Ofis Tasarımı
Microsoft Visio
Yazılım Geliştirme Oracle NetBeans
İş Akış Microsoft Visio Yazılım Geliştirme Sürüm Kontrol
20. Niçin Bilgisayar Mühendisliği ?
Problem çözme yeteneğini geliştirmek
• Bilgisayar Mühendisi, sürekli yeni zihni keşifler
yapar, yeni problemleri çözer ve hayatta karşılaşılan
farklı birçok sorunun çözümünü de kolaylaştırır.
21. Niçin Bilgisayar Mühendisliği ?
• İ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. Bu alanların birkaçı
• İnternet ve bilgiye ulaşmayı kolaylaştırmak
• Sosyal medyadaki özgür tartışma ortamları
• Hastalık teşhisi ve tedavisi
• Eğitimin yaygınlaşması
22. Niçin Bilgisayar Mühendisliği ?
• 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.
23. Nasıl Bilgisayar Mühendisi Olunur?
• 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 3.
• Yaşamın ilk kısmında en önemli paydaş üniversite
eğitimidir:
Kimse sizi bilgisayar mühendisi yapamaz!
Ancak kendi iradenizle;
düşünerek, araştırarak, keşfederek, çalışarak, danışara
k ve bilgi alışverişi yaparak;
“İyi bir bilgisayar mühendisi olabilirsiniz.”
3 - Drucker P.F., Klasik Drucker, Bahçeşehir Üniversitesi Yayınları, 2006
24. İş İmkânları- Çalışılabilecek Yerler
Yazılım ve ARGE Şirketleri: Para kaynakları bilişim proje
ve hizmetleri olan şirketlerdir. Paket yazılım çözümleri
geliştirme, şirketlere özel çözümler üretme, yurtdışı
firmaların ürünlerini pazarlama veya danışmanlık temel
hizmetleridir.
Yazılım ve ARGE şirketleri, teknoloji kullanımı konusunda
genellikle öncü rol üstlenir.
Farklı kurumları tanıma, farklı teknoloji ve projelerde
çalışma imkânı sunar.
Ancak ülkemizde çalışma saatleri genellikle düzensizdir.
25. İş İmkânları- Çalışılabilecek Yerler
Kurum İçi Yazılım Evleri: Ana parasal kaynakları
bilişim projeleri olmayan, kurumun ana
amacının bilişim projeleriyle desteklendiği
telekom, kamu, banka ve holding gibi alanlardaki
şirketlerdir.
Ana amaç bilgi işlem olmadığından bilişim
çalışmaları belli süre sonra rutinleşebilir. Bu yüzden
kişinin kendisini geliştirme imkânı kısıtlı olabilir.
Çalışma saatleri daha düzenlidir.
26. İş İmkânları- Çalışılabilecek Yerler
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, robot araştırmaları, eğitim ve
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.
27. İş İmkânları- Roller
İdari Teknik
Yazılım Ekibi:
Sistem analiz, yazılım
Üst Yönetim mimarı, yazılım
geliştirici, test
mühendisi, ..
Proje Yönetimi:
Altyapı Ekibi: Sistem
Proje
Müşteriler uzmanı, veritabanı
Yöneticisi, Takı
yöneticisi, …
m Lideri, İdari
Yönetim
Danışman ve
Son Kullanıcılar Uzmanlar
Diğer Kişiler
Bilişim projelerinde çalışma yapısı ve iletişim kanalları
28. İş İmkânları – Roller (1)
Yazılım Geliştirici:
Gerçekleştirme, kodlama
, ekran ve raporların
yazılması gibi faaliyetleri
yapar.
Bilgisayar mühendisleri
piyasada en çok yazılım
geliştirici pozisyonunda
çalışmaktadır!
29. İş İmkânları – Roller (2)
Yazılım Mimarı: Kullanıcı
ihtiyaçlarını karşılamak için nasıl bir
yazılım mimarisi kullanılacağını
belirler.
Son yıllarda çok önem kazanmış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
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 önerilir 4.
4 - Brooks F.P., The MythicalManMonth, Essays on Software Engineering, ISBN-10: 0201835959, Addison Wesley, 1995
30. İş İmkânları – Roller (3)
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.
Test ve kalite mühendisliği yeni yeni
yaygınlaşan ve gelecek vaat eden bir
sahadır.
31. İş İmkânları – Roller (4)
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.
Tüm kişilerin beklentilerine cevap vermek gibi çok
zor bir görevi yürütür. Tecrübeniz geliştirdikçe bu
göreve namzet olursunuz!
32. İş İmkânları – Roller(5)
Sistem Analist: Kullanıcı
ihtiyaçlarını tespit
etmek, analiz etmek ve
belgelemekle sorumludur.
Sistem analizi, yazılım
geliştirme ekibindeki en
önemli rollerden birisidir.
İhtiyaçlar doğru
belirlenmezse yanlış bir
ürün ortaya çıkar.
33. İş İmkânları – Roller(6)
Ara Yüz Geliştirici: Kullanılacak ekran, rapor gibi yazılım ara
yüzlerinin tasarımından sorumludur.
Web tasarım en önemli ara yüz geliştirme alanıdır. Ara yüz
geliştirme faaliyetleri genellikle meslek yüksekokul mezunu
programcılarla birlikte yürütülmektedir.
34. İş İmkânları – Roller(7)
Sistem Uzmanı: İşletim
sistemi, uygulama sunucusu, ağ
protokolü gibi yazılımların;
kurulumu, izlenmesi, en iyi
performans için
ayarlanması, yedeklenmesi ve
sürüm geçişleri gibi görevleri
yapar.
35. İş İmkânları – Roller(8)
Veritabanı yöneticisi: 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.
Sistem uzmanlığı ve veritabanı uzmanlığı çok kritiktir.
Mali kazançları aynı tecrübedeki bir yazılım 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.
36. Zorluklar ve Çözümleri
• Bilgisayar Mühendisliği rutin bir masa başı işi
değildir!
– Neredeyse her gün yeni bir teknolojik ürün
piyasaya çıkıyor. Bilgisayar mühendisi, sürekli
kendini geliştirmeli ve 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.
37. Zorluklar ve Çözümleri
Yazılım ürünleri karmaşıktır. Orta ölçekli bir projede
bile binlerce satır kod, onlarca ekran, rapor ve birden
fazla teknoloji bütünleşik olarak çalışmalıdır.
Adı
Ara yüz Soyadı
Sicil No
…
Ekle Kaydet
Uygulama Sunucusu
Veritabanı
38. Zorluklar ve Çözümleri
• 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.
39. Zorluklar ve Çözümleri
• Yazılım hayata ve insana hitap eder. İnsani
ilişkilerdeki tüm zorluklar yazılıma da taşınır.
Kanaatimce, bu ekran
çok güzel olmuş
Kanaatimce, bu ekran
Kanaatimce, bu ekran çok
güzel ama işlevsel değil
kötü olmuş
Personel Genel Müdür
Son Kullanıcı Müdürü
Başka bir
son kullanıcı Yazılım Ekibi
Kanaatimce, bu ekran
daha güzel olabilir
40. Zorluklar ve Çözümleri
Çalışma şartları özellikle ülkemizde ağırdır.
• Yazılım ürünü geliştirme süreci kolayca ölçülemez.
• Aşırı iyimser ve kısa planlama sıklıkla görülür.
• Geliştirme ekibinin planlama hatalarını 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.
41. Zorlukları 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,
ekip ve disiplinler arası çalışma sizi mutlu eder.
Sistemli çalışırsanız,
plansızlık sizi daha az etkiler.
42. Sonsöz
BİLGİSAYAR
MÜHENDİSLİĞİNDE YENİ
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Ü