[pl] xprince: balance between agility and discipline

35
Metodyka XPrince balance between agility and discipline Wojciech Podgórski Wydział Informatyki i Zarządzania Politechnika Wrocławska 2009

Upload: wojciech-podgorski

Post on 01-Jul-2015

2.096 views

Category:

Technology


1 download

DESCRIPTION

XPrince: Równoważenie zwinności i dyscypliny. Prezentacja przedstawia metodykę XPrince w kontekście innych metodyk zarówno ciężki jak i lekkich takich jak PRINCE2, RUP oraz XP. Autor opisuje budowe zespołu, cykl życia projektu oraz inżynierię wymgań zastosowaną w XPrince.

TRANSCRIPT

Page 1: [PL] XPrince: balance between agility and discipline

Metodyka XPrincebalance between

agility and discipline

Wojciech Podgórski

Wydział Informatyki i Zarządzania

Politechnika Wrocławska

2009

Page 2: [PL] XPrince: balance between agility and discipline

Syndrom LOOP i kryzys oprogramowania

Late

Over budget

Overtime

Poor Quality

Page 3: [PL] XPrince: balance between agility and discipline

Próby rozwiązania problemu

Pierwszymi próbami rozwiązania problemu było zwiększenie

dyscypliny w wytwarzaniu oprogramowania. Zaczęły

powstawać standardy, modele dojrzałości, metodyki

zorientowane na dyscyplinę.

Rys. 1 Poziomy Capability Maturity Model for Software (CMM)

Page 4: [PL] XPrince: balance between agility and discipline

Metodyki ciężkie

Powstawanie kolejnych koncepcji poprawy procesu

wytwarzania oprogramowania doprowadziły do

utworzenia grupy metodyk nazywanych

„ciężkimi”. Metodyki ciężkie cechują się przede

wszystkim:

• Zorientowaniem na proces (process oriented)

• Ogromną rolą dokumentacji w projekcie

• Dużą dyscypliną i „silnym” zarządzaniem

• Małą podatnością na zmiany wymagań

Page 5: [PL] XPrince: balance between agility and discipline

Metodyki lekkie

W latach 90-tych, w skutek problemów w wytwarzaniu

złożonych systemów z bardzo zmiennymi wymaganiami,

powstała grupa metodyk nazywanych zwinnymi (lekkimi).

13 lutego 2001 roku, w Snowbird, 17 sygnatariuszy

podpisało tzw. Manifest Zwinnego Wytwarzania

Oprogramowania (Agile Manifesto), który deklarował

zestaw wspólnych zasad dla lekkich metodyk wytwarzania

oprogramowania.

Page 6: [PL] XPrince: balance between agility and discipline

Metodyki lekkie II

Metodyki lekkie cechują się:

• Zorientowaniem na człowieka (people oriented,

human powered, people centric)

• Dobrą i bliską współpracą z klientem

• Adaptacyjnością powstającego oprogramowania

(podatnością na zmiany wymagań)

• Wytwarzaniem działającego oprogramowania,

bardziej niż opracowywaniem dokumentacji

Page 7: [PL] XPrince: balance between agility and discipline

Słabe strony obu podejść

Metodyki ciężkie:

• Nadmierna i zbyt szczegółowa

dokumentacja

• Bardzo mała elastyczność

• Zbyt duża dyscyplina

(eliminuję inicjatywę)

• Powolne procesy

podejmowania decyzji

• Niezdolność adaptacji w

trakcie trwania projektu

Metodyki lekkie:

• Założenie „on-site customer”

• Brak dokumentacji

• Zbyt krótka perspektywa

planowania

• Ryzyko biznesowe dominuje

nad technologią

• Brak „silnego” zarządzania

• Zbyt duża wiara w człowieka…

Page 8: [PL] XPrince: balance between agility and discipline

Idea XPrince

„…every successful venture in a changing world

requires both agility and discipline…”B.Boehm, R. Turner

Balancing Agility and Discipline. A Guide for Perplexed, Addison-Wesley, Boston, 2004.

Page 9: [PL] XPrince: balance between agility and discipline

Czym jest XPrince?

ciężar

XP XPrince

RUP

PRINCE2

Rys. 2 XPrince jako połączenie różnych metodyk

Page 10: [PL] XPrince: balance between agility and discipline

Czym jest XPrince? cd.

XPrince (eXtreme PRogramming IN Controlled

Environments) jest zwinną metodyką opartą o metodyki

RUP, XP oraz PRINCE2, łączącą ich najlepsze cechy.

W grudniu 2004 założono Konsorcjum XPrince, które działa

jako stowarzyszenie i stawia za cel rozwój, pielęgnację

