Proje Yönetimi Biliminde Delphi Algoritması

Proje Yönetimi Biliminde Delphi Algoritması

Projeler hazırlanırken en önemli sıkıntı proje adımlarının ne kadar sürede bitirilebileceğinin tahminidir. İş akışlarının adam gün hesapları proje analistlerini en çok uğraştıran ve en çok hatanın meydana geldiği, projenin en önemli bölümlerinden bir tanesidir. Adam gün hesaplarını yaparken ve kaynak planlamayı yaparken birçok teknik kullanılır. Delphi Algoritması ise bu tekniklerden bir tanesidir. Açıklama

Proje planları yapılırken ve kaynak planlaması yapılırken en çok kişisel tecrübelerden ve daha önce benzer projelerin kurum içerisinde ne kadar sürede nasıl bitirildiğinin analizlerinden faydalanılır. İş akışlarının adam gün hesabının yanlış yapılması proje planında bir çok sapmalara yol açar. Fazla yapılan adam gün hesaplamarı gereğinden yapılırsa fazla kaynak kullanımına yol açacak proje bütçesi artacaktır. Az yapılan adam gün hesapları projenin söz verilen zamanda bitirilememesine ya da kaynakların çok yoğun olarak kullanılmasına yol açar. Her iki durumda kurum için istenmeyen durumdur peki doğru analiz yapmak için ne yapacağız işte tam burada proje yönetimi bilimi karşımıza çıkıyor. Zaman hesaplamalarında kullanılan en bilinen tekniklerinden birisi Delphi Algoritmasının kullanılmasıdır.

Delphi algoritmasının en büyük avantajı adam gün hesaplarını bir kişinin tekelinden çıkartıp aynı seviyedeki birden fazla analistin tecrübelerinden faydalanma esasıdır. Proje tahmininde seçilecek kişilerin proje iş akışlarına 3 tipe göre adam gün hesaplarını yapmaları gerekir. Bunlar en iyi şartlara göre (optimistic), normal şartlara (most likely) göre ve en kötü duruma (pessimistic) göre adam gün hesaplarıdır. Bu hesaplar alındıktan sonra iş akışları için adam gün hesabı yapmak için istatistik biliminden faydalanılır. Bu algoritmada en önemli kısım iş akışlarının adam gün hesap tahminleri alınacak kişilerin seçilmesidir. Seçimde aşağıdaki maddelere dikkat edilmelidir:

* Seçilen kişiler gerekli tecrübe düzeyinde olmalıdır.

* Kişiler seçilirken projeye benzer projelerde aktif olarak rol almış kişilerden seçilmelidir.

* Kişiler hesaplarını yaparken birbirini etkilememeli hatta birbirinin hesaplarını görmemeleri gerekmektedir

* Eğer hesaplama yapacak kişiler projede rol alacaksa, kendi sorumluluğundaki iş akışının gereğinden fazla adam gün göstermek için yanlış hesaplama yapabilir. Bunun için mümkün olduğu kadar iş akışlarında rol alacak kişilere hesap yaptırılmamalıdır.

Örnek

Problemimiz bir kurumun internet sitesinin yapılması olsun. İnternet sitesinde görsellik olarak belli bir düzeyde olması içerisinde forumun, haberlerin, duyuruların olması isteniyor. Çok fazla olmamak şartıyla gerektiğinde veritabanına bağlanıp şirket hakkındaki istatistiksel verilerin ve raporların verilmesi isteniyor. Bu iş akışı için 5 analistten adam gün hesaplarını alıyoruz:

Analistler Optimistic Most Likely Pessimistic 1. Analist 10 15 20 2. Analist 20 30 35 3. Analist 5 7 10 4. Analist 12 15 17 5. Analist 15 25 30

Her bir sütunun aritmetik ortalamasını hesaplıyoruz.Optimistic: 12,4Most Likely: 18,4Pessimistic: 22,4

Delphi algoritmasını kullanarak projenin tahmini adam gün sayısını hesaplıyoruz (Optimistic_ort + (MostLikely_ort*4) + Pessimistic_ort) / 6  (12,4 + (18,4 * 4) + 22,4 ) = 18,06 (adam gün) Standart sapma kullanılarak en iyi durum ve en kötü durumda projenin bitiş tarihlerini bulabiliriz (Standart Sapma= Pessimistic_ort - Optimistic_ort) / 6  (22,4 - 12,4) / 6 = 1,66

Delphi Algoritması kullanılarak projemiz 18,1 adam gün içerisinde bitiyor.Proje en iyi durumda (18,06 - 1,66) = 16,4 adam gün sürüyor. Proje en kötü durumda (18,06 + 1,66) = 19,73 adam gün sürüyor.

Delphi Algoritmasını bazı projelerde birden fazla skalaya bölünerek yapıldığı görülmüktedir. Bu skalaların ağırlıkları normal durumda iken fazla, kötümser ya da iyimser durumlarına giderkende ağırlığı azaltıralarak skala ağırlıkları belirlenebilir. Yine Delphi algoritması sadece adam gün hesabında değil farklı risk yönetimlerinde de kullanılabilinir.

Kaynak Kod using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace DelphiAlgorithm { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { panel1.Visible = true; DataTable dt = new DataTable(); DataColumn dc_01 = new DataColumn(); DataColumn dc_02 = new DataColumn(); DataColumn dc_03 = new DataColumn(); dt.Columns.Add(dc_01); dt.Columns.Add(dc_02); dt.Columns.Add(dc_03); for (int i = 0; i < dataGridView1.RowCount; i++) { DataRow dr = dt.NewRow(); dr[0] = dataGridView1[0, i].Value; dr[1] = dataGridView1[1, i].Value; dr[2] = dataGridView1[2, i].Value; if (dr[0].ToString() == "" || dr[1].ToString() == "" || dr[2].ToString() == "") continue; dt.Rows.Add(dr); } CalculateDelphiAlgorithm(dt); } public void CalculateDelphiAlgorithm(DataTable dt) { double ort = 0; double StandartSapma = 0; ort = (GetAverage(dt, 0) + ( GetAverage(dt, 1) * 4 ) + GetAverage(dt, 2)) / 6.0; StandartSapma = (GetAverage(dt, 2) - GetAverage(dt, 0)) / 6; label4.Text = Convert.ToString(ort); label5.Text = Convert.ToString(ort - StandartSapma); label6.Text = Convert.ToString(ort + StandartSapma); } public double GetAverage(DataTable dt, int colunmNumber) { double total = 0; ; for (int i = 0; i < dt.Rows.Count; i++) { total += Convert.ToDouble(dt.Rows[i][colunmNumber].ToString()); } return (double)total / (double)dt.Rows.Count; } private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { panel1.Visible = false; } } }

Döküman Arama

Başlık :

Kapat