SlideShare a Scribd company logo
1 of 8
Download to read offline
Ireneusz A. TARNOWSKI
Streszczenie
Praca przedstawia model zarządzania projektem programistycznym
opartym o rozproszony zespół programistów/osób uczestniczących w pro-
jekcie. Zaproponowany model został zaimplementowany tworząc uniwer-
salną platformę pracy dla wszystkich jednostek zaangażowanych w pro-
jekt (klient, kierownik projektu, programiści, testerzy). Szczególny nacisk
został położony na aspekty bezpieczeństwa modelu, jak również aplikacji.
Bezpieczeństwo zostało przeanalizowane i wdrożone w dwóch znacze-
niach: tajności danych oraz niezawodności aplikacji. Platforma znalazła
zastosowanie w firmach outsourcing’owych, które korzystając z sieci
komputerowej jako kanału komunikacyjnego, jednocześnie pracują nad
wieloma projektami, we współpracy z rozproszonymi grupami pracowni-
ków.
1. Wprowadzenie
Tempo zmian technologicznych oraz właściwe zarządzanie kosztami w firmach spo-
wodowały zwiększone zapotrzebowanie na outsourcing komputerowy. Outsourcing
komputerowy jest realizacją wyspecjalizowanych zadań informatycznych przez ze-
wnętrzne podmioty. Zlecanie poszczególnych zadań zewnętrznym jednostkom gwa-
rantuje: odpowiedni poziom usług informatycznych (firmy outsourcing’owe specjali-
zują się we właściwych sobie dziedzinach, szkolą oraz rozwijają wraz z rozwojem
technologii), ograniczenie działu IT wewnątrz firmy, a przez to zmniejszenie kosztów
oraz jasne sprecyzowanie zadań, terminów i odpowiedzialności za zadania IT w fir-
mie. Firma outsourcingowa musi być przygotowana na wielość problemów w trakcie
realizacji projektu oraz na zmiany uwarunkowań ich realizacji. Dynamika współcze-
snych projektów programistycznych wymusza zmianę tradycyjnego podejścia do za-
gadnienia zarządzania projektem programistycznym. Zaproponowany model oraz
aplikacja, stanowiące rozwiązanie problemu, realizuje wszystkie zadania stawiane
zarządzaniu wieloma projektami programistycznymi, w sytuacji zwiększonego ryzyka
zmian.
2. Rozproszony projekt programistyczny
W tradycyjnym podejściu do realizacji projektu programistycznego korzysta się ze
sprawdzonych modeli, tj.: kaskadowego czy spiralnego. Oba modele zakładają znajo-
mość założeń projektowych, harmonogramu realizacji projektu, niezbędnych zasobów
[1]. Współcześnie małe i średnie projekty realizowane są w sposób bardzo szybki.
Wymusza to oszczędności czasowe. Dla projektów o niezbyt ściśle określonych zało-
żeniach projektowych, lub też o dużym ryzyku zmian założeń, najlepszym okazuje się
model określany jako programowanie ekstremalne (ang. Extreme Programming, XP)
2 I.A. Tarnowski
[2, 3, 4]. Dla tego modelu szybki i dokładny przepływ informacji ma kluczowe zna-
czenie dla powodzenia całego przedsięwzięcia. Zaprezentowany poniżej model oraz
aplikacja, stanowiąca implementację modelu, ma za zadanie wspomóc wymianę in-
formacji w projekcie programistycznym, w szczególności w projektach XP.
2.1. Rozproszenie projektu
Szybkość łączy oraz powszechna dostępność sieci komputerowej sprawia, że coraz
więcej projektów jest realizowanych przez rozproszone grupy. Powstaje coraz więcej
firm komputerowych, których znajdują klientów, natomiast prowadzenie projektu
zlecają osobom, często oddalonym o kilka tysięcy kilometrów.
Rys. 2. Rozproszony projekt programistyczny
Osoby prowadzące projekt korzystają z usług grup programistów, również rozproszo-
nych. W ten sposób wszystkie jednostki, które uczestniczą w projekcie są ze sobą
powiązane jedynie siecią komputerową. Schemat projektu rozproszonego, w którym
każda jednostka pracująca przy projekcie znajduje się w innym miejscu, przedstawia
rys. 1. Dla powodzenia tak realizowanego projektu zasadnicze znaczenie ma komuni-
kacja między jednostkami.
2.2. Model
Realizację takiego projektu można przestawić za pomocą modelu opartego o przepływ
informacji. Takie rozwiązanie sprzyja zastosowaniu elementów programowania eks-
tremalnego [1]. Podstawowym elementem modelu jest jednostka projektowa oraz
zadania w obrębie projektu. Zadanie jako jednostka jest przydzielana do osoby
uczestniczącej w projekcie. Osoba (jako kolejny element modelu) ma przydzieloną
funkcję (rolę), której to roli odpowiada poziom uprawnień związanych z istnieniem
w modelu (realizacja zadań, możliwości komunikacja z odpowiednimi osobami). Ce-
chą modelu jest odseparowanie funkcjonalne jednostek modelu (projekty, zadania,
osoby). Jednostki modelu są ze sobą powiązane poprzez informacje przepływające
Bezpieczne zarządzanie rozproszonym projektem programistycznym... 3
między nimi. Przepływ informacji jest realizowany poprzez funkcje danych jednostek
– funkcje tworzą stałe powiązania jednostek modelu (przepływ informacji został opi-
sany w rozdziale 3 oraz przedstawiony na rys. 2). Daje to dużą elastyczność stosowa-
nia modelu w realizacji projektu, gdzie łatwo można zrezygnować z funkcji, bądź
dodać nową funkcję. Odseparowanie elementów modelu i powiązanie ich jedynie
przepływem informacji umożliwia zastosowanie go w omawianym przypadku pro-
gramowania rozproszonego. Opisany w skrócie model może zostać sformalizowany
oraz łatwo przeniesiony do opisu w postaci notacji UML. W ten sposób z modelu
formalnego może powstać platforma zadaniowa (rozdział 3).
2.3. Standardy pracy
Dla poprawnej pracy rozproszonego zespołu programistów celowe staje się określenie
standardów pracy w zespole. Standardy obejmują:
• standardy kodowania (opis sposobu tworzenia kodu, struktura kodu, przepływ da-
nych oraz sterowania, komentarze, podział na obiekty, użyte biblioteki, sposoby
dołączania obcych obiektów, kodów),
• standardy dokumentacji (opis sposobu tworzenia dokumentacji projektowej),
• standardy nazewnictwa (określa nazwy projektów, plików, drzewo katalogowe
projektu),
• standardy obsługi błędów,
• standardy zachowania bezpieczeństwa w komunikacji,
Przestrzeganie standardów przez wszystkich uczestników daje możliwość szybkiej
zmiany lub uzupełnienia uczestników projektu bez tracenia czasu na wdrożenie no-
wych osób w projekt. Dodatkowo daje możliwość korzystania z wcześniej już zreali-
zowanych projektów, bibliotek, czy fragmentów kodów. Znajomość standardów ko-
dowania oraz jednolitość dokumentacji ułatwia również testowanie aplikacji przez
testerów oraz szybką reakcję na zaistniałe błędy [5].
3. Zadaniowa platforma zarządzania projektem
Platforma zadaniowa stanowi właściwe środowisko zarządzania rozproszonym projek-
tem. Umożliwia ona pracę z wieloma projektami oraz osobami (klientami, programi-
stami, testerami). Każdy projekt ma opisane swoje cechy, tj. harmonogram, budżet,
osoby przyporządkowane do projektu.
4 I.A. Tarnowski
projekt opis
harmonogram
budżet
osoby
PLATFORMA ZADANIOWA
osoba funkcja
uprawnienia
opis
czynności
administrator
kierownik projektu
wykonawcy (programista)
tester
klient
raport
opis
odbiorca
nadawca
zadanie
priorytet
status
opis
odbiorca
nadawca
notatka opis
nadawca
pliki opis
uprawnienia
projekt 2
projekt n
Rys. 2. Model platformy zadaniowej
Dostęp do tych informacji jest uzależniony od uprawnień danej osoby w projekcie.
Uprawnienia te są opisane w cechach osoby, jako jej funkcja. Osoba z funkcją kie-
rownika projektu przydziela zadania, przydziela prawa do zasobów, kontroluje czas
realizacji zadań zgodnie z harmonogramem. Natomiast pozostałe osoby mogą rapor-
tować oraz tworzyć notatki. Raporty dostępne są wybranym osobom, natomiast notat-
ki stanowią medium wymiany informacji między wszystkimi uczestnikami projektu
(są ogólnodostępne). Rola osób testujących ogranicza się do pracy z projektem, nato-
miast platforma zadaniowa jest przez nie używana do tworzenia raportów błędów
(rozwijają wątki raportujące, z których korzysta kierownik projektu oraz programiści).
Tego typu zadania oraz rozwiązania zostały opisane w [5, 6]. Klient ma wgląd w pro-
jekt oraz jego rozwój, nie ma natomiast uprawnień do wglądu w szczegółowe infor-
macje, jednak może tworzyć raporty i zadania. Ścisła współpraca z klientem leży
w założeniach programowania ekstremalnego [2, 4].
Bezpieczne zarządzanie rozproszonym projektem programistycznym... 5
Platforma daje możliwość elastycznej zmiany ról, cech projektu (terminy, budżet) oraz
kontroli terminowości realizacji. Pozwala na wygodne przekazywanie informacji
o różnych znaczeniach i kategoriach (zadania, raporty, notatki) przez osoby pracujące
nad projektem. Ponadto podstawowymi zadaniami platformy jest kontrola uprawnień
dostępu do informacji przez poszczególne osoby oraz prawidłowość przepływu
wszelkich informacji.
4. Implementacja
Opisany model oraz realizująca go platforma zadaniowa została zaimplementowana
jako środowisko pracy grupowej. Aplikacja działa w oparciu o model klient-serwer.
Serwer usługi (właściwą platformę pracy) stanowi aplikacja „zainstalowana” na ser-
werze WWW (Apacze 2.0.55 wraz z modułem PHP 5.1.2) połączonym z bazą danych
(MySQL 5.0.18). Oparcie rozwiązania o interfejs WWW, umożliwia korzystanie
z usługi z dowolnego komputera wyposażonego w przeglądarkę internetową, podłą-
czonego do sieci komputerowej (internetu), przez co aplikacja staje się uniwersalna
oraz ogólnie dostępna dla pracującego zespołu (niezależnie od platformy systemowej).
Zasadniczą częścią usługi po stronie serwera stanowi baza danych, która zawiera
wszystkie informacje dotyczące:
• realizowanych projektów (budżet, harmonogram, powiązania),
• osób związanych z działalnością firmy (mających dostęp do platformy),
• zadań,
• raportów (błędów, notatek),
• udostępnianych zasobów (plików),
• uprawnień do poszczególnych elementów (projektów, zadań, zasobów, możliwo-
ści zarządzania).
Baza danych została zaprojektowana z uniknięciem redundancji danych, z zachowa-
niem zasad normalizacji do postaci normalnych [7].
Aplikacja została oparta o język PHP. By zachować wysoką jakość aplikacji oraz po-
prawność technologiczną zastosowano model-widok-kontroler (ang. Model-View-
Controller, MVC). W ten sposób oddzielono istniejące w aplikacji warstwy abstrakcji:
interfejs użytkownika, dane, ścieżki przepływu danych oraz przepływu sterowania.
Aby w miarę dokładnie oddać model wraz z zależnościami funkcjonalnymi zastoso-
wano mechanizmy programowania obiektowego. Komunikację z bazą danych zapew-
niono poprzez wykorzystanie bibliotek obiektów PEAR: DB oraz DataObject [8].
W ten sposób odseparowano logicznie aplikację, dane oraz bazę danych. Zgodnie
z modelem opisanym w podrozdziale 2.2, poszczególne elementy znalazły odzwier-
ciedlenie w obiektach programistycznych. I tak zostały wyróżnione obiekty:
• obiekt projekt (dziedziczy po obiekcie strona),
• obiekt osoba (dziedziczy po obiekcie strona),
• obiekt zadanie (dziedziczy po obiekcie projekt),
• obiekt raport (dziedziczy po obiekcie projekt),
6 I.A. Tarnowski
• obiekt notatka (dziedziczy po obiekcie projekt),
• obiekt plik (dziedziczy po obiekcie projekt),
• obiekt dana (obiekt związany z obsługą dostępu do bazy danych),
• obiekt strona (realizuje powiązanie między interfejsem użytkownika, a pozosta-
łymi obiektami).
Element widoku (interfejs użytkownika) został zrealizowany w oparciu o szablony
SMARTY. Umożliwia to łatwą modyfikację w ramach danego interfejsu lub przysto-
sowanie go do innego widoku, czy też do zastosowań w innej firmie.
4.1. Funkcje aplikacji
Operacje jakie udostępnia aplikacja są uzależnione od funkcji osoby korzystającej
z aplikacji. Administrator zarządza użytkownikami (nadaje im funkcje i prawa, two-
rzy rozliczenia za projekty i zadania, kontroluje właściwy przepływ danych, tworzy
kopie zapasowe, archiwizuje projekty). Największe uprawnienia w zakresie projektu
ma kierownik projektu: tworzy on nowy projekt, dodaje uczestników projektu (in-
formacje o programistach, testerach, klientach, innych kierownikach projektu), przy-
dziela zadania w ramach projektu, kontroluje czas realizacji zadań oraz dostęp do za-
sobów, tworzy oraz czyta raporty i notatki. Kolejnym uczestnikiem w hierarchii jest
programista (developer), który jest odpowiedzialny za faktyczną realizację projektu.
W zakresie platformy zadaniowej otrzymuje on informacje o jego zadaniach oraz o u-
dostępnionych mu zasobach. Po wykonaniu zadania zmienia on cechy zadania (status,
priorytet), może on tworzyć oraz czytać raporty i notatki. Rola testerów oraz klienta
w aplikacji została sprowadzona do raportowania błędów oraz tworzenia notatek. Ra-
portowanie (m.in. błędów) zostało zrealizowane zgodnie z zasadami opisanymi
w [5, 6].
Niektóre zdarzenia (tj. przydzielenie zadania, zmiana statusu/priorytetu zadania, raport
błędu, przedzielenie do projektu), mające miejsce w aplikacji, są połączone z automa-
tycznym wysłaniem informacji (mail) do właściwego adresata.
Osoby zarejestrowane w bazie danych pełnią z góry określoną funkcję. Można zmie-
nić funkcje danej osoby, jednak jednej osobie nie można udostępnić wielu funkcji
jednocześnie. Wiąże się to bezpośrednio z modelem opartym na hierarchii funkcji
i powiązanymi z nimi zadaniami, niemniej każda osoba może uczestniczyć jednocze-
śnie w wielu projektach.
5. Bezpieczeństwo aplikacji
Biorąc pod uwagę potencjalne zagrożenia jakie są związane z działaniem sieci kompu-
terowej aplikacja została napisana w możliwie bezpieczny sposób. Bezpieczeństwo
rozumiane jest w dwóch znaczeniach:
1. zapewnienia tajności danych, tak by nieuprawnione osoby nie miały dostępu do
danych,
Bezpieczne zarządzanie rozproszonym projektem programistycznym... 7
2. niezawodności aplikacji (oraz bazy danych), tak by usługa świadczona była
w sposób ciągły.
Pierwszy aspekt został zrealizowany na kilku poziomach. Na poziomie aplikacji
wprowadzona została autoryzacja i kontrola uprawnień do wykonywania danej czyn-
ności (tj. dodanie zadania, czytanie zadania, dodanie notatki, dodanie użytkownika,
dostęp do szczegółowych informacji). Te funkcje są realizowane w zakresie odpo-
wiednich klas obiektów. Zgodnie z zasadami bezpiecznego tworzenia aplikacji wyko-
rzystano takie mechanizmy zwiększania bezpieczeństwa aplikacji, jak: mechanizm
sesji, kodowanie haseł na poziomie aplikacji, jak również na poziomie bazy danych,
weryfikacja i kontrola informacji przekazywanych z formularzy do aplikacji. Unie-
możliwiono ataki typu SQL injection, PHP injection oraz XSS (ang. Cross Site
Scripting) poprzez kontrolę wszystkich zmiennych wewnątrz aplikacji.
Kolejnym poziomem bezpieczeństwa jest poziom protokołu przesyłającego dane. Ze
względu na ważność przesyłanych danych dla korzystającej z zaprojektowanej plat-
formy firmy (wszystkie szczegóły projektu, budżet, harmonogram, dane klientów,
programistów), zastosowano protokół HTTPS do przesyłania danych. Protokół ten
zapewnia szyfrowanie połączenia, uniemożliwiając przechwycenie informacji poprzez
podsłuchiwanie (ang. sniffing) [9, 10]. Dodatkowo aplikacja regularnie wykonuje ko-
pię danych (posiada również budowaną funkcję związaną z wykonaniem kopii, jak
również z odtworzeniem stanu danych) oraz rejestruje wszystkie zdarzenia (logowanie
użytkownika, dodanie zdarzenia, zmiana statusu, priorytetu, odczyt, zapis danych)
w pliku dziennika zdarzeń (logi aplikacji). Kopie bezpieczeństwa oraz dzienne pliki
rejestrów zdarzeń mogą być przechowywane na zdalnym serwerze (przy wykorzysta-
niu oprogramowania secure copy - scp).
Niezawodność dostępu do danych została zwiększona poprzez replikację bazy danych
na fizycznie oddzielnym serwerze bazy danych. Zastosowanie replikacji powoduje
rozłożenie obciążenia serwera bazy danych na dwa fizycznie serwery oraz wyelimi-
nowanie braku dostępu do bazy danych w przypadku awarii sieci komputerowej w ra-
mach jednej bazy danych. Aplikacja sprawdza szybkość połączenia z bazami danych
i jest w stanie korzystać z wybranej bazy danych. W sytuacji wyłączenia jednej z baz,
aplikacja korzysta z drugiej. Synchronizacja danych między bazami jest zrealizowana
na poziomie konfiguracji bazy danych (jak mechanizm replikacji).
Bezpieczeństwo pracy w zasadniczej części jest uzależnione od stosowania się do
standardów pracy opisanych w punkcie w podrozdziale 2.3 (szczególnie w części do-
tyczącej zasad zachowania bezpieczeństwa w komunikacji). Jest to związane z faktem,
że człowiek jest także elementem systemu informatycznego, a bezpieczeństwo całego
systemu zależy od bezpieczeństwa wszystkich składowych elementów.
6. Podsumowanie
W pracy zaproponowano model oraz opis implementacji platformy zadaniowej znaj-
dującej zastosowanie w firmach outsourcing’owych działających w sposób rozproszo-
ny z wykorzystaniem sieci komputerowej do komunikacji. Opisana platforma ma za
zadnie przyspieszyć, usprawnić oraz ujednolicić wymianę informacji wewnątrz firmy
8 I.A. Tarnowski
w ramach realizowanego projektu. Wdrożenie opisanego rozwiązania znacząco
wspomogło kierowanie wieloma rozproszonymi projektami w firmie outsour-
cing’owej oraz przyspieszyło realizację projektów (w pełni wdrożono zasady progra-
mowania ekstremalnego). Potwierdziło to poprawność zaproponowanego modelu.
Dalszy Rozwój modelu, platformy oraz aplikacji może być związany z umożliwie-
niem dokonywania rozliczeń finansowych w ramach realizacji projektu. W obecnym
momencie zagadnienia finansowe stanowią jedynie informację dodatkową wewnątrz
projektu.
LITERATURA
1. Pressma R.S.: Inżynieria oprogramowania, praktyczne podejście do inżynierii oprogramowa-
nia. Wydawnictwo Naukowo-Techniczne, Warszawa 2005.
2. Beck K.: Extreme Programming Explained: Embrace Change. Addison-Wesley, Boston,
2004.
3. Strige, W.: Reports from the field - using extreme programming and other experiences. Soft-
ware, IEEE, Volume 18, Issue 6, Nov.-Dec. 2001, pp: 17-18.
4. Scott W.: Extreme programming turning the world upside down. Computing & Control Engi-
neering Journal, Volume 14, Issue 3, June-July 2003, pp:18-23.
5. Hieatt E.; Mee R.: Going faster: testing the Web application. Software, IEEE, Vol-
ume 19, Issue 2, March-April 2002, pp: 60-65.
6. Tarnowski I.: System zgłaszania błędów. Software Developer’s Journal, nr 10 (130), paź-
dziernik, 2005, s. 40-44.
7. Elmasri R., Navathe S.B.: Wprowadzenie do systemów baz danych. Wydawnictwo Helion,
Gliwice 2005.
8. Lecky-Thompson E., Eide-Goodman H., Nowicki S.D., Cove A..: PHP5. Zaawansowane
programowanie. Wydawnictwo Helion, Gliwice 2005.
9. IEEE Std 2001-1999, IEEE recommended practice for internet practices - Web page engineer-
ing - intranet/extranet applications, 18 Mar 1999.
10. IEEE Std 2001-2002 (Revision of IEEE Std 2001-1999), IEEE Recommended Practice for the
Internet - Web Site Engineering, Web Site Management, and Web Site Life Cycle, 2003.

