• Sonuç bulunamadı

YAZILIM PROJE YÖNETİMİNDE KİŞİLİK TİPLERİNE UYGUN ROL BELİRLEME. Azer ÇELİKTEN YÜKSEK LİSANS TEZİ BİLGİSAYAR MÜHENDİSLİĞİ ANA BİLİM DALI

N/A
N/A
Protected

Academic year: 2022

Share "YAZILIM PROJE YÖNETİMİNDE KİŞİLİK TİPLERİNE UYGUN ROL BELİRLEME. Azer ÇELİKTEN YÜKSEK LİSANS TEZİ BİLGİSAYAR MÜHENDİSLİĞİ ANA BİLİM DALI"

Copied!
87
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)
(2)

BELİRLEME

Azer ÇELİKTEN

YÜKSEK LİSANS TEZİ

BİLGİSAYAR MÜHENDİSLİĞİ ANA BİLİM DALI

GAZİ ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ

MART 2019

(3)

Azer ÇELİKTEN tarafından hazırlanan “YAZILIM PROJE YÖNETİMİNDE KİŞİLİK TİPLERİNE UYGUN ROL BELİRLEME” adlı tez çalışması aşağıdaki jüri tarafından OY BİRLİĞİ ile Gazi Üniversitesi Bilgisayar Mühendisliği Ana Bilim Dalında YÜKSEK LİSANS TEZİ olarak kabul edilmiştir.

Danışman: Doç. Dr. Aydın ÇETİN

Bilgisayar Mühendisliği Ana Bilim Dalı, Gazi Üniversitesi

Bu tezin, kapsam ve kalite olarak Yüksek Lisans Tezi olduğunu onaylıyorum. ...………

Başkan: Prof. Dr. O. Ayhan ERDEM Bilgisayar Mühendisliği Ana Bilim Dalı, Gazi Üniversitesi

Bu tezin, kapsam ve kalite olarak Yüksek Lisans Tezi olduğunu onaylıyorum. ………...

Üye: Dr. Öğretim Üyesi Abdullah ORMAN Bilgisayar Programcılığı, Ankara Yıldırım Beyazıt Üniversitesi

Bu tezin, kapsam ve kalite olarak Yüksek Lisans Tezi olduğunu onaylıyorum. ………...

Tez Savunma Tarihi: 04/03/2019

Jüri tarafından kabul edilen bu tezin Yüksek Lisans Tezi olması için gerekli şartları yerine getirdiğini onaylıyorum.

……….…….

Prof. Dr. Sena YAŞYERLİ Fen Bilimleri Enstitüsü Müdürü

(4)

Gazi Üniversitesi Fen Bilimleri Enstitüsü Tez Yazım Kurallarına uygun olarak hazırladığım bu tez çalışmasında;

 Tez içinde sunduğum verileri, bilgileri ve dokümanları akademik ve etik kurallar çerçevesinde elde ettiğimi,

 Tüm bilgi, belge, değerlendirme ve sonuçları bilimsel etik ve ahlak kurallarına uygun olarak sunduğumu,

 Tez çalışmasında yararlandığım eserlerin tümüne uygun atıfta bulunarak kaynak gösterdiğimi,

 Kullanılan verilerde herhangi bir değişiklik yapmadığımı,

 Bu tezde sunduğum çalışmanın özgün olduğunu,

bildirir, aksi bir durumda aleyhime doğabilecek tüm hak kayıplarını kabullendiğimi beyan ederim.

Azer ÇELİKTEN 04/03/2019

(5)

YAZILIM PROJE YÖNETİMİNDE KİŞİLİK TİPLERİNE UYGUN ROL BELİRLEME (Yüksek Lisans Tezi)

Azer ÇELİKTEN GAZİ ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ

Mart 2019 ÖZET

Son zamanlarda yapılan çalışmalar, yazılım mühendisliğinde kişisel faktörlerin takım performansı, motivasyon ve iş kalitesi üzerinde etkili olduğunu göstermektedir. Yazılım proje çalışanlarının kişisel özelliklerine uygun rolde görev almaları çalışanların başarısını dolayısıyla takım performansını, proje süreçlerini ve proje maliyetini etkilemektedir. Bu tezde, yazılım proje takımlarının performansını arttırmak ve proje maliyetlerini düşürmek amacıyla, kişilik tiplerine göre takım üyesi seçmeyi sağlayan yeni bir yöntem geliştirilmiştir. Bu yöntem ile takım üyelerinin kişilik tip analizi yapılarak, sistem analisti, yazılım tasarımcısı, programcı, yazılım test uzmanı ve yazılım bakımcısı rollerine uygunluk dereceleri belirlenmiştir. Beş faktör model kişilik tip ölçümünde kullanılan IPI kişilik testi ile kişilik tip oranları tespit edilen takım üyelerinin, kişilik tipine uygun olabilecekleri roller bulanık kümeleme yöntemi ile tespit edilmiştir. Yazılım mühendisleri ile gerçekleştirilen deneysel çalışma ile yazılım proje çalışanlarının rollere uygunluk dereceleri belirlenerek, kişilik tipleri ve rollere uygunluk derecelerinin yer aldığı bir veri seti oluşturulmuştur.

Bilim Kodu : 92408

Anahtar Kelimeler : Yazılım takım performansı, beş faktör model, kişilik tipleri, bulanık kümeleme, yazılım proje yönetimi

Sayfa Adedi : 73

Danışman : Doç. Dr. Aydın ÇETİN

(6)

ROLE ASSIGNMENT SUITABLE TO PERSONALITY TYPES IN SOFTWARE PROJECT MANAGEMENT

(M. Sc. Thesis) Azer ÇELİKTEN GAZİ UNIVERSITY

GRADUATE SCHOOL OF NATURAL AND APPLIED SCIENCES March 2019

ABSTRACT

Recent studies show that personal factors in software engineering are effective on team performance, motivation and job quality. Assigning software project team members to suitable project roles based on their personality types affects the project team's work performance, hence the progress and cost of the project. In this thesis, a new method was developed to provide the ability to select team members according to personality types in order to improve the performance of software project teams and decrease project cost. The developed method, determines the suitability rate of system analyst, software designer, programmer, software tester and software maintainer project roles that can be appropriate by analyzing the personality type of the project team members. Personality types of software engineers were determined by IPI personality inventory that measures five factor model personality types. The fuzzy clustering method was used to determine suitability rate of role based on personality types. As a result of an emprical study conducted with software engineers, a new dataset which includes personality types and role suitability rate of software engineers was formed.

Science Code : 92408

Key Words : Software team performance, five factor model, personality types, fuzzy clustering, software project management

Page Number : 73

Supervisor : Assoc. Prof. Dr. Aydın ÇETİN

(7)

TEŞEKKÜR

Bilgi, tecrübe, sabır ve anlayışıyla tez çalışmam boyunca daima yanımda olan kıymetli danışman hocam Doç. Dr. Aydın Çetin’e, çalışmama yaptığı katkılarından dolayı Eda Kurt’a ve hayatımın her döneminde bana destek olan sevgili aileme teşekkürlerimi sunarım.

(8)

İÇİNDEKİLER

Sayfa

ÖZET ... iv

ABSTRACT ... v

TEŞEKKÜR ... vi

İÇİNDEKİLER ... vii

ÇİZELGELERİN LİSTESİ ... ix

ŞEKİLLERİN LİSTESİ ... xi

SİMGELER VE KISALTMALAR... xii

1. GİRİŞ

... 1

2. LİTERATÜR ÇALIŞMASI

... 9

3. YAZILIM GELİŞTİRME SÜREÇLERİ VE MESLEKİ TANIMLAMALAR

... 17

3.1. Mesleki Yeterlilik Kurumu Tanımlarına Göre Yazılım Rolleri için Gerekli Teknik Görevler ... 17

3.2. Uluslararası Meslek Sınıflaması (ISCO-08) Tanımlarına Göre Yazılım Rolleri için Gerekli Görevler ... 20

4. YAZILIM PROJELERİNDE KİŞİSEL ÖZELLİKLERİN ROLÜ

... 23

4.1. Yazılım Rol Tanımları ve Kişisel Beceriler ... 23

4.1.1. Sistem analisti için gerekli kişisel beceriler ... 23

4.1.2. Yazılım tasarımcısı için gerekli kişisel beceriler ... 24

4.1.3. Programcı için gerekli kişisel beceriler ... 26

4.1.4. Yazılım test uzmanı için gerekli kişisel beceriler ... 27

4.1.5. Yazılım bakımcısı için gerekli kişisel beceriler ... 28

4.2. Yazılım Rol Tanımları ve Kişilik Tipleri ... 29

5. YÖNTEM VE ARAÇLAR

... 33

5.1. Yazılım Proje Yönetiminde Kişilik Ölçme Araçları ... 33

(9)

Sayfa

5.1.1. MBTI kişilik tipleri ... 33

5.1.2. Beş faktör model kişilik tipleri... 34

5.2. Yöntem ... 37

5.2.1. Makine öğrenmesi yöntemleri ... 37

5.2.2. Bulanık kümeleme analizi ... 38

6. YAZILIM PROJE YÖNETİMİNDE KİŞİSEL ÖZELLİKLERE UYGUN ROL BELİRLEME

