Zarządzaj zwinnym zespołem z XPlanner

Zakres, projektowanie, budowanie, testowanie, dostarczanie, przepraszanie. Są to często wydeptane kroki tradycyjnej metodologii inżynierskiej zastosowanej do rtęciowego świata projektów oprogramowania. Jako programista prawdopodobnie dobrze znasz ten „ostateczny” wymóg systemowy, który wydaje się uchylać i tkać jak zawodnik z nagrodami. Być może pracowałeś nad projektem deweloperskim tylko po to, by pojawić się miesiące (lub lata) później, aby stawić czoła klientowi, który wydaje się być głęboko rozczarowany, że jego rzeczywiste potrzeby nie zostały spełnione. Być może twoi rówieśnicy są w punkcie, w którym skrupulatny długoterminowy plan rozwoju, który mają przed sobą, zaszczepia poczucie zbliżającej się zagłady. Podsumowując - Twój zespół jest gotowy do zwinnego rozwoju, ale czy Twoje tradycyjne narzędzie do zarządzania zespołem zostało zaprogramowane do tradycyjnego zarządzania zespołem?

Metodyki zwinne mogą być lekkie, ale są wysoce zdyscyplinowane. Każde narzędzie, które wspiera Cię w planowaniu i śledzeniu szybkich dostaw przy intymnej współpracy z klientami, może stanowić cenny dodatek do Twojego arsenału. Dobra wiadomość jest taka, że ​​zespół zwinny ma teraz dostęp do kilku takich narzędzi. W tym artykule opisano rzeczywiste doświadczenie w zarządzaniu zespołem programistów zwinnych za pomocą jednego z narzędzi tego nowego typu - XPlanner o otwartym kodzie źródłowym.

XPlanner to aplikacja internetowa w języku Java zaprojektowana do wspomagania zarządzania zespołem zgodnie z ekstremalną metodologią programowania (XP). Jednak okazało się, że to narzędzie jest wystarczająco elastyczne, aby zapewnić cenne wsparcie dla innych głównych podejść zwinnych (np. Scrum) w ogniu realizacji projektu. Chociaż nieskomplikowany, XPlanner zapewnia przydatne narzędzie wspierające Twój zespół, niezależnie od tego, czy masz doświadczenie, czy dopiero wkraczasz w satysfakcjonujący świat zwinnego tworzenia oprogramowania.

Tradycyjne a zwinne narzędzia do zarządzania zespołem

Tradycyjne narzędzia do zarządzania zespołem (takie jak Microsoft Project) opierają się na strukturach podziału pracy, które patrzą daleko w przyszłość projektu. Planowana alokacja zasobów i uważne obserwowanie odchyleń od linii bazowej służą do zarządzania „ścieżką krytyczną” prowadzącą do ostatecznej dostawy. Zastosowanie takich narzędzi wymaga znacznych wysiłków związanych z planowaniem z góry, sztywnych zależności zadań i stabilnej podstawy wymagań. Znaczące zmiany zakresu lub wymagań mogą wymagać znaczących poprawek w modelu. Dlatego te tradycyjne narzędzia są najbardziej odpowiednie przy planowaniu podróży z punktu A do punktu B, przy założeniu niewielkich różnic w przebiegu. Natomiast projekty zwinne są nastawione na oczekiwanie zmian, nie zakładając, że B ma być nawet ostatecznym celem.

W zrozumieniu kultury projektu zwinnego warto rozważyć założenia zwinnego rozwoju, za którymi opowiadają się autorzy Manifestu Agile:

  • „Osoby i interakcje nad procesami i narzędziami
  • Działające oprogramowanie ponad obszerną dokumentację
  • Współpraca z klientem zamiast negocjacji umowy
  • Reagowanie na zmianę zgodnie z planem ”

    (Kent Beck i in., 2001)