More Related Content

Similar to Ireneusz_Tarnowski

Cometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaCometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaJakub Hajek
 
Zarządzanie urządzeniami mobilnymi - transkrypcja webinarium
Zarządzanie urządzeniami mobilnymi - transkrypcja webinariumZarządzanie urządzeniami mobilnymi - transkrypcja webinarium
Zarządzanie urządzeniami mobilnymi - transkrypcja webinariumJarek Sokolnicki
 
Zarzadzanie tozsamoscia za pomoca fim
Zarzadzanie tozsamoscia za pomoca fimZarzadzanie tozsamoscia za pomoca fim
Zarzadzanie tozsamoscia za pomoca fimDC Computer Plus
 
Incessio prezentacja
Incessio prezentacjaIncessio prezentacja
Incessio prezentacjaMaciej Grams
 
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013Marek Maciaszek
 
Projekt unijny eakceptacje (mobilny obieg dokumentów)
Projekt unijny eakceptacje (mobilny obieg dokumentów)Projekt unijny eakceptacje (mobilny obieg dokumentów)
Projekt unijny eakceptacje (mobilny obieg dokumentów)Marek Zawadzki
 
Diaphane software 20.06.17
Diaphane software 20.06.17Diaphane software 20.06.17
Diaphane software 20.06.17Diaphane
 