... 41

6.1. Beş Faktör Model Kişilik Tiplerine ait Alt Boyutların Önem Ağırlıklarının Belirlenmesi ... 41

6.2. Beş Faktör Model Kişilik Tiplerinin Roller için Önem Ağırlıklarının Belirlenmesi ... 42

6.3. IPI Türkçe Kişilik Testi ile Yazılım Mühendislerinin Kişilik Tiplerinin Belirlenmesi ... 43

6.4. Bulanık C-Ortalamalar Yöntemi ile Rol Uygunluk Derecesi Tespiti ... 45

6.5. Bulanık Kümeleme Tabanlı Karar Destek Sisteminin Geliştirilmesi ... 46

6.6. Araştırma Bulguları ... 46

7. SONUÇ VE ÖNERİLER

... 49

KAYNAKLAR ... 51

EKLER ... 57

EK-1. IPI kişilik testi Türkçe uyarlaması anket soruları... 58

EK-2. Proje yöneticileri ve akademisyenlere uygulanan rollere göre kişisel özelliklerin ağırlıklarının tespit edilmesine yönelik anket ... 60

EK-3. Yazılım proje çalışanlarına uygulanan ıpı test sonuçları ... 64

EK-4. Rol belirleme projesi ekran görüntüleri (giriş ekranı) ... 66

EK-5. 90 Yazılım proje çalışanının bulanık kümeleme yöntemi ile belirlenen rol uygunluk dereceleri ... 69

ÖZGEÇMİŞ ... 72

(10)

ÇİZELGELERİN LİSTESİ

Çizelge Sayfa

Çizelge 2.1. Yazılım mühendisliğinde kişisel özellikler ile ilgili yapılan çalışmalar .. 9

Çizelge 3.1. MYK tanımlarına göre BT iş analisti görevleri ... 18

Çizelge 3.2. MYK tanımlarına göre yazılım geliştirici görevleri ... 19

Çizelge 3.3. ISCO-08 meslek sınıflamasına göre yazılım alanındaki meslekler ve görevler ... 20

Çizelge 3.4. SWEBOK tanımlarına göre yazılım geliştirme süreçlerinin ISCI-08 ve MYK’daki rol karşılıkları ... 22

Çizelge 3.5. Yazılım geliştirme süreçlerine ait literatürde kullanılan rol isimleri ... 22

Çizelge 4.1. Sistem Analisti için gereken beceriler ... 24

Çizelge 4.2. Yazılım Tasarımcısı için gereken beceriler ... 25

Çizelge 4.3. Programcı için gereken beceriler ... 26

Çizelge 4.4. Yazılım Test Uzmanı için gereken beceriler ... 28

Çizelge 4.5. Yazılım Bakımcısı için gereken beceriler ... 29

Çizelge 4.6. Yazılım proje rollerine ait kişisel beceriler ... 29

Çizelge 4.7. Beş faktör kişilik tip test sonuçlarının yazılım proje rolleri için ortalama değerleri ... 30

Çizelge 4.8. Yazılım proje rolleri için MBTI kişilik tiplerinin ağırlık değerleri ... 30

Çizelge 4.9. Yazılım proje rolleri için gereken kişisel becerilerin beş faktör model kişilik tipleri ile eşleştirilmesi ... 31

Çizelge 4.10. MBTI kişilik tiplerine göre yazılım proje rollerinin tercih edilme durumları ... 31

Çizelge 5.1. Beş Faktör Model Kişilik Tipleri ve Özellikleri ... 35

Çizelge 5.2. Beş faktör kişilik tipleri ile yazılım proje süreçleri için gerekli özelliklerin karşılaştırılması ... 36

Çizelge 6.1. Beş Faktör Kişilik tiplerine ait alt boyutlar ... 42

Çizelge 6.2. Yazılım proje rolleri için Beş Faktör Kişilik tiplerinin önem skorları ... 43

Çizelge 6.3. Rol uygunluk dereceleri ile kişilik tipleri arasındaki korelasyon değerleri ... 47

(11)

Çizelge Sayfa Çizelge 6.4. Yazılım Proje Rolleri ve korelasyonu yüksek kişilik tipleri ... 47

(12)

ŞEKİLLERİN LİSTESİ

Şekil Sayfa Şekil 2.1. Yıllara göre yazılım mühendisliğinde kişilik tipleri ile ilgili çalışmaların

dağılımı ... 14

Şekil 5.1. Makine öğrenmesi yöntemleri ... 37

Şekil 5.2. Koordinat düzleminde kümeleme örneği ... 38

Şekil 6.1. Rol uygunluk derecesi belirleme yöntemi uygulanış şeması ... 41

(13)

SİMGELER VE KISALTMALAR

Bu çalışmada kullanılmış kısaltmalar, açıklamaları ile birlikte aşağıda sunulmuştur.

Kısaltmalar Açıklamalar

IPI Uluslararası Kişilik Testi (International Personality Inventory)

MBTI Myers Briggs Tip Göstergesi (Myers Briggs Type Indicator) IEEE Elektrik ve Elektronik Mühendisleri Enstitüsü (The

Institute of Electrical and Electronics Engineers)

OECD Ekonomik İş Birliği ve Kalkınma Teşkilatı (Organization for Economic Cooperation and Development)

MYK Mesleki Yeterlilik Kurumu

ISCO Uluslararası Meslek Sınıflaması (International Standard Classification of Occupations)

(14)

1. GİRİŞ

Türk Dil Kurumu bilişim sözlüğündeki tanıma göre yazılım, bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, yordamlar, programlama dilleri ve belgelemelerin tümüdür [1]. Yazılım geliştirme ile ilgilenen bilim dalı yazılım mühendisliğidir. Yazılım mühendisliği terimi ilk olarak 1968 yılında gerçekleştirilen NATO toplantısında Almanya'da gündeme gelmiş ve çözülmesi gereken bir problem olarak öne sürülmüştür. IEEE (The Institute of Electrical and Electronics Engineers) tanımına göre yazılım mühendisliği, yazılım ürününün geliştirilmesi, işletilmesi ve bakımı için uygulanan; sistematik, disiplinli ve ölçülebilir yaklaşımdır [2]. Bilgi çağı denilen son yıllarda yazılım sosyal ve ekonomik yönden önemli bir kaynak haline gelmiştir. Sağlık, finans, eğitim, otomotiv, iletişim, uzay, savunma gibi alanlarda kullanılarak bu alanlara yenilikler ve kolaylıklar getirmektedir. Yazılım bir hesap makinesi programı yaparken kullanıldığı gibi bir roketin fırlatılmasında da kullanılan, sistematik işlemleri olan ve insan hayatını etkileyen çok yönlü ve geniş kapsamlı bir olgudur. Yeni sanayi devrimi olarak adlandırılan Sanayi 4.0; akıllı sistemler, yapay zekâ, nesnelerin interneti, 3 boyutlu yazıcılar, büyük veri, siber sistemler ve bulut bilişim gibi yazılım teknolojilerdeki gelişmeler sonucu ortaya çıkmıştır. Bu nedenle, uluslararası pazarda söz sahibi olabilmek ve rekabet edebilmek için ülkelerin bu gelişmeleri takip etmeleri ve kendi sanayilerini bu dönüşüme hazırlamaları gerekmektedir. Ülkelerin yazılım sektöründe beşeri ve teknik altyapılarda sağlayacağı gelişmeler, küresel pazardaki konumları açısından önem taşımaktadır. Forbes dergisi tarafından hazırlanan 2018 yılındaki dünyanın en büyük 2000 şirketinin olduğu Forbes Global 2000 listesindeki en büyük 10 yazılım şirketinden 7’si Amerika’da yer almaktadır. Microsoft ve Oracle listenin başındaki şirketlerdir [3]. Yazılım faaliyetlerinin yaygın olduğu Amerika’nın yazılım pazar verilerini incelendiğinde elde edilen sonuçlar şu şekildedir.

Amerika Ekonomist İstihbarat Birimi’nin 2017 Eylül ayında yayınlamış olduğu son rapora göre [4];

 Amerika’da 2016 yılında yazılım sektörünün dolaylı veya doğrudan gayri safi yurtiçi hasılaya toplam katkısı 1,14 trilyon dolardır.

 Doğrudan katkısı ise 564,4 milyar dolardır.

(15)

Yazılım alanındaki istihdam verileri ise şu şekildedir:

 Amerika’da 2014 yılından bu yana yazılım sektörü iş büyümesi %11,4 artış göstermiştir. Doğrudan yazılıma yönelik istihdam oranı ise 2014 yılına göre %14,6 artış göstererek 2,9 milyona ulaşmıştır. Yazılım faaliyetleri ile doğrudan veya dolaylı ilgili toplam istihdam sayısı ise 10,5 milyondur.

 Amerika’daki bir yazılım mühendisinin yıllık geliri 104,360 dolar olarak belirlenmiştir.

Bir yazılım mühendisinin yıllık geliri Amerika’daki diğer meslek gruplarının ortalama yıllık gelirinden 2 kat daha fazladır.

