PO: Java PROJEKTY Małgorzata Janik Zakład Fizyki Jądrowej malgorzata.janik@pw.edu.pl
Projekty Po co? Etapy kontrolne Tematy i Ocena
Programowanie Obiektowe Strona internetowa przedmiotu http://java.fizyka.pw.edu.pl/ Projekt realizowany w domu, specyfikacja + trzy zajęcia projektowe sprawdzające postępy prac Szczegoły na temat projektów można znaleźć na stronie: http://java.fizyka.pw.edu.pl/projekty Na stronie można znaleźć również przykładowe tematy Temat projektu każdy zespół ustala indywidualnie z prowadzącym laboratoria 3/17
Po co robimy projekty? Abyście Państwo: napisali kawałek kodu, który ma kilka tysięcy lini: do tej pory Wasze największe projekty informatyczne miały zwykle kilkaset linii kodu teraz możemy to zmienić przećwiczyli pracę samodzielną (tj. bez ciągłego wsparcia prowadzącego) przypomina rzeczywistą pracę w relacji klient - wykonawca będziecie musieli sami rozwiązywać napotkane problemy korzystanie ze stack overflow oraz zwykłego google a to powszechna praktyka wśród programistow przećwiczyli pracę w zespole Do tej pory Państwa projekty były pisane dla Państwa, miały jednego użytkownika; praca w zespole to (bardzo porządana) umiejętność pisanie kodu dla szerszego odbiorcy musi zawierać odpowiednie nazewnictwo oraz być odpowiednio okomentowany 4/17
Wymogi biznesowe Praca dla biznesu jest specyficzna Klient biznesowy często nie do końca wie czego potrzebuje, a już na pewno nie wie jak to uzyskać Prowadzący zamienia się dla Państwa w klienta biznesowego i podaje przykładowe wymagania Jeśli potrzebujecie pomocy: Formalnej (zaliczenie projektu, przedłużenie terminu, zmiana wymagań ): konsultacje z prowadzącym laboratoria Programistycznej: Http://stackoverflow.com/ - "forum" ogólnoświatowe, mediana czasu oczekiwania na pierwszą odpowiedź to 21 minut Google Konsultacja z prowadzącym jest ostateczną instancją, jeśli pozostałe metody zawiodły 5/17
Realizowane zespołowo zespoły dwuosobowe Zaliczenie czterech etapów kontrolnych: I. Specyfikacja (3 zajęcia), 10% oceny II. Prototype - User Interface (5 zajęcia), 20% oceny [zajęcia projektowe] III. Release Candidate (10 zajęcia), 20% oceny [zajęcia projektowe] IV. Final (15 zajęcia). 50% oceny [zajęcia projektowe] Zaliczenie polega na: I. Oddanie dokumentu specyfikacji prowadzącemu laboratoria II IV. Zajęcia projektowe Projekty Prezentacja: (5-12 min na grupę) pierwsza godzina zajęć Omówienie kodu druga godzina zajęć 6/17
Realizowany Zespołowo W drugim tygodniu zajęć należy wysłać prowadzącemu e-mail z informacją o: Członkach zespołu Pomyśle na projekt Temat projektu powinien zostać uzgodniony z prowadzącym laboratoria przed przygotowaniem specyfikacji Przykłady tematów na stronie http://java.fizyka.pw.edu.pl/lista-projektow Zawsze można wybrać własny projekt Tematy w danej grupie nie mogą się powtarzać (kto pierwszy ten lepszy) Wystarczy OK od prowadzącego Projekt jest realizowany zespołowo, ale uzyskana ocena jest indywidualna. Wkład każdego z członków zespołu będzie oceniany indywidualnie przez prowadzącego. 7/17
Specyfikacja Określenie, które wymagania państwo spełniają Dokładnie opisać działanie programu Model matematyczny; wzory Szkice interfejsu Scenariusze użycia + diagramy UML (dodatkowe punkty) Listę dodatkowych funkcjonalności Należy określić ocenę, jaką Państwo chcielibyście uzyskać Jak długa? Jak najkrótsza, ale musi byż zrozumiała i zawierać wszystkie niezbędne elementy Specyfikacje poniżej 2 stron A4 prawdopodobnie nie będą wystarczająco dokładne Jakość specyfikacji (język, edycja) też jest oceniana 8/17
Szkic interfejsu przykład 9/17
Scenariusze użycia Sceriusze (przypadki) użycia (ang. Use cases) to technika stosowana w inżynierii oprogramowania w celu opisania wymagań tworzonego systemu Określają cel jaki użytkownik chce osiągnąć Określają kroki jakie w tym celu wykonuje = opis typowej interakcji między aktorem a systemem 10/17
Scenariusze użycia: efekt Comptona Sceriusz: zebranie statystyki CEL: użytkownik chce zebrać istotny statystycznie rozkład przekrojów czynnych Kroki: Użytkownik wybiera rodzaj źródła Użytkownik ustala energię fotonu padającego Użytkownik naciska przycisk szybka animacja System iteracyjnie oblicza wartość energii rozproszonego fotonu metodą Monte-Carlo i modyfikuje wykres zliczeń Dodatkowe punkty 11/17
UML: Class Diagrams Dodatkowe punkty 12/17
Funkcjonalności dodatkowe dostępne dla niemal wszystkich projektów Program można zainstalować za pomocą java web start Program można zainstalować za pomocą instalatora w systemie Windows Skorzystanie z technik/bibliotek nie omawianych na wykładzie Program wykorzystuję bazę danych SQL Użycie systemu kontroli wersji GIT / svn Projekt jest dostępny na licencji open source Program jest napisany w Javie FX, w zależności od jakości animacji Program jest wielojęzyczny (ma wersje językowe przynajmniej polską i angielską) Wielojęzyczność zaimplementowano za pomocą mechanzmu internacjonalizacji wbudowanych w JDK: http://docs.oracle.com/javase/tutorial/i18n/resbundle/index.html 13/17
Zaj. Proj. II - Prototype Prezentacja zespołu zawierająca: Opis projektu skrót specyfikacji Wykorzystana fizyka (z wzorami / wykresami) można poprzeć wzory wstępnymi obliczeniami z arkusza kalkulacyjnego (dodatkowe punkty) Zrzut ekranu interfejsu użytkownika GUI (interfejs użytkownika) Okienko, wszystkie przyciski, suwaki, menu, panele 8 12 min na zespół Będzie sprawdzany również kod, łącznie z weryfikacją wkładu członków zespołu 14/17
Zaj. Proj. III Release Candidate Prezentacja Krótki wstęp Przypomnienie o czym jest projekt Opis osiągniętych funkcjonalności Jasna lista co udało się osiągnąć / zaprogramować Zrzuty ekranu i/lub przykłady kodu Wersja beta projektu Spodziewany prototyp projektu (działająca wersja) Przynajmniej część obliczeń zaimplemenentowana Przynajmniej część funkcjonalności działa całkowicie poprawnie Oczekiwania: minimum połowa projektu powinna być skończona 5 8 min na zespół Będzie sprawdzany kod, łącznie z weryfikacją wkładu członków zespołu 15/17
Zaj. Proj. IV - Final Prezentajca 5 8 min na zespół Krótki wstęp Przypomnienie o wszystkich założeniach projektu Weryfikacja założeń Jasna lista co udało się osiągnąć z założonych funkcjonalności Opis ewentualnych zamian czy różnic Prezentacja projektu Uruchomić napisany projekt i zaprezentować jak działa całej grupie Wersja finalna projektu Spodziewana ostateczna werja projektu Finalna ocena kodu, łącznie z weryfikacją wkładu członków zespołu 16/17
Tematy Projektów Układ słoneczny w 3D Fizyka ruchu wielu ciał Modelowanie ruchu cząstki w polu EM Rzut ukośny wraz z oporami powietrza Można symulować pociski artylerii Symulacja gry w bilard Model bomby atamowej Twój Własny Pomysł Kilka przykładów 17/17
Ocena? Zależy od Was sami określacie, ile i jakie funkcjonalności chcecie oprogramować więcej funkcjonalności/lub ambitny projekt = wyższa ocena prowadzący może zasugerować dodatkowe funkcjonalnosci I od waszej pracy Ocena będzie obniżana za niespełnienie warunków formalnych (styl kodu, itp), brak założonych funkcjonalności oraz nieterminowość Ocena indywidualna dla każdego członka zespołu 18/17
Weryfikacja wkładu Omówienie kodu wraz z prowadzącym na zajęciach "projektowych" ma za zadanie zweryfikować wasz wkład w napisany kod. Przykłady pytań: Jaką rolę pełni ta klasa w projekcie? Co robi tutaj ten nawias trójkątny? Jaką rolę pełni ta funkcja for? Proszę przepisać tą funkcję by robiła to a to. W przypadku braku satysfakcjonującej odpowiedzi na pytania, prowadzący ma obowiązek nie zaliczyć odpytywanemu studentowi danego etapu projektu (dany etap zostaje oceniony na 0 punktów). Zalecane jest więc, by klarownie wyjaśnić prowadzącemu podział obowiązków w zespole zanim pytania zostaną zadane Zalecane jest oznaczanie autorstwa klas w kodzie Odpowiedzi, które nie będą uznawane za satysfakcjonujące: "Już dawno to pisałem, nie pamiętam dokładnie co ta funkcja robi..." "Siedziałem do 4 w nocy nad kodem, teraz już nie mogę się skupić..." 19/17
GIT Bardzo silnie polecane jest wykorzystanie systemu kontroli wersji GIT w trakcie przygotowywania projektu powszechnie wykorzystywane narzędzie zarówno w biznesie jak i w nauce często używane również do dzielenia się kodem 20/17
Więcej informacji http://java.fizyka.pw.edu.pl/projekty Wymogi formalne Przykładowe tematy Zawsze programuj jak gdyby osoba zajmująca się twoim kodem w przyszłości była agresywnym psychopatą, który wie gdzie mieszkasz. Podział pracy w zespole, plagiaty Proponowane dodatkowe funkcjonalności 21/17