Integracja środowiska firmowego z Chmurą Publiczną IaaS, SaaS - transkrypt we...
Integracja środowiska firmowego z Chmurą Publiczną IaaS, SaaS - transkrypt we...Integracja środowiska firmowego z Chmurą Publiczną IaaS, SaaS - transkrypt we...
Integracja środowiska firmowego z Chmurą Publiczną IaaS, SaaS - transkrypt we...Jarek Sokolnicki
 
Agile vs. Waterfall Jak połączyć ogień z wodą? - Mariusz Chudy @ Agile Manage...
Agile vs. Waterfall Jak połączyć ogień z wodą? - Mariusz Chudy @ Agile Manage...Agile vs. Waterfall Jak połączyć ogień z wodą? - Mariusz Chudy @ Agile Manage...
Agile vs. Waterfall Jak połączyć ogień z wodą? - Mariusz Chudy @ Agile Manage...Fundacja Governica
 
Metodyki W Projektach Marketingowych
Metodyki W Projektach MarketingowychMetodyki W Projektach Marketingowych
Metodyki W Projektach MarketingowychSymetria
 
BiznesWiki - zarządzanie wiedzą w stylu web 2.0
BiznesWiki - zarządzanie wiedzą w stylu web 2.0BiznesWiki - zarządzanie wiedzą w stylu web 2.0
BiznesWiki - zarządzanie wiedzą w stylu web 2.0Tomasz Karwatka
 
