Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Cumhuriyet Üniversitesi Yazılım Mühendisliği Dersi

Benzer bir sunumlar


... konulu sunumlar: "Cumhuriyet Üniversitesi Yazılım Mühendisliği Dersi"— Sunum transkripti:

1 Cumhuriyet Üniversitesi Yazılım Mühendisliği Dersi
Bölüm 2 Proje Yönetimi Halil ARSLAN Abdulkadir ŞEKER

2 Bölümün hedefleri Proje yönetimi nedir? Niçin önemlidir?
Proje yönetimi için önemli şemalar/yöntemler nelerdir? Zaman planlaması nasıl geliştirilir? Problemlerde etkili ve hızlı sonuçlar için risk yönetimi nasıl yapılır?

3 Proje Yönetimi Yazılım projeleri; neler olup bittiğinin, neler olması gerektiğinin ve gerçekleşenle olması gerekenin neden örtüşmediğinin takibini gerektirir. Yönetim, hedeflerin belirlendiğinden, izlendiğinden ve sonunda yerine getirildiğinden emin olmak için gereklidir. Proje ekibinin, yeni ve ilgisiz teknolojilerle, işten çıkarmalarla veya Clash of Clans turnuvaları gibi önemsiz konularla dikkatleri dağılmadan eldeki problemlere odaklanması gerekir. Küçük projelerde tek bir kişi proje sponsoru ve yöneticisi gibi yönetim rollerini tek başına üstlenebililir. Örneğin, tek bir teknik sorumlu, proje yönetimi görevlerini yürütebilir. Ancak proje ne kadar büyük olursa olsun, proje yönetim görevleri yerine getirilmelidir.

4 Proje Yönetimi Proje Sponsoru (Executive Support)
Başarılı olmak için bir yazılım projesinin tutarlı yönetim desteğine sahip olması gerekir. En üst düzey proje yöneticisi, proje sponsoru olarak adlandırılır. Bir projenin bütçe, personel, donanım, yazılım ve diğer kaynakların teminini garantiler. Proje ekibi ile müşteriyi ikna edecek gerçek bir zaman planlaması yapar. Yazılım deneyimi olmayan yöneticiler, yazılımın uzun zaman alacağını bilemeyebilirler. Geliştiriciler bir işi bitirmek için uzun saatler çalıştıklarında beyinleri yanarlar ve özensiz kodlar yazarlar. Bu durum, geliştirmeyi yavaşlatan daha fazla hataya yol açarak zamanlamanın gecikmesine, daha fazla masrafa ve düşük kaliteli bir sonuca neden olur. Sponsor, kaçırılan deadline’lar veya işbirliği yapılmayan yazılım araçları gibi beklenmeyen aksiliklere rastladığında bir projenin devam etmesine izin vermek için kritik önem taşır.

5 Proje Yönetimi Proje Sponsorunun Görevleri:
Bütçe, donanım ve personel gibi gerekli kaynakları sağlamak, "go / no-go" kararları vermek ve projeyi ne zaman iptal edeceğine karar vermek, Projenin, şirketin genel iş stratejilerine uyumunu sağlamak, Oluşabilecek idari engellerde projeyi doğru yolda ilerletebilecek çözümler bulmak, İş süreçlerinin tanımlanması, Satın almalarda kullanıcılar ve diğer paydaşlarla birlikte çalışma Kullanılan özellikler konusunda geliştiricilere geri bildirim sağlama Projeyi yavaşlatıcı etkenlerden (şirketin geri kalanı gibi) korumak Yöneticiler, kullanıcılar, geliştiriciler ve proje ile ilgilenen diğer kişiler arasında hakemlik, Proje ekibinin desteklenmesi, Yola taş koymamak  En önemlisi budur. Tina Fey’in, dediği gibi, «İyi bir patron olmak, yetenekli insanlar işe almak ve sonra onların yollarından çekilmek demektir.»