Dlatego projekty zwinne wyraźnie rezygnują z planowania długoterminowego na rzecz intymnego zaangażowania interesariuszy, wyraźnego skupienia się na funkcjach o wysokiej wartości oraz wczesnego i częstego wydawania użytecznego oprogramowania. Podstawowym celem jest proste i skuteczne dostarczanie wartości w obliczu ciągłych zmian. Aby narzędzie do planowania i śledzenia było wartościowe w tym kontekście, musi być zgodne z tymi wartościami.

Planowanie i śledzenie projektów za pomocą XPlanner

XPlanner to zwinne narzędzie do zarządzania projektami, dostępne na licencji GNU Lesser General Public License (co oznacza, że ​​jest „bezpłatne, jak w piwie”, w języku open source). Pakiet jest wdrażany jako aplikacja internetowa, która umożliwia członkom zespołu i udziałowcom projektu dostęp do platformy za pomocą ich ulubionych przeglądarek internetowych. Po skonfigurowaniu będziesz w stanie planować i śledzić różne aspekty realizacji projektu zwinnego za pośrednictwem prostego interfejsu internetowego.

Co najważniejsze, z perspektywy zwinnej, uczestnicy projektu są w stanie bezpośrednio współpracować, przekazując swoje informacje do wspólnego repozytorium projektów. Współpraca ta może obejmować klientów opisujących wymagania projektu w formie historii użytkowników, których programiści używają następnie do wyszczególnienia i śledzenia zadań wymaganych do urzeczywistnienia tych historii.

Oprócz obsługi tego poziomu współpracy z klientami XPlanner zapewnia inne przydatne funkcje, które wspierają zwinne podejście. Obejmują one takie funkcje, jak prosty mechanizm definiowania iteracji projektu; intuicyjny interfejs dla osób szacujących i śledzących wysiłek; i wykresy do publikowania metryk zespołu. Omówiono tutaj XPlanner, który został wdrożony w celu wsparcia dostarczania elektronicznego systemu handlu i przepływu pracy składającego się z kilku grup interesariuszy i zespołu siedmiu programistów.

Pobieranie i instalowanie

XPlanner to czysta aplikacja Java, którą można wdrożyć w dowolnym środowisku programistycznym J2SE 1.4 wyposażonym w Apache Ant i odpowiedni silnik serwletów. Wybraliśmy Apache Tomcat jako silnik serwletów; jednakże każdy silnik zgodny z Servletem 2.3 (lub nowszą wersją) powinien działać. XPlanner jest dostarczany jako archiwum plików (zip lub tar.gz), które należy rozpakować i skompilować przed wdrożeniem i użyciem narzędzia.

Wymagany jest obowiązkowy krok konfiguracji, ponieważ musisz skonfigurować swoją ulubioną bazę danych, która będzie używana jako repozytorium informacji o projekcie. Ponieważ XPlanner używa warstwy obiektowej / relacyjnej trwałości Hibernate do interakcji z bazą danych, masz możliwość użycia dowolnej bazy danych obsługiwanej przez Hibernate w repozytorium projektu. Dołączoną opcją jest lekka baza danych Java Hypersonic (obecnie nazywana HSQLDB); jednak użyliśmy Oracle 9i jako naszej bazy danych repozytorium. Aby skonfigurować tę bazę danych, musieliśmy edytować plik xplanner.properties, odkomentowując już zdefiniowane właściwości Oracle. Musieliśmy również zmodyfikować build.xmlplik, aby zawierał sterownik cienkiej bazy danych Oracle. Po skonfigurowaniu możesz zbudować wdrożenie XPlanner. Obejmuje to wykonanie programu Ant w celu utworzenia wdrażalnego archiwum WWW (WAR) w następujący sposób:

ant install.db.schema ant build.war 

Wdróż wynikowy plik archiwum WWW ( xplanner.war) w wybranym silniku serwletów, a następnie przejdź do adresu URL // twój-serwer: twój-port / xplanner / (używając domyślnego użytkownika „sysadmin” i hasła „admin”), aby sprawdzić wyniki!

Integracja z Twoim ekosystemem