Modele i metodyki wdrażania i zarządzania projektami eai
Modele i metodyki wdrażania i zarządzania projektami eaiModele i metodyki wdrażania i zarządzania projektami eai
Modele i metodyki wdrażania i zarządzania projektami eaiJaroslaw Zelinski
 

Similar to Ireneusz_Tarnowski (20)

Cometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaCometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólna
 
Zarządzanie urządzeniami mobilnymi - transkrypcja webinarium
Zarządzanie urządzeniami mobilnymi - transkrypcja webinariumZarządzanie urządzeniami mobilnymi - transkrypcja webinarium
Zarządzanie urządzeniami mobilnymi - transkrypcja webinarium
 
3
33
3
 
Zarzadzanie tozsamoscia za pomoca fim
Zarzadzanie tozsamoscia za pomoca fimZarzadzanie tozsamoscia za pomoca fim
Zarzadzanie tozsamoscia za pomoca fim
 
3
33
3
 
Incessio prezentacja
Incessio prezentacjaIncessio prezentacja
Incessio prezentacja
 
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
Funkcje systemu eakceptacje - projekt unijny PO IG 2007 - 2013
 
Projekt unijny eakceptacje (mobilny obieg dokumentów)
Projekt unijny eakceptacje (mobilny obieg dokumentów)Projekt unijny eakceptacje (mobilny obieg dokumentów)
Projekt unijny eakceptacje (mobilny obieg dokumentów)
 