6 Proje Yönetimi Proje Yöneticisi
Genellikle bir proje yöneticisi, proje ekibinin en üst düzey üyesidir. Bu kişi gereksinimlerin toplanmasından başlayarak, geliştirme ve testten geçerek ve uygulama sunumuna kadar devam eden tüm geliştirme aşamalarında takımla birlikte çalışır. Görevleri: Proje gereksinimlerini tanımlamaya yardımcı olma Proje görevlerini izleme Beklenmedik sorunlara yanıt verme ve risk yönetimi Kullanıcıları (proje sponsorunu) projenin ilerleyişiyle ilgili bilgilendirmek Müşteriler ve geliştiriciler arasında bir köprü oluşturmak Zaman, insanlar, bütçe, donanım ve yazılım araçları gibi kaynakları yönetme Dağıtımı organize etme (canlı geçiş vb.) Aslında her alanda adı proje yöneticisi olmasa bile bir yöneticisi vardır. Örneğin, ders kitabının proje yöneticisi editör’dür. Proje yöneticileri genelde eski yazılımcılardır. Teknik destekleri iyidir ancak işler ters giderse bocalarlar. Bu yüzden bazen birden fazla yönetici olabilir. Proje Yöneticisi (teknik) ve Proje Plan Yöneticisi (idari) olabilir.

7 PERT Şeması PERT (Program Değerlendirme ve Gözden Geçirme Tekniği) şeması, bir projedeki görevler arasındaki öncelik ilişkilerini göstermek için düğümler (daireler) ve bağlantılar (oklar) kullanan bir şemadır. (1950 USA Donanması) İki yöntem ile oluşturulabilir. Ok üzerinde faaliyet gösterme (Activity on Arrow-AOA) Ok  faaliyet; Düğüm  başlama/bitiş (C’den önce B, B’den önce A gelir.) Düğüm üzerinde faaliyet gösterme (Activity on Node-AON) Düğüm  faaliyet; Ok  öncelik ilişkisi A B C A B C PERT = Program Evaluation and Review Technique

8 PERT Şeması Örnekler

9 PERT Şeması Adımlar: Başlangıç görevini hazır kuyruğa (ready) yerleştir. Diğer görevleri bekleme kuyruğuna (pending) at. Hazır kuyruğundaki görevleri, yerleştirilmiş görevlerin (positioned) sağındaki bir sütuna yerleştir. Bekleme kuyruğundaki görevleri gözden geçir, o göreve ait yerleştirilen öncüllerin üstünü çiz. (ilk olarak, başlangıç görevinin üzerini çiz) Bir görevin bütün öncüllerinin üzerini çizdikten sonra, onu hazır kuyruğu at. Bitiş görevine gelene kadar adım 2’ye dönüp, işlemleri tekrarla.

10 Örnek «Zombi kıyameti için sığınak kurma görevi»
Zombi kıyameti geldiğinde korunmak ve bilgisayar oyunlarından vazgeçmemek için bir sığınak tasarlamak gerekecektir. Aşağıdaki linkte ABD’de gerçekten tasarlanmış plan var. (i2.cdn.turner.com/cnn/2014/images/05/16/dod.zombie.apocalypse.plan.pdf) Görevleri, tanımları, tahmini süreleri ve öncülleri belirleyerek aşağıdaki tabloyu oluşturduk. Bazı ayrıntıları atladık. Askerlerin henüz zombiler tarafından yenmediğini varsayın  Faaliyet Tanım Zaman Öncül A Temel kazma ve beton dökme 5 - B Sığınak iç duvarı inşa etme C İç duvarı kurma 3 D Erzak stoklama 2 E Ev sinema sistemi kurma 1 F Dış savunma duvarı inşa etme 4 G Duvarlara ve çatıya dikenli tel örme B, I H Mayın yerleştirme (opsiyonel) I Gözetleme kameraları yerleştirme B, F

