====== Planowanie prac ====== - Pozyskanie informacji od klienta - Analiza wymagań * Wymagania funkcjonalne i niefunkcjonalne * Identyfikacja głównych celów projektu * Identyfikacja środków i narzędzi niezbędnych do realizacji * Tworzenie struktury podziału prac * Diagram następstw produktów - Definicja zadań - Ocena zadań * czas potrzebny na realizację * wymagane zasoby (ludzi, sprzętu i oprogramowania) * [[wppl>Zarządzanie_ryzykiem_(projektowanie)|ryzyko]] - Szeregowanie zadan - Finalny plan - harmonogram, plan pracy Metodyki planowania pracy: [[wppl>PRINCE2]], [[wppl>Project Management Institute]] [[wppl>Scrum]] ===== Struktura podziału prac ===== Metoda hierarchicznego podziału projektu na części składowe, pomagająca w planowaniu przebiegu prac nad projektem. * **Produkt** – efekt działalności projektu (np. program, moduł programu, kalendarz, część maszyny, nowa generacja silnika). * **Produkt główny** – jeden lub więcej zasadniczych produktów, będących efektem działania projektu. * **Produkt częściowy** – jeden z produktów wchodzących w skład produktu głównego. * **Produkt zewnętrzny** – istniejące i zidentyfikowane produkty, które występują w projekcie i są potrzebne dla wytworzenia jednego lub większej ilości produktów projektu. * **Struktura Podziału Pracy (SPP)** [[wp>Work_breakdown_structure]] * hierarchia pokazująca zależności pomiędzy produktem głównym a jego składowymi. * opisuje oczekiwane cele, nie zaś zadania * dowolny produkt główny może składać się z wielu produktów składowych (produktów podrzędnych). * Dowolny produkt składowy przynależy jedynie do jednego i tylko jednego produktu nadrzędnego. * Elementy WBS: produkt, dane, usługa * Ostatecznie, każda czynność związana z projektem przypisana jest do tylko jednego, końcowego, elementu WBS **Przykład**: - Samochód - Karoseria - Koła - przednie koło - opona - felga - Szyby - Wnętrze - siedzenie - deska rozdzielcza - Silnik - Tłok - Wał - Cylinder - Zawory - Wałek rozrządu | {{http://upload.wikimedia.org/wikipedia/en/thumb/e/e4/WbsConstruction.png/800px-WbsConstruction.png?250}} | {{http://cdn.content.compendiumblog.com/uploads/user/816e3956-4847-41c0-b671-82cfea7863e0/5fbdb1d0-0e0a-4406-b415-bd0dd28be40f/Image/224de41c322d41db4e4ba5224801ef4e_w640.gif?250}} | {{:zajecia:ppz:spp-mind-map.png?250|}} | | | | Źródło: Ś. Sobieski, ITA-111 Programowanie zespołowe | Przydatne narzędzia: * [[http://visiotoolbox.com/2010/process-management.aspx|MS Visio]] ===== Diagram następstw produktów ===== Część planu ilustrująca kolejność wytwarzania lub pozyskiwania produktów oraz współzależności pomiędzy produktami, które zidentyfikowano na diagramie struktury produktów [PRINCE2]. **Diagram następstwa produktów** * produkty z SPP w zależności czasowej * produkty są układane w kolejności ich pozyskiwania lub wytworzenia * w oparciu o ten diagram można łatwo określić harmonogram pracy [[wp>Product_flow_diagram]]\\ [[wp>Activity_network_diagram]] ===== Scrum ===== * jedna z najbardziej znanych metody k zwinnych (Agile) : [[http://agilemanifesto.org/iso/pl/|Manifesto for Agile Software Development]] * metoda przyrostowa : produkt powstaje w kolejnych iteracjach * sprawny (ale niekompletny) produkt już po pierwszej iteracji * sprawna kontrola nad przebiegiem prac (narzędzia ułatwiające MS TFS) * wczesne wykrywanie problemów * zespoły 7+-2 * **kontrola czasu** - czynność musi być zakończona w określonym czasie * Zespół ma charakter samoorganizujący {{http://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Scrum_process.svg/1000px-Scrum_process.svg.png?400}} Pojęcia: * Wykaz prac produktu (ang. Product Backlog) * Sprint - iteracja o określonym czasie (7-30 dni) * Wykaz prac sprintu (ang. Sprint Backlog). Po podziale na zadania o czasie trwanie 4-8 godzin) * Cel sprintu * spotkanie rozruchowe (ang. stend-up meeting): Co zrobiłeś wczoraj? Co będziesz dziś robił? Co stoi na przeszkodzie w realizacji? * wykres malejący (ang. burn-down chart) |{{http://www.infoq.com/resource/articles/agile-kanban-boards/en/resources/Fig4_DailyBurndown.jpg?300}}| {{http://upload.wikimedia.org/wikipedia/commons/thumb/0/05/SampleBurndownChart.png/800px-SampleBurndownChart.png?300}}| ===== Team Foundation Server i Scrum ===== {{:zajecia:ppz:vs-2010-overview.jpg?400|}} {{:zajecia:ppz:vs-2010-scrum.jpg?400|}} ===== Trac - harmonogram ===== Podział prac i harmonogram pracy można przygotować przy pomocy Trac. \\ Odpowiednikami sprintu są tu etapy (milestones). W ramach każdego etapu przygotowujemy szereg zadań (product backlog). Zadanie (ticket) może być tu odpowiednikiem jedniodniowej iteracji w ramach scruma. **Etapy** (milestone) * wyszczególnienie (niezależnych) części projektu i relacji pomiędzy nimi * istotna jest kolejność/zależność etapów/zadań * posiadają ściśle określony czas wykonania (od 7 do 30 dni) * jasne cele do osiągnięcia w danym etapie (np. sprawny moduł, wersja oprogramowania, dokumentacja, raport, itp.) wyszczególnione w opisie * zasoby potrzebne do wykonania (sprzęt, środowisko pracy systemu, biblioteki, technologie, wiedza) **Zadania** (tickets) * wykaz czynności przewidzianych do wykonania w ramach poszczególnych etapów (przydziela kierownik) * czas wykonania jeden dzień roboczy (6-8 godzin) - zatwierdzenie nowej wersji w repozytorium pod koniec dnia pracy powinno zamykać zadanie (status //closed//) * zależności pomiędzy zadaniami - Plugin: [[http://trac-hacks.org/wiki/MasterTicketsPlugin|MasterTickets]] Przykłady: * [[http://trac.edgewall.org/roadmap?show=completed|Etapy w projekcie Trac]], * [[http://trac.edgewall.org/query?group=status&component=general&milestone=0.13|Zgłoszenia w ramach projektu Trac v 0.13 dla komponentu general]] Do poczytania:\\ * [[.:trac|Trac - notatki]] * [[http://trac.edgewall.org/|Trac]] - strona główna * [[http://www.ivankuznetsov.com/2009/05/using-trac-for-agile-project-management.html|Using Trac for Agile project management]] - Ivan Kuznetsov ===== Żródła: ===== * Ś. Sobieski, ITA-111 Programowanie zespołowe * [[wp>Wikipedia]] * [[http://www.ivankuznetsov.com/2009/05/using-trac-for-agile-project-management.html|Using Trac for Agile project management]] - Ivan Kuznetsov * MSDN * ?? (uzupełnić)