Son yıllarda çağın gereksinimleri ve ekonomik önemi nedeniyle ülkemizde de yazılım sektöründe ve istihdamda büyüme görülmektedir. TUBISAD 2017 Bilgi ve İletişim Teknolojileri pazar verilerine göre [5];

 Bilgi ve İletişim Teknolojileri 2017 yılında 116,9 milyar TL (32,1 milyar dolar) sektör büyüklüğüne ulaşmıştır. 2018 yılı için büyüme beklentisi %10-15 arasındadır.

 Bilgi ve İletişim Teknolojileri sektörünün %41,3’ünü bilgi teknolojileri oluşturmaktadır.

Bilgi teknolojileri pazar büyüklüğü ise 2013 yılından itibaren %1.4 oranında büyüme göstererek 11,3 milyar dolara ulaşmıştır.

 Bilgi teknolojileri donanım, yazılım ve hizmet bileşenlerinden oluşmaktadır. Bu bileşenlerden yazılımın payı 2013 yılında %35 iken, 2017 yılında %45’e yükselmiştir.

 Şekil 1.1’de Bilgi Teknolojileri sektörünün alt kategorilerdeki sektör büyüklükleri şu şekildedir

o Donanım: 16 milyar TL o Yazılım: 18,8 milyar TL o Hizmet: 6,4 milyar TL.

Şekil 1.1. Bilgi ve iletişim teknolojileri sektörü alt kategorileri [9]

(16)

Şekil 1.2. TUBISAD 2017 bilgi ve iletişim teknolojileri sektör verileri (milyar TL) [9]

TUBISAD 2017 istihdam verilerine göre;

 Toplam istihdam sayısı 128 000’dir.

 Bu rakamın %69’unu bilgi teknolojileri, %31’ini iletişim teknolojileri oluşturmaktadır.

 Toplam istihdam sayısında bir önceki yıla göre %5 artış görülmektedir.

 Türkiye’de yazılım faaliyetlerinin etkin olarak gerçekleştiği Teknoloji Geliştirme Bölgelerinde ise bir önceki yıla göre şirket ve çalışan sayısında %10 oranında artış gözlenmektedir. 2016 yılı çalışan sayısı 41 172 iken 2017 yılında bu sayı 45 274’e ulaşmıştır.

Şekil 1.3. TUBISAD 2017 Bilgi Teknolojileri ve İletişim Sektörü İstihdam Verileri [9]

(17)

Şekil 1.4. TUBISAD 2017 bilgi ve iletişim teknolojileri sektörü ihracat verileri [9]

Yazılımın ülke ekonomilerine en büyük katkısı ihracat ile olmaktadır. Yazılım pazarında en büyük paya sahip ülkeler yazılım ihracatının en fazla yapıldığı ülkelerdir. Bu perspektiften bakıldığında Amerika’nın yazılımdan doğrudan kazandığı gelir 564,4 milyar dolar iken, 2017 yılında Türkiye’de yazılım ihracatından elde edilen gelir, 2016 yılına göre

%10.6 büyüme oranı ile 1 289 milyon dolara ulaşmıştır.

Yeni sanayi devrimi ve yazılım sektöründeki büyüme Türkiye ekonomisinin büyümesinde önem arz ettiği için Bilim Sanayi ve Teknoloji Bakanlığı tarafından Türkiye Yazılım Sektörü Stratejisi ve Eylem Planı hazırlanmıştır. Türkiye Yazılım Sektörü Stratejisi ve Eylem Planı’nın genel amacı: “Yazılım pazarını büyütmek, ihracatı ve sektörün istihdamını artırmak amacıyla, yazılım ve bilgi teknolojileri alanlarında uluslararası standartlarda ürünler ve hizmetler üreten; sektörde söz sahibi ülke konumuna gelmek”

olarak saptanmıştır. Bu amaç doğrultusunda hazırlanan eylem planının vizyonu ise;

“Yazılım alanında teknik ve hukuki altyapısı ile beşeri kaynağının nitelik ve niceliğini sürekli olarak geliştiren, uluslararası pazarlarda rekabet gücü ve pazar payını artıran bir ülke olmak” olarak belirlenmiştir [6].

Yazılım projeleri için harcanan maliyet ve ülkelerin ekonomisindeki payı göz önüne alındığında, yazılım projelerinin çeşitli nedenlerle başarısız olmasının ekonomiye etkisi olumsuz yönde olmaktadır. Bunun yanında, sağlık alanında kullanılan cihaz sistemleri, bankacılık sistemleri, uzay araştırmaları için gönderilen uydu sistemleri, havacılık ve savunma alanı için kullanılan araçlar, nükleer teknoloji yazılımları, siber sistemler

(18)

yazılımın yaygın olarak kullanıldığı alanlardır. Bu alanlarda yapılan çalışmalar geniş kitleleri etkilediği ve toplumsal açıdan kritik sonuçlara sebep olacağı için, yazılımın geliştirme çalışmaları hatasız veya hatasıza en yakın şekilde gerçekleşmelidir. Tricentis 2016 yazılım proje başarısızlıkları raporuna göre, 4,4 milyar insan maliyeti ve 1,1 trilyon dolarlık bütçe maliyeti yazılım proje başarısızlıklarından etkilenmiştir. Zaman maliyeti açısından bakıldığında ise, proje başarısızlıkları nedeniyle son 1 yılda, 315 yıl 6 ay 2 hafta, 6 gün, 16 saat ve 26 dakikalık zaman kaybı meydana gelmiştir [7].

Yazılım, insanlar tarafından insanlar için ortaya çıkarılan bir ürün olduğundan, insan kaynağı yazılım için büyük önem taşımaktadır ve yazılım maliyetlerinin önemli bir kısmını oluşturmaktadır. Yazılım sektöründeki istihdam büyüklüğü de göz önüne alındığında yazılım projelerinde çalışanların nitelik ve nicelik olarak geliştirilmesi yazılım maliyet ve ekonomisini doğrudan etkilemektedir. Ayrıca, Türkiye’de 2015, 2016 ve 2017 yıllarında bilgi ve iletişim teknolojileri sektöründeki en önemli problem nitelikli iş gücü açığı olarak belirlenmiştir [5]. Yazılım projelerinin başarısızlığı teknik sorunların sonucu olabileceği gibi, bu başarısızlığa teknik olmayan sorunlar da sebebiyet verebilmektedir. Yazılım projelerindeki başarısızlık nedenleri üzerine yapılan bir çalışmada başarısızlık nedenlerini teknik, yönetimsel, sosyal ve diğer nedenler olarak sınıflandırılmıştır [8]. Başarısızlığa neden olan sosyal nedenlerden bazıları aşağıdaki gibidir:

 Takım içi iletişim ortamının zayıf olması,

 Alıcı ile zayıf bağlantı kurulması sonucu girdilerinin alınamaması

 Alıcı ve diğer paydaşlar arasında şiddetli sürtüşmelerin yaşanması

 Teknolojik gelişmelerden habersiz olunması

 Yönetimin soğukluğundan kaynaklanan mesafeli iletişim

 Teknik personelin sürekli zaman baskısı altında çalışması

 Bölüm ve birimler arası iletişim ve desteğin olmaması

 Teknik personelin genel becerilerinin dışındaki alanlarda yürütülen projeler

Ayrıca, deneyimsiz eleman almak, kaynak planlaması yapmamak ve takım arası iletişimi sağlayamamak gibi konular yazılım projelerinde karşılaşılan yönetim riskleri olarak ele alınmış ve yapılan kaynak taramasında yönetimsel riskleri konu alan çalışmaların %21 oranında olduğu görülmüştür [56]. İnsandan kaynaklanan bu sorunların çözüme ulaştırılmadığı projeler başarısız olacaktır. Bu nedenle, yazılım mühendislerinin teknik becerilerinin yanında, sosyal ve kişisel becerilerinin de verilen göreve uygun olması

(19)

gerekmektedir. Başta bilişim ve teknoloji olmak üzere birçok iş alanında uygun eğitim ve deneyimin yanında, değişime ayak uydurabilme, yenilikçi olma, problem çözme, takım içinde çalışabilme ve bireysel sorumluluk alırken yöneticinin taleplerini de yerine getirebilme gibi yetiler günümüz iş hayatında aranan niteliklerdendir. OECD’nin (Organization for Economic Cooperation and Development) Skills Outlook raporuna göre uzmanlık ve ileri düzeyde iletişim becerileri gerektiren, rutin olmayan analitik ve rutin olmayan etkileşimli işlerin ABD’de 1960’tan bu yana büyük artış gösterdiği ifade edilmektedir. Yaratıcı, probleme uygun çözüm üretebilme becerisi ve zihinsel çaba gerektiren işler rutin olmayan işler kapsamındadır. UNESCO’nun Herkes için Eğitim 2012 Küresel İzleme Raporu’na göre işverenler, iş başvurusu yapanların aldıkları eğitim ve bilgi birikimlerini günlük hayattaki problemleri çözmek için kullanabildiklerini, insiyatif aldıklarını ve iş arkadaşlarıyla iyi iletişim kurabildiklerini görmek istiyor. Türkiye’de de firmaların benzer talepleri var. Bilim, Sanayi ve Teknoloji Bakanlığı’nın 2013 yılında yaptığı ve 2.018 firmanın katıldığı anket çalışması, firmaların çalışanlarında takım çalışması, yönetim/liderlik ve problem çözme becerilerini de aradığını gösteriyor. Bu becerilere en fazla büyük ölçekli firmalarda ihtiyaç duyulduğu belirlenmiş. Tüm firmaların dörtte üçü çalışanlarında beceri eksiği gördüğünü belirtmiş. İşverenlerin iş piyasasında aradıkları becerilere sahip çalışanı bulmakta zorluk çektiklerini ifade etmesi ciddi bir