oraz promowanie metodyki.

Page 11: [PL] XPrince: balance between agility and discipline

Struktura zespołu w PRINCE2

Project Board

Senior

User

Senior

SupplierExecutive

Project

Assurance

Project

Manager

DevelopersDevelopers

DevelopersRys. 3 Struktura zespołu w PRINCE2,

źródło: [4]

Page 12: [PL] XPrince: balance between agility and discipline

Struktura zespołu w PRINCE2 cd.

Role w PRINCE2:

• Executive (Dyrektor) – reprezentuje inwestora, odpowiedzialny za

biznesowy sukces projektu

• Senior User (Główny użytkownik) – kieruje użytkownikami

końcowymi, skupia się na użyteczności produktu (usability)

• Senior Supplier (Główny dostawca) – reprezentuje organizację

dostawcy produktu

• Project Assurance (Audytor projektu) – sprawdza i weryfikuje

prace Menadżera Projektu, zdaje raporty Zarządowi Projektu

• Project Manager (Menadżer projektu) – taktyczny poziom

zarządzania, ogniwo pomiędzy Zarządem Projektu, a Programistami

Page 13: [PL] XPrince: balance between agility and discipline

Struktura zespołu w XP

Coach

Customer

Developers

Tester

Tracker

DevelopersDevelopers

Rys. 4 Struktura zespołu w XP, źródło: [4]

Page 14: [PL] XPrince: balance between agility and discipline

Struktura zespołu w XP cd.

Role w XP:

• Coach (Trener) – rozwiązuje problemy organizacyjne i

techniczne, motywuje zespół

• Customer (Klient) – reprezentuje inwestora

• Tracker (Nadzorca) – prowadzi dziennik, wykonuje testy

wydajności grupy

• Tester (Tester) – odpowiedzialny za testy

oprogramowania

Page 15: [PL] XPrince: balance between agility and discipline

Struktura zespołu w XPrince

Project Board

Senior

User

Senior

SupplierExecutive

Project

Assurance

Analyst

Customer

DevelopersTester

Architect

Coach

DevelopersDevelopers

Project

Manager

Coach

Rys. 5 Struktura zespołu w XPrince,

źródło: [4]

Page 16: [PL] XPrince: balance between agility and discipline

Struktura zespołu w XPrince cd.

Role pochodne w XPrince:

• Architect (Architekt) – kieruje i koordynuje wykonywanie

czynności i artefaktów technicznych, podejmuje decyzje

projektowe, z punktu widzenia programistów jest głównym

projektantem. Rola zaczerpnięta z RUP, pełni również

funkcję trenera z XP, zorientowanego na aspekty techniczne.

• Analyst (Analityk) – definiuje wymagania oraz opisuje projekt

z punktu widzenia biznesu, śledzi ryzyko związane z

funkcjonalnością i jakością produktów. Rola zaczerpnięta z

RUP, pełni również funkcję klienta z XP.

Page 17: [PL] XPrince: balance between agility and discipline

Struktura zespołu w XPrince cd.

• Project Manager (Menadżer Projektu) – jest

odpowiedzialny za środowisko pracy, rozwiązuje

problemy personalne, buduje (zgodnie z

zasadami etyki zaproponowanymi przez S.

Coveya) i motywuje zespół. Rola zaczerpnięta z

PRINCE2, pełni również funkcję trenera z XP,

zorientowanego na zarządzanie zespołem.

Page 18: [PL] XPrince: balance between agility and discipline

Cykl życia projektu w PRINCE2

Rozpoczęcie

projektu

Inicjacja

projektuEtap 1 … Etap k

Zamknięcie

projektu

RozpoczęcieElabor

acjaKonstrukcja Tranzycja

Etap 2

Rozpoczęcie

projektu

Inicjacja

projektu

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

Zamknięcie

projektu

Rys. 6 Cykl życia projektu w (a) PRINCE2, (b) RUP, (c) XP, (d) XPrince

Elabor

acja

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

(a)

(d)

(c)

(b)

Page 19: [PL] XPrince: balance between agility and discipline

Cykl życia projektu w RUP

Rozpoczęcie

projektu

Inicjacja

projektuEtap 1 … Etap k

Zamknięcie

projektu

RozpoczęcieElabor

acjaKonstrukcja Tranzycja

Etap 2

Rozpoczęcie

projektu

Inicjacja

projektu

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

Zamknięcie

projektu

Rys. 6 Cykl życia projektu w (a) PRINCE2, (b) RUP, (c) XP, (d) XPrince

Elabor

acja

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

(a)

(d)

(c)

(b)

