Skip to content

Social Network Badges

Posts Tagged ‘yazılım yaşam döngüsü ’

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.