Bu yazý Bilgisayar mühendisi ne iþ yapar? adlý çalýþmanýn ilk bölümü…
Bilgisayar mühendislerinin en bilinen çalýþma alanlarýndan birisi yazýlým sektörüdür.
Yazýlým geliþtirme iþi genelde adýna “Yazýlým yaþam döngüsü” denilen bir süreç içerisinde yürür. Bilgisayar mühendisleri planlama, analiz, tasarým, kodlama, test/kalite yönetimi ve kurulum gibi aþamalardan oluþan bu sürecin her tarafýnda yer alabilirler.
Bazen aþaðýdaki pozisyonlar için ayrý insanlar çalýþabildiði gibi, bazen de bir kiþi pozisyonlardan birkaçýnýn iþini yapar.
Planlama / Analiz
Ýþ Analisti
Müþterilerin ihtiyacýný anlamaya yönelik çalýþmalar yapan pozisyondur. Þurada anlatýldýðýna göre;
Ýþ analisti, proje yaþam döngüsünün daha çok proje imza öncesi ve proje baþlangýç aþamasýnda rol alýr. Bu kiþiler, yazýlýma özel gereksinimlerden daha çok yapýlacak iþe özel ihtiyaçlarý belirler.
Burada “ihtiyaç” dememin de özel nedeni var. Bunlar müþterinin “ihtiyaç” duyduðu ama hala gereksinime dönüþmemiþ haldedir. Þöyle örnek vereyim: Bir kiþinin arabaya ihtiyacý olur. Ýþ analisti sadece bu kiþinin araba ihtiyacýný ortaya koyar. “Adam araba istiyor” der geçer. Sonra gereksinim analisti, bu kiþinin hangi marka, ne özelliklerde, ne tip arabaya ihtiyacý olduðunu belirleyerek arabanýn “gereksinimlerini” ortaya koyar.
Sistem Analisti
Yazýlým dünyasýnda sistem analistleri, kullanýcýlardan ya da iþ analistlerinden gelen bilgileri kullanarak geliþtirilecek yazýlým veya çözümün yapýsýný belirler. Gerekli iþlem adýmlarýný ve aþamalarýný hazýrlar. Yani sadece ihtiyacý deðil, ihtiyaca göre çözümü üretir.
Sistem analisti genel olarak ise tüm bir bilgi iþlem sistemini tasarlayýp ihtiyaca göre çözümler öneren kiþidir.
Tasarým
Yazýlým Tasarým Uzmaný
Yazýlým tasarýmý, altyapý bileþenleri dahil tüm yazýlým yapýsýný planlamak demek. Büyük yazýlým þirketlerinde sadece yazýlým tasarýmý ile görevli mühendisler bulunur. Bu mühendisler kod yazacak kiþilere ihtiyaçlarý olan yapýyý hazýrlar. Yazýlým geliþtirme iþini hýzlandýran “tasarým þablonlarýný” tavsiye eder. Gerekirse yazýlýmýn bir prototipini hazýrlar.
Yazýlým Modelleme Uzmaný
UML denilen modelleme ve diyagram çizme dilini kullanarak yazýlýmýn iþleyiþini tanýmlar. Hatta programý þekiller (diyagramlar) kullanarak baþtan sona yazarlar. Modellemesi doðru yapýlmýþ bir yazýlýmýn hem geliþtirilmesi, hem bakýmý hem de dokümantasyonu daha kolay olur. Bugün Rational Rose gibi yazýlýmlar kullanýlarak UML diyagramlarý ile kod parçacýklarý kolaylýkla iliþkilendirilebiliyor.
Geliþtirme
Programcý / Geliþtirici / Yazýlým Uzmaný
Programlama dillerini ve teknolojilerini kullanarak ürün geliþtiren kiþidir. Ýþin ve firmanýn büyüklüðüne göre bazen tüm yazýlýmý geliþtirir, bazen sadece kendisine verilmiþ bölümü hazýrlar. Programýn bütününe hakim olmadýðý durumlarda, sistem analistinden ya da proje yöneticisinden destek alýr.
Yazýlým Mühendisi
Yazýlým Mühendisliði aslýnda genel bir kavram. Bir yazýlým mühendisi yazýlýmla ilgili tüm aþamalarda bulunabilecek özelliklere sahip kiþidir. Hem analiz, tasarým hem de kodlama aþamalarýnýn teorisini bilir, uygulamalarýný yapabilir. Yöneticilik pozisyonlarýna gelebilir, altýnda programcý ve analistler çalýþtýrabilir. Sektörde en çok kullanýlan ünvanlardandýr.
Yazýlým Mimarý / Yazýlým Danýþmaný
Yazýlým mimarlarýnýn sorumluluk alanlarý çok geniþ ve zordur. Þurada yazdýðý þekliyle;
Projede kullanýlacak teknolojileri seçerler, proje metodolojisi ve süreçlerinde tavsiyelerde bulunurlar, uygulamanýn genel tasarým ve yapýsýný oluþturur ve korurlar, projenin doðru tanýmlanmasýný saðlarlar, tasarýmýn dökümante edilmesi ve kodlama standartlarýnýn belirlenmesi ile uðraþýrlar. Proje yöneticisine teknik görev tahminlerinde, proje maliyetleri ve yararlarý konusunda yardým ederler. Zor teknik görevlerde programcýlara yol gösterirler. Teknik personel seçimi ve iþe alýmýnda yönetime yardýmcý olurlar.
Her alanda olduðu gibi yazýlým alanýnda da yöneticilik pozisyonlarý var. Genelde geliþtirme ekiplerinde belli bir süre çalýþtýktan sonra yönetim kademelerine geçiþ yapýlýr ya da yeteneðe ve politikalara baðlý olarak deðiþir.
Ekip Lideri / Proje Yöneticisi
Proje Lideri/Yöneticisi yazýlým ekibini bir arada tutan ve zaman çizelgelerine uyulmasý için gerekli motivasyonu saðlayan yöneticidir. Ayrýca yönetim ile proje ekibi arasýndaki bilgi alýþveriþini de saðlar. Bütçe konularýnda düzenlemeler ve maliyet analizlari konusunda yönetim kuruluna bilgi ve tavsiye verir. Yazýlacak modüllerin ve arayüzlerin zorluk derecelerine göre zamanlarýný tayin eder ve proje planý içinde yayýnlar. Diðer proje ekipleri ile bilgi alýþveriþini saðlar ve kontrol altýnda tutar. Projedeki her türlü riski takip eder ve kaynaklarýný ona göre tahsis eder. Riskleri belgeleyerek çözümler için onaya sunar. Onay sonucu çýkan kararlarý iþleyerek sonuçlarý tekrar yönetim kuruluna bildirir. Kaynak
Program Müdürü
Türkiye’de çok fazla kullanýlmayan bu terim karþýlýðýný en fazla Microsoft’ta bulur. Program Müdürleri teknik konulardan daha çok yönetim iþleri ile sorumludur. Proje yöneticilerini koordine edip raporlar alarak projelerin saðlýklý yürümesini saðlarlar ve üst yönetimi bilgilendirirler.
Test / Kalite Güvence
Yazýlýmda kalite güvence, kýsaca yazýlým projesinin standardlara uygunluðunu ve ihtiyaçlarý karþýladýðýný denetleyen çalýþmalar demektir.
Bilgisayar mühendisleri bu alanda da çeþitli görevler alýr.
Yazýlým Kalite Uzmaný
Ýhtiyaçlarýn ve geliþtirilen çözümün doðru belirlenip belirlenmediðini, yazýlýmýn belirli standardlarda olup olmadýðýný denetleyen kiþidir.
Yazýlým tasarýmý ve/veya yazýlým testi konularýnda bilgi sahibidir. Genel kalite yönetim sistemi standartlarýný, uluslararasý yazýlým mühendisliði standartlarýný ya da süreç olgunluk modellerini (CMMI, SPICE, v.b.) bilir. Geliþtirilen yazýlýmýn bunlara uygun olarak yürümesini saðlar.
Test Uzmaný / Test Mühendisi
Test uzmaný/mühendisi yazýlýmýn test edilmesinde fiilen çalýþan kiþidir. Yazýlým hatalarýný tespit etmek, hatalarýn sebepleri ve sonuçlarý ile ilgili süreci yönetmek, test kapsamýnýn oluþturulmasý, test senaryolarýnýn hazýrlanmasý gibi iþleri yürütür.
Birim testi, sistem testi, entegrasyon testi, kullanýcý kabul testleri gibi kavramlarý bilir ve uygular. Sonuçlara göre dokümantasyon hazýrlar.
Test mühendisliði hakkýnda þurada güzel yazýlar var.
Test Yöneticisi
Test yöneticisi test ekiplerini koordine eden, gerekli kalite standartlarýnýn saðlanmasý için çalýþan, yazýlým geliþtirme ve diðer ekiplerle koordinasyonu saðlayan pozisyondadýr.
Yazýlýmýn testi geçip geçemediði, kabul edilmeye hazýr olup olmadýðý kararlarýný verir.
Test sürecini kolaylaþtýracak, otomatize edecek çözümleri uygular.
Konfigürasyon Yöneticisi
Yazýlým geliþtirme süreci boyunca üretilen bütün dokümanlarýn, kodlarýn, web uygulamasý ise web sayfalarýnýn, test scriptlerinin versiyonlarýnýn kontrol edilmesi gerekir. Yazýlým sürümleri içerisinde hangi hatalarýn düzeltildiðinin hangi deðiþikliklerin yapýldýðýnýn izlenmesi gerekir. Ürün haline gelmiþ projelerin satýþa hazýrlanan versiyonlarýnýn belirlenmesi ve yönetilmesi gerekir.
Ýþte konfigürasyon yöneticisinin iþi bunlarý takip etmektir.
Yazýlýmcýlarýn bitmeyen meraký ilginç sonuçlar doðuruyor. Þurada 



Sanallaþtýrma iþlemi deðiþik seviyelerde yapýlýyor. Mesela platform sanallaþtýrmasý bir bilgisayarda birbirinden baðýmsýz iþletim sistemlerini kaynaklarý paylaþtýrarak çalýþtýrmayý saðlýyor. Çok detaylý bir konu ama þöyle bir örnek verebiliriz: 8 iþlemcili bir bilgisayara 8 ayrý sanal iþletim sistemi kurup her birine ayrý iþlemciler ve RAM kaynaklarý tahsis edilebiliyor.