Object-Oriented Software Engineering Using UML, Patterns, and Java Chapter 3, Proje Organizasyonu ve İletişim, Bölüm 1 Nasıl yapılmalı ? Requirements Analysis Design Implementation System Testing Delivery and Installation Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 Proje Yönetimi Kanunları • Projeler %90’ı tamamlanıncaya kadar hızla ilerler • Sonra %90 civarında takılıp kalırlar • Proje içeriğinin değişmesi serbest bırakılırsa değişimin hızı projedeki ilerlemenin önüne geçer • Proje grupları ilerleme raporu vermek istemez çünki rapor ilerlemenin az olduğunu gösterebilir • Murphy’nin kanunları: • “İşler iyi gitmeye başladığında birşeyler yanlış gitmeye başlar” • “İşler daha kötü olmaz derken daha da kötüsü olur” • “İşler iyi gidiyor gibi görünüyorsa mutlaka görüp düşünmediğin bir problem vardır.” Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3 Ders Özeti • • • • • Proje Tanımı Proje Organizasyonu Roller Görevler & Aktiviteler İş çıktıları & Teslim edilebilir çıktılar • Bu dersin önemli konusu • Proje yönetimi konseptlerini geliştirici gözüyle görmek Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 Proje Tanımı • Proje, ulaşmak için organize bir çalışma gerektiren hedeflere, sınırlı kaynaklar ve sınırlı zamanla ulaşma girişimidir • Proje parçaları • • • • Müşteriye teslim edilmesi gereken çıktılar Bir zaman cizelgesi Çıktıları üretmek ve teslim etmek için teknik ve idari aktiviteler Aktiviteler tarafından harçanan kaynaklar (insanlar, bütçe) • Proje yönetimine odaklan • • • • Kaynakları yönet Hesap verilebilirliliği sağla Değişimi algıla Hedeflere ulaşıldığından emin ol. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 Bir Projenin Basit Obje Modeli Proje Teslim edilecek çıktılar (Deliverables) Bernd Bruegge & Allen H. Dutoit Zaman Çizelgesi (Schedule) Aktivite (Aktivity) Object-Oriented Software Engineering: Using UML, Patterns, and Java Kaynak (Resource) 6 Modelin ayrıntılı hali Equipment Project * Facility Resource Schedule * * Outcome Work Breakdown Structure * produces * * consumes desWork cribes Package * Work depends Set of Work Work Products Product Activity Project Internal Work Product Deliverable Bernd Bruegge & Allen H. Dutoit Fund Task Project Function Organization * respon- Organizational Unit sible * plays for Role Participant Staff Department Object-Oriented Software Engineering: Using UML, Patterns, and Java Team 7 Bir Projenin Dinamik Modeli Scope Defined Tanım (Definition) do/Define Scope Start do/Assign Tasks Tasks Assigned Termination do/Deliver System Steady State do/Develop System System Done Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 Proje Organizasyonu • Proje organizasyonu kaynaklar ve katılımcılar arasındaki ilişkilerin belirlenmesini sağlar • Bir proje organizasyonu şunları tanımlamalı • Kim karr verecek (karar yapısı - decision structure) • Kim kime durum raporu verecek (reporting structure) • Kim kim ile iletişim kuracak (communication structure) Organizasyon Bernd Bruegge & Allen H. Dutoit * Takım (Team) * Object-Oriented Software Engineering: Using UML, Patterns, and Java Katılımcı (Participant) 9 İletişim yapısına bir örnek Management :Team communicateDecision() communicateDecision() communicateStatus() UserInterface :Team Bernd Bruegge & Allen H. Dutoit communicateStatus() Database :Team Object-Oriented Software Engineering: Using UML, Patterns, and Java Control :Team 10 Rapor vermek ile İletişim • Raporlama proje durumunun izlenmesinde yardımcı olur • Hangi işler bitirildi? • Hangi işler cizelgenin gerisinde kaldı? • Projede ilerlemeye engel olan faktörler neler? • İki takım iletişim ihtiyacı duyduğunda hiyerarşi üzerinden raporla iletişim kurmak yeterli olmaz • Bir iletişim yapısına ihtiyaç var • Her iki takımdan bir kişi iletişim sağlamakla görevlidir Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11 İletişim yapısına bir örnek UserInterface :Team Role Interface with other team Alice :Developer communicates Management: Team John :Developer API engineer communicates Architecture: Team communicates Editor Mary :Developer Documentation: Team communicates Implementor Chris :Developer Testing: Team Implementor Sam :Developer Team leader Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 Hiyerarşik Proje Organizasyonu Chief Executive First Level Manager (“Front-Line Manager”) A B Project Members A wants to talk to B: Information Flow A wants to make sure B does a certain change: Controlflow Organizasyonun temel karakteri: Hiyerarşik yapıyı kullanan karmaşık kontrol ve bilgi akışı Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13 Peer-To-Peer İletişim Project Leader Coaches Subsystem Team A Subsystem Team Subsystem Team B Team Members A wants to talk to B: Simple Information Flow A wants to make sure B does a certain change: Simple Controlflow Organizasyonun temel karakteri: Dinamik formasyondaki uniteler arasında Lineer olmayan bilgi akışı Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 Rol • Her rol birtakım sorumluluklar tanımlar (“to-dos”) • Örnekler • Rol: Test Elemanı • Test Yazar • Hataları rapor eder • Verilen çözümün belirli bir hatayı giderip gidermediğini kontrol eder • Rol: Sistem Mimarı • Tasarım kararlarının tutarlı olmasını sağlar ve altsistemlerin arayüzlerini belirler • Sistem Entegrasyon Stratejisini formule eder • Rol: İletişim Sorumlusu • Facilitate communication between two teams. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15 Yazılım organizasyonlarında rol tipleri Developer API Engineer Document Editor Liaison Configuration Manager Tester Role Manager Project Manager Team Leader Application Domain Expert Consultant Solution Domain Expert Client End User Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16 Sorumluluklar rollere, roller insanlara verilir “To Do” List for the Project • Item 1 • Item 2 • Item 3 Role 1 Item 1 Item 2 Item 9 • Item 5 • Item 6 • Item 7 • Item 9 Bernd Bruegge & Allen H. Dutoit Person A Role 1 Role 2 Item 4 Item 5 Item 7 • Item 4 • Item 8 Team A . Role 3 Item 3 Item 6 Item 8 Object-Oriented Software Engineering: Using UML, Patterns, and Java Role 2 Person B Role 3 17 Rollerden kişilere olan ilişkiler • Bire-bir • Ideal ama çoğunlukla mümkün değil • Çoktan-aza • Her proje üyesi birden çok görev üstlenir • İşin altından kalkamama tehlikesi • İş yükünün dengeli dağıtılması lazım • Çoktan-çoka • Bazı insanların rolleri önemli değil • Hesap verilebilirlik zorlaşır • Projeyle bağlantı zayıflar Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18 Görev(Task) • Yöneticinin takip edebileceği en küçük iş miktarına görev diyoruz • 3-10 günlük işler • Görev tanımlamaları • • • • • Rol İş çıktısı Başlama tarihi Ne kadar sürecek Gerekli kaynaklar. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19 Example: Tasks for building a House Install Interior Plumbing Install Interior Electrical Install Wallboard Paint Interior Install Flooring Survey Survey Build Build Lay Outside Foundation Lay Foundation Wall Outside Material Buy Buy Excavate ExcavateMaterial FINISH Install Roofing Wall Request Request Permits Install Exterior Doors Paint Exterior Permits Install Exterior Plumbing Bernd Bruegge & Allen H. Dutoit Install Interior Doors Install Exterior Electrical Object-Oriented Software Engineering: Using UML, Patterns, and Java Install Exterior Siding 20 Example: Tasks for building a house Install Interior Plumbing Install Interior Electrical Install Wallboard Paint Interior Install Flooring START Survey Excavate Buy Material Lay Foundation Build Outside Wall FINISH Install Roofing Request Permits Install Exterior Doors Paint Exterior Install Exterior Plumbing Bernd Bruegge & Allen H. Dutoit Install Interior Doors Install Exterior Electrical Object-Oriented Software Engineering: Using UML, Patterns, and Java Install Exterior Siding 21 Görevler ve İş Paketleri (Work Package) • Görevler iş pakatleri ile belirlenir • • • • Yaılacak işin tarifi İşe başlamak için ön koşullar, süre, gerekli kaynaklar İş çıktıları ve bunların kabul koşulları Riskler • Her görevin bir bitiş kriteri olmalı • Includes the acceptance criteria for the work products (deliverables) produced by the task. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22 İş Çıktıları (Work Products) • Görev sonunda görülebilen iş çıktısı • Örnek • • • • • Bir doküman Bir dokümanın incelenmiş hali Bir sunum Kod parçası Bir test raporu • Müşteriye sunulan iş çıktılarına ara çıktılar (deliverables) denebilir Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23 Görev büyüklükleri • Görevler takip edilebilir büyüklükte parçalardan oluşur • You may not know how to decompose the problem into tasks at first • Depends on the nature of work and how well task is understood. • Doğru büyüklüğü bulmak çok önemlidir • To-do lists from previous projects • Each software development activity identifies more tasks and modifies existing ones. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24 Aktiviteler (Activities) • Önemi bir iş miktarıdır • Projede kilometre taşlarını belirleyebilir: • İlerlemeyi ölçmek için belirlenmiş durumlar • İçeride belirlenen kontrol noktaları dışarıdan görünmemeli • Projenin kilometre taşları genelde proje planını belirler • Birçok zaman aktiviteler daha üst seviye aktivitelere gruplanır: • Phase 1, Phase 2 … • Step 1, Step 2 … • İşin ve zorlukların bölünmesini sağlar • Aktiviteler arasında öncelik ilişkileri olabilir • Örnek: “A1 must be executed before A2” Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25 Example: Activities for Building a House Install Interior Plumbing Install Interior Electrical Install Wallboard Paint Interior Install Flooring START Survey Excavate Buy Material Lay Foundation Build Outside Wall FINISH Install Roofing Request Permits Install Exterior Doors Paint Exterior Install Exterior Plumbing Bernd Bruegge & Allen H. Dutoit Install Interior Doors Install Exterior Electrical Object-Oriented Software Engineering: Using UML, Patterns, and Java Install Exterior Siding 26 Example: Activities for Building a House Install Interior Plumbing Install Interior Electrical Install Finish Wallboard Interior Paint Interior Install Flooring START Establish Survey Excavate Foundation Buy Material Build Build Outside Outside Wall Wall Lay Foundation FINISH Install Roofing Request Permits Install Exterior Doors Paint Exterior Install Exterior Plumbing Bernd Bruegge & Allen H. Dutoit Install Interior Doors Install Finish Exterior Exterior Siding Install Exterior Electrical Object-Oriented Software Engineering: Using UML, Patterns, and Java 27 Examples of Software Engineering Activities • • • • • • • • Planning Requirements Elicitation Analysis System Design Object Design Implementation Testing Delivery Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28 Associations between Tasks, Activities, Roles, Work Products, and Work Packages describes Work Package * results in Work Product Unit Of Work 1 Activity Task * 1 assigned to Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java Role 29 Summary • Projects are concerted efforts towards a goal that take place within a limited time • Project participants are organized in terms of teams, roles, control relationships, and communication relationships. • An individual can fill more than one role. • Work is organized in terms of tasks assigned to roles and producing work products. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30 Backup Slides Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31