Diaphane software 20.06.17
Diaphane software 20.06.17Diaphane software 20.06.17
Diaphane software 20.06.17
 
Integracja środowiska firmowego z Chmurą Publiczną IaaS, SaaS - transkrypt we...
Integracja środowiska firmowego z Chmurą Publiczną IaaS, SaaS - transkrypt we...Integracja środowiska firmowego z Chmurą Publiczną IaaS, SaaS - transkrypt we...
Integracja środowiska firmowego z Chmurą Publiczną IaaS, SaaS - transkrypt we...
 
Systemy dedykowane (pdf)
Systemy dedykowane (pdf)Systemy dedykowane (pdf)
Systemy dedykowane (pdf)
 
Agile vs. Waterfall Jak połączyć ogień z wodą? - Mariusz Chudy @ Agile Manage...
Agile vs. Waterfall Jak połączyć ogień z wodą? - Mariusz Chudy @ Agile Manage...Agile vs. Waterfall Jak połączyć ogień z wodą? - Mariusz Chudy @ Agile Manage...
Agile vs. Waterfall Jak połączyć ogień z wodą? - Mariusz Chudy @ Agile Manage...
 
Hermes
HermesHermes
Hermes
 
Metodyki W Projektach Marketingowych
Metodyki W Projektach MarketingowychMetodyki W Projektach Marketingowych
Metodyki W Projektach Marketingowych
 
BiznesWiki - zarządzanie wiedzą w stylu web 2.0
BiznesWiki - zarządzanie wiedzą w stylu web 2.0BiznesWiki - zarządzanie wiedzą w stylu web 2.0
BiznesWiki - zarządzanie wiedzą w stylu web 2.0
 
Prezentacja Ifs
Prezentacja IfsPrezentacja Ifs
Prezentacja Ifs
 
Prezentacja Ifs
Prezentacja IfsPrezentacja Ifs
Prezentacja Ifs
 
Aec design
Aec designAec design
Aec design
 
Modele i metodyki wdrażania i zarządzania projektami eai
Modele i metodyki wdrażania i zarządzania projektami eaiModele i metodyki wdrażania i zarządzania projektami eai
Modele i metodyki wdrażania i zarządzania projektami eai
 
5
55
5
 