“yetenek açığı” olduğuna işaret etmektedir [9].

Bu tezin amaçları, kişisel özelliklerin yazılım projelerindeki etkilerini ortaya koymak, yazılım mühendislerinin kişisel özelliklerini ölçmek ve proje içerisinde kişisel özelliklere uygun görev atama yöntemini belirlemektir. Bu amaç doğrultusunda, yazılım proje sürecindeki meslek ve görev tanımları belirlenmiş, bu tanımlar için gereken rol, sorumluluklar ve kişisel özellikler tanımlanmış ve yazılım proje yönetiminde doğru kişilerin uygun rollere atanması için kişisel özellikleri esas alan yeni bir yöntem geliştirilmiştir. Geliştirilen yöntem, iş alım süreçlerinde teknik yeterlilikleri uygun olan kişilerin, kişisel özelliklerinin ilgili rol için hangi oranda uygun olduğunun belirlenmesinde kullanılabilir. Ayrıca, bu yöntem proje yöneticilerine mevcuttaki proje çalışanlarının hangi rollere hangi oranda uygun olduğunu göstererek, yazılım proje takımları oluşturulurken proje çalışanlarının kişisel özelliklerine uygun olarak çalışabilecekleri diğer proje rollerine karar verme aşamasında yardımcı olacaktır.

(20)

Çalışmada belirlenen kişisel özellik ölçüm yöntemi kullanılarak Türkçe test araçları ve Türkiye’de bulunan yazılım şirketlerinde çalışan yazılım mühendislerinin katılımı ile deneysel bir çalışma yapılmış ve çalışmanın sonucunda katılımcıların kişilil özelliklerine uygun rol uygunluk dereceleri belirlenmiştir. Bir yazılım mühendisi kişilik özelliklerine göre birden fazla role uygun olabileceği için rol belirleme yöntemi olarak bulanık kümeleme kullanılmıştır.

Tez 7 bölümden oluşmaktadır. 2. Bölümde literatür çalışmasına yer verilmiş, 3. Bölümde yazılım geliştirme süreçleri ve mesleki tanımlamalar açıklanmıştır. 4. Bölümde yazılım projelerinde kişisel özellikleri rolüne değinilmiştir. 5. Bölümde tezde kullanılan yöntem ve araçlar açıklanarak, 6. Bölümde kişisel özelliklere uygun rol belirleme yönteminin gerçekleştirimine yer verilmiştir. 7. Bölüm elde edilen sonuçlar ve önerilerden oluşmaktadır.

(21)
(22)

2. LİTERATÜR ÇALIŞMASI

Yazılım mühendisliği alanında, kişisel özelliklerin etkilerini incelemek üzere araştırmacılar farklı kişilik testleri kullanılarak çalışmalar yapmıştır. Çizelge 2’de bu konuda yapılan çalışmalar özet halinde yer almaktadır.

Çizelge 2.1. Yazılım mühendisliğinde kişisel özellikler ile ilgili yapılan çalışmalar

Yöntem Kapsam Yıl Kaynak

No Eşli programlama gözlemleme, Katılımcılar ile

görüşmeler.

Eşli Programlama için gereken kişisel özelliklerin

tespiti 2002 [10]

16PF kişilik testi kullanılmıştır Kişisel yeteneklere göre yazılım proje rol

tanımlarına uygun kişinin atanması 2004 [11]

MBTI (Myers Briggs Type Indicator) kişilik testi uygulanarak, kod bulgularını tespit edebilen kişilerin

gözlemlenmesi

Kod bulgularının tespitinde kişilik tiplerinin önemi 2007 [12]

Anahtar kelimeler kullanılarak makale veritabanlarından uygun çalışmaların tespit edilmesi

Yazılım Mühendisliğinde motivasyonu etkileyen

faktörlerin araştırılması 2007 [13]

Literatür taraması yapılmış, motivasyon yeni bir model

ile açıklanmıştır Motivasyon ile ilgili yeni bir model tespiti 2009 [14]

Beş faktör kişilik testi uygulanarak öğrenciler arasındaki kişilik farklarının eşli programlamaya

etkisinin tespiti

Eşli programlamanın 5 faktör kişilik boyutları ile

ilişkilendirilmesi 2009 [15]

Keirsey Temparement Sorter kişilik testi, diskriminant analiz.

Kişisel özellikler ve eşli programlama performansı

arasındaki ilişkinin tespiti 2009 [16]

Ses kayıtların analizi, Beş faktör kişilik modeli Eşli programlamada işbirliği ve kişilik arasındaki

ilişkinin tespiti 2009 [17]

Beş faktör kişilik boyutları İş tatmini ve ürün kalitesinin kişisel özellikler ile

ilişkisinin tespiti 2009 [18]

IPIP 50-item beş faktör kişilik testi İş tutumu ve kişilik tipleri arasındaki ilişki 2010 [19]

IPIP kişilik testi ve ANFIS(Bulanık mantık öğrenme

yöntemi) Yazılım projelerinde kişilik tiplerine uygun olarak

rol tanımlarına atama 2010 [20]

Beş faktör kişilik boyutları Tasarım desenlerine yaklaşım ve kişilik tipleri

arasındaki ilişki 2010 [21]

IPIP-NEO kişilik testi (Kısa versiyon). ANOVA ile analiz.

Sorumluluk özelliğinin eşli programlama üzerindeki

etkisinin incelenmesi 2010 [22]

MBTI Yazılım proje rol tanımları için uygun MBTI kişilik

tiplerinin tespit edilmesi 2010 [23]

MBTI, bulanık mantık (ağaç test modeli) MBTI kişilik tiplerine uygun olarak yazılım rol

tanımlarına atama işlemi 2011 [24]

Beş faktör kişilik boyutları Yazılım proje rol tanımları için uygun beş faktör

kişilik tiplerinin tespit edilmesi 2012 [25]

Beş faktör kişilik boyutları

Beş faktör model boyutlarından sorumluluk, deneyime açıklık ve duygusal dengenin eşli

programlamaya etkileri

2012 [26]

500 adet IT iş ilanının incelenmesi Yazılım proje rolleri için talep edilen yumuşak

becerilerin tespiti 2012 [27]

Kişilik ve iş tercihleri arasındaki ilişki Yazılım Mühendisliğinde duygusal zeka, kişilik ve iş

tercihleri arasındaki ilişkilerin incelenmesi 2014 [28]

Literatür taraması Yazılım Mühendisliğinde kişilik özellikleri ile ilgili

40 yıllık çalışmaların taraması 2015 [29]

MBTI kişilik tipleri kullanılmıştır. Yazılım projelerinde görev tercihinde kişilik

tiplerinin etkisi 2015 [30]

Beş faktör kişilik tipleri kullanılarak geliştirilen yeni anket ile deneysel çalışma yapılmıştır.

Kişisel özelliklerin yazılım takımlarına etkisinin

incelenmesi 2017 [31]

İncelemedir. Yazılımda insan etkisi ve yumuşak becerilerin önemi 2017 [32]

(23)

Dick ve Zarnett yaptıkları çalışmada iki kişinin aynı bilgisayar üzerinde çalışarak yazılım geliştirme yönteminin başarılı olabilmesi için gerekli olan kritik kişilik özellikleri incelemişlerdir. 8 yazılım geliştirici ile 3 hafta eşli programlama çalışması gözlemlenmiştir ve geliştiriciler ile süreç ile ilgili görüşmeler yapılmıştır. Bu süreç sonunda, eşli programlama için gereken özelliklerin iletişim, rahatlık, güven ve uzlaşma olduğu tespit edilmiştir. Eşli programlama için gereken kişilik özelliklerine sahip olan ekibin, sadece teknik beceriler ile oluşturulan bir programlama ekibinden daha başarılı olacağı ileri sürülmüştür [10].

Acuna ve Juristo proje rollerine uygun kişilerin atanması ile ilgili bir çalışma gerçekleştirdiler. Yazılım proje sürecindeki çeşitli görevleri yapmakla sorumlu 20 farklı rol tanımı için gereken kişisel yetenekleri tespit ederek yüksek ve orta olarak ağırlıklandırmışlardır. 16PF kişilik testini kullanarak yaptıkları deneysel çalışma ile kişilik rol eşleştirmesini yapmışlardır. Çalışma sonucunda yetenek odaklı yazılım süreç modelini ortaya koymuşlardır [11].