Większość środowisk programistycznych zawiera już system śledzenia błędów, fora współpracy, systemy bezpieczeństwa, repozytoria standardów itp. Chociaż przydatne jako samodzielne narzędzie, wartość XPlanner można zwiększyć dzięki jego prostym i potężnym funkcjom integracji. XPlanner obejmuje na przykład możliwość obsługi renderowania wypowiedzi programistów w polu opisu, na przykład bug: 1001 jako odnośnik do //mybugzilla/show_bug.cgi?uid=1001. Można to zrobić, po prostu dodając twiki.scheme.bug=//mybugzilla/show_bug.cgi?id=do xplanner.propertiespliku. Tej samej techniki można użyć w przypadku innych narzędzi internetowych, takich jak viewcvs (xplanner.propertiespokazuje kilka innych przykładów). XPlanner zawiera również zaawansowany program formatujący wiki (nie używany w naszym projekcie), który umożliwia automatyczne łączenie z wpisami wiki. Więcej informacji na temat rozszerzeń XPlanner można znaleźć w Zasobach.

W większości organizacji niezmiennie pewna forma serwera katalogów zgodnego z LDAP (lekki protokół dostępu do katalogów) zapewnia scentralizowane repozytorium kont zabezpieczeń użytkowników. Na przykład w organizacji sponsorującej nasz projekt służył temu staroświecki, ale funkcjonalny serwer LDAP (Active Directory Microsoftu również w dużej mierze obsługuje protokół LDAP). Odświeżenie okazało się XPlannerLoginModulełatwe do zintegrowania XPlanner z LDAP. Wymagało to aktualizacji xplanner.propertiesw następujący sposób:

-> Comment out default security #xplanner.security.login.module=com.technoetic.xplanner.security.XPlannerLoginModule

-> Uncomment and edit the LDAP entries from... xplanner.security.login.module=com.technoetic.xplanner.security.jndi.JNDILoginModule

-> ...to: xplanner.security.login.option.roleSearch=(uniqueMember={0})

-> Add user search entries xplanner.security.login.option.userBase=ou=people,o=person

-> And blank out values for xplanner.security.login.option.userPattern= xplanner.security.login.option.userPassword=

Dzięki szybkiej przebudowie i wdrożeniu zabezpieczenia uwierzytelniania XPlanner zostały w pełni zintegrowane. Jedyną wadą było to, że nazwy użytkowników nadal musiały być jawnie dodawane do XPlanner, ale przynajmniej kłopoty z hasłem i członkostwem w grupie stały się problemem korporacyjnego centrum pomocy.

Zespół, poznaj XPlanner

XPlanner wyświetla projekt według iteracji, historyjek użytkowników i zadań. Zgodnie z paradygmatem Agile, każdy projekt zarządzany przez XPlanner jest planowany i śledzony zgodnie z kolejnymi seriami iteracji. Każda iteracja składa się z daty rozpoczęcia, daty końcowej i zbioru historii użytkownika, które mają być opracowane od historii do rzeczywistości w tym przedziale czasowym.

Historia użytkownika jest głównym narzędziem koncepcyjnym używanym w zwinnym programowaniu do komunikowania potrzeb klientów programistom. Po przypisaniu historyjki użytkownika do bieżącej iteracji (w ramach planowania wydania za pośrednictwem XPlanner), deweloper szuka dalszych szczegółów dla każdej historii, współpracując z użytkownikiem (miejmy nadzieję, że twarzą w twarz). Rezultatem tego etapu jest szczegółowa seria zadań programistycznych, z których każde deweloper rejestruje w XPlanner pod kątem odpowiedniej historyjki użytkownika.

Wybraliśmy nasz projekt przepływu pracy w handlu elektronicznym do uruchamiania z comiesięcznymi iteracjami, z których każda składa się z około 10 historii, z 10 do 15 zadaniami przypisanymi do każdej historii.

Zbieranie historii użytkowników