Page 20: [PL] XPrince: balance between agility and discipline

Cykl życia projektu w XP

Rozpoczęcie

projektu

Inicjacja

projektuEtap 1 … Etap k

Zamknięcie

projektu

RozpoczęcieElabor

acjaKonstrukcja Tranzycja

Etap 2

Rozpoczęcie

projektu

Inicjacja

projektu

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

Zamknięcie

projektu

Rys. 6 Cykl życia projektu w (a) PRINCE2, (b) RUP, (c) XP, (d) XPrince

Elabor

acja

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

(a)

(d)

(c)

(b)

Page 21: [PL] XPrince: balance between agility and discipline

Cykl życia projektu w XPrince

Rozpoczęcie

projektu

Inicjacja

projektuEtap 1 … Etap k

Zamknięcie

projektu

RozpoczęcieElabor

acjaKonstrukcja Tranzycja

Etap 2

Rozpoczęcie

projektu

Inicjacja

projektu

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

Zamknięcie

projektu

Rys. 6 Cykl życia projektu w (a) PRINCE2, (b) RUP, (c) XP, (d) XPrince

Elabor

acja

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

(a)

(d)

(c)

(b)

Page 22: [PL] XPrince: balance between agility and discipline

Cykl życia projektu w XPrince

Rozpoczęcie

projektu

Inicjacja

projektuEtap 1 … Etap k

Zamknięcie

projektu

RozpoczęcieElabor

acjaKonstrukcja Tranzycja

Etap 2

Rozpoczęcie

projektu

Inicjacja

projektu

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

Zamknięcie

projektu

Rys. 6 Cykl życia projektu w (a) PRINCE2, (b) RUP, (c) XP, (d) XPrince, źródło: [4]

Elabor

acja

Wydanie 1 Wydanie k

Przyrost

1.1

Przyrost

1.2

Przyrost

k.2

Przyrost

k.1

(a)

(d)

(c)

(b)

Page 23: [PL] XPrince: balance between agility and discipline

Etapy projektu w XPrince

• Rozpoczęcie projektu

Wykonywane przez Menadżera Projektu, obejmuje:

– Ustanowienie zespołu Zarządu Projektu

– Stworzenie wizji systemu

– Zaplanowanie fazy Inicjacji Projektu

• Inicjacja projektu

Wykonywane przez Menadżera Projektu, Analityka i Architekta ma

na celu dostarczenie planu i stworzenie środowiska

organizacyjnego projektu. Dzieli się na:

Page 24: [PL] XPrince: balance between agility and discipline

Etapy projektu w XPrince cd.

• Inicjacja projektu cd.– Zrozumienie celu projektu

– Propozycję wstępnej architektury

– Zaplanowanie projektu i dopracowanie uzasadnienia biznesowego

– Ustalenie kanałów komunikacyjnych i środowiska zarządzania projektem

– Planu fazy elaboracji

• Elaboracja

Dotyczy głównie architektury. Architekt proponuje mechanizmy

architektoniczne oraz rozpoznaje ryzyko z nimi związane, tworzy

szkielet projektu. Analityk i Menadżer Projektu udoskonalają

wymagania i plan projektu.

Page 25: [PL] XPrince: balance between agility and discipline

Etapy projektu w XPrince cd.

• Wydanie

Etap składający się z kilku przyrostów (iteracji) kończący się fazą

tranzycji, przypomina fazę Wydania z XP. Architekt i Programiści

produkują kod i przypadki testowe. Analityk odpowiada za

wymagania i testy akceptacyjne. Po fazie tranzycji, wdraża i

przekazuje się kolejną wersję produktu użytkownikom końcowym.

Zaleca się stosowanie równych iteracji.

• Zamknięcie projektu

Etap zaczerpnięty z metodyki PRINCE2, projekt jest zamykany,

identyfikowane są dalsze akcje i następuje ocena projektu.

Page 26: [PL] XPrince: balance between agility and discipline

Inżynieria wymagań w XPrince

Metodyka XPrince, w przeciwieństwie do PRINCE2, posiada i

definiuje inżynierię wymagań jako niezbędny proces

wytwarzania oprogramowania. Wymagania dokumentowane

są w postaci przypadków użycia, wyrażane za pomocą

opisów w języku naturalnym, diagramów UML oraz notacji

BMPN.

Specyfikacja wymagań odbywa się zgodnie z standardem

IEEE 830-1998 Recommended Practice for Software

Requirements Specifications –Description.

Page 27: [PL] XPrince: balance between agility and discipline

Inżynieria wymagań w XPrince cd.

Przypadki użycia związane z funkcjonalnościami oferowanymi przez

