İSTANBUL TEKNİK ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM FAKÜLTESİ Proje Kaynak Yönetimi Bitirme Ödevi Altuğ BAYRAM 040070202 İlhan ADIYAMAN 040070280 Bölüm : Bilgisayar Mühendisliği Anabilim Dalı : Bilgisayar Bilimleri Danışman : Yard. Doç Dr. Feza BUZLUCA Haziran 2012
İSTANBUL TEKNİK ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM FAKÜLTESİ Proje Kaynak Yönetimi Bitirme Ödevi Altuğ BAYRAM 040070202 İlhan ADIYAMAN 040070280 Bölüm : Bilgisayar Mühendisliği Anabilim Dalı : Bilgisayar Bilimleri Danışman : Yard. Doç Dr. Feza BUZLUCA Haziran 2012
I Özgünlük Bildirisi 1. Bu çalışmada, başka kaynaklardan yapılan tüm alıntıların, ilgili kaynaklar referans gösterilerek açıkça belirtildiğini, 2. Alıntılar dışındaki bölümlerin, özellikle projenin ana konusunu oluşturan teorik çalışmaların ve yazılım/donanımın bizim tarafımızdan yapıldığını bildiririz. İstanbul, 01 Haziran 2012 Altuğ BAYRAM İlhan ADIYAMAN
II ÖNSÖZ Bitirme projesi sırasında bize yol gösteren, bitirme ödevi danışmanımız Yrd. Doç. Dr. Feza Buzluca başta olmak üzere hayat ve eğitim alanında bize destek olan ailemize, bütün hocalarımıza ve arkadaşlarımıza teşekkürü bir borç biliriz. Altuğ BAYRAM İlhan ADIYAMAN
III Kısaltmalar ID Identifier JSON Javascript Object Notation MVC Model-View-Controller PSO Particle Swarm Optimization SQL Structured Query Language SVN Subversion TSRA Task Scheduling and Resource Allocation UML Unified Modeling Language
IV Tablo Listesi Tablo 4.1 : İş Gücü Tablosu... 12 Tablo 4.2 : Yetenek Seviyesi... 13 Tablo 4.3 : İş İhtiyacını Karşılayabilecek Çalışanlar... 15 Tablo 4.4 : İş Paketlerinin Çalışan Sayısına Göre Sıralanması... 15 Tablo 4.5 : İş Paketlerinin Atanma Sırası... 16 Tablo 6.1 : Sisteme Eklenen Çalışanlar... 36 Tablo 6.2 : Proje 1... 36 Tablo 6.3 : Proje 2... 38
V Şekil Listesi Şekil 2.1 : Proje GANNT Diyagramı...4 Şekil 4.1 : Analiz Diyagramı... 10 Şekil 4.2 : Problem Uzayı... 11 Şekil 4.3 : Temel Çözüm Akış Diyagramı... 12 Şekil 4.4 : Bağımlılık Gösterimi... 14 Şekil 4.5 : Örnek GANNT Diyagramı... 14 Şekil 4.6 : Örnek Bağımlılık Grafı... 15 Şekil 5.1 : Veritabanı Tablo Diyagramı... 17 Şekil 5.2 : UML Sınıf Diyagramı... 20 Şekil 5.3 : AssignmentCollection Sınıf Diyagramı... 24 Şekil 5.4 : CapabilityCollection Sınıf Diyagramı... 24 Şekil 5.5 : DependencyCollection Sınıf Diyagramı... 25 Şekil 5.6 : EmployeeCollection Sınıf Diyagramı... 25 Şekil 5.7 : EmployeeToCapabilityCollection Sınıf Diyagramı... 25 Şekil 5.8 : PackageRequirementCollection Sınıf Diyagramı... 26 Şekil 5.9 : PackageToProjectCollection Sınıf Diyagramı... 26 Şekil 5.10 : ProjectCollection Sınıf Diyagramı... 27 Şekil 5.11 : ProjectManagerCollection Sınıf Diyagramı... 27 Şekil 5.12 : WorkPackageCollection Sınıf Diyagramı... 28 Şekil 5.13 : AssignmentHandler Sınıf Diyagramı... 28 Şekil 5.14 : EmployeeHandler Sınıf Diyagramı... 29 Şekil 5.15 : ProjectHandler Sınıf Diyagramı... 29 Şekil 5.16 : ProjectManagerHandler Sınıf Diyagramı... 30 Şekil 5.17 : SkillHandler Sınıf Diyagramı... 30 Şekil 5.18 : WorkPackageHandler Sınıf Diyagramı... 31 Şekil 5.19 : ScheduleEventHandler Sınıf Diyagramı... 31 Şekil 5.20 : ScheduleInterProjects Sınıf Diyagramı... 33 Şekil 5.21 : ScheduleInterProjects Constructor Metodu Sözde Komutu... 33 Şekil 5.22 : AssignWorkPackages Metodu Sözde Komutu... 34 Şekil 5.23 : FindProperEmployeesForWorkPackage Metodu Sözde Komutu... 34 Şekil 5.24 : FindStartDateInDependent Metodu Sözde Komutu... 35 Şekil 5.25 : Schedule Metodu Sözde Komutu... 35
VI Şekil 6.1 : Proje 1 Takvimi... 37 Şekil 6.2 : Proje 1 İş Çizelgesi... 37 Şekil 6.3 : Proje 2 Takvimi... 38 Şekil 6.4 : Proje 1 İş Çizelgesi... 39 Şekil 6.5 : Proje 2 İş Çizelgesi... 39
VII PROJE KAYNAK YÖNETİMİ ( ÖZET ) Tarihte insanların bir çalışma yürütmesi, çoğu zaman kısıtlı kaynaklara erişime bağlı olmuş ve kaynağın varlığı çalışmanın yürümesi veya durmasını belirleyen en önemli etken olmuştur. Fakat günümüzde artan olanaklar, yetisi veya becerisi değişmekle beraber kaynak yokluğunu büyük ölçüde ortadan kaldırmıştır. Bu yüzden az bulunan kaynağa ulaşma ve onun tek hakimi olma düşüncesi ve kaynağı ele geçirme rekabeti yerine; sahip olunan kaynağı en verimli şekilde kullanma günümüzde önem kazanmıştır. Modern şirketler, sahip oldukları kaynakların kullanımını düzenleyerek, yürütülen işlerin en kısa sürede bitmesini amaçlamaktadır. Bu yüzden çeşitli uygulamalarla iş çizelgeleri oluşturularak, takip mekanizmaları geliştirilmiştir. Bu takip mekanizmaları sayesinde, iş paketlerinin bağımlılıkları ve kısıtları takip edilebilmektedir, uygun iş atamaları belirlenebilmektedir. Fakat yürütülen işlerin karmaşıklığı ve üzerine çalışılan projelerin sayısının artması, iş çizelgelerinin oluşturulması için gerekli olan iş atamalarını önemli bir problem haline getirmiştir. Bu problemin çözümü için, atamaları uygun bir şekilde düzenlemek gerekmektedir. Bütün işlerin birbirlerine olan bağımlılıklarının düzenlenmesi, eldeki kaynakların bu bağımlılıklara sadık kalınarak atanması ve işlerin bağımlılıkları bozulmadan paralelleştirilmesi söz konusu problemin aşılmasında uygulanacak adımlardır. Bu bitirme çalışması da, elde olan kısıtlı kaynakların, projelerin yürütülmesi için en verimli ve uygun şekilde atanmasını amaçlamaktadır. Sadece proje yürütülmesini denetleyen ve işlerin sırasını belirleyen uygulamalara ek olarak, kaynaklar da bir algoritma sayesinde işlere atanarak daha etkin iş yürütme süreçleri oluşturulması amaçlanmıştır.
VIII PROJECT RESOURCE MANAGEMENT ( SUMMARY ) In the history, limited resources and reaching these resources were the most important factor which determined the processing or stopping of works. However, the chances of reaching resources are increasing in modern world. Because of this, the limited resources are not a big problem anymore. Therefore, the optimal usage of resources is much more important than the existing of resources. Modern firms aim their works to finish quickly as possible by arranging the use of their resources. For this reason, there are some applications that help people to follow their work schedule. These applications provide that the firms can also follow the dependencies and constraints of works. However, the increasing of projects number and complexity make assignment into a big and important problem. To solve this problem, it is required of a proper arrangement of assignments. There are several steps to overcome this problem. Arranging of dependencies, assigning of resources to works and parallelizing of processing of projects are these steps. This graduation project is based on developing an application which assigns the resources to projects optimally and runs the projects properly. This graduation project is developed not only for the following of projects. It is also for finding of optimal scheduling and assignment sequences.
İçindekiler 1. Giriş... 1 2. Projenin Tanımı ve Planı... 2 2.1 Modüller...2 2.1.1 Veritabanı Modülü...2 2.1.2 Kullanıcı Arayüzü Modülü...2 2.1.3 Kaynak Ekle-Çıkar-Güncelle Modülü...3 2.1.4 Proje Ekle-Çıkar-Güncelle Modülü...3 2.1.5 Çekirdek Modülü...3 2.2 Proje Zaman Çizelgesi...3 2.3 Proje İş Bölümü...4 3. Kuramsal Bilgiler... 5 4. Analiz ve Modelleme... 7 4.1 Kullanım Senaryoları...7 4.1.1 Aktörler...7 4.1.2 Senaryo Grubu 1:Kaynak Yaratma İşlemleri...7 4.1.3 Senaryo Grubu 2:Proje Yaratma İşlemleri...8 4.1.4 Senaryo Grubu 3:Proje İş Paketleri İşlemleri...8 4.2 Analiz Diyagramı...9 4.3 Algoritma Tasarımı ve Analizi... 10 4.3.1 Problemin Tanımı... 10 4.3.2 Problemin Detaylandırılması ve Çözümü... 11 5. Tasarım, Gerçekleme ve Test... 17 5.1 Veritabanı Tasarımı... 17 5.1.1 Projeler Tablosu... 18 5.1.2 İş Paketleri Tablosu... 18 5.1.3 Paket-Proje Tablosu... 18 5.1.4 Bağımlılıklar Tablosu... 18 5.1.5 Yetenekler Tablosu... 18 5.1.6 İş Paketi-Gereklilik Tablosu... 18 5.1.7 Çalışanlar Tablosu... 18 5.1.8 Çalışan-Yetenek Tablosu... 19 5.1.9 Proje Yöneticileri Tablosu... 19 5.1.10 Atamalar Tablosu... 19
5.1.11 Atama-Proje Tablosu... 19 5.2 Varlık Sınıfları ve Yardımcı Sınıflar... 19 5.2.1 Varlık Sınıfları... 19 5.2.2 Varlık Sınıflarına Yardımcı Sınıflar ve Yardımcı Yapılar... 21 5.3 MVC Tasarım Deseni... 22 5.3.1 Veri Erişimi Katmanı... 23 5.3.2 Kontrol Katmanı... 28 5.3.3 Görünüm Katmanı... 31 5.4 Kaynak Atama Algoritması... 32 6. Deneysel Sonuçlar... 36 6.1 Çalışan Kayıt Bilgileri... 36 6.2 Proje Kayıtları ve İş Çizelgeleri... 36 7. Sonuç ve Öneriler... 40 8. Kaynaklar... 41
1 1 GİRİŞ Projenin temel amacı, firmalarda paralel olarak yürütülen yazılım projeleri için uygun iş süreçlerinin oluşturulmasını sağlamaktır. İş süreçlerini oluştururken, elde bulunan kalifiye yazılım elemanları, uygun pozisyonlarda görevlendirilir. Bu görevlendirme sırasında, sistemde bulunan projeler ve bu projelere ait iş paketlerinin gereksinimlerine göre eleman listesinden uygun isimler seçilir ve bu isimlere belirli tarihler için iş atamaları yapılır. Bu atamalarla yürütülen işlerin en kısa sürede bitirilmesi ve elde bulunan iş gücünün en verimli şekilde kullanılması amaçlanmıştır. Geliştirilen projenin temel fonksiyonları; Sisteme proje ekleme, silme ve düzenleme Projelere ait iş paketleri ve bu iş paketlerinin gereksinimlerini belirleme İş paketlerinin birbirlerine olan bağımlılıklarını belirleme Projelere atanmak üzere sisteme kaynak ekleme, silme ve güncelleme Kaynaklara ait yetenekleri ve bu yeteneklerin seviyelerini belirleme Bütün verileri değerlendirme ve uygun bir atama sekansı oluşturma Oluşturulan bu atama sekansı sayesinde kaynakları uygun sırayla, uygun işlere atama Değişikliklere karşı en uygun yeni atamaları gerçekleştirme olarak özetlenebilir. Yapılan çalışma ile birçok karmaşık projenin paralel olarak yürütülmesini sağlayacak ve kaynakları etkin kullanacak bir uygulama gerçeklenmesi amaçlanmıştır. Böylece en verimli iş süreçlerinin seçilmesi hedeflenmektedir. Raporda, projenin tanımı ve planı bölümünde uygulamanın tasarımı esnasında kurgulanan yazılım modülleri ve bu modüllerin işlevleri üzerinde durulacaktır. Ayrıca bu bölümde, projenin geliştirme süresinde izlenen yol haritasına da yer verilecektir. Kuramsal bilgiler bölümünde, projenin tasarım aşamasında araştırılan öğrenme ve optimizasyon metotları üzerinde durulacaktır. Projenin geliştirilme sürecinde, bu metotların projeye eklenmesinden vazgeçilmiş olsa da, yapılan akademik araştırmalara bu raporda yer verilmiştir. Analiz ve Modelleme bölümünde, projenin kullanım senaryolarına yer verilmiştir. Ayrıca bu kullanım senaryolarından yola çıkılarak hazırlanmış analiz diyagramına da bu bölümde yer verilmiştir. Ayrıca projenin çekirdeğini oluşturulan algoritmanın analiz ve modellemesi de bu bölümde gösterilmiştir. Geliştirilen projenin büyük miktarlarda veriye bağımlılığının olması, kullanıcı arayüzü ve veri modellerinin birbirlerinden bağımsız gerçeklenmeleri gereğini doğurmuştur. Bu yüzden projede MVC (Model-View-Controller) tasarım deseni kullanılmıştır. Bu tasarım deseninin bileşenleri ve uygulamanın bütününe ait nesne modelleri de tasarım ve gerçekleme bölümünde rapora eklenmiştir.