2013.03.18, WEiTI PW, RSO.B, tjk Treść zadania laboratoryjnego ============================= Każda grupa projektowa ma za zadanie, po wybraniu istniejącego rozwiązania konkurencyjnego: a. zaprojektować, b. zaimplementować, c. przetestować poprawność, d. porównać własności z wybranym rozwiązaniem konkurencyjnym, c. zademonstrować odbierającemu projekt rozproszoną bazę danych albo typu "newSQL" albo typu "noSQL". Grupa wybiera jedno z istniejących rozwiązań typu newSQL albo noSQL, a następnie - po akceptacji prowadzącego (w termini 0) dla dokonanego wyboru konkurencji - tworzy rozwiązanie własne o takim samym - potencjalnie okrojonym ze względu na ograniczenie jednym semestrem skali projektu - interfejsie programistycznym, co istniejące rozwiązanie konkurencyjne - by można było poddać oba rozwiązania zaproponowanym przez zespół analizom porównawczym. Uwaga, można a często zapewne należy przeanalizować kod źródłowy konkurencyjnego rozwiązania, ale nie wolno go bezpośrednio wykorzystywać w swoim projekcie (żadnego copy paste i łamania praw autorskich). Podejmując decyzję o ewentualnym ograniczeniu skali projektu należy dążyć do tego, by ewentualnie pominąć aspekty mniej istotne z punktu widzenia przedmiotu RSO, np. ew. interfejs graficzny czy rozbudowany analizator leksykalny języka zapytań. Nie wolno jednak w wymaganiach na system ograniczać zakresu wymagań niefunkcjonalnych istotnych z punktu widzenia przedmiotu RSO, takich jak: skalowalność, niezawodność, przezroczystości, obsługa czasowych niedostępności, czasowego rozpartycjonowania zasobów, itp. System powinien być uruchamialny w środowisku grupy komputerów pracujących w środowisku Linux. Projekt będzie można demonstrowac albo w laboratorium 518, gdzie na 12 komputerach zainstalowany jest system Ubuntu, albo na komputerach własnych bądź środowiskach zdalnych. Ważne jest jedynie, by demonstracja gotowego rozwiązania mogła się odbywać fizycznie w sali 518. Cele te powinny być osiągnięte poprzez wykorzystanie środowiska systemu Linux Postępy prac i wersja finalna mają być uruchomione, przetestowane i zademonstrowane w środowisku systemu Linux (Ubuntu) w laboratorium 518. Efektem końcowym projektu powinny być: - własne działające oprogramowanie, - zautomatyzowana procedura prezentacji możliwości zrealizowanego oprogramowania (np. skrypt sh), - pełna dokumentacja projektu zawierająca co najmniej następujące pozycje: - uporządkowane wstępne opracowania, - szczegółową koncepcję zaproponowanego rozwiązania, - opis organizacji grupowego wytwarzania oprogramowania, przypisanych ról w projekcie, sprawozdanie z prac nad projektem, czyli listę spotkań roboczych wraz z datami i ustaleniami, - dokumentację techniczną proponowanego rozwiązania, - spisane wyniki testów porównawczych z rozwiązaniem konkurencyjnym, - dokumentację uruchamiania i konfiguracji systemu, - opis przygotowanych skryptów testowych i prezentacyjnych. Ważne: z dokumentacji musi jasno wynikać, kto i w jakim stopniu uczestniczył w realizacji poszczególnych elementów projektu. Narzędzia programistyczne ========================= Dowolny nieorientalny i dostępny język programowania. Należy wykazać się samodzielnym zaimplementowaniem algorytmów rozproszonych - czym bardziej zaawansowane mechanizmy będą wykorzystywane z gotowych bibliotek programistycznych, tym bardziej zaawansowane kompleksowo rozwiązanie będzie oczekiwane i wymagane od zespołu projektowego. Rozwiązanie należy obowiązkowo zademonstrować w laboratorium 518 na jeden z następujących sposobów: na lokalnych Linuksach, przez dostęp terminalowy bądź portalowy, na własnej mobilnej minisieci (laptopy i np. przyniesiony router). To na zespole spoczywa obowiązek upewnienia się, że zastosowano narzędzia i postawiono wobec środowiska wymagania, które umożliwiają sprawną demonstrację rozwiązania w sali 518. Do realizacja pracy grupowej (implementacja/dokumentacja) obowiązkowo wymagane będzie użycie systemu kontroli wersji, lokalnego bądź z jednego z portali udostępniających takie rozwiązania w sieci. Cała dokumentacja ma być przygotowana starannie spójnie w jednym środowisku (Latex/Word/OOffice) i z zachowaniem jednolitego formatowania. Ważne: wszystkie dokumenty należy przekazywać prowadzącemu w formacie pdf. Do harmonogramowania zadań kierownicy projektów mogą użyć dostępnego pod Linuksem narzędzia Planner. Użycie narzędzia do harmonogramowania nie jest obowiązkowe, natomiast samo harmonogramowanie projektu jest obowiązkowe i powinno mieć swój wyraźny ślad w dokumentacji. Ocenianie ========= Z przedmiotu RSO można zdobyć maksymalnie 100 punktów, 40 punktów z kolokwium oraz 60 (30 + 30) punktów z laboratorium. W celu zaliczenia przedmiotu wymagane jest uzyskanie minimum 50 punktów sumarycznie z kolokwium i laboratorium. Z laboratorium można uzyskać 60 punktów. Punkty uzyskiwane są z dwóch źródeł: 1. ocena projektu jako całości z końcowym rozdysponowaniem uzyskanych punktów przez kierownika projektu (0-30 punktów), 2. ocena indywidualna pracy każdego z członków zespołu przeprowadzona przez prowadzącego laboratoria po zakończeniu projektu (0-30 punktów). W trakcie semestru występują dwa terminy pośrednie oceniania postępów w realizacji projektów (tzw. kroki milowe). Na każdym z tych etapów prowadzący laboratorium ma możliwość przyznania do 5 punktów całemu zespołowi projektowemu. Natomiast końcowa ocena realizacji projektu to możliwość uzyskania 20 punktów. Zatem projekt sumarycznie oceniony jest przez prowadzącego w skali 0-30 punktów. Ocena indywidualna przez prowadzącego laboratoria daje możliwość uzyskania od 0 do 30 punktów włącznie. Przy ocenie uwzględniana jest m.in. dokumentacja pracy członka zespołu, uzyskana liczba punktów z oceny projektu jako całości, systematyczność pracy, obecność na wymaganych terminach oraz ocena rzeczywistego wkładu danego członka zespołu. Z tego względu bardzo ważnym jest, by w dokumentacji projektowej na każdym etapie było ściśle określone, który członek i w jakim stopniu jest odpowiedzialny za poszczególne części projektu. Nabyta liczba punktów jest automatycznie podwajana u kierownika danego projektu. Jednocześnie kierownik, na podstawie własnej oceny wkładu poszczególnych członków zespołu, decyduje o tym, ile punktów z dostępnej puli punktów przyznać każdemu z członków zespołu projektowego. Muszą być jedynie spełnione poniższe warunki: - średnia punktów przyznana członkom zespołu jest równa dokładnie liczbie punktów jaką uzyskał projekt, - każdy z członków zespołu projektowego musi uzyskać liczbę punktów z zakresu 0-30 punktów włącznie. Najprostszym rozwiązaniem spełniającym powyższe warunki jest przyznanie wszystkim członkom zespołu po tyle samo punktów, co uzyskał projekt i zarazem kierownik, jednak kierownik ma prawo do innego rozdziału punktów. Ważne: przy podziale punktów nie mogą być uwzględniane punkty osób, które w trakcie semestru wycofały się z danej grupy projektowej. Grupy projektowe ================ Zadania realizowane są w grupach projektowych. Każda grupa ma przypisany termin (A - 12-14 i B - 14-16) oraz tydzień (nieparzysty - grupy 1 i 2 oraz parzysty - grupy 3 i 4), w którym ma do dyspozycji laboratorium 518. Taki podział gwarantuje, iż przy oddawaniu w danej chwili w laboratorium znajduje się ograniczona liczba grup projektowych. Ścisły harmonogram przedstawiony jest na końcu niniejszego opracowania. Wymagania odnośnie realizacji zadania projektowego ================================================== Realizacja zadania podzielona jest na trzy oceniane osobno fazy. Faza pierwsza kończy się pierwszym krokiem milowym, druga drugim krokiem, a trzecia demonstracją końcową projektu i przekazaniem pełnej dokumentacji projektu. Na zajęciach, na które wypada oddanie kolejnej fazy projektu obecność _wszystkich_ członków zespołu jest obowiązkowa. W pozostałych terminach zajęć obecność na zajęciach nie jest obowiązkowa. Uwaga, w pozostałych terminach laboratorium istnieje możliwość udostępnienia sali 518, ale pod warunkiem wysłania co najmniej dzień wcześniej na e-mail prowadzącego informacji o zamiarze skorzystania z laboratorium. Wstępna faza jest fazą zapoznawania się z zagadnieniem do realizacji, dostępnymi narzędziami, środowiskiem uruchomieniowym, dostępnymi opracowaniami z poprzednich lat. Faza ta wymaga następujących kroków do realizacji na zajęciach wstępnych: - organizacja grup projektowych, żaden student nie może zostać poza grupą projektową, - przypisanie terminu do grupy, - wybór kierownika projektu, Rolą kierownika będzie następnie ustalenie ról poszczególnych członków projektu. W grupie projektowej powinny zostać wyróżnione co najmniej następujące role: a. kierownik projektu, b. osoba zarządzająca repozytorium projektu i odpowiedzialna za przechowywanie aktualnej kopii zapasowej projektu, c. osoba odpowiedzialna za przygotowanie demonstracji prototypu oraz przygotowanie i opisanie prezentacji końcowej, d. osoba odpowiedzialna za zarządzanie dokumentacją projektu, zbieranie i ujednolicanie dokumentacji technicznej pisanej przez innych członków zespołu oraz m.in. protokołowanie ustaleń z poszczególnych spotkań roboczych zespołu projektowego, e. osoba odpowiedzialna za testowanie rozwiązania. Kierownik wyznacza i przydziela powyższe oraz dodatkowe role. Wszystkie osoby z przydzielonymi rolami za wyjątkiem kierownika projektu mogą wchodzić w skład zespołu programistycznego realizującego projekt. Kierownik projektu ma zakaz uczestniczenia w pracach implementacyjnych. FAZA 1 ------ W trakcie pierwszej fazy każdy z zespołów ma za zadanie zrealizować poniższe opracowania. Wymagane pisemne opracowania: 1. Przegląd stsownie do wybranego rozwiązania własności baz 'noSQL' lub 'newSQL' 2. Gruntowna analiza wybranego rozwiązania konkurencyjnego 3. Koncepcja rozwiązania własnego 4. Harmonogram realizacji projektu z pełnym zdefiniowaniem i przydziałem ról w projekcie osoadzonych w czasie realizacji projektu 5. Organizacja środowiska programistycznego projektu Pierwszy krok milowy to zakończenie realizacji powyższych opracowań i przekazanie ich w postaci papierowej osobie prowadzącej laboratorium. FAZA 2 ------ Faza druga ma następujące zadania: - opracowanie szczegółowej koncepcji rozwiązania, - realizacja prototypu oferującego ograniczoną funkcjonalność, - opracowanie koncepcji testów porównawczych, - opracowanie scenariusza końcowej demonostracji projektu. Zaliczenie tego etapu projektu, to przedstawienie dokumentacji ze szczegółową koncepcją rozwiązania docelowego oraz demonstracja zrealizowanego prototypu (stan "już coś działa"), który oferuje ograniczoną funkcjonalność. Na tym etapie nie jest wymagana kompletna dokumentacja, a demonstracja prototypu nie musi być automatyczna, jednak system ma już dla wybranych scenariuszy oferować pełną funkcjonalność. FAZA 3 ------ Faza trzecia to dokończenie realizacji projektu, skompletowanie dokumentacji, przeprowadzenie testów i demonstracji rozwiązania, czyli dostarczenie wszystkich wymaganych efektów końcowych projektu. Tu mozna zdobyć najwęcej punktów. Terminy laboratorium i harmonogram oceniania ============================================ data tydzień I tydzień II A1,A2,B1,B2 A3,A4,B3,B4 12.03 0 0 19.03 26.03 02.04 09.04 1* 1* 16.04 23.04 30.04 07.05 2* 14.05 2* 21.05 28.05 04.06 3* 11.06 3* 0 - termin 0 to termin, w którym o 15:15 w sali 518 pojawiają się sami kierownicy poszczególnych grup, by uzyskać akceptację dla poszczególnych wybranych rozwiązań konkurencyjnych, * - w tym terminie można uzyskać punkty za projekt. Obecność _wszystkich_ członków grupy w terminie kroku milowego jest _obowiązkowa_.