11 Örnek «Zombi kıyameti için sığınak kurma görevi»
Her görev için tanımını, öncüllerini ve tahmini süresini belirten bir kart hazırlanır. Sonra yukarıda belirtilen adımlar gerçekleştirilir. ADIM 1 «start» adı verilen görev başlangıç kuyruğuna eklendi, diğerleri bekleyen kuyruğuna atıldı. (bknz. figure 3.2) ADIM 2 A, F, ve H görevleri için öncül olarak «start» görülmektedir. Bu yüzden «start» görevi tamamlanınca, «start» yerleştirilmiş görevler bölümüne; A, F ve H görevleri ise hazır kuyruğuna taşınacaktır. (bknz. figure 3.3) ADIM 3 A,F ve H görevlerindeki öncül olan «start» görevinin üstünü çiz. ADIM 4 Bu aşamadan sonra «finish» görevine gelene kadar adım 2. tekrarla. Bu aşamada A, F ve H görevlerini yerleştirdikten sonra, Bekleyen kuyruğundaki tüm görevler için öncüllerinden A,F ve H görevlerinin üstlerini de çiz. Bu durumda B görevinin öncülü kalmadığından onu hazır kuyruğuna at. (bknz. figure 3.4) B’yi yerleştirmiş görevlere attıktan sonra, onu öncül kabul eden görevlerde de, B görevinin üzerini çiz. Bu durumda C ve I görevlerinin de öncülü kalmadı. (bknz. figure 3.5) C ve I yerleştirildikten sonra D, E ve G için de öncül görev kalmayacaktır. (bknz. figure 3.6) D, E ve G yerleştirilecek, son iş olarak, «finish» görevi yerleştirmek kalacaktır.

12 Örnek «Zombi kıyameti için sığınak kurma görevi»

13 Örnek «Zombi kıyameti için sığınak kurma görevi»

14 Örnek «Zombi kıyameti için sığınak kurma görevi»

15 Örnek «Zombi kıyameti için sığınak kurma görevi»
Bu aşamada görevler arasındaki ilişkileri gösteren oklar çizilecektir. Öncülleri net göstermek için dikeyde doğru hizalamak önemlidir. Son şema figure 3.7 de görülmektedir. Burada dikkat edilmesi gereken, görevlerin her birine öncüllerinden bir ok geldiğidir. Örneğin G görevi için, iki öncülden (B, I) ok gelmektedir.

16 Kritik Yol Yöntemi (Critical Path Methods – CPM)
PERT şemalarında ağ üzerinden mümkün olan en uzun yol kritik yoldur. Figure 3-7; start  H  finish toplamda 3 gün almaktadır. ( = 3) Benzer şekilde start  F  I  G  finish ; = 8 gün sürer. Şekil üzerinde çeşitli yollar denendiğinde görülecektir ki, en uzun yol start A  B  C  D  finish ; = 15 (CPM) ✓ Kritik yol boyunca herhangi bir görev gecikirse, projenin toplam süresi de ertelenir. Örneğin, C işi 3 değil 5 gün sürse, proje teslimi de 17. güne sarkar.

17 Kritik Yol Yöntemi Buradaki proje için CPM bulmak kolaydır, fakat yüz belki binlerce görev içeren projeler için bu iş daha çetrefillidir. Bu işi çözmenin daha pratik yolu olmalı ??? Soldaki görevlerden başla. start süresi 0, toplam süre 0 olarak işaretle. Zaman kolonunda bir sağa kay, Bu kolondaki her görev için, toplam zamanı, söz konusu görevin öncüllerinde en uzun süren ile toplayarak ayarla. Bu aşamada, en büyük maliyet getiren öncülden gelen bağlantıyı işaretleyin (highlight). En büyük maliyetli öncül birden fazla ise ikisini de işaretle. Bu şekilde finish görevine kadar gel. İşaretlenen bağlantıları geriye doğru takip ettiğinizde kritik yol bulunmuş olur. Problemimiz için kritik yol aşağıda verilmiştir.

