Yazılım Proje Yönetimi
Yazılım geliştirmeyle uğraşan bir BT şirketinin iş modeli iki bölüme ayrılabilir:
- Yazılım Oluşturma
- Yazılım Proje Yönetimi
Bir proje, bir hedefe ulaşmak için yapılan çeşitli işlemlerin bir toplamı olan iyi tanımlanmış bir görevdir (örneğin, yazılım geliştirme ve teslimat). Bir Proje şu şekilde karakterize edilebilir:
- Her projenin kendine özgü ve farklı bir hedefi olabilir.
- Proje rutin bir faaliyet veya günlük işlemler değildir.
- Proje, bir başlangıç ve bitiş zamanıyla birlikte gelir.
- Proje, amacına ulaşıldığında sona erer, bu nedenle bir kuruluşun ömrü boyunca geçici bir aşamadır.
- Proje, zaman, insan gücü, finansman, malzeme ve bilgi bankası açısından yeterli kaynaklara ihtiyaç duyar.
Yazılım Projesi
Bir Yazılım Projesi, istenen yazılım ürününü elde etmek için belirli bir süre içinde yürütme metodolojilerine göre gerçekleştirilen, gereksinim toplamadan test ve bakıma kadar yazılım geliştirme sürecinin eksiksiz prosedürüdür.
Yazılım proje yönetimi ihtiyacı
Yazılımın soyut bir ürün olduğu söyleniyor. Yazılım geliştirme, dünya ticaretinde tamamen yeni bir akımdır ve yazılım ürünleri oluşturmada çok az deneyim vardır. Çoğu yazılım ürünü, müşterinin gereksinimlerine uyacak şekilde özel olarak üretilir. En önemlisi, temeldeki teknolojinin o kadar sık ve hızlı değişip gelişmesidir ki, bir ürünün deneyimi diğerine uygulanamayabilir. Tüm bu tür iş ve çevresel kısıtlamalar yazılım geliştirmede risk getirir, bu nedenle yazılım projelerini verimli bir şekilde yönetmek çok önemlidir.
Yukarıdaki görüntü, yazılım projeleri için üçlü kısıtlamaları göstermektedir. Maliyeti müşterinin bütçe kısıtlaması dahilinde tutarak kaliteli ürün sunmak ve projeyi planlandığı gibi teslim etmek yazılım organizasyonunun önemli bir parçasıdır. Bu üçlü sınırlama üçgenini etkileyebilecek hem iç hem de dış birkaç faktör vardır. Üç faktörden herhangi biri diğer ikisini ciddi şekilde etkileyebilir.
Bu nedenle, kullanıcı gereksinimlerinin yanı sıra bütçe ve zaman kısıtlamalarını dahil etmek için yazılım proje yönetimi çok önemlidir.
Yazılım Proje Yöneticisi
Yazılım proje yöneticisi, yazılım projesini yürütme sorumluluğunu üstlenen kişidir. Yazılım proje yöneticisi, yazılımın geçeceği SDLC'nin tüm aşamalarının tamamen farkındadır. Proje yöneticisi nihai ürünün üretimine asla doğrudan dahil olamaz, ancak üretimle ilgili faaliyetleri kontrol eder ve yönetir.
Bir proje yöneticisi, geliştirme sürecini yakından izler, çeşitli planlar hazırlar ve yürütür, gerekli ve yeterli kaynakları düzenler, maliyet, bütçe, kaynaklar, zaman, kalite ve müşteri memnuniyeti konularını ele almak için tüm ekip üyeleri arasında iletişimi sürdürür.
Bir proje yöneticisinin omuzladığı birkaç sorumluluğu görelim -
İnsanları yönetmek
- Proje lideri olarak hareket edin
- Paydaşlarla iletişim
- İnsan kaynaklarını yönetmek
- Raporlama hiyerarşisi vb. Kurma
Proje Yönetimi
- Proje kapsamını tanımlama ve kurma
- Proje yönetimi faaliyetlerini yönetmek
- İlerlemeyi ve performansı izleme
- Her aşamada risk analizi
- Sorunlardan kaçınmak veya sorunlardan çıkmak için gerekli adımları atın
- Proje sözcüsü olarak hareket edin
Yazılım Yönetimi Faaliyetleri
Yazılım proje yönetimi, proje planlaması, yazılım ürününün kapsamına karar verilmesi, çeşitli terimlerle maliyet tahmini, görevlerin ve olayların programlanması ve kaynak yönetimini içeren bir dizi faaliyetten oluşur. Proje yönetimi faaliyetleri şunları içerebilir:
- Project Planning
- Scope Management
- Project Estimation
Proje planlaması
Yazılım proje planlaması, yazılım üretimi fiilen başlamadan önce gerçekleştirilen görevdir. Yazılım üretimi için oradadır, ancak yazılım üretimi ile herhangi bir yön bağlantısı olan somut bir faaliyet içermez; daha ziyade, yazılım üretimini kolaylaştıran bir dizi çoklu süreçtir. Proje planlaması aşağıdakileri içerebilir:
Kapsam Yönetimi
Proje kapsamını tanımlar; bu, teslim edilebilir bir yazılım ürünü yapmak için yapılması gereken tüm faaliyetleri, süreci içerir. Kapsam yönetimi önemlidir çünkü projede ne yapılacağını ve neyin yapılmayacağını açıkça tanımlayarak projenin sınırlarını oluşturur. Bu, projenin sınırlı ve ölçülebilir görevler içermesini sağlar, bu da kolayca belgelenebilir ve dolayısıyla maliyet ve zaman aşımını önler.
Proje Kapsamı yönetimi sırasında aşağıdakileri yapmak gereklidir:
- Kapsamı tanımlayın
- Doğrulamasına ve kontrolüne karar verin
- Yönetim kolaylığı için projeyi çeşitli küçük parçalara bölün.
- Kapsamı doğrulayın
- Kapsamdaki değişiklikleri dahil ederek kapsamı kontrol edin
Proje Tahmini
Etkili bir yönetim için çeşitli önlemlerin doğru tahmin edilmesi şarttır. Doğru tahmin ile yöneticiler projeyi daha verimli ve etkili bir şekilde yönetebilir ve kontrol edebilir.
Proje tahmini aşağıdakileri içerebilir:
- Software size estimation
Yazılım boyutu, KLOC (Kilo Satır Kod) veya yazılımdaki fonksiyon noktalarının sayısı hesaplanarak tahmin edilebilir. Kod satırları, kodlama uygulamalarına bağlıdır ve İşlev noktaları, kullanıcı veya yazılım gereksinimlerine göre değişir.
- Effort estimation
Yöneticiler çabaları, yazılımı üretmek için gereken personel ihtiyacı ve adam-saat açısından tahmin etmektedir. Efor tahmini için yazılım boyutu bilinmelidir. Bu, yöneticilerin deneyimlerinden, kuruluşun geçmiş verilerinden elde edilebilir veya yazılım boyutu, bazı standart formüller kullanılarak çabalara dönüştürülebilir.
- Time estimation
Boyut ve çaba tahmin edildikten sonra, yazılımı üretmek için gereken süre tahmin edilebilir. Gerekli çabalar, yazılımın çeşitli bileşenlerinin gereksinim özelliklerine ve birbirine bağımlılığına göre alt kategorilere ayrılmıştır. Yazılım görevleri, Work Breakthrough Structure (WBS) tarafından daha küçük görevlere, aktivitelere veya olaylara bölünür. Görevler günlük bazda veya takvim ayları içinde planlanır.
Tüm görevleri saat veya gün olarak tamamlamak için gereken toplam süre, projeyi tamamlamak için harcanan toplam süredir.
- Cost estimation
Bu, öncekilerden herhangi birinden daha fazla öğeye bağlı olduğu için en zoru olarak kabul edilebilir. Proje maliyetini tahmin etmek için dikkate alınması gerekir -
- Yazılımın boyutu
- Yazılım kalitesi
- Hardware
- Ek yazılım veya araçlar, lisanslar vb.
- Göreve özgü becerilere sahip yetenekli personel
- Seyahat dahil
- Communication
- Eğitim ve destek
Proje Tahmin Teknikleri
Boyut, çaba, zaman ve maliyet gibi proje tahminini içeren çeşitli parametreleri tartıştık.
Proje yöneticisi, genel olarak tanınan iki tekniği kullanarak listelenen faktörleri tahmin edebilir -
Ayrıştırma Tekniği
Bu teknik, yazılımı çeşitli kompozisyonların bir ürünü olarak varsayar.
İki ana model var -
- Line of Code Yazılım ürünündeki kod satırı sayısı için tahmin yapılır.
- Function Points Yazılım ürünündeki fonksiyon noktalarının sayısı adına tahmin yapılır.
Ampirik Tahmin Tekniği
Bu teknik, tahmin yapmak için deneysel olarak türetilmiş formüller kullanır. Bu formüller LOC veya FP'lere dayanır.
- Putnam Model
Bu model, Norden'in frekans dağılımına (Rayleigh eğrisi) dayanan Lawrence H. Putnam tarafından yapılmıştır. Putnam modeli, yazılım boyutuyla birlikte gereken zamanı ve çabayı eşler.
- COCOMO
COCOMO, Barry W. Boehm tarafından geliştirilen COnstructive COst MOdel'in kısaltmasıdır. Yazılım ürününü üç yazılım kategorisine ayırır: organik, yarı bağımsız ve gömülü.
Proje Çizelgeleme
Bir projede Proje Çizelgeleme, belirli bir sırada ve her bir faaliyete ayrılan zaman aralığı içinde yapılacak tüm faaliyetlerin yol haritasını ifade eder. Proje yöneticileri, çeşitli görevleri ve proje kilometre taşlarını tanımlama ve bunları çeşitli faktörleri göz önünde bulundurarak düzenleme eğilimindedir. Belirli bir şekilde (görevlerin birbirine bağlı olması nedeniyle) ve kesinlikle ayrılan süre içinde tamamlanması gereken, çizelgedeki kritik yolda bulunan görevleri ararlar. Kritik yolun dışında kalan görevlerin düzenlenmesi, projenin tüm programını etkileme olasılığı daha düşüktür.
Bir projeyi planlamak için şunlara ihtiyaç vardır:
- Proje görevlerini daha küçük, yönetilebilir biçime ayırın
- Çeşitli görevleri bulun ve bunları ilişkilendirin
- Her görev için gerekli zaman dilimini tahmin edin
- Zamanı çalışma birimlerine ayırın
- Her görev için yeterli sayıda çalışma birimi atayın
- Proje için baştan sona kadar gereken toplam süreyi hesaplayın
Kaynak yönetimi
Bir yazılım ürünü geliştirmek için kullanılan tüm unsurlar, o proje için kaynak olarak kabul edilebilir. Bu, insan kaynaklarını, üretken araçları ve yazılım kitaplıklarını içerebilir.
Kaynaklar sınırlı miktarda mevcuttur ve kuruluşta bir varlık havuzu olarak kalır. Kaynak yetersizliği, projenin gelişimini engeller ve programın gerisinde kalabilir. Ekstra kaynak ayırmak, sonunda geliştirme maliyetini artırır. Bu nedenle proje için yeterli kaynakların tahmin edilmesi ve tahsis edilmesi gereklidir.
Kaynak yönetimi şunları içerir -
- Bir proje ekibi oluşturarak ve her ekip üyesine sorumluluklar atayarak uygun organizasyon projesinin tanımlanması
- Belirli bir aşamada ihtiyaç duyulan kaynakları ve bunların kullanılabilirliğini belirleme
- Gerektiğinde kaynak isteği oluşturarak ve artık ihtiyaç kalmadığında ayırmayı kaldırarak Kaynakları Yönetin.
Proje Risk Yönetimi
Risk yönetimi, projedeki öngörülebilir ve öngörülemeyen risklerin belirlenmesi, analizi ve provizyonu ile ilgili tüm faaliyetleri içerir. Risk aşağıdakileri içerebilir:
- Projeden ayrılan deneyimli kadro ve yeni elemanlar geliyor.
- Organizasyonel yönetimde değişiklik.
- Gereksinim değişikliği veya yanlış yorumlama gereksinimi.
- Gerekli zaman ve kaynakların eksik tahmini.
- Teknolojik değişiklikler, çevresel değişiklikler, iş rekabeti.
Risk Yönetimi Süreci
Risk yönetimi sürecine dahil olan aşağıdaki faaliyetler vardır:
- Identification - Projede oluşabilecek tüm olası riskleri not edin.
- Categorize - Bilinen riskleri proje üzerindeki olası etkilerine göre yüksek, orta ve düşük risk yoğunluğu olarak sınıflandırın.
- Manage - Çeşitli aşamalarda risklerin oluşma olasılığını analiz edin. Risklerden kaçınmak veya risklerle yüzleşmek için plan yapın. Yan etkilerini en aza indirmeye çalışın.
- Monitor - Potansiyel riskleri ve bunların erken semptomlarını yakından izleyin. Ayrıca bunları azaltmak veya önlemek için atılan adımların etkilerini de izleyin.
Proje Yürütme ve İzleme
Bu aşamada, proje planlarında açıklanan görevler programlarına göre yürütülür.
Her şeyin plana göre gidip gitmediğini kontrol etmek için yürütmenin izlenmesi gerekir. İzleme, risk olasılığını kontrol etmek için gözlem yapmak ve riski ele almak veya çeşitli görevlerin durumunu bildirmek için önlemler almaktır.
Bu önlemler şunları içerir:
- Activity Monitoring - Bazı görevler dahilinde planlanan tüm aktiviteler günlük bazda izlenebilir. Bir görevdeki tüm faaliyetler tamamlandığında tamamlanmış sayılır.
- Status Reports - Raporlar, genellikle bir hafta olmak üzere belirli bir zaman çerçevesi içinde tamamlanan etkinliklerin ve görevlerin durumunu içerir. Durum, tamamlandı, beklemede veya devam ediyor vb. Olarak işaretlenebilir.
- Milestones Checklist - Her proje, SDLC aşamalarına bağlı olarak ana görevlerin (kilometre taşları) gerçekleştirildiği birden çok aşamaya bölünmüştür. Bu kilometre taşı kontrol listesi birkaç haftada bir hazırlanır ve kilometre taşlarının durumunu bildirir.
Proje İletişim Yönetimi
Etkili iletişim, bir projenin başarısında hayati bir rol oynar. Müşteri ile organizasyon, ekip üyeleri ve donanım tedarikçileri gibi projedeki diğer paydaşlar arasındaki boşlukları kapatır.
İletişim sözlü veya yazılı olabilir. İletişim yönetimi süreci aşağıdaki adımlardan oluşabilir:
- Planning - Bu adım, projedeki tüm paydaşların tanımlanmasını ve bunlar arasındaki iletişim şeklini içerir. Ayrıca, herhangi bir ek iletişim aracının gerekli olup olmadığını da değerlendirir.
- Sharing - Planlamanın çeşitli yönlerini belirledikten sonra yönetici, doğru bilgiyi doğru zamanda doğru kişiyle paylaşmaya odaklanır. Bu, projeye dahil olan herkesin proje ilerlemesi ve durumu ile güncel kalmasını sağlar.
- Feedback - Proje yöneticileri çeşitli önlemler ve geri bildirim mekanizmaları kullanır ve durum ve performans raporları oluşturur. Bu mekanizma, çeşitli paydaşlardan gelen girdilerin proje yöneticisine geri bildirimleri olarak gelmesini sağlar.
- Closure - Her büyük olayın sonunda, SDLC'nin bir aşamasının sonunda veya projenin kendisinin sonunda, idari kapanış, her paydaşa e-posta göndererek, bir belgenin basılı kopyasını dağıtarak veya başka bir etkili iletişim yoluyla güncellemek için resmi olarak duyurulur.
Kapanıştan sonra ekip bir sonraki aşamaya veya projeye geçer.
Konfigürasyon yönetimi
Konfigürasyon yönetimi, yazılımdaki değişiklikleri ürünün gereksinimleri, tasarımı, işlevleri ve gelişimi açısından izleme ve kontrol etme sürecidir.
IEEE, bunu “sistemdeki öğeleri tanımlama ve tanımlama, yaşam döngüleri boyunca bu öğelerin değişimini kontrol etme, öğelerin durumlarını ve değişiklik taleplerini kaydetme ve raporlama, öğelerin eksiksizliğini ve doğruluğunu doğrulama süreci” olarak tanımlar.
Genel olarak, SRS bir kez sonuçlandırıldığında, kullanıcıdan değişiklik yapma gereksinimi daha az olasıdır. Eğer meydana gelirlerse, değişiklikler, maliyet ve zaman aşımı olasılığı olduğundan, yalnızca üst yönetimin önceden onayı ile ele alınır.
Temel
Temel olarak belirlenmişse, SDLC'nin bir fazının üzerinde olduğu varsayılır, yani temel hat, bir fazın tamlığını tanımlayan bir ölçümdür. Bir aşama, kendisiyle ilgili tüm faaliyetler tamamlandığında ve iyi belgelendiğinde temel alınır. Son aşama olmasaydı, çıktısı bir sonraki acil aşamada kullanılacaktı.
Konfigürasyon yönetimi, bir aşama temel alındıktan sonra herhangi bir değişikliğin (süreç, gereksinim, teknolojik, stratejik vb.) Ortaya çıkmasına özen gösteren bir organizasyon yönetimi disiplinidir. CM, yazılımda yapılan değişiklikleri kontrol eder.
Kontrolü değiştir
Değişiklik kontrolü, yazılım sisteminde yapılan tüm değişikliklerin tutarlı olmasını ve kurumsal kural ve düzenlemelere göre yapılmasını sağlayan konfigürasyon yönetiminin bir işlevidir.
Ürün konfigürasyonundaki bir değişiklik aşağıdaki adımlardan geçer -
Identification- Dahili veya harici kaynaktan bir değişiklik talebi gelir. Değişiklik talebi resmi olarak tanımlandığında, uygun şekilde belgelenir.
Validation - Değişiklik talebinin geçerliliği kontrol edilir ve işlem prosedürü onaylanır.
Analysis- Değişiklik talebinin etkisi, program, maliyet ve gerekli çabalar açısından analiz edilir. İleriye dönük değişikliğin sistem üzerindeki genel etkisi analiz edilir.
Control- Olası değişiklik, sistemdeki çok fazla kuruluşu etkiliyorsa veya kaçınılmazsa, değişiklik sisteme dahil edilmeden önce yüksek makamların onayının alınması zorunludur. Değişikliğin dahil edilmeye değer olup olmadığına karar verilir. Aksi takdirde değişiklik talebi resmi olarak reddedilir.
Execution - Önceki aşama, değişiklik talebini yerine getirmeyi belirlerse, bu aşama değişikliği gerçekleştirmek için uygun işlemleri yapar, gerekirse kapsamlı bir revizyon yapar.
Close request- Değişiklik, doğru uygulama ve sistemin geri kalanıyla birleşme için doğrulanır. Yazılıma yeni dahil edilen bu değişiklik, uygun şekilde belgelenir ve talep resmi olarak kapatılır.
Proje Yönetim Araçları
Proje belirlenen metodolojilere göre geliştirildiğinde bile, proje büyüklüğüne göre risk ve belirsizlik çok kat artmaktadır.
Etkili proje yönetimine yardımcı olan araçlar mevcuttur. Birkaç tanesi açıklanmıştır -
Gantt şeması
Gantt çizelgeleri Henry Gantt (1917) tarafından tasarlanmıştır. Zaman dönemlerine göre proje programını temsil eder. Proje etkinlikleri için planlanan etkinlikleri ve zamanı temsil eden çubukların bulunduğu yatay bir çubuk grafiktir.
PERT Şeması
PERT (Program Değerlendirme ve Gözden Geçirme Tekniği) şeması, projeyi ağ diyagramı olarak gösteren bir araçtır. Projenin ana olaylarını hem paralel hem de ardışık olarak grafiksel olarak temsil edebilir. Birbiri ardına meydana gelen olaylar, sonraki olayın öncekine bağımlılığını gösterir.
Olaylar numaralandırılmış düğümler olarak gösterilir. Projedeki görevlerin sırasını gösteren etiketli oklarla birbirine bağlanırlar.
Kaynak Histogramı
Bu, bir proje etkinliği (veya aşaması) için zaman içinde gerekli olan kaynakların (genellikle kalifiye personel) sayısını temsil eden çubuk veya çizelgeyi içeren grafiksel bir araçtır. Kaynak Histogramı, personel planlaması ve koordinasyonu için etkili bir araçtır.
Kritik Yol Analizi
Bu araçlar, projedeki birbirine bağlı görevleri tanımak için kullanışlıdır. Ayrıca, projeyi başarıyla tamamlamak için en kısa yolu veya kritik yolu bulmaya yardımcı olur. PERT diyagramı gibi, her olaya belirli bir zaman çerçevesi tahsis edilir. Bu araç, bir olayın yalnızca bir önceki tamamlandığında bir sonrakine ilerleyebileceğini varsayarak olayın bağımlılığını gösterir.
Olaylar, mümkün olan en erken başlama saatlerine göre düzenlenir. Başlangıç ve bitiş düğümü arasındaki yol, daha fazla azaltılamayan ve tüm olayların aynı sırada yürütülmesi gereken kritik yoldur.