Cuma, 16 Kasım 2018

Yazılım Projelerinin Yönetimi

YAZILIM PROJELERİNİN YÖNETİMİ

Merhabalar,

Sizlere bu yazımda, yazılım projelerinin başarısız olmasının en önemli nedeni olan yazılım projelerinin yönetiminden bahsedeceğim.

Yazılım projelerinin yönetimi diğer proje yönetimlerinden farklıdır. Peki neden farklıdır?

  • Öncelikle ürünün fiziksel varlığı yoktur. Bu nedenle proje yöneticisi, ilerlemeyi görebilmek için diğer ekip üyelerinin ürettiği belgelendirmeye ihtiyaç duyar.
  • Yazılım geliştirme süreci standart değildir. Yani yazılım süreçleri kurumdan kuruma farklılık gösterir.
  • Çoğu yazılım projesi bir defalık projedir. Yani projelerin kendine has özellikleri vardır, hızlı teknolojik değişiklikler proje yöneticisinin deneyimini geçersiz kılar.

Proje yönetimi aşaması genel olarak;

  • Gereksinimlerin belirlenmesi,
  • Projenin planlanması ve yürütülmesi aşamalarında paydaşların çeşitli ihtiyaçlarının, kaygılarının ve beklentilerinin ele alınması,
  • Projenin birbiri ile çelişen kısıtlarının (zaman, kalite, zaman çizelgesi, bütçe, kaynaklar, risk) dengelenmesi

konularını içerir.

Proje geliştirme aşamasında ise,

  • Öncelikle proje fikri belirlenir. Proje ile proje fikri aynı şeyler değildir. Bir proje fikrinin proje olabilmesi için proje fikrinin geliştirilmesi ve yaklaşımı, amacı, içeriği, yöntemi, sorumlusu/yürütücüsü, süresi, planı, faaliyetleri, sonuçları, ürünleri, etkileri, kaynakları, bütçesi, bitişi ve değerlendirilmesi gibi işlerin çalışmalar haline getirilmiş olması gerekir.
  • Proje fikri ortaya çıktıktan sonra projenin amacı, hedefleri, çıktıları ve uygulama adımları tanımlanır.
  • Bunlar tanımlandıktan sonra projenin paydaşları tarafından sorun analizi, amacın tanımlanması, stratejinin belirlenmesi aşamalarından oluşan mevcut durum analizi yapılır. Bu aşamada çözmek istediğimiz sorun ya da değiştirmek istediğimiz şeylerin içinde bulundukları koşullar, özellikler, sorunlarla ilgili tarafların durumları, düşünce ve tavırları netleşir.

Yazılım geliştirme sürecine bakacak olursak;

Yazılım geliştirme sürecinde öncelikle temel hedef ve kapsam tespit edilir. Ardından sırasıyla planlama, analiz, mimari tasarım, gerçekleştirme, test, kurulum ve bakım aşamaları gerçekleştirilerek süreç tamamlanır. Tüm süreç bütünleşik yönetilmelidir.

  • Projenin genel hedef ve süresi özet bir plan çerçevesinde belirlenir.

 

  • Kullanıcı ihtiyaçları analiz edilir.
  • Analiz edilen ihtiyaçların yazılımla nasıl karşılanacağı modellenir. Bu model prototip olarak son kullanıcıya gösterilip, fikri alınarak olgunlaştırılabilir.
  • Gerçekleştirme aşamasında nesne, ekran ve rapor gibi yapıların kodları geliştirilir.
  • Yapılanlar test edilir, hatalar düzeltilir ve test sonucu başarılı olan proje devreye alınır.
  • Devreye aldıktan sonra gelen istekler doğrultusunda proje bakım çalışmaları devam eder.

 

 

  • Bir yazılım projesinin başarı ile sonuçlanabilmesi için proje yöneticisinin bu yazılım geliştirme sürecine hakim olması gerekir. Yazılım geliştirme süreci proje, ekip ve kurum yapısından kaynaklanan birçok farklı ihtiyaca cevap vermelidir. Bu durum doğrusal, yinelemeli ve çevik geliştirme gibi farklı yazılım süreç modelleri ortaya çıkmasına neden olmuştur. Tercih edilen model, proje yönetimin nasıl yapılacağını büyük ölçüde etkiler. Proje yöneticisi geliştirilecek yazılıma, ekibin tecrübesine, kuruma ve müşteri beklentilerine en uygun yöntemi seçmelidir.

  • Yazılım projelerinin başarılı sayılabilmesi için tanımlanan iş hedeflenen kalitede, zamanda ve bütçede teslim edilmelidir.

Proje üçgeni dediğimiz bu 3 unsur -zaman, kapsam ve bütçe- arasındaki denge korunmalıdır.

Kalite proje üçgenin dördüncü parçasıdır. Üçgenin merkezinde yer alır ve bu nedenle, herhangi bir tarafta yapılan değişiklikten direkt olarak etkilenir. Bu nedenle yazılım geliştirirken bir sorun ortaya çıktığında proje yöneticisinin görevi bunun proje üçgenindeki yerini bulmaktır. Sorun zamanla mı, bütçeyle mi yoksa kapsamla mı ilgili.

Proje yöneticisi sorunun nerede olduğunu tespit ettikten sonra ikinci olarak üçgenin hangi taraflarını değiştirebileceğini ve hangi taraflarının “sabit” olduğunu belirlemelidir. Çünkü diğer iki bölümden en az birini etkilemeden bir projenin bütçesini, zamanlamasını ya da kapsamını değiştiremezsiniz. Proje yöneticisi bunu da belirledikten sonra sorunu gidermek için gerekli ayarlamaları yapıp, projeyi en uygun duruma getirdikten sonra projeyi tamamlamalıdır.