Cunha ve Greathead’ ın çalışmasında kodlardaki bulguları bulabilme yeteneği MBTI kişilik tipleri ile ilişkilendirilmiştir. 64 adet 2. Sınıf lisans öğrencisi ile yapılan deneysel çalışmada MBTI kişilik tiplerinden NT (Sezgilerini Kullanan - Düşünen) kişilik tipine sahip bireylerin kod bulgularını tespit etme konusunda daha başarılı oldukları ortaya çıkmıştır [12].

Beecham, Baddoo ve Hall yazılım mühendisliğinde motivasyon ile ilgili literatürde yapılan çalışmaları incelemişlerdir. Yaptıkları literatür taramasına göre 9 çalışmada çalışma koşulları ve kaynak eksikliği motivasyonu düşüren nedenler arasında gösterilmiştir.

Ücretin etkisi ise statüye bağlı olarak değişkenlik göstermektedir. Genç mühendislerde ücret motivasyonu arttırıcı bir etkiye sahipken, deneyimli mühendislerde motivasyon üzerinde çok fazla etkili olmadığı tespit edilmiştir [13].

Sharp ve arkadaşları literatür taraması yaparak yazılım mühendisliği ve motivasyon faktörleri ile ilişkili literatürdeki tüm modelleri açıklamışlardır. MOCC isminde yeni bir model geliştirerek yazılım mühendisliğindeki motivasyon kavramlarını MOCC (Motivators, Outcomes, Characteristics ve Context) modeli ile açıklamışlardır [14].

(24)

Salleh ve arkadaşlarının ikili programlama yapan öğrenciler üzerinde yaptıkları çalışmada kişilik tiplerindeki farklılığın akademik performans üzerinde etkili olmadığı belirtilmiştir.

Öğrencilerin %88 ve %87’si eşli çalışma sırasında tecrübe ve güven seviyesinin arttığını ifade etmişlerdir [15].

Sfetsos ve arkadaşları 70 lisans öğrencisi ile kişilik tiplerinin eşli programlama performansı ile ilişkisini incelemek amacıyla bir çalışma yapmışlardır. Farklı kişilik özelliklerine sahip programcı çiftlerinin başarısının aynı kişilik özelliklerine sahip çiftlere göre daha yüksek olduğu ortaya çıkmıştır. Kişisel özellikleri belirlemek için Keirsey Temparement Sorter envanteri, değerlendirme için istatistiksel testler ve diskriminant analiz kullanılmıştır [16].

Walle ve Hamoy eşli programlamada iş birliğinin önemini ve kişilik tiplerini incelediler.

44 adet profesyonel programcının ses kayıtları işbirliği sınıflamasına göre kategorize edilerek işbirliği kategorileri ve gruplardaki kişilerin kişilik tipleri arasındaki ilişki belirlenmiştir. Kişilik tipleri belirlenirken beş faktör model kişilik boyutlarından faydalanılmıştır. Kişiliğin çiftler arasındaki işbirliği tipi üzerinde etkili olduğu ve farklı özellikteki kişilik tiplerine sahip bireyler arasında işbirliği ve iletişimin daha fazla olduğu gözlemlenmiştir [17].

Acuna ve arkadaşları kişisel özelliklerin yazılım proje takımındaki iş tatmini ve yazılım kalitesine etkilerini ortaya koydular. Beş faktör kişilik boyutlarının 35 yazılım geliştirme takımı (105 kişi) üzerindeki ölçümlerinin sonucunda, yumuşak başlılık (agreeableness) ve sorumluluk (conscientiousness) kişilik özelliklerine sahip bireyler ile işlerini organize edebilen bireylerde iş tatminin daha fazla olduğu tespit edilmiştir. Ayrıca, dışadönüklük (extraversion) boyutu ile yazılım ürün kalitesi arasında pozitif bir bağlantı olduğu ortaya çıkmıştır [18].

Feldt ve arkadaşlarının yazılım mühendislerinin kişilik tipleri ve iş tutumları arasındaki bağlantıları ortaya çıkarmak için yaptıkları çalışma yapmışlardır. IPIP 50-item beş faktör kişilik testinin kullanıldığı çalışmada dışadönük kişilik tipine sahip mühendislerin planlı işlerde daha başarılı oldukları, gelişime açık kişilik tipine sahip mühendislerin tüm proje için sorumluluk alabildikleri ortaya çıkmıştır [19].

(25)

Martinez ve arkadaşları IPIP kişilik testi ve bir bulanık mantık metodu olan ANFIS öğrenme yöntemini kullanarak yazılım projelerinde görev ataması ile ilgili bir çalışma yapmışlardır. 72 yazılım mühendisi kendileri için uygun olan 6 rol tanımından birine bu yöntemle atanmıştır [20].

Bell ve arkadaşları, 2. Sınıf lisans öğrencileri üzerinde beş faktör kişilik testini kullanarak yaptıkları çalışmada kişisel özelliklerin tasarım desenleri ile ilgili çalışmalara ve performansa etkisini incelemişler fakat Acuna ve arkadaşlarının çalışmasının aksine performans ve kişilik özellikleri arasında çok güçlü ilişki tespit edememişlerdir [16]. Beş faktör boyutlarından duygusal denge (neurotism) ve tasarım desenleri arasında zayıf bir ilişki olduğunu belirtmişlerdir [21].

Salleh ve arkadaşları, lisans öğrencileri ile yaptıkları bir çalışmada beş faktör modeli boyutlarından biri olan sorumluluk boyutunun eşli çalışma üzerindeki etkisini araştırmışlardır. Çıkan sonuca göre sorumluluk boyutu eşli çalışma performansı üzerinde etkili değilken, deneyime açıklık boyutunun etkili olduğunu belirtmişlerdir [22].

Capretz ve Ahmed, yazılım proje rol tanımlarından sistem analisti, tasarımcı, programcı, test uzmanı ve bakımcı için gereken teknik ve yumuşak becerileri belirleyerek MBTI kişilik tipleri ile eşleştirmeler yapmışlardır. Proje rolleri için uygun MBTI kişilik tipleri tespit edilmiştir. Çalışmadaki eşleştirmeye göre, sistem analisti dışadönük ve duygusal, sistem tasarımcısı sezgisel ve düşünsel, programcı içe dönük, duyusal ve düşünsel, testçi duyusal ve yargılayıcı, bakımcı ise duyusal ve algılayıcı kişilik tipine sahip olmalıdır [23].

Martinez ve arkadaşları, bulanık mantık yöntemini kullanarak rol atamasında kullanılmak üzere yazılım mühendisliği dersleri için bir uygulama geliştirdiler. Kişilik tipleri belirlemede MBTI testi kullanılmıştır. Bu çalışmada MATLAB bulanık mantık aracını kullanılarak her bir rol tanımına uygun kişilik tipleri için ağırlıklandırma yapılarak rol ataması gerçekleştirilmiştir [24].

Rahman ve arkadaşları yazılım proje rol tanımlarından sistem analisti, tasarımcı, programcı, test uzmanı ve bakımcı için gereken teknik ve yumuşak becerileri belirleyerek beş faktör kişilik tipleri (dışadönüklük, yumuşak başlılık, deneyime açıklık, duygusal denge, sorumluluk) ile eşleştirmeler yapmışlardır. Proje rolleri için uygun beş faktör kişilik

(26)

tipleri tespit edilmiştir. Sistem analisti ve tasarımcısı rolü için deneyime açıklık ve yumuşak başlılık, programcı rolü için deneyime açıklık, yumuşak başlılık ve dışadönüklük, testçi ve bakımcı rolü için deneyime açıklık ve sorumluluk tiplerinin olması gerektiğini belirlemişlerdir [25].

Salleh ve arkadaşları yaptıkları çalışmalarda 2009 ve 2010 yıllarında Auckland Üniversitesi’nde 594 öğrenci ile yaptıkları deneysel çalışmalarda beş faktör kişilik modelinden deneyime açıklık, sorumluluk ve duygusal dengenin eşli programla performansı üzerindeki etkileri incelemişlerdir. Duygusal denge ve sorumluluk boyutunun ikili programlama üzerinde etkisi görülmezken, deneyime açık kişilik özelliğine sahip öğrencilerin ikili programlama çalışmasındaki akademik başarılarının daha yüksek olduğu ortaya çıkmıştır [26].

Ahmed ve arkadaşlarının çalışmalarında, Kuzey Amerika, Avrupa, Asya ve Avustralya bölgelerine ait 500 IT iş ilanı incelenerek yazılım proje rolleri için şirketlerin talep ettiği yumuşak beceriler belirlenmiştir. Talep derecesine göre yüksek, orta, düşük şeklinde sınıflandırma yapılmıştır. Roller için yüksek oranda talep edilen beceriler şu şekildedir:

 Sistem Analisti: İletişim becerisi, analitik düşünme ve problem çözme becerisi, takım oyuncusu olma.

 Sistem Tasarımcısı: İletişim becerisi, kişilerarası beceri

 Programcı: İletişim becerisi

 Testçi: İletişim becerisi

Bölgesel olarak talep edilen becerilerin değiştiği belirtilmiştir. Bakımcı için herhangi bir araştırma yapılmamıştır [27].

Kosti ve arkadaşları 279 yüksek lisans öğrencisi üzerinde gerçekleştirdikleri deneysel bir çalışma sonucunda, duygusal zekâ ve kişilik ile iş tercihleri arasında bağlantı olduğu, öz anlayış özelliği ile iş tercihleri arasında bir bağlantı kurulamadığı belirtilmiştir [28].