18 Kritik Yol Yöntemi Kritik yol bulmak için ilk adımlar verilmiştir. Devam edildiğinde bir önceki slayttaki kritik yol elde edilecektir. Öncelikle start görevi ile toplam süreyi 0 a ayarla. Bir sağ kolona geçtik, A, F, H görevleri için öncül görev «start» . 3ünü de işaretle. Sonraki kolonda sadece B var, tek öncülü A olduğu için, onu işaretle. (Tot:10) Bir sonrakinde C ve I var. C için B (Tot: 13) işaretledik, I için B (Tot: 10), F (Tot:4) öncülleri var. Büyük olan B’yi seçtik. (Tot: 12)

19 Kritik Yol Yöntemi Kritik yol incelendiğinde E ve G görevleri kritik yoldan sadece 1 gün gerideler (almost critical path). Bu durumda onlardaki her gecikme bütün projeyi geciktirecektir. Ayrıca tamamlanan yolda F ve H görevlerinin önemli bir rolü yok. Bu da onların 15 gün içinde her hangi bir zamanda bitirilebileceği gösteriyor. Bunun gibi esnek görevler, o görev için çalışacak personeli başka görevlerde kullanma imkanı sunabilir. Ayrıca kritik görevleri ertelemek faydalı da olabilir. Örneğin mayınlama görevi (H) sonraya bırakılabilir, personelin yanlış yere basma ihtimaline karşı 

20 GANTT Şeması GANTT şeması, ilişkili görevler listesini planlamak (schedule) amacıyla Henry Gantt tarafından 1910’da icat edilmiştir. Gantt grafiğinden yatay barlar görev aktivitelerini temsil eder. Barın genişliği görevin ne kadar süreceğini belirtir. Oklar görevler ve selefleri arasındaki ilişkiyi gösterir. (PERT gibi) Aşağıda Zombi istilası projesi için Gantt grafiği verilmiştir. Oklar başarıyla tamamlanmış bir görevden sonrakine geçişi gösterir. Hafta sonları tatil (zombilere tatil mi bilmiyoruz )

21 Yazılım Planlama Önceki bölümde PERT ve GANTT şemaları ile planlama yapıldı. Ancak bazı işlerin uzaması, başka aksaklıklar çıkması durumunda bu şemaları tekrar hazırlamak çok büyük bir iş yükü getirir. (esneklik yok.) Bunun için proje planlama yazılımları mevcut. Bir tıklama ile iki görev arasına yeni görev ekle, zamanları otomatik güncelleme, Görevlerin zamanlarını değiştirme, Görevler arasında farklı bağıntılar oluşturma gibi. Örneğin, iki görev aynı anda başlatılabilir. Bir görev, diğeri bittikten sonra 5 gün içinde başlamalıdır, vs. Örnek araçlar; OpenProject Jira Microsoft project ??

22 Zamanlama Tahmini Şemalar projenin ne kadar süreceğini ortaya çıkarmak için harika araçlar, fakat görev süreleri doğru tahmin edildi mi? Eğer doğru atama yapılmazsa bu yapılan iş tamamen çöpe gider. Daha önce yapılan bir görev tekrar ediliyor olabilir, ancak ayrıntılar süre tahmininde her zaman belirsizliklere yol açar. Aynı iş yapılacaksa, önceki kodları copy-paste yapmak görevi tamamlamasına yetecektir. Örneğin, iki farklı firma için envanter çıkarma programı olsa, sadece isimler değişecektir. (Veritabanı, arayüz, vs tasarımlara vakit harcanmaz) Bazen eski yapılanı kullanmak ya da hazır modüller (COTS-commercial off-the-shelf) kullanmak oldukça güzel bir fikir olabilir. Bir görevin zamanlama tahmini; (1)kısa ve iyi bilinen veya (2) uzun ve son derece belirsiz olabilir. Bu durumda kullanılabilir bir zamanlama tahminini nasıl oluşturabiliriz?