system, są klasyfikowane ze względu na swoją istotność i

pracochłonność za pomocą metody UC Points.

Twórcy metodyki XPrince, aby wesprzeć proces inżynierii wymagań,

stworzyli narzędzie w pełni zgodne ze sposobem specyfikacji

przypadków użycia zdefiniowanym w metodyce. Nazwano je UC

Workbench.

http://www.cs.put.poznan.pl/lolek/homepage/UC_Workbench.html

Page 28: [PL] XPrince: balance between agility and discipline

Dobre praktyki w XPrince

Metodyka opiera się na zbiorze dobrych praktyk (best

practices) metodyki XP i innych metodyk zwinnych.

XPrince kładzie jednak szczególny nacisk na kilka z nich,

są to:

1. Programowanie zespołowe

2. Test-driven development (test-first coding)

3. Gra planistyczna (planning game)

4. Refaktoryzacja kodu

Page 29: [PL] XPrince: balance between agility and discipline

Programowanie zespołowe

Techniki programowania zespołowego:

• Programowanie parami XP (2 programistów, 1 komputer)

• Programowanie Side-by-Side (2 programistów, 2 komputery)

• Programowanie indywidualne (+ recenzent) (1 programista)

Autorzy metodyki przeprowadzili wiele badań na temat efektywności

programowania zespołowego. Formalnie metodyka nie definiuje, której

techniki programowania zespołowego powinno się używać. Może być

dowolna, wybrana przez programistę, jeżeli jednak ten wybierze

programowanie indywidualne, zostanie przydzielony mu recenzent.

Jednakże zaleca się używanie techniki Side-by-Side.

Wyniki badań opublikowano w [5].

Page 30: [PL] XPrince: balance between agility and discipline

Podsumowanie

Metodyka XPrince jest metodyką zwinną, powstałą na

podstawie metodyk takich jak RUP, XP i PRINCE2. Łączy w

sobie wszystkie najlepsze cechy powyższych, eliminując

lub minimalizując ich wady.

Z punktu widzenia zarządzania XPrince = PRINCE2, z

punktu widzenia programistów XPrince = XP. Metodyka

rozdziela (zmniejszając w ten sposób) ryzyko biznesowe

(CO robić) i techniczne (JAK robić) odpowiednio na role

Analityka i Architekta.

Page 31: [PL] XPrince: balance between agility and discipline

Podsumowanie

Pozostałe zalety XPrince:

• Posiada mechanizmy kontroli

• Zachowuje optymalny poziom dokumentacji

technicznej

• Ma prostą i efektywną strukturę organizacyjną

• Jest przejrzysta dla kadry zarządzającej

• Wykorzystuje zwinne praktyki programistyczne

• Metodykę cechuje synergia

Page 32: [PL] XPrince: balance between agility and discipline

Podsumowanie

dr hab. inż. Jerzy Nawrocki, prof. PP

Twórca

Page 33: [PL] XPrince: balance between agility and discipline

Bibliografia

1. Dubinsky Y., Hazzan O., Roles in Agile Software Development Teams, Department of

Computer Science, Technion, Israel

2. Kroll P., Kruchten P. Rational Unified Process od strony praktycznej, Wydawnictwa

Naukowo-Techniczne, Warszawa 2007

3. Madeyski L., Wykłady z przedmiotu Wirtualne Przedsiębiorstwo I, Politechnika

Wrocławska, Instytut Informatyki 2008 - http://madeyski.e-informatyka.pl

/download/stud/wirp/Lectures.pdf

4. Nawrocki J., Olek Ł., Jasiński M., Paliświat B., Walter B., Pietrzak B, Godek P.

Równowaga między zwinnością a dyscypliną z wykorzystaniem Xprince, Politechnika

Poznańska, Instytut Informatyki

5. Nawrocki J., Jasiński M., Olek Ł., Lange B. Pair Programming vs. Side-by-Side

Programming, Poznan University of Technology

6. Nawrocki J., Makowski M., Software Development with Xprince, prezentacja firmy DGA,

2004

7. Nawrocki J., Wykłady z przedmiotu Inżynieria Oprogramowania II, Politechnika

Poznańska, Instytu Informatyki 2004 - http://www.cs.put.poznan.pl/jnawrocki/io/

8. Pszczółkowski A., Metodyki Lekkie, http://www.si.pjwstk.edu.pl/dydaktyka/mgr

/2006-2007-winter/Agile_Methodolgies.ppt

9. Konsorcjum XPrince – http://xprince.net

Page 34: [PL] XPrince: balance between agility and discipline

Pytania?

Page 35: [PL] XPrince: balance between agility and discipline

Dziękuje bardzo…