Sposoby zarządzania przepływem uwag w rozproszonych

Transkrypt

Sposoby zarządzania przepływem uwag w rozproszonych
V Konferencja PLOUG
Zakopane
Październik 1999
Sposoby zarządzania przepływem uwag w rozproszonych
zespołach projektowych
Andrzej Adamczyk
[email protected]
Instytut Technik Telekomunikacyjnych i Informatycznych, Poznań
Autor
Absolwent Francusko-Polskej Wyższej Szkoły Nowych Technik Informatyczno-Komunikacyjnych w Poznaniu.
Od trzech lat techniczny kierownik projektów w zespole Systemów Informatycznych i Multimediów, Instytutu
Technik Telekomunikacyjnych i Informatycznych w Poznaniu.
Streszczenie
Nie ulega wątpliwości, iż komunikacja w zespole projektowym powinna być jednoznaczna, spójna i skuteczna.
Jej skuteczność jest jednym z czynników, który wydatnie wpływa na organizację pracy zespołu projektowego,
a przez to pozwala zwiększyć rentowność całego projektu. W dzisiejszych czasach wypracowane zostały nowe
metody zarządzania zasobami ludzkimi. Metody te zmierzają generalnie do rozproszenia zespołu projektowego,
czy to w przestrzeni (teleworking), czy w sensie przydzielenia poszczególnych pracowników do projektów.
Referat dokonuje przeglądu metod testowania systemów informatycznych i zarządzania uwagami ze
szczególnym uwzględnieniem projektów, w których zasoby ludzkie są rozproszone. Stanowi on efekt analizy
kilkuletniej działalności ITTI związanej z wykonywaniem i wdrażaniem systemów opartych na bazach danych.
1. Wstęp
Wykorzystanie nowoczesnych technik zarządzania projektami pozwala na odejście od koncepcji "linii
produkcyjnej" na korzyść zintegrowania zasobów przedsiębiorstwa w celu osiągnięcia określonych celów.
Kluczem do sukcesu są ludzie. Należy dążyć do tego, żeby nie tylko pozyskać najlepszych pracowników, ale
również żeby najlepiej wykorzystać ich umiejętności i możliwości. Nowoczesne metody oparte na
sterowaniu procesami pozwalają na efektywne zarządzanie zasobami ludzkimi w projektach.
Dlaczego nie wystarczą nam te metody? Owszem wystarczą, ale w małej skali. Zespół Systemów
Informatycznych ITTI od początku swego istnienia wykonywał wiele projektów informatycznych
równocześnie (w tym samym czasie), ale w miarę jak wielkość projektów zarówno mierzona ceną, jak i
zakresem funkcjonalnym produktów, zaczęła rosnąć pojawiła się idea stworzenia środowiska do zarządzania
projektami. Z powodu ograniczonych możliwości inwestycyjnych chcemy zacząć od pewnych fragmentów,
które naszym zdaniem najbardziej wydłużają czas wykonywania projektu, czyli od systemu wspomagającego
weryfikację tworzonego oprogramowania. Wierzymy, że zaimplementowanie nowoczesnego środowiska
narzędzi do zarządzania projektami ułatwi prowadzenie wielu projektów w tym samym czasie i umożliwi
lepszą kontrolę zachodzących w projekcie procesów.
Naszym zdaniem główny nacisk należy położyć na komunikację w zespole projektowym, która
powinna być jednoznaczna, spójna i skuteczna. Warunek jednoznaczności gwarantuje, że adresat przesyłanej
informacji zrozumie ją dokładnie według intencji jej nadawcy. Spójność oznacza, że w komunikacji
pomiędzy członkami zespołu projektowego nie będą krążyły informacje sprzeczne ze sobą. Skuteczność
komunikacji jest jednym z czynników, który wydatnie wpływa na organizację pracy zespołu projektowego, a
przez to pozwala zwiększyć rentowność całego projektu. Ma to szczególne znaczenie w przypadku
rozproszenia fizycznego analityków, programistów, testerów i innych pracowników zespołu projektowego.
Trzeba zaznaczyć, że idee zamieszczone w niniejszym referacie opierają się na informacjach
praktycznych, jakie zdobył Zespół Systemów Informatycznych ITTI w czasie realizacji kilku dużych i
średnich projektów informatycznych. Projekty te zorientowane były na systemy bazodanowe i internetowe.
Również klienci, na zamówienie których systemy informatyczne były wykonywane różnili się dość znacznie
od siebie. Były to przedsiębiorstwa od dużych operatorów telekomunikacyjnych do małych firm, od spółek
skarbu państwa do firm typowo komercyjnych. Dlatego można śmiało uważać, że zdobyte doświadczenie
wystarcza do sformułowania opisanych w referacie wniosków.
W Internecie dostępna jest prezentacja związana z niniejszym referatem [1].
2. Terminologia
„Język najlepiej znany wszystkim programistom to przekleństwa”
postulat Troutmana
Aby precyzyjnie opisać problem należy zacząć od zdefiniowania pewnych pojęć i określenia modelu
generycznego środowiska projektowego. W tym celu zacznijmy od definicji terminu projektu
2
informatycznego. Projektem informatycznym będziemy nazywać zespół zadań do wykonania,
zmierzających do wspólnego, jasno określonego celu, którym jest usługa bądź produkt informatyczny.
Załóżmy, że produktem projektu informatycznego jest pewien system czyli zestaw współpracującego
ze sobą sprzętu i oprogramowania spełniający kryteria postawione w specyfikacji. W skrócie systemem
będziemy nazywali również samo oprogramowanie wchodzące w jego skład. System ten składa się z
modułów, które są takimi częściami systemu, do których możemy odnosić się jako do oddzielnych
elementów oprogramowania ze względu na ich funkcjonalności, jak i architekturę systemu. Moduł jest też na
tyle małą częścią oprogramowania, że do jego stworzenia lub testowania wystarczy jedna osoba w zespole
projektowym. Wiadomo, że w rzeczywistym projekcie informatycznym takich elementów nie sposób
wyróżnić. Moduły są dość ściśle powiązane funkcjonalnie, co utrudnia ich wykonywanie i testowanie w
oderwaniu od systemu. Nie jest to jednak niemożliwe do wykonania w przybliżeniu. Na przykład w
przypadku wykonywania aplikacji z wykorzystaniem narzędzi Oracle Developer/2000 modułami mogą być
poszczególne formularze i raporty.
Natomiast uwagami nazywać będziemy jakąkolwiek informację pochodzącą od osoby testującej
moduły lub samego użytkownika na temat ich funkcjonowania. Jak się można domyślić główną część uwag
stanowią zgłoszenia wadliwego funkcjonowania testowanego modułu, ale uwagą może też być zapytanie
skierowane do wykonawcy lub – w ramach zespołu projektowego po stronie wykonawcy – do programisty,
na które nie można znaleźć odpowiedzi w dokumentacji. Jeżeli uwaga należy do tej pierwszej, najbardziej
licznej kategorii jej konsekwencją jest wykonanie zmiany w module.
3. Kontrola zmian
„Każda dostatecznie zaawansowana technologia niczym nie różni się od magii”
trzecie prawo Clarke'a
Aby zmiany były dokonywane w zgodzie ze sztuką inżynierii oprogramowania oraz aby nie
doprowadzić do zagubienia się w „gąszczu” zmian, których liczba w dużym projekcie łatwo może sięgnąć
kilkunastu tysięcy, należy stosować opracowane już dawno metody. Wśród tych metod wyróżniamy
procedury służące do kontroli zmian (ang. Change Control), które wchodzą w skład nowoczesnych metod
zarządzania konfiguracją oprogramowania tzw. SCM (ang. Software Configuration Management) [2].
Opisane w referacie metody są w pełni zgodne z normami IEEE dotyczącymi zarządzania konfiguracją
oprogramowania [3-5] oraz ze wskazówkami TickIt opartymi na normie ISO 9001 [6].
Wyróżniamy trzy typy zmian ze względu na powód a zarazem cel ich wystąpienia:
•
zmiany mające na celu usunięcie występowania błędów w rozwijanym systemie,
•
zmiany zmierzające do skompensowania problemów wynikających ze współdziałania systemu z
jego otoczeniem programowym lub/i sprzętowym,
•
zmiany zmierzające do dostosowania systemu do zmieniających się uwarunkowań biznesowych lub
zmian specyfikacji.
3
Schemat na Rys 1 przedstawia proces kontroli zmian.
1. Rozpoznanie potrzeby zmiany
2. Żądanie zmiany przez użytkownika
lub inną osobę testującą
(wygenerowanie uwagi)
3. Ocena zmiany przez programistę
4. Sporządzenie raportu o zmianie
5. Podjęcie decyzji o wprowadzeniu
lub odrzuceniu żądania zmiany
6a. Ustawienie żądania w kolejce w celu wykonania zmiany
6b. Odmowa żądania zmiany
7a. Przydzielenie osób obsługujących zmianę
7b. Poinformowanie użytkownika
8a. Sprawdzenie możliwości dokonania zmiany (dostęp i synchronizacja zmian)
i zablokowanie zmienianego modułu
9a. Dokonanie zmiany
10a. Przegląd zmiany
11a. Odblokowanie zmienianego modułu
12a. Ustalenie planu testowania zmiany
13a. Testowanie
14a. Wprowadzenie zmiany do nowej wersji oprogramowania
15a. Dostarczenie nowej wersji
Rys 1: Proces kontroli zmiany
Procedura kontroli zmian łączy w sobie metody postępowania w przypadku wystąpienia potrzeby
dokonania zmian w oprogramowaniu, z oprogramowaniem narzędziowym pozwalającym na automatyczną
kontrolę tych zmian.
Do kontroli wersji oprogramowania zostało już wyprodukowanych wiele systemów, do których należą
m.in.:
•
TLIB Version Control firmy Burton Systems Software,
4
•
CS-RCS firmy ComponentSoftware,
•
Diamond CM firmy Diamonnd Optimum Systems, Inc.,
•
PVCS firmy Intersolv,
•
MKS Source Integrity Professional Edition firmy Mortice Kern Systems, Inc.,
•
Perforce firmy Perforce Software Inc.,
•
GP-Version firmy Quality Software Components Ltd.,
•
Code Co-op firmy Reliable Software,
•
StarTeam firmy StarBase Corp.,
•
ViCiouS Pro firmy SureHand Software.
Programy te potrafią poradzić sobie z kontrolą współdzielenia poszczególnych modułów oraz pomagają
wykonywać podstawową dokumentację na temat dokonywanych zmian nawet gdy programiści nie
komunikują się ze sobą w sposób bezpośredni. Nadają się zatem do zastosowań również w przypadku
projektów w rozproszonym zespole projektowym. Jednak kontrola wersji to nie wszystko. Obejmuje ona
tylko obszar procesu kontroli zmian od 8a do 11a. Pozostaje bardzo uciążliwa i mozolna praca polegająca na
zbieraniu uwag (żądań zmian) i ich obróbce. Zautomatyzowanie tej właśnie pracy jest bardzo ważne, gdyż
pozwala zaoszczędzić dużą ilość czasu związanego z zarządzaniem projektem oraz pozwala na generowanie
dokładnych i miarodajnych raportów dotyczących uwag, a to z kolei ułatwia ocenę pracy programistów oraz
pozwala wskazać etapy projektu, gdzie doszło do zaniedbań.
Istnieje tylko jeden produkt, który spełnia wymagania systemu do zarządzania uwagami w
rozproszonym zespole projektowym. Jest to system firmy Lotus o nazwie ProjecTrak – Software Project
Management Suite. Na wzór innych produktów tej firmy jest to system ten posiada przyjazny interfejs
użytkownika i bogaty zestaw funkcji. Jest to jednak aplikacja, którą trzeba zainstalować na komputerze
każdego członka zespołu. Naszym zdaniem (szczególnie jeżeli mamy do czynienia z programistami z
zewnątrz firmy-wykonawcy) znacznie wygodniejsza do tego celu byłaby technologia WWW. Wykorzystanie
ogólnie dostępnych przeglądarek internetowych, jako interfejsu systemu uwalnia nas od konieczności
instalacji systemu oraz ułatwia administrację i zachowanie spójności danych, gdyż wszelkie informacje,
którymi posługiwałby się taki system mogłyby być umieszczone na centralnym serwerze firmy.
W dalszej części referatu zostanie określony model środowiska projektowego i zanalizowane założenia
według których można by zrealizować taki internetowy system wspomagający kontrolę zmian w
oprogramowaniu i zarządzanie uwagami, przystosowany do warunków pracy w rozproszonym zespole
projektowym.
5
4. Środowisko projektu
„Złożony problem, zrozumiany i podzielony na mniejsze problemy, nie jest już problemem – to
koszmar”
jedno z praw Murphy'iego
W rozdziale tym zostanie pokrótce omówiony model typowego środowiska projektu w sensie
organizacyjnym, z jakim spotykał się Zespół Systemów Informatycznych ITTI w czasie realizacji projektów
informatycznych. Opis ten również stanowi pewne założenie potrzebne dla dalszych rozważań.
Zakładamy, że istnieją tylko dwie strony zaangażowane w projekt: klient i wykonawca. Zaniedbujemy
tu przypadki, kiedy projekt (jego przebieg lub produkty) jest oceniany przez trzecią instytucje lub
użytkownikiem końcowym nie jest klient projektu. W pierwszym przypadku taki audyt projektu może być
traktowany, jako oddzielny projekt, gdyż jego cele są z gruntu różne od celów głównego projektu, a jak
wiadomo projekt to zbiór zadań do wykonania zmierzających do określonego celu. Drugi przypadek
natomiast nie zmienia warunków rozważań.
Po obu stronach wyznaczeni zostają kierownicy administracyjni projektu i ewentualnie ich zastępcy,
którzy reprezentują interesy stron oraz wyznaczają ich oficjalne stanowisko w różnych sytuacjach oraz
kierownicy
techniczni
odpowiedzialni
za
organizowanie
środowiska
projektu,
harmonogramu,
infrastruktury technicznej, zasobów, itp. Z reguły zarówno po stronie klienta, jak i wykonawcy kierownikiem
administracyjnym nie jest oficjalny reprezentant firmy, którym może być dyrektor czy prezes. Taka osoba,
którą w skrócie nazwiemy decydentem podpisuje umowę oraz wszelkie aneksy, których potrzeba
zatwierdzenia przez obie strony zaistnieje w czasie projektu. Decydent również powinien być informowany o
projekcie, oczywiście na innym poziomie szczegółowości niż kierownicy projektu. Wyżej wymienione osoby
wyczerpują listę aktorów w projekcie występujących symetrycznie zarówno po stronie klienta, jak i po
stronie wykonawcy.
Jeżeli chodzi o pozostałe role członków zespołu projektowego po stronie wykonawcy to weźmiemy pod
uwagę programistów, z których każdy jest odpowiedzialny za powierzony mu moduł oprogramowania oraz
testerów modułów (dla przejrzystości pomijamy analityków i innych pracowników, którzy są znacznie
rzadziej zaangażowani w procesy kontroli zmian oprogramowania). Po stronie klienta zaś można wyróżnić
również testerów otrzymanego oprogramowania oraz końcowych użytkowników systemu, którzy również
mogą być aktywnym źródłem uwag.
Z powyższego wynika, że testowanie oprogramowania odbywa się jakoby w dwóch etapach: u
wykonawcy przed przekazaniem produktu oraz u klienta po jego przekazaniu. Testowania te noszą nazwę
odpowiednio: testowania alfa i testowania beta. Tak też oznaczone są produkty (moduły), które w danej
chwili podlegają danemu testowaniu. Rys 2 zawiera diagram stanów przedstawiający proces implementacji i
testowania modułów.
6
rozwijanie
testowanie
testowanie
α
β
OK
Rys 2: Proces implementacji i testowania oprogramowania
O ile testowanie alfa ma na celu przede wszystkim podwyższenie jakości produktu, o tyle testowanie
beta spełnia dodatkowo funkcje weryfikacji i walidacji dostarczonych produktów wykonywane przez klienta.
Testowanie beta może angażować osoby wyznaczone do testowania modułów po stronie klienta, ale może
być rozszerzone o testowanie przez końcowych użytkowników systemu. Testowanie przez użytkowników
systemu pozwala wykryć błędy nie tylko merytoryczne, ale i niedogodności ergonomiczne, których nie
spostrzeżono, ani na etapie pisania dokumentacji projektowej, ani na etapie wykonania ewentualnego
prototypu systemu. Taki typ testowania nazywa się testowaniem użyteczności systemu (ang. usability
testing). Po przejściu obu etapów testowania z pozytywnym rezultatem można uznać, że dany produkt jest
gotowy do wdrożenia.
Skoro wymieniliśmy już funkcje osób zaangażowanych w projekt po obu stronach zdefiniujmy teraz
typowe procesy komunikacyjne pomiędzy nimi, aby mieć pełny obraz przepływu informacji. Obraz ten jest
niezbędny do zaprojektowania w przyszłości systemu zarządzania uwagami. Omówimy po kolei wszystkich
uczestników projektu i sposób w jaki kontaktują się oni z pozostałymi pracownikami.
Zacznijmy od administracyjnego kierownika projektu. Jego schemat komunikacyjny jest dość prosty.
Przedstawia go Rys 3.
Techniczny
Kierownik Projektu
Administracyjny
Kierownik
Projektu
Techniczny
Kierownik Projektu
Rys 3: Interakcja prowadzona przez Administracyjnego Kierownika Projektu
Jest on informowany przez technicznego kierownika projektu o postępach w wykonaniu
poszczególnych zadań projektu. W przypadku omawianego etapu testowania oprogramowania otrzymywać
on powinien od niego informacje syntetyczne na temat uwag testerów i samego klienta na temat
poszczególnych modułów. Informacja taka może się składać z liczby zgłoszonych uwag dotyczących
poszczególnych modułów w kontekście ich typu i charakteru. Kierownik administracyjny powinien być też
informowany o uwagach, których interpretacja lub wykonanie wykracza poza kompetencje kierownika
technicznego. W takich sytuacjach kierownik administracyjny powinien podejmować określone decyzje w
celu zapewnienia optymalnego przebiegu etapu testowania. Zatem informacja zwrotna może być kierowana
do kierownika technicznego w postaci odpowiedzi na przesłane uwagi, bądź poleceń do wykonania.
7
Zaniedbujemy tu obustronny kontakt pomiędzy administracyjnymi kierownikami projektu po stronie
wykonawcy i klienta oraz informacje przesyłane decydentom obu firm.
Kolejną omawianą funkcją niech będzie rola kierownika technicznego. Jak to zostało zasygnalizowane
powyżej, informuje on kierownika administracyjnego o przebiegu testowania oraz przesyła mu
kontrowersyjne uwagi otrzymując w zamian polecenia do wykonania. Dodatkowo kontaktuje się z osobami
testującymi moduły. Przesyłają one informacje o tym, że dany moduł przeszedł pozytywnie testy alfa. Jeżeli
z jakiegoś względu moduł, który przeszedł ten etap testów wymaga według kierownika technicznego
naprawy, on sam generuje uwagę, która powinna trafić do programisty wraz z poleceniem wykonania zmiany
oraz do testera danego modułu, aby był on poinformowany o podjętej decyzji. Schemat przepływu informacji
w przypadku roli kierownika technicznego projektu przedstawia Rys 4.
Administracyjny
Kierownik Projektu
Techniczny
Kierownik
Projektu
Administracyjny
Kierownik Projektu
Tester
Tester
Programista
Rys 4: Interakcja prowadzona przez Technicznego Kierownika Projektu
Jeżeli chodzi o osoby testujące moduły po stronie wykonawcy to ich model komunikacyjny można
opisać schematem pokazanym na Rys 5.
Techniczny
Kierownik Projektu
Tester
Programista
Techniczny
Kierownik Projektu
Programista
Rys 5: Interakcja prowadzona przez osobę testującą system
Tester modułów otrzymuje informacje od kierownika technicznego projektu o jego decyzjach
dotyczących przejścia pomiędzy fazą testowania alfa i beta. Przesyła mu natomiast informacje o pomyślnym
zakończeniu fazy testowania alfa. Tester kontaktuje się też z programistą, od którego otrzymuje wykonane
moduły do testowania, natomiast przekazuje swoje uwagi na temat testowanych modułów, w przypadku,
kiedy sytuacja tego wymaga.
Ostatnią osobą w projekcie po stronie wykonawcy, którą tutaj omówimy jest programista. Kontaktuje
się on z kierownikiem technicznym – podobnie jak ma to miejsce w przypadku testera – otrzymując
polecenia wykonania zadań (uwagi kierownika technicznego). Również tester przekazuje programiście uwagi
na temat testowanych modułów, jeżeli te moduły wymagają dokonania zmian. Programista natomiast po
wykonaniu zmiany w module, którego dotyczy otrzymana uwaga przekazuje go do testowania testerowi.
8
Techniczny
Kierownik Projektu
Programista
Tester
Tester
Rys 6: Interakcje prowadzone przez Programistę
Podsumowując, źródłem uwag po stronie wykonawcy jest przede wszystkim tester, ale również
techniczny kierownik projektu. Nie ulega też wątpliwości, że należy udostępnić też kierownikowi
technicznemu możliwość wysłania zapytania do wybranego programisty w celu otrzymania potrzebnych
informacji do podjęcia decyzji o tym czy dana uwaga powinna zostać uwzględniona w trakcie realizacji
zmian. Programista jest w stanie odpowiedzieć jaka jest wykonalność danego zadania (ang. feasibility) oraz
jakie zasoby muszą być w to wykonanie zaangażowane. Są to informacje różne od uwag, wiec należy je
rozdzielnie potraktować przy projektowaniu systemu.
Schemat przedstawiający przepływ informacji pomiędzy poszczególnymi osobami zaangażowanymi w
projekt po obu stronach został przedstawiony na Rys 7.
WYKONAWCA
KLIENT
AKP
AKP
Decydent
Decydent
TKP
TKP
T1
T2
...
Tn
T1
T2
...
Tk
P1
P2
...
Pm
U1
U2
...
Ul
AKP
TKP
T
P
- administracyjny kierownik projektu
- techniczny kierownik projektu
- tester systemu
- programista
AKP
TKP
T
U
- administracyjny kierownik projektu
- techniczny kierownik projektu
- tester systemu
- użytkownik systemu
Rys 7: Przepływ informacji pomiędzy uczestnikami projektu informatycznego
Nie będziemy omawiać przepływu informacji po stronie klienta, gdyż jest ona do pewnego stopnia
analogiczna, jak w przypadku wykonawcy. Jedyną różnicą jest to, że brak w niej programistów, a wszystkie
uwagi są kierowane nie w dół schematu, ale w górę oraz „paczkowane” przez technicznego kierownika
projektu po stronie klienta i wysyłane do wykonawcy. Natomiast tak jak już zostało to opisane, testowaniem
9
dostarczonego oprogramowania w fazie beta zajmują się testerzy oraz użytkownicy po stronie klienta
(najlepiej w sposób sekwencyjny w czasie).
Ponadto zakładamy, że każdemu modułowi jesteśmy w stanie przypisać jednego programistę i jedną
osobę testującą, które będą się nim zajmowały przez cały okres projektu.
W powyższym rysunku uwzględniono także decydentów, którzy powinni otrzymywać okresowe raporty
od kierowników administracyjnych oraz – stosowanie do podejmowanych decyzji – wydawać im polecenia
natury bardziej strategicznej dla projektu.
5. Przykład obsługi uwagi pochodzącej od klienta
Aby lepiej zrozumieć procesy zachodzące w celu obsługi uwagi prześledźmy je na przykładzie.
Omawiany przykład dotyczy uwag, których źródło znajduje się po stronie klienta. Oto przykładowy
scenariusz obsługi uwagi, który wynika z najnowszych procedur przyjętych przez Zespół Systemów
Informatycznych ITTI i stosowanych w ostatnim projekcie:
Programista
Tester
Kierownik
Techniczny
Klient
Zgłoszenie uwagi przez klienta
Polecenie wykonania zmiany
Przekazanie do
testowania
Odrzucenie
poprawki
Przekazanie do
testowania
Akceptacja poprawki
Dostawa poprawionego modułu
Rys 8: Przykładowy scenariusz obsługi uwagi od klienta
Klient zgłasza uwagę – informacja ta wędruje do kierownika technicznego. Kierownik techniczny
nadaje uwadze unikalny identyfikator składający się z konkatenacji symbolu modułu, którego uwaga dotyczy
(lub innych identyfikatorów np. w przypadku uwag ogólnych, lub uwag do danych) i unikalnego numeru
uwagi. Następnie klasyfikuje uwagę wg priorytetu (ważności nie uwzględnienia uwagi dla działania systemu)
oraz wg zgodności z dokumentacją projektową. Załóżmy, że w danym przypadku kierownik techniczny
stwierdza zasadność uwagi oraz to, że aby uwaga została obsłużona należy dokonać zmiany w module,
którego uwaga dotyczy. Wysyła więc do polecenie dokonania odpowiedniej zmiany do programisty.
10
Programista po wykonaniu zmiany przesyła moduł do testowania. Osoba testująca oczywiście musi
mieć wgląd w treść uwagi oraz historię z nią związaną. Wiedząc zatem jaka funkcjonalność ma być
otrzymana na skutek zmiany modułu stwierdza, że programista nie spełnił wszystkich wymagań zawartych w
uwadze lub poleceniu kierownika technicznego. Odsyła zatem uwagę z dołączonym swoim komentarzem na
temat tego, co nie zostało wykonane lub zostało wykonane niewłaściwie. Programista poprawia moduł po raz
drugi i odsyła testerowi. Tester sprawdza moduł i akceptuje wykonaną zmianę. Przesyła informacje do
kierownika technicznego. Kierownik techniczny ma możliwość wglądu w poprawiony moduł, ale może się
oprzeć również na opinii osoby testującej (np. w przypadku, kiedy zmian jest bardzo dużo). Kierownik
techniczny odsyła poprawiony moduł do klienta oraz informuje go w postaci protokołu do uwag o tym czy
uwaga została uwzględniona, czy odrzucona lub też ewentualnie w jaki sposób została uwzględniona, jeżeli
sama treść uwagi tego nie precyzuje.
Tak może wyglądać obsługa uwagi zgłoszonej przez klienta. Oczywiście moduł nie jest fizycznie
przesyłany pomiędzy aktorami scenariusza. Klient nie musi wysyłać modułu co do którego uwagę zgłasza,
gdyż powinna być zapewniona identyczność pomiędzy produktami przekazanymi klientowi i zawartością
repozytorium modułów u wykonawcy. Wystarczy zatem, gdy prześle jednoznaczny identyfikator modułu.
Dalsze operacje na modułach takie jak dokonywanie zmiany, testowanie itp. mogą odbywać się na module
udostępnionym na dysku sieciowym wszystkim członkom zespołu projektowego. Należy tylko pamiętać, aby
numer wersji modułu po dokonaniu zmiany został odpowiednio zwiększony. Konieczne jest natomiast
wysłanie modułu poprawionego do klienta wraz z protokołem do uwag.
Trzeba zaznaczyć, że istnieją sytuacje kiedy kierownik techniczny ma problem w sklasyfikowaniu
uwagi. Wtedy potrzebuje on konsultacji z programistą, kierownikiem administracyjnym lub samym klientem.
Niektóre etapy procedury obsługi uwagi wymagają nawet rozwiązania problemów na szerokim forum,
zwołuje się wtedy zebranie w celu przedyskutowania możliwości uwzględnienia danej uwagi. W naszym
przykładzie opisaliśmy scenariusz obsługi uwagi prostej do sklasyfikowania.
11
6. Architektura systemu
„Nie rób nic na siłę, weź większy młotek”
prawo siły Anthony'ego
Po
ustaleniu
orientacyjnego
schematu
przepływu informacji w środowisku projektowym
można
zastanowić
się
nad
rozwiązaniami
technicznymi oraz architekturą systemu, która
najlepiej
sprosta
przedstawionym
KLIENT
wcześniej
KLIENT
założeniom. Należy jednak pamiętać, że system
powinien działać w sieci rozległej, a więc
najlepszym
rozwiązaniem
jest
KLIENT
zastosowanie
INTERNET
architektury przystosowanej do Internetu, czyli
trójwarstwowej. Zatem nasz system składałby się
na pewno z serwera bazy danych przechowującego
wszystkie
informacje
członkami
zespołu
przekazywane
projektowego
pomiędzy
oraz
inne
informacje potrzebne mu do funkcjonowania.
SERWER APLIKACJI
Kolejna warstwa to serwer aplikacyjny, na przykład
serwer internetowy HTTP. Po stronie klienta
najlepszym
rozwiązaniem
jest
zastosowanie
przeglądarki internetowej. Architekturę takiego
SERWER
BAZY
DANYCH
systemu przedstawia schemat na Rys 9.
Rys 9: Architektura trójwarstwowa
Nie jest naszym zamiarem podanie konkretnej technologii, czy produktu z użyciem których system taki
należy wykonać. Natomiast istotną uwagą jest wybór Internetu, jako platformy rozwojowej, która pozwala na
swobodny dostęp do systemu. Kolejnym etapem byłoby opracowanie interfejsu dla poszczególnych
użytkowników takiego systemu.
7. Podsumowanie
„Nic nie wygląda z bliska tak dobrze, jak wyglądało z daleka”
prawo obserwacji
Reasumując, rozważania nasze pozwoliły określić schemat przepływu informacji (m.in. uwag) w
modelowym środowisku projektowym oraz określić architekturę informatyczną, która najbardziej pasuje do
założeń systemu działającego w rozproszonym zespole projektowym. Wyniki tych rozważań mogą stanowić
12
początek dokumentacji projektowej sporządzonej na potrzeby wykonania takiego systemu. Nie sposób
wyliczyć korzyści zastosowania takiego systemu w praktyce:
•
zbieranie uwag od klienta jest realizowane w sposób automatyczny (oszczędność czasu),
•
uwagi klienta są od razu pozyskiwane w formie zgodnej z pewnym standardem (nie trzeba ich
przetwarzać),
•
uwagi są przechowywane centralnie i w każdym momencie można na ich temat wygenerować
raport (ściślejsza kontrola zmian i trafniejsze podejmowanie decyzji przez kierowników
projektów),
•
system odciąża programistów i testerów od konieczności śledzenia, które uwagi ich dotyczą, a
które nie, gdyż odpowiednia uwaga dociera do wyznaczonej osoby automatycznie.
Trzeba zaznaczyć, że opisany powyższymi założeniami system może być łatwo zastosowany do
kontroli zmian na poziomie specyfikacji wymagań użytkownika po zastąpieniu na schemacie (Rys 7)
programistów przez analityków lub inżynierów wymagań.
Mam nadzieję, że informacje zawarte w referacie będą zachętą do myślenia na temat zagadnień kontroli
zmian i zarządzania uwagami w firmach, które jeszcze nie wdrożyły żadnych metod związanych z tym
zagadnieniem, natomiast w tych firmach, które już pewne metody stosują będzie on głosem polemicznym.
Referencje
[1] Prezentacja do referatu: http://multimedserver.itti.com.pl/oracle/ploug99/prezAA.ppt,
[2] Roger S. Pressman, “Software Engineering, A Practitioner's Approach”, McGraw-Hill Companies, Inc.,
1997
[3] ANSI/IEEE Std. No. 828-1998 “IEEE Standard for Software Configuration Management Plans”,
[4] ANSI/IEEE Std. No. 1042-1987 “IEEE Guide to Software Configuration Management (ANSI)”,
[5] ANSI/IEEE Std. No. 1028-1997 “IEEE Standard for Software Reviews”
[6] TickIt Program, “A Guide to Software Quality System Construction and Certification using ISO
9001:1994”, British Standards Institution, 1998 (http://www.tickit.org)
13

Podobne dokumenty