Burada önemli olan nokta evrensel bir kalite standartının olmamasıdır. Belirli bir proje için kalite, projenin kendi içinde tanımlanır. Bazı şirketler için projenin bütçe dahilinde tutulması en önemli kalite ölçütüyken bazıları içinse pazara zamanında sürülmesi en önemli kalite ölçütüdür.

Burada çalışma şekilleriyle ilgili örnek vermek gerekirse;

Diyelim ki bitiş tarihi öne çekmek istiyorsunuz(zaman). Bunun için işi daha hızlı bitirmek üzere kaynaklara daha fazla harcama yapabilirsiniz (bütçe) veya yeni termin tarihinden önce yapılacak daha az iş olması için özelliklerde kesinti yapabilirsiniz(kapsam).

Veya bir ürüne özellik eklemek istiyorsunuz(kapsam), bunun için yeni çalışmayı karşılayacak süreyi yaratmak üzere termini uzatabilir(zaman) veya daha hızlı yapılmasını sağlamak için insan kaynağı ekleyebilirsiniz(maliyet). Veya bunların ikisini birden yapabilirsiniz. Burada nasıl bir tercih yapacağınızın kararını şirketinizin kalite ölçütüne göre belirlemeniz gerekiyor. Ayrıca çoğu projede, üçgenin en az bir tarafı sabittir. Bu tarafı değiştiremezsiniz.

  • Yazılım projelerinin en önemli kaynağı insandır ve proje yönetimi büyük ölçüde insan yönetimidir. Genel yönetim, bilimsel yönetim, süreç tabanlı yönetim, bilgi çağı yönetimi vb olmak üzere farklı yönetim şekilleri vardır. Burada proje yöneticisi yazılım geliştiricilerin bilgi ve becerilerini dikkate alan, yetki paylaşımına ve yeni fikirlere açık esnek bir yönetim tarzı belirlemelidir.
  • Proje yönetiminde yazılım ekibinin oluşturulması da önemli bir kriterdir. Proje için yeterli sayı ve tecrübede eleman ayrılmalıdır. Ekip sayısı ve tecrübesi , proje süresini olumlu ya da olumsuz etkiler. Sayı artışı olumludur ancak belli bir noktadan sonra iletişim ihtiyacını çok fazla arttırarak proje süresinin uzamasına neden olabilir. Ayrıca ekip sayısının artması maliyetin de artması demektir. Bu nedenlerden ötürü proje yöneticisi ekibini ve eleman sayısını çok iyi seçmelidir. Kişi sayısının proje büyüklüğüne bağlı olarak belirlenmesi için “Karekök Kuralı” ndan faydalanılabilir.
  • Projenin başarı ile sonuçlanmasında en önemli etkenlerden biri de planlamadır. Planlama ve planın izlenmesi, projenin başarılı şekilde tanımlanabilmesi için olmazsa olmaz şarttır. Plan olmaması durumunda süreyi, kaynak kullanımını ve iş hedeflerini takip etmek mümkün olmaz. Ekip ruhu kaybolur ve proje yöneticisinin otorite sağlaması zorlaşır. Ayrıca projenin başında plan ve analize ayrılmayan zaman sonraki aşamalarda çok daha fazla kayba yol açar.

Bir yazılım projesi kapsam, zamanlama, görevler arası ilişkiler, proje kısıtları ve risk gibi birçok farklı bakış açısından incelenebilir. Bunun sonucunda risk, iletişim, kapsam, maliyet gibi farklı plan türleri ortaya çıkmıştır.

  • Projenin kapsamı belirlendikten sonra yapılacak görevlerin ayrıntılı belirlenmesi aşamasına geçilir. Yazılım geliştirme karmaşık bir işlemdir. Karmaşıklığı azaltmanın en önemli yöntemi, sitemi kendi içerisinde anlamlı parçalara bölmektir. Bir yazılımı oluşturan yapılar özetten ayrıntıya doğru modül, paket, nesne, metot ve metod içindeki kodlar şeklinde ifade edilebilir.

Yazılım proje planı, yazılımın hiyerarşik yapısına paralel olarak geliştirilmelidir. Yapılacaklar seviyelendirilerek birim işlere veya alt görevlere bölünür. Planın da bu şekilde ayrıntılı hale getirilmesinde iş bölümleme yapısı kullanılır. Görevlerin birbiri ile ilişkisini göstermek için Gantt ve Ağ şeması gibi yöntemler tercih edilebilir. İşlerin bölünmesi üzerinden projenin bitiş tarihini belirleyen kritik yol, bolluk süresi, en erken ve en geç bitiş görev bitiş tarihleri hesaplanabilir.

  • Proje planının kalitesi, geliştirme süreci ve ortaya çıkacak ürünün kalitesi için belirleyicidir. Kaliteli bir planda görevler gerçekleştirilebilir, başarı kriter ve çıktıları tanımlı, tutarlı ve tek kişinin yapabileceği seviyede bölümlenmiştir. Görev süreleri kısa ve takibi kolaydır. Plan, proje ile ilgili tüm faaliyetleri içerir. Mesai dışı çalışmalara göre değil, ekibin makul iş sürelerine göre yapılmıştır.

Kaliteli bir plan ve yönetim yapıldığı takdirde projenin başarısız olması imkansızdır.

Yeni yazılarda görüşmek üzere 🙂 

4 Comments

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.