Cruz ve arkadaşları kişilik tiplerini konu alan son 40 yılı kapsayan bir literatür tarama çalışması gerçekleştirdiler. 1970 ve 2010 yılları arasındaki yazılım projelerine kişilik tiplerinin etkisini inceleyen çalışmada, 2002 yılı sonrasında, çalışmaların daha çok eğitim ve çift kişi programlama üzerine yoğunlaştığını tespit edilmiştir. Ayrıca, kişilik tiplerini

(27)

belirlemek için MBTI testinin en çok kullanılan kişilik testi olduğunu ortaya koyuldu.

Ayrıca deneysel çalışmalarda, katılımcıların %60 öğrenciler, %40 profesyoneller olarak dağılım gösterdiği tespit edilmiştir. Şekil 2.2’de yazılım mühendisliğinde kişilik tipleri ile ilgili çalışmaların yıllara göre dağılımı bulunmaktadır [29].

Capretz ve arkadaşları yazılım projelerinde görev tercih etme durumunun MBTI kişilik tipleri ile ilişkisini incelemişlerdir. Analist, tasarımcı ve programcı rolleri tüm kişilik tiplerinde en çok tercih edilen roller iken, testçi ve bakımcı rollerinin daha az tercih edildiği tespit edilmiştir [30].

Yılmaz ve arkadaşları kişisel özelliklerin yazılım geliştirme takımları üzerindeki etkilerini incelemişlerdir. Beş faktör model kişilik tiplerinden duygusal denge, yumuşak başlılık, dışadönüklük, sorumluluk sahibi tiplerine sahip kişilerden oluşan takımların daha etkili olduğunu tespit etmişlerdir. Dışadönüklük kişilik tipinin literatürdeki araştırmalara kıyasla çok daha etkili bir faktör olduğunu belirtmişlerdir [31].

Capretz ve arkadaşları yazılımda insan etkisinin, yumuşak becerilerin önemini ve kültürel etkileri açıklamışlardır. İnsan psikolojisinin yazılımda önemli olmasına rağmen bu konudaki çalışmaların yetersiz kaldığını belirtmişlerdir [32].

Şekil 2.1. Yıllara göre yazılım mühendisliğinde kişilik tipleri ile ilgili çalışmaların dağılımı

Literatür taraması sonucu yapılan çalışmaların yazılım alanında yapılan çalışmalarda kişilik tipleri ve kişisel becerilerin etkileri, takım performansı ve uygun proje rolü atama

(28)

ile ilgili oldukları görülmektedir. Literatürde yazılım rolleri için gereken teknik görevler, kişisel beceriler, kişilik tipleri belirlenmiştir [23,25,27,30]. Literatürde tespit edilen eksikler şu şekildedir:

 Yazılım rolleri için gerekli teknik görevler belirlenirken ulusal veya uluslararası meslek tanımlamaları incelenmemiş, iş ilanlarında kullanılan teknik gereklilikler esas alınmıştır.

 Yazılım mühendislerinin kişilik tiplerini belirlemek için en çok kullanılan kişilik envanterinin MBTI olduğu tespit edilmiştir [29]. Ancak, yazılım proje rolleri için gereken becerilerin beş faktör kişilik özellikleri ile daha çok eşleştiği görülmüştür.

 Yapılan çalışmalarda yazılım rolleri için gerekli kişilik tipleri tespit edilirken uzman kişilerin görüşleri esas alınmamıştır.

Bu tezde beş faktör kişilik tiplerine yazılım rolleri için önem derecesine göre bir skor verilerek, takım üyelerinin kişiliklerine göre hangi role hangi oranda uygun olduğunu tespit etmek amacıyla yeni bir yöntem geliştirilmiştir. Literatürde, MBTI ve beş faktör model kişilik tipleri proje rolleri ile eşleştiren çalışmalarda kişilik tiplerinin roller için önem derecesi belirlenmemiştir [23,25]. Rol atama için literatürde bulanık yaklaşımların kullanımı mevcuttur [20,24]. Ancak, bu çalışmalar bulanık mantık çerçevesinde yapılmış olup bulanık kümelemenin rol belirleme için kullanıldığı bir çalışma mevcut değildir. Bu tez, makine öğrenmesine dayalı kümeleme yönteminin uygun rol belirleme için kullanıldığı ilk çalışmadır.

(29)
(30)

3. YAZILIM GELİŞTİRME SÜREÇLERİ VE MESLEKİ TANIMLAMALAR

Yazılım birçok süreçten geçerek ortaya çıkan bir üründür. Bu süreçler temel olarak gereksinim analizi, yazılım tasarımı, kodlama, test ve bakım olarak belirlenmiştir [35].

Yazılım geliştirme süreçlerinden her birinin gereksinimleri ve işleyişi farklıdır. Bu nedenle her süreç, farklı sorumluluklar ve yeterlilikler gerektirmektedir. Yazılım süreçlerindeki rollere ait görev tanımlarını ve teknik sorumlulukları belirlemek için, yazılım mühendisliği mesleğinin Uluslararası Çalışma Örgütü tarafından hazırlanan uluslararası meslek sınıflamaları ve Mesleki Yeterlilik Kurumu tarafından hazırlanan ulusal meslek tanımları incelenmiştir. Ayrıca, birçok bilgisayar mühendisliği programında “yazılım mühendisliği”

veya “yazılım mühendisliği proje yönetimi” gibi dersler ile bu süreçleri öğrenilebilmektedir. Bu nedenle dolaylı olarak bilgisayar mühendisliği de bu kapsamda değerlendirilebilmektedir. Ancak bilgisayar mühendisliği mesleğine ait meslek tanımlamaları tez kapsamına alınmamıştır.

3.1. Mesleki Yeterlilik Kurumu Tanımlarına Göre Yazılım Rolleri için Gerekli Teknik Görevler

MYK (Mesleki Yeterlilik Kurumu), meslek standartlarını temel alarak, teknik ve meslekî alanlarda ulusal yeterliliklerin esaslarını belirlemek; denetim, ölçme ve değerlendirme, belgelendirme ve sertifikalandırmaya ilişkin faaliyetleri yürütmek üzere 21 Eylül 2006 tarihli ve 5544 sayılı "Mesleki Yeterlilik Kurumu Kanunu" ile kurulmuştur [36]. MYK tarafından belirlenen görev tanımlarında, 5 ayrı yazılım süreci için tanımlı 2 rol bulunmaktadır. Bu roller, BT İş Analisti (Sistem Analisti) ve Yazılım Geliştiricidir [37,38].

Sistem analisti BT İş Analisti olarak isimlendirilmiştir. BT İş Analisti rolü için gereken görevler incelendiğinde yazılım test uzmanına ait görevlerin de bulunduğu tespit edilmiştir [37]. Yazılım Geliştirici olarak belirlenen rolün görevleri arasında da yazılım tasarımcısı ve yazılım bakımcısı rollerine ait görevler bulunmaktadır [38].

(31)

Çizelge 3.1. MYK tanımlarına göre BT iş analisti görevleri

Görevler Alt Görevler Olası Rol

Tanımı İş organizasyonu yapmak İş emirlerini almak

İş planlaması yapmak

Çalışılan alanın işe uygun düzenlenmesini sağlamak Üst yönetime bilgilendirme ve raporlama yapmak Dijital arşivleme yaptırmak

Sistem Analisti

Yazılım geliştirme projesinin ön hazırlığını yapmak

İş süreçleri bazında araştırma yapmak

Önceden geliştirilmiş mevcut ya da örnek yazılımlar üzerinde çalışarak bilgi edinmek

Sistem Analisti

Projeyi tasarlamak İş gereksinimlerini belirlemek için kullanıcı isterlerini belgelemek İş analizi dokümanını hazırlamak

Süreç tasarımını gerçekleştirerek belgelemek Yazılım kabul test senaryoları hazırlayıp belgelemek Değişiklik yönetimi politika ve prosedürlerini hazırlayıp belgelemek

İş analizi ve süreç tasarım dokümanları üzerinde nihai mutabakata varmak

Sistem Analisti

Geliştirme çalışmalarını koordine etmek İhtiyaçları yazılım geliştiricilere aktarmak

Proje geliştirme ve uygulamaya alma planının kesinleştirilmesini sağlamak

Değişiklik ihtiyaçlarını koordine etmek

Sistem Analisti

Yazılımın uygulama ortamına uygunluğunu ve çalışırlığını test etmek

Test ortamında gerekli testleri gerçekleştirmek Kullanıcılara test ve kullanım eğitimi vermek

Yazılım Test Uzmanı Yazılım dokümantasyonunu tamamlamak Kullanıcı dokümantasyonu oluşturmak

Teknik dokümantasyon oluşturmak

Sistem Analisti Yazılımın uygulamaya alma hazırlıklarını

yapmak

Uygulamaya alma projesinin maliyet ve zaman dokümanını hazırlamak

Uygulamaya alma projesinin nihai halini ilgili taraflarla paylaşmak

Sistem Analisti

Yazılım uygulamaya alma çalışmalarını koordine etmek