23 Zamanlama Tahmini Deneyim
Benzer işi yapan biri varsa, yardım al. (Part-time destek) Büyük projeler için -zor işler için- deneyimli personel istihdam etmek. Bilinmeyen görevleri anlaşılır şekilde parçala Deneyimlerden benzerlikler bulma Beklenmeyeni bekleme Uzun bir işte; çalışanların hasta olması, tatile/izne çıkması durumu. Zaman tahminlerini biraz uzatabilirsin. (her işe %5 oranda süre ekle.) Bu ek süreyi çalışanlar ekstra zaman olarak görmemeli. Başka bir yaklaşım ise kayıp zamanları, projede görev gibi temsil etmek. Tatilleri planla Farklı ekiplerin farklı hızlarda çalışması durumunda birbirlerini beklemesi. Yönetici onayları için, finans müdürünün tatilden gelmesini bekleme durumu, Süreçi takip etmek Kayıp zamanları da ekleseniz, bazen yine de görevler uzayabilir. 20 günlük iş. (5.gün %25, 10. gün %50, 15. gün %60,…) panik yok, önlem al. Geliştiriciler genelde kayıp zamanı, sabahlayarak telafi edeceklerini düşünürler, ancak yanılıyorlar. (Sonraki bölümde göreceğimiz, Çevik Yaklaşımın ana prensiplerinden biri «sürdürülebilir tempoda çalışmaktır»)

24 Risk Yönetimi Sorunlarla yüz yüze gelince uğraşmak yerine, risk yönetimi ile; olası riskleri tanımlama, potansiyel etkilerini belirleme ve önceden oluşabilecek geçici çözümleri inceleme imkanı bulabilirsin. Her görev için, şunlara karar ver; Olasılık (Likelihood) Görevi nasıl yapacaksın? Yoksa daha önce hiç yapmadın mı? Ağırlık (Severity) Bu görev kullanıcı için ne kadar önemli? (Olmazsa olmaz mı) Sonuç (Consequences) Diğer görevlerin yapılmasını etkileyen bir görev mi? Geçici Çözüm (Work-arounds) Geçici bir çözüm bulunabilir mi? Geçici çözümler için şunlara dikkat et; Zorluk (Difficulty): Geçici çözümü gerçeklemek ne kadar sürecek? Çalışma ihtimali nedir? Etki (Impact): Projenin kullanımını nasıl etkileyecek. Kullanıcıya ekstra yük getirecek mi? Avantajları (Pros): Geçici çözümün avantajı nedir? Dejavantajları (Cons): Geçici çözümün dezavantajı nedir?

25 NELER ÖĞRENDİK ? Proje sponsoru, proje başarısı için kritik önem taşır. Bir proje yöneticisi görevleri planlar, izler ve geliştiricilerin ilerlemesini sağlar. PERT şemaları, görevler arasında öncelik ilişkilerini gösterir. Kritik yol yöntemi, PERT ağı üzerindeki en uzun yolları gösterir. Bu yol üzerindeki bir görev gecikirse, proje de doğrudan gecikir. GANTT şeması, görevlerin süresini, başlangıç/bitiş zamanını gösterir. Görevler için zaman tahminleri; deneyimleri kullanarak, karmaşık görevleri daha küçük görevlere dönüştürerek ve önceki görevlere benzerlik arayarak geliştirilebilir. Plan yapılırken hastalık, tatil ve beklenmedik sorunlar için gecikmeler hesaba katılmalıdır. Risk yönetimi, problemleri planlamayı, gerçekleştiğinde ise hızlı tepki verebilmeyi sağlar.


"Cumhuriyet Üniversitesi Yazılım Mühendisliği Dersi" indir ppt

Benzer bir sunumlar


Google Reklamları