Ireneusz_Tarnowski

  • 1. Ireneusz A. TARNOWSKI Streszczenie Praca przedstawia model zarządzania projektem programistycznym opartym o rozproszony zespół programistów/osób uczestniczących w pro- jekcie. Zaproponowany model został zaimplementowany tworząc uniwer- salną platformę pracy dla wszystkich jednostek zaangażowanych w pro- jekt (klient, kierownik projektu, programiści, testerzy). Szczególny nacisk został położony na aspekty bezpieczeństwa modelu, jak również aplikacji. Bezpieczeństwo zostało przeanalizowane i wdrożone w dwóch znacze- niach: tajności danych oraz niezawodności aplikacji. Platforma znalazła zastosowanie w firmach outsourcing’owych, które korzystając z sieci komputerowej jako kanału komunikacyjnego, jednocześnie pracują nad wieloma projektami, we współpracy z rozproszonymi grupami pracowni- ków. 1. Wprowadzenie Tempo zmian technologicznych oraz właściwe zarządzanie kosztami w firmach spo- wodowały zwiększone zapotrzebowanie na outsourcing komputerowy. Outsourcing komputerowy jest realizacją wyspecjalizowanych zadań informatycznych przez ze- wnętrzne podmioty. Zlecanie poszczególnych zadań zewnętrznym jednostkom gwa- rantuje: odpowiedni poziom usług informatycznych (firmy outsourcing’owe specjali- zują się we właściwych sobie dziedzinach, szkolą oraz rozwijają wraz z rozwojem technologii), ograniczenie działu IT wewnątrz firmy, a przez to zmniejszenie kosztów oraz jasne sprecyzowanie zadań, terminów i odpowiedzialności za zadania IT w fir- mie. Firma outsourcingowa musi być przygotowana na wielość problemów w trakcie realizacji projektu oraz na zmiany uwarunkowań ich realizacji. Dynamika współcze- snych projektów programistycznych wymusza zmianę tradycyjnego podejścia do za- gadnienia zarządzania projektem programistycznym. Zaproponowany model oraz aplikacja, stanowiące rozwiązanie problemu, realizuje wszystkie zadania stawiane zarządzaniu wieloma projektami programistycznymi, w sytuacji zwiększonego ryzyka zmian. 2. Rozproszony projekt programistyczny W tradycyjnym podejściu do realizacji projektu programistycznego korzysta się ze sprawdzonych modeli, tj.: kaskadowego czy spiralnego. Oba modele zakładają znajo- mość założeń projektowych, harmonogramu realizacji projektu, niezbędnych zasobów [1]. Współcześnie małe i średnie projekty realizowane są w sposób bardzo szybki. Wymusza to oszczędności czasowe. Dla projektów o niezbyt ściśle określonych zało- żeniach projektowych, lub też o dużym ryzyku zmian założeń, najlepszym okazuje się model określany jako programowanie ekstremalne (ang. Extreme Programming, XP)
  • 2. 2 I.A. Tarnowski [2, 3, 4]. Dla tego modelu szybki i dokładny przepływ informacji ma kluczowe zna- czenie dla powodzenia całego przedsięwzięcia. Zaprezentowany poniżej model oraz aplikacja, stanowiąca implementację modelu, ma za zadanie wspomóc wymianę in- formacji w projekcie programistycznym, w szczególności w projektach XP. 2.1. Rozproszenie projektu Szybkość łączy oraz powszechna dostępność sieci komputerowej sprawia, że coraz więcej projektów jest realizowanych przez rozproszone grupy. Powstaje coraz więcej firm komputerowych, których znajdują klientów, natomiast prowadzenie projektu zlecają osobom, często oddalonym o kilka tysięcy kilometrów. Rys. 2. Rozproszony projekt programistyczny Osoby prowadzące projekt korzystają z usług grup programistów, również rozproszo- nych. W ten sposób wszystkie jednostki, które uczestniczą w projekcie są ze sobą powiązane jedynie siecią komputerową. Schemat projektu rozproszonego, w którym każda jednostka pracująca przy projekcie znajduje się w innym miejscu, przedstawia rys. 1. Dla powodzenia tak realizowanego projektu zasadnicze znaczenie ma komuni- kacja między jednostkami. 2.2. Model Realizację takiego projektu można przestawić za pomocą modelu opartego o przepływ informacji. Takie rozwiązanie sprzyja zastosowaniu elementów programowania eks- tremalnego [1]. Podstawowym elementem modelu jest jednostka projektowa oraz zadania w obrębie projektu. Zadanie jako jednostka jest przydzielana do osoby uczestniczącej w projekcie. Osoba (jako kolejny element modelu) ma przydzieloną funkcję (rolę), której to roli odpowiada poziom uprawnień związanych z istnieniem w modelu (realizacja zadań, możliwości komunikacja z odpowiednimi osobami). Ce- chą modelu jest odseparowanie funkcjonalne jednostek modelu (projekty, zadania, osoby). Jednostki modelu są ze sobą powiązane poprzez informacje przepływające
  • 3. Bezpieczne zarządzanie rozproszonym projektem programistycznym... 3 między nimi. Przepływ informacji jest realizowany poprzez funkcje danych jednostek – funkcje tworzą stałe powiązania jednostek modelu (przepływ informacji został opi- sany w rozdziale 3 oraz przedstawiony na rys. 2). Daje to dużą elastyczność stosowa- nia modelu w realizacji projektu, gdzie łatwo można zrezygnować z funkcji, bądź dodać nową funkcję. Odseparowanie elementów modelu i powiązanie ich jedynie przepływem informacji umożliwia zastosowanie go w omawianym przypadku pro- gramowania rozproszonego. Opisany w skrócie model może zostać sformalizowany oraz łatwo przeniesiony do opisu w postaci notacji UML. W ten sposób z modelu formalnego może powstać platforma zadaniowa (rozdział 3). 2.3. Standardy pracy Dla poprawnej pracy rozproszonego zespołu programistów celowe staje się określenie standardów pracy w zespole. Standardy obejmują: • standardy kodowania (opis sposobu tworzenia kodu, struktura kodu, przepływ da- nych oraz sterowania, komentarze, podział na obiekty, użyte biblioteki, sposoby dołączania obcych obiektów, kodów), • standardy dokumentacji (opis sposobu tworzenia dokumentacji projektowej), • standardy nazewnictwa (określa nazwy projektów, plików, drzewo katalogowe projektu), • standardy obsługi błędów, • standardy zachowania bezpieczeństwa w komunikacji, Przestrzeganie standardów przez wszystkich uczestników daje możliwość szybkiej zmiany lub uzupełnienia uczestników projektu bez tracenia czasu na wdrożenie no- wych osób w projekt. Dodatkowo daje możliwość korzystania z wcześniej już zreali- zowanych projektów, bibliotek, czy fragmentów kodów. Znajomość standardów ko- dowania oraz jednolitość dokumentacji ułatwia również testowanie aplikacji przez testerów oraz szybką reakcję na zaistniałe błędy [5]. 3. Zadaniowa platforma zarządzania projektem Platforma zadaniowa stanowi właściwe środowisko zarządzania rozproszonym projek- tem. Umożliwia ona pracę z wieloma projektami oraz osobami (klientami, programi- stami, testerami). Każdy projekt ma opisane swoje cechy, tj. harmonogram, budżet, osoby przyporządkowane do projektu.
  • 4. 4 I.A. Tarnowski projekt opis harmonogram budżet osoby PLATFORMA ZADANIOWA osoba funkcja uprawnienia opis czynności administrator kierownik projektu wykonawcy (programista) tester klient raport opis odbiorca nadawca zadanie priorytet status opis odbiorca nadawca notatka opis nadawca pliki opis uprawnienia projekt 2 projekt n Rys. 2. Model platformy zadaniowej Dostęp do tych informacji jest uzależniony od uprawnień danej osoby w projekcie. Uprawnienia te są opisane w cechach osoby, jako jej funkcja. Osoba z funkcją kie- rownika projektu przydziela zadania, przydziela prawa do zasobów, kontroluje czas realizacji zadań zgodnie z harmonogramem. Natomiast pozostałe osoby mogą rapor- tować oraz tworzyć notatki. Raporty dostępne są wybranym osobom, natomiast notat- ki stanowią medium wymiany informacji między wszystkimi uczestnikami projektu (są ogólnodostępne). Rola osób testujących ogranicza się do pracy z projektem, nato- miast platforma zadaniowa jest przez nie używana do tworzenia raportów błędów (rozwijają wątki raportujące, z których korzysta kierownik projektu oraz programiści). Tego typu zadania oraz rozwiązania zostały opisane w [5, 6]. Klient ma wgląd w pro- jekt oraz jego rozwój, nie ma natomiast uprawnień do wglądu w szczegółowe infor- macje, jednak może tworzyć raporty i zadania. Ścisła współpraca z klientem leży w założeniach programowania ekstremalnego [2, 4].
  • 5. Bezpieczne zarządzanie rozproszonym projektem programistycznym... 5 Platforma daje możliwość elastycznej zmiany ról, cech projektu (terminy, budżet) oraz kontroli terminowości realizacji. Pozwala na wygodne przekazywanie informacji o różnych znaczeniach i kategoriach (zadania, raporty, notatki) przez osoby pracujące nad projektem. Ponadto podstawowymi zadaniami platformy jest kontrola uprawnień dostępu do informacji przez poszczególne osoby oraz prawidłowość przepływu wszelkich informacji. 4. Implementacja Opisany model oraz realizująca go platforma zadaniowa została zaimplementowana jako środowisko pracy grupowej. Aplikacja działa w oparciu o model klient-serwer. Serwer usługi (właściwą platformę pracy) stanowi aplikacja „zainstalowana” na ser- werze WWW (Apacze 2.0.55 wraz z modułem PHP 5.1.2) połączonym z bazą danych (MySQL 5.0.18). Oparcie rozwiązania o interfejs WWW, umożliwia korzystanie z usługi z dowolnego komputera wyposażonego w przeglądarkę internetową, podłą- czonego do sieci komputerowej (internetu), przez co aplikacja staje się uniwersalna oraz ogólnie dostępna dla pracującego zespołu (niezależnie od platformy systemowej). Zasadniczą częścią usługi po stronie serwera stanowi baza danych, która zawiera wszystkie informacje dotyczące: • realizowanych projektów (budżet, harmonogram, powiązania), • osób związanych z działalnością firmy (mających dostęp do platformy), • zadań, • raportów (błędów, notatek), • udostępnianych zasobów (plików), • uprawnień do poszczególnych elementów (projektów, zadań, zasobów, możliwo- ści zarządzania). Baza danych została zaprojektowana z uniknięciem redundancji danych, z zachowa- niem zasad normalizacji do postaci normalnych [7]. Aplikacja została oparta o język PHP. By zachować wysoką jakość aplikacji oraz po- prawność technologiczną zastosowano model-widok-kontroler (ang. Model-View- Controller, MVC). W ten sposób oddzielono istniejące w aplikacji warstwy abstrakcji: interfejs użytkownika, dane, ścieżki przepływu danych oraz przepływu sterowania. Aby w miarę dokładnie oddać model wraz z zależnościami funkcjonalnymi zastoso- wano mechanizmy programowania obiektowego. Komunikację z bazą danych zapew- niono poprzez wykorzystanie bibliotek obiektów PEAR: DB oraz DataObject [8]. W ten sposób odseparowano logicznie aplikację, dane oraz bazę danych. Zgodnie z modelem opisanym w podrozdziale 2.2, poszczególne elementy znalazły odzwier- ciedlenie w obiektach programistycznych. I tak zostały wyróżnione obiekty: • obiekt projekt (dziedziczy po obiekcie strona), • obiekt osoba (dziedziczy po obiekcie strona), • obiekt zadanie (dziedziczy po obiekcie projekt), • obiekt raport (dziedziczy po obiekcie projekt),
  • 6. 6 I.A. Tarnowski • obiekt notatka (dziedziczy po obiekcie projekt), • obiekt plik (dziedziczy po obiekcie projekt), • obiekt dana (obiekt związany z obsługą dostępu do bazy danych), • obiekt strona (realizuje powiązanie między interfejsem użytkownika, a pozosta- łymi obiektami). Element widoku (interfejs użytkownika) został zrealizowany w oparciu o szablony SMARTY. Umożliwia to łatwą modyfikację w ramach danego interfejsu lub przysto- sowanie go do innego widoku, czy też do zastosowań w innej firmie. 4.1. Funkcje aplikacji Operacje jakie udostępnia aplikacja są uzależnione od funkcji osoby korzystającej z aplikacji. Administrator zarządza użytkownikami (nadaje im funkcje i prawa, two- rzy rozliczenia za projekty i zadania, kontroluje właściwy przepływ danych, tworzy kopie zapasowe, archiwizuje projekty). Największe uprawnienia w zakresie projektu ma kierownik projektu: tworzy on nowy projekt, dodaje uczestników projektu (in- formacje o programistach, testerach, klientach, innych kierownikach projektu), przy- dziela zadania w ramach projektu, kontroluje czas realizacji zadań oraz dostęp do za- sobów, tworzy oraz czyta raporty i notatki. Kolejnym uczestnikiem w hierarchii jest programista (developer), który jest odpowiedzialny za faktyczną realizację projektu. W zakresie platformy zadaniowej otrzymuje on informacje o jego zadaniach oraz o u- dostępnionych mu zasobach. Po wykonaniu zadania zmienia on cechy zadania (status, priorytet), może on tworzyć oraz czytać raporty i notatki. Rola testerów oraz klienta w aplikacji została sprowadzona do raportowania błędów oraz tworzenia notatek. Ra- portowanie (m.in. błędów) zostało zrealizowane zgodnie z zasadami opisanymi w [5, 6]. Niektóre zdarzenia (tj. przydzielenie zadania, zmiana statusu/priorytetu zadania, raport błędu, przedzielenie do projektu), mające miejsce w aplikacji, są połączone z automa- tycznym wysłaniem informacji (mail) do właściwego adresata. Osoby zarejestrowane w bazie danych pełnią z góry określoną funkcję. Można zmie- nić funkcje danej osoby, jednak jednej osobie nie można udostępnić wielu funkcji jednocześnie. Wiąże się to bezpośrednio z modelem opartym na hierarchii funkcji i powiązanymi z nimi zadaniami, niemniej każda osoba może uczestniczyć jednocze- śnie w wielu projektach. 5. Bezpieczeństwo aplikacji Biorąc pod uwagę potencjalne zagrożenia jakie są związane z działaniem sieci kompu- terowej aplikacja została napisana w możliwie bezpieczny sposób. Bezpieczeństwo rozumiane jest w dwóch znaczeniach: 1. zapewnienia tajności danych, tak by nieuprawnione osoby nie miały dostępu do danych,
  • 7. Bezpieczne zarządzanie rozproszonym projektem programistycznym... 7 2. niezawodności aplikacji (oraz bazy danych), tak by usługa świadczona była w sposób ciągły. Pierwszy aspekt został zrealizowany na kilku poziomach. Na poziomie aplikacji wprowadzona została autoryzacja i kontrola uprawnień do wykonywania danej czyn- ności (tj. dodanie zadania, czytanie zadania, dodanie notatki, dodanie użytkownika, dostęp do szczegółowych informacji). Te funkcje są realizowane w zakresie odpo- wiednich klas obiektów. Zgodnie z zasadami bezpiecznego tworzenia aplikacji wyko- rzystano takie mechanizmy zwiększania bezpieczeństwa aplikacji, jak: mechanizm sesji, kodowanie haseł na poziomie aplikacji, jak również na poziomie bazy danych, weryfikacja i kontrola informacji przekazywanych z formularzy do aplikacji. Unie- możliwiono ataki typu SQL injection, PHP injection oraz XSS (ang. Cross Site Scripting) poprzez kontrolę wszystkich zmiennych wewnątrz aplikacji. Kolejnym poziomem bezpieczeństwa jest poziom protokołu przesyłającego dane. Ze względu na ważność przesyłanych danych dla korzystającej z zaprojektowanej plat- formy firmy (wszystkie szczegóły projektu, budżet, harmonogram, dane klientów, programistów), zastosowano protokół HTTPS do przesyłania danych. Protokół ten zapewnia szyfrowanie połączenia, uniemożliwiając przechwycenie informacji poprzez podsłuchiwanie (ang. sniffing) [9, 10]. Dodatkowo aplikacja regularnie wykonuje ko- pię danych (posiada również budowaną funkcję związaną z wykonaniem kopii, jak również z odtworzeniem stanu danych) oraz rejestruje wszystkie zdarzenia (logowanie użytkownika, dodanie zdarzenia, zmiana statusu, priorytetu, odczyt, zapis danych) w pliku dziennika zdarzeń (logi aplikacji). Kopie bezpieczeństwa oraz dzienne pliki rejestrów zdarzeń mogą być przechowywane na zdalnym serwerze (przy wykorzysta- niu oprogramowania secure copy - scp). Niezawodność dostępu do danych została zwiększona poprzez replikację bazy danych na fizycznie oddzielnym serwerze bazy danych. Zastosowanie replikacji powoduje rozłożenie obciążenia serwera bazy danych na dwa fizycznie serwery oraz wyelimi- nowanie braku dostępu do bazy danych w przypadku awarii sieci komputerowej w ra- mach jednej bazy danych. Aplikacja sprawdza szybkość połączenia z bazami danych i jest w stanie korzystać z wybranej bazy danych. W sytuacji wyłączenia jednej z baz, aplikacja korzysta z drugiej. Synchronizacja danych między bazami jest zrealizowana na poziomie konfiguracji bazy danych (jak mechanizm replikacji). Bezpieczeństwo pracy w zasadniczej części jest uzależnione od stosowania się do standardów pracy opisanych w punkcie w podrozdziale 2.3 (szczególnie w części do- tyczącej zasad zachowania bezpieczeństwa w komunikacji). Jest to związane z faktem, że człowiek jest także elementem systemu informatycznego, a bezpieczeństwo całego systemu zależy od bezpieczeństwa wszystkich składowych elementów. 6. Podsumowanie W pracy zaproponowano model oraz opis implementacji platformy zadaniowej znaj- dującej zastosowanie w firmach outsourcing’owych działających w sposób rozproszo- ny z wykorzystaniem sieci komputerowej do komunikacji. Opisana platforma ma za zadnie przyspieszyć, usprawnić oraz ujednolicić wymianę informacji wewnątrz firmy
  • 8. 8 I.A. Tarnowski w ramach realizowanego projektu. Wdrożenie opisanego rozwiązania znacząco wspomogło kierowanie wieloma rozproszonymi projektami w firmie outsour- cing’owej oraz przyspieszyło realizację projektów (w pełni wdrożono zasady progra- mowania ekstremalnego). Potwierdziło to poprawność zaproponowanego modelu. Dalszy Rozwój modelu, platformy oraz aplikacji może być związany z umożliwie- niem dokonywania rozliczeń finansowych w ramach realizacji projektu. W obecnym momencie zagadnienia finansowe stanowią jedynie informację dodatkową wewnątrz projektu. LITERATURA 1. Pressma R.S.: Inżynieria oprogramowania, praktyczne podejście do inżynierii oprogramowa- nia. Wydawnictwo Naukowo-Techniczne, Warszawa 2005. 2. Beck K.: Extreme Programming Explained: Embrace Change. Addison-Wesley, Boston, 2004. 3. Strige, W.: Reports from the field - using extreme programming and other experiences. Soft- ware, IEEE, Volume 18, Issue 6, Nov.-Dec. 2001, pp: 17-18. 4. Scott W.: Extreme programming turning the world upside down. Computing & Control Engi- neering Journal, Volume 14, Issue 3, June-July 2003, pp:18-23. 5. Hieatt E.; Mee R.: Going faster: testing the Web application. Software, IEEE, Vol- ume 19, Issue 2, March-April 2002, pp: 60-65. 6. Tarnowski I.: System zgłaszania błędów. Software Developer’s Journal, nr 10 (130), paź- dziernik, 2005, s. 40-44. 7. Elmasri R., Navathe S.B.: Wprowadzenie do systemów baz danych. Wydawnictwo Helion, Gliwice 2005. 8. Lecky-Thompson E., Eide-Goodman H., Nowicki S.D., Cove A..: PHP5. Zaawansowane programowanie. Wydawnictwo Helion, Gliwice 2005. 9. IEEE Std 2001-1999, IEEE recommended practice for internet practices - Web page engineer- ing - intranet/extranet applications, 18 Mar 1999. 10. IEEE Std 2001-2002 (Revision of IEEE Std 2001-1999), IEEE Recommended Practice for the Internet - Web Site Engineering, Web Site Management, and Web Site Life Cycle, 2003.