Yazılımın test ve canlı ortamlara kurulmasında danışmanlık yapmak

Veri aktarımı ve düzenleme çalışmalarında danışmanlık yapmak Kullanıcı eğitimi ve test çalışmalarında koordinasyon ve danışmanlık sağlamak

Sistem Analisti

Yazılım iyileştirme çalışmaları yapmak Yazılım iyileştirme ve güncelleme çalışmalarını belirleyerek başlatmak

Yazılım değişiklik yönetimine uygun test, doküman güncelleme, duyurma ve uygulamaya alma çalışmaları yapmak

Sistem Analisti

Mesleki gelişim faaliyetlerini yürütmek Mesleki eğitimlere katılmak

Mesleki ve teknolojik yenilikleri takip etmek Personelin eğitim almasını sağlamak Personelin işbaşı eğitimine iştirak etmek

Sistem Analisti

(32)

Çizelge 3.2. MYK tanımlarına göre yazılım geliştirici görevleri

Görevler Alt Görevler Olası Rol Adları

İş organizasyonu yapmak İş emirlerini almak İş planlaması yapmak

Çalışılan alanın işe uygun düzenlenmesini sağlamak

Üst yönetime bilgilendirme ve raporlama yapmak

Dijital arşivleme yaptırmak Personel yönlendirmesi yapmak

Yazılım Geliştirici

Yazılım projesi öncesi hazırlık yapmak Analiz dokümanlarını incelemek Projenin yazılım iş yükünü belirlemek Proje planının kesinleştirilmesini sağlamak Yazılım tasarımı yapmak

Veritabanı tasarımı yapmak

Veritabanı tasarım dokümanı oluşturmak Yazılım tasarım dokümanı oluşturmak Yazılım kabul test senaryoları hazırlayarak belgelemek

Tasarım üzerinde mutabakat sağlamak Harici yazılım bileşenlerini ve içeriği araştırmak

Yazılım Tasarımcısı

Veritabanı oluşturmak Veritabanı unsurlarını oluşturmak Veritabanı unsurlarının testini yapmak

Yazılım Geliştirici Yazılım geliştirmek Kullanıcı arayüzü standartlarını ve gerekli

kontrolleri oluşturmak

Geliştirme ortamlarının kurgusunu gerçekleştirmek

Güvenlik bileşenlerini ve kullanım standartlarını oluşturmak

Kullanıcı ara yüzü oluşturmak ve belgelemek Yazılım katmanlarını belirleyerek aralarındaki etkileşimi gerçekleştirmek

Veri kontrollerini ve iş kurallarını yazılım koduna dönüştürmek

Yazılım Geliştirici

Yazılımın uygulama ortamına uygunluğunu ve çalışırlığını test etmek

Test senaryolarını detaylandırarak belgelemek Test çalışma ortamlarının kurulmasını sağlamak Yazılımı test ortamlarına test edilmek üzere kurmak

Test ortamında gerekli testleri gerçekleştirmek Canlı ortam hız ve performans testlerine eşlik etmek

Yazılım Geliştirici

Yazılım dokümantasyonunun hazırlanmasını sağlamak

Kullanıcı dokümantasyonu oluşturmak Teknik dokümantasyon oluşturmak

Yazılım Geliştirici Yazılım uygulamaya alma çalışmalarını

koordine etmek

Yazılımın test ve canlı ortamlara kurulmasında danışmanlık yapmak

Veri aktarımı ve düzenleme çalışmalarında danışmanlık yapmak

Kullanıcı eğitimi ve test çalışmalarında koordinasyon ve danışmanlık sağlamak

Yazılım Geliştirici

Yazılım iyileştirme çalışmaları yapmak Yazılım iyileştirme ve güncelleme çalışmalarını belirleyerek başlatmak

Veritabanında belirlenen düzenlemeleri yapmak Test, doküman güncelleme, duyurma ve uygulamaya alma çalışmaları yapmak

Yazılım Bakımcısı

Mesleki gelişim faaliyetlerini yürütmek Mesleki eğitimlere katılmak

Mesleki ve teknolojik yenilikleri takip etmek Personelin eğitim almasını sağlamak Personelin işbaşı eğitimine iştirak etmek

Yazılım Geliştirici

(33)

Mesleki Yeterlilik Kurumu tanımlarına göre süreç rollerinin birbirinden tam olarak ayrılmadığı görülmektedir. BT İş Analisti, test uzmanının rolünü, yazılım geliştirici ise yazılım tasarımcısı ve yazılım bakımcısı rollerini üstlenmiş durumdadır.

3.2. Uluslararası Meslek Sınıflaması (ISCO-08) Tanımlarına Göre Yazılım Rolleri için Gerekli Görevler

ISCO-08 (International Standard Classification of Occupations) tanımlarına göre, literatürde 5 ayrı rol olarak tanımlanan yazılım ile ilgili roller, sistem analisti, yazılım geliştiricileri, başka yerde sınıflandırılmamış yazılım ve uygulama geliştiricileri ve analistleri ve uygulama programcıları olarak belirtilmiştir [39]. Sistem analisti görevleri arasında sayılan, sistem test planlarını oluşturma, adapte etme, uygulama gibi fonksiyonel çözümlemelerin uygulanması için gerekli sorumlulukları almak görevi yazılım test uzmanına ait bir görev olarak, yazılım geliştiricileri rolünün görevleri arasındaki, bilgisayar yazılım sistemlerini tasarlamak yazılım tasarımcısı rolüne ait bir görev olarak, işletim sistemleri, iletişim ortamları ve uygulama yazılımları için bakım prosedürlerini değerlendirmek, geliştirmek, güncellemek ve belgelemek ile hataları gidermek, yeni bir donanıma uygun hale getirmek veya ara yüzlerin güncellenmesi ve performansın arttırılması için mevcut yazılımı düzeltmek görevleri yazılım bakımcısına ait görevler arasında değerlendirilebilir. ISCO-08 sınıflandırmalarına göre başka yerde sınıflandırılmamış yazılım ve uygulama geliştiricileri ve analistleri sınıfına ait görevlerin, literatürde yazılım test uzmanı olarak adlandırılan rolün üstlendiği görevler ile benzer olduğu görülmektedir [39]. Bununla birlikte, uygulama programcıları meslek sınıfına ait görevler de yazılım bakımcısının görev tanımına uymaktadır [39].

Çizelge 3.3. ISCO-08 meslek sınıflamasına göre yazılım alanındaki meslekler ve görevler

ISCO-08 Rol Adı Görevler Olası Rol Adları

Sistem Analisti Kullanıcılara danışarak talepleri belirlemek ve doküman haline getirmek, sistem ilkelerine ilişkin anlaşma sağlamak amacıyla yönetime danışmak

İş süreçlerini, prosedürlerini ve çalışma pratiklerini tanımlamak ve analiz etmek

Verimsiz uygulamaları tanımlamak ve değerlendirmek, en uygun iş uygulamaları ile sistem işlerliği ve davranışını tavsiye etmek Sistem test planlarını oluşturma, adapte etme, uygulama gibi fonksiyonel çözümlemelerin uygulanması için gerekli sorumlulukları almak

Sistem geliştiricilerinin kullanımı için fonksiyonel özellikleri geliştirmek

İş akışını geliştirmek veya yeni amaçlara hizmet etmek için sistemi genişletmek veya yenilemek

Sistem Analisti Yazılım Test Uzmanı

(34)

Çizelge 3.3. (devam) ISCO-08 meslek sınıflamasına göre yazılım alanındaki meslekler ve görevler

Yazılım Geliştiricileri Yazılım uygulamaları ve işletim sistemlerine yönelik talepleri araştırmak, analiz etmek ve değerlendirmek

Bilgisayar yazılım sistemlerini araştırmak, tasarlamak ve geliştirmek

Donanım ve yazılım arasındaki ara yüzleri değerlendirmek için mühendislik personeline danışmak

Yazılım testi ve geçerlik prosedürlerini geliştirmek ve yönetmek;

Hataları gidermek, yeni bir donanıma uygun hale getirmek veya ara yüzlerin güncellenmesi ve performansın arttırılması için mevcut yazılımı düzeltmek

Yazılım programlaması ve dokümantasyon geliştirilmesi konularını yönetmek

İşletim sistemleri, iletişim ortamları ve uygulama yazılımları için bakım prosedürlerini değerlendirmek, geliştirmek, güncellemek ve belgelemek

Yazılım sisteminin bakımı ile ilgili müşterilere danışmak.

Yazılım Geliştirici

Yazılım Tasarımcısı Yazılım Bakımcısı

Başka yerde sınıflandırılmamış yazılım ve uygulama geliştiricileri

ve analistleri

Yazılım test planlarını geliştirmek ve belgelemek

Yazılım ve donanımı kurmak, test işlemleri hazırlığında işletim sistemi yazılımını yapılandırmak

Programların kullanıcı taleplerine ve yürürlükteki kılavuzlara göre çalıştığını onaylamak

Yazılım uygulamaları ile bilgi ve telekomünikasyon sistemleri testlerinin sonuçlarını oluşturmak, analiz etmek ve belgelemek Yazılım ve bilgi sistemleri test politikalarını, prosedürlerini ve kodlarını geliştirmek ve uygulamak.