Każda historia użytkownika dla iteracji projektu powinna być krótkim i zorientowanym na wyniki opisem doświadczenia użytkownika, opowiedzianym w pierwszej osobie (np. „Następnie wyszukuję na podstawie koloru…”). To doświadczenie zostało napisane przez użytkownika, który wyobraża sobie idealny przyszły produkt w akcji, więc możesz myśleć o historii użytkownika jako o pozytywnej wizualizacji oprogramowania! Celem każdej wizualizacji jest dostarczenie wystarczającej ilości informacji dla programisty, aby oszacować wysiłek wymagany do urzeczywistnienia tej historii.

XPlanner kataloguje kolekcję historii użytkowników Twojego projektu, jednocześnie rejestrując klienta, tracker, priorytet i oszacowanie wysiłku w odniesieniu do każdego z nich. Główną trudnością, którą często napotykamy, jest zbieranie wysokiej jakości historii użytkowników z umysłów użytkowników systemu. Tak było z pewnością w przypadku naszego projektu, ponieważ była to znacząca zmiana paradygmatu od sztywnych wymagań sekcji / podsekcji, do których byli przyzwyczajeni użytkownicy. Jednak możliwość korzystania z XPlanner do zarządzania historiami w taki sposób, aby były one łatwo widoczne i aktualizowane przez interesariuszy oraz aby można je było szybko wymieniać z danej iteracji, z pewnością pomogła. Jedną z fajnych, jeśli nie funkcjonalnych, cech XPlanner jest autentyczne wrażenie, jakie daje historię użytkownika, wyświetlając każdą na ekranie jako podobną kartę indeksu 3 na 5, jak pokazano na rysunku 1.

Szacuj i rejestruj wysiłek

Programowanie zwinne nakazuje programistom wyznaczanie sobie własnych celów, które obejmują analizę historii użytkownika i definiowanie zadań technicznych wymaganych do zrealizowania tej historii. Deweloper powinien mieć swobodę dodawania dodatkowych zadań lub modyfikowania istniejących zadań, gdy będą dostępne dalsze szczegóły historii. XPlanner wspiera tę elastyczność, zapewniając programistom pełny dostęp do definiowania i edytowania zadań. Każdemu zadaniu można przypisać typ, taki jak dług, cecha lub wada, w celu scharakteryzowania rodzaju wykonywanej pracy (np. Dług to zadanie czyszczenia technicznego „skorupy” pozostawionej w systemie z poprzedniej iteracji). Zadania są również określone z dyspozycją (planowane lub nieplanowane), przyjmującym deweloperem, opisem pracy i szacunkową liczbą idealnych godzin potrzebnych do wykonania tego zadania.

XPlanner ułatwia programistom rejestrowanie ilości pracy zainwestowanej w dane zadanie lub aktualizację pierwotnego oszacowania nakładu pracy (oryginał jest nadal przechowywany). Należy pamiętać, że szacunki nakładu, jak wspomniano, powinny być podawane w idealnych godzinach. Idealna godzina to godzina, w której deweloper nie ma absolutnie żadnych przerw.

Deweloperzy powinni również odnotować liczbę idealnych godzin, które zainwestowali w dane zadanie. Jeśli zachęcisz programistów do uczciwego rejestrowania idealnych godzin (nie wymagając, aby wiedzieć, dokąd zmierza), będziesz mógł wyodrębnić przydatne wskaźniki z XPlanner (omówione poniżej). Stwierdziliśmy na przykład, że w naszym projekcie osiągnięcie idealnej godziny zajęło około 1,4 godziny. Informacje te można następnie wykorzystać do dostarczenia precyzyjnych szacunków dla kolejnych iteracji - co pomaga utrzymać obietnice zespołu i oczekiwania klienta na tym samym poziomie.

Metryki i planowanie następnej iteracji

Jesteś w połowie iteracji, a szef chce wiedzieć, „jak wyglądamy”. Powszechna odpowiedź na to pytanie brzmi: „Jesteśmy tam w około 80 procentach”. Oczywiście, te ostatnie 20 procent zawsze wydaje się zajmować znacznie więcej czasu niż powinno - ostatnie 20 procent jest odpowiednikiem oprogramowania nudnych warzyw na obiad, które zostawiałeś na koniec.