Yazılım Test Uzmanı

Uygulama programcıları Onaylanmış kalite standartları ile uyumlu talimatlar ve özelliklere göre ana hatları oluşturulmuş programlama kodlarını yazmak ve bakımını yapmak

İşletim etkinliğini artırmak veya yeni taleplere adapte etmek için mevcut programları düzeltmek, onarmak veya genişletmek Programların ve yazılım uygulamalarının istenilen bilgiyi üreteceğini onaylamak için deneme çalışmaları yapmak;

Program geliştirme dokümantasyonunu derlemek ve yazmak Teknik problemleri, süreçleri ve çözümleri tanımlamak ve bunlarla ilgili bilgilendirme yapmak.

Yazılım Bakımcısı

Yukarıdaki tablolarda belirtildiği gibi, ISCO-08 meslek sınıflaması ve MYK standartlarında, rol tanımlarının literatürde belirtildiği gibi kesin olarak birbirinden ayrılmadığı görülmektedir. Yazılımın her süreci farklı görev ve sorumluluklar gerektirdiği için rol tanımlarının farklı olması gerekmektedir.

Tabloda yazılım geliştirme süreçlerinin tanımları ile ISCO ve MYK tarafından ilgili süreç için belirlenen meslek grubunun adı yer almaktadır. ISCO tasarım, kodlama ve bakım süreçleri için tek tip rol tanımlarken, MYK tanımlarına göre, gereksinim analizi ve test süreci BT İş analisti, tasarım, kodlama ve bakım faaliyetleri Yazılım Geliştirici tarafından gerçekleştirilmektedir. Ancak, yazılım geliştirme süreçlerinin her biri farklı sorumluluk ve yetenekleri gerektirmektedir. Bu nedenle yapılan çalışmada, yazılım süreçleri için SWEBOK tarafından belirlenen çizelge 3.4’teki süreç tanımları referans alınmıştır.

(35)

Süreçlere ait rol isimleri ise literatür tanımlarına uygun olarak çizelge 3.5’te olduğu gibi belirlenmiştir.

Çizelge 3.4. SWEBOK tanımlarına göre yazılım geliştirme süreçlerinin ISCI-08 ve MYK’daki rol karşılıkları

Yazılım Geliştirme Süreçleri Süreç Tanımı ISCO Rol Adı MYK Rol Adı

Gereksinim Analizi

Yazılım ürününün tüm yaşam döngüsü boyunca gereksinimlerin

yönetiminin yanı sıra, yazılım gereksinimlerinin belirlenmesi, analizi, belirtimi ve onaylanması

ile ilgilidir.

Sistem analisti BT İş Analisti

Yazılım Tasarımı

Yazılımın bileşenlere nasıl ayrıştırıldığı ve düzenlendiği ve

bu bileşenler arasındaki arabirimler belirlenir. Yazılımın

mimarisi tanımlanır.

Yazılım geliştirici Yazılım Geliştirici

Yazılımın Kodlanması

Kodlama, doğrulama, birim ve entegrasyon testi yapılarak yazılımının ayrıntılı olarak oluşturulmasını ifade eder.

Yazılım geliştirici Yazılım Geliştirici

Yazılım Testi

Yazılım testi, bir programın, genellikle sınırsız yürütme etki alanından uygun şekilde seçilmiş

sonlu bir dizi test üzerinde beklenen davranışlar sağladığı dinamik doğrulamaya dayanır.

Başka yerde sınıflandırılmamış yazılım ve uygulama

geliştiricileri ve analistleri

Yazılım Geliştirici

Yazılım Bakımı

Yeni kullanıcı gereksinimleri, çalışma ortamlarının değişmesi

ve hataların giderilmesi için yazılımda değişiklik yapılan

süreçtir.

Yazılım geliştirici Yazılım Geliştirici

Çizelge 3.5. Yazılım geliştirme süreçlerine ait literatürde kullanılan rol isimleri

Yazılım Geliştirme Süreçleri Rol

Gereksinim Analizi Sistem Analisti

Yazılım Tasarımı Yazılım Tasarımcısı

Yazılımın Kodlanması Programcı

Yazılım Testi Yazılım Testçisi

Yazılım Bakımı Yazılım Bakımcısı

Yazılım projelerinde çalışan kişilerin, çalıştıkları rolün gerektirdiği sorumlulukları gerçekleştirmek için, teknik becerilerinin yanında kişisel özelliklerinin de ilgili role uygun olması gerekmektedir. Pek çok çalışmada kişiliğin akademik performans, ders seçimi, üniversite eğitimini ve kariyer seçimi ile ilişkili olduğu tespit edilmiştir [40]. Yazılım projelerinde takım performansının ve görev seçiminin kişisel özellikler ve beceriler ile ilişkili olduğunu gösteren çalışmalar mevcuttur [21,28]. Yazılım süreçleri için gerekli kişisel beceriler ve bu beceriler ile ilişkili kişilik tiplerine 4. Bölümde yer verilmiştir.

(36)

4. YAZILIM PROJELERİNDE KİŞİSEL ÖZELLİKLERİN ROLÜ

Bu bölümde çizelge 3.4’te yer alan yazılım rol tanımları üzerinde kişisel özelliklerin rolü incelenmiştir. Kişisel özellikler kişisel beceriler ve kişilik tipleri olmak üzere 2 ayrı başlık altında ele alınmıştır.

4.1. Yazılım Rol Tanımları ve Kişisel Beceriler

Bu bölümde yazılım süreçlerinin her bir yazılım proje rolü için teknik gereklilikleri yerine getirebilmek için gereken kişisel beceriler belirlenmiştir. Sistem analisti, yazılım tasarımcısı, programcı, yazılım test uzmanı ve yazılım bakımcısı rolleri için gerekli kişisel beceriler alt bölümlerde yer almaktadır.

4.1.1. Sistem analisti için gerekli kişisel beceriler

Sistem analizi aşamasında, sistem analisti kullanıcıların ihtiyaçlarını ve yazılım gereksinimlerini belirler, sistemin özgün özelliklerini tespit eder ve gereksinimlerin karşılanacağı şekilde uygulamanın soyut bir modelini oluşturur. Sistem analizi aşaması kullanıcılar ve müşteriler ile etkileşim gerektirir. Ayrıca, sistem analistleri kullanıcıların ihtiyaçlarını tam olarak anlayabilmek için empati kurabilmelidir. Bu nedenle kişiler arası beceriler ve iletişim becerileri sistem analistleri için gerekli becerilerdir [23].

Ahmed ve arkadaşlarının çalışmasında, %31 Kuzey Amerika, %26 Avrupa, %23 Asya ve

%20’si Avustralya bölgesinden olan 500 iş ilanının analizi sonucu sistem analisti, yazılım tasarımcısı, programcı ve yazılım testçisi için aranan 9 temel beceri tespit edilmiştir. Bu beceriler, iletişim becerisi, kişiler arası ilişki becerisi, analitik düşünme ve problem çözme becerisi, takım içi çalışma becerisi, organizasyon becerisi, hızlı öğrenebilme, yalnız çalışabilme, yenilikçi olma, değişime açıklık olarak belirlenmiştir. Bu becerilerden, iletişim becerisi, analitik düşünme ve problem çözme becerisi ve takım içi çalışma becerisinin sistem analistleri için en çok aranan beceriler olduğu tespit edilmiştir. Fakat yenilikçi olma ve kişiler arası ilişkiler becerisi de sistem analistleri için önemli olmasına rağmen yazılım sektöründe yeteri kadar talep edilmediği görülmektedir [27].

Referanslar

Benzer Belgeler

Gebelikte meydana gelen genişlemiş uterusa bağlı venöz staz, hormonal venöz atoni, trombin ve çeşitli pıhtılaşma faktörlerinin (fibrinopeptid A) düzeyinde artış,

Araştırma kapsamında seçilen İstanbul’da bulunan üç vakıf üniversitesinin kullandığı sloganların anlamlarının ne olduğu, hedef kitle olan öğrencilere

Bu araştırma, ülkemizde okul öncesi döneme yönelik resimli çocuk kitaplarının, okul öncesi eğitim kurumlarında uygulanan Milli Eğitim Bakanlığı 2006 Okul Öncesi

Japonya’da bir araştırmacının yü- rüttüğü deneyler sonunda önümüz- deki günlerde ilk kez bir insan yu- murtası, fare testislerinde geliştiril- miş

Briefly, electrodes were immersed into silica nanoparticle solution while 15 V of positive voltage was applied to the patterned electrode followed by changing the solution into

Genel olarak literatür bilgilerinin ›fl›¤›nda riskli kabul edilen ifllerde çal›flma oran› hasta grubunda kontrollere k›yasla anlaml› derecede yüksek bulundu p <

Benzer bir araştırma olan Kurtpınar (2011)’a göre dışadönüklüğün işe tutkunluk üzerinde etkisi olmadığı belirtilmektedir fakat buradaki etkisizlik,

integrifolia populations collected from 2 different locations in Turkey were used to analyze phylogenetic relationships and genetic variation by using ITS1 sequences and