poniedziałek, 24 maja 2010

Laboratorium z Remote Method Invocation

Tematem ostatnich zajęć laboratoryjnych realizowanych w ramach przedmiotu "Programowanie współbieżne i rozproszone" był pakiet Remote Method Invocation, w skrócie RMI. Wykonane ćwiczenie miało na celu, jak czytamy w instrukcji, "zapoznanie z modelem tworzenia aplikacji rozproszonych (...)", a główny nacisk położono na "naukę abstrakcyjnego projektowania usług rozproszonych".

Czasu na wykonanie zadania było dość sporo, ale do pracy postanowiłem zabrać się na tydzień przed ostatecznym terminem oddania projektu. "Bankomat w RMI" - tak brzmiał temat ćwiczenia, który w moim odczuciu nie najlepiej oddawał charakter realizowanego zadania, aczkolwiek przyznam, że dobrze prezentował główne założenia projektu.

Pracę podzieliłem na trzy etapy:
- implementację zdalnego obiektu realizującego zadeklarowane
w interfejsie metody;
- przygotowanie aplikacji służącej do zakładania nowych kont oraz wyświetlania o nich przydatnych informacji;
- przygotowanie aplikacji klienckiej umożliwiającej zalogowanie się na konto w celu wykonania operacji wpłaty/wypłaty środków.

Moim celem podczas realizacji zadania nie było zapewnienie systemowi pełnej funkcjonalności, a jedynie zademonstrowanie umiejętności sprawnego wykorzystania RMI w praktyce.

Poniżej znajduje się opis poszczególnych części zrealizowanego projektu:

1. Program serwera

Jedyna kwestia na jaką chciałbym zwrócić uwagę w odniesieniu do zdalnego obiektu dotyczy udostępnianych metod. Program serwera zarządza kontami, stąd każda metoda powinna weryfikować uprawnienia użytkownika do wykonania danej czynności. Zarówno właściciel konta jak i osoba korzystająca z aplikacji umożliwiającej wgląd we wszystkie konta oraz tworzenie nowych, są poddawani uwierzytelnianiu oraz autoryzacji.

2. Aplikacja RMI-Konta

Poza tworzeniem nowych kont aplikacja umożliwia wyświetlenie przydatnych (zwłaszcza podczas prezentacji wykonanej pracy na laboratorium :) informacji w trzech stopniach szczegółowości :
- identyfikatory wraz z imieniem oraz nazwiskiem właściciela konta;
- identyfikatory wraz ze stanem konta;
- identyfikatory wraz z imieniem i nazwiskiem właściciela konta,
jego stan oraz lista wszystkich wykonanych operacji.



3. Aplikacja kliencka

Klient po zalogowaniu otrzymuje informację dotyczącą stanu swojego konta, dodatkowo zostaje poinformowany o maksymalnie pięciu ostatnio wykonanych operacjach na koncie. Po przyznaniu dostępu do konta, klient uzyskuje możliwość dokonania wpłaty lub wypłaty środków.



Jak się dowiedziałem podczas prezentacji projektu, aby otrzymać za wykonaną pracę zadowalającą mnie ocenę, powinienem zaimplementować dodatkową funkcjonalność, mianowicie umożliwić klientowi przelanie środków na inne konto. Biorąc pod uwagę fakt,
iż zadanie to nie stanowi jakiegokolwiek wyzwania, już dziś mogę cieszyć się zaliczeniem przedmiotu na ocenę bardzo dobrą :)

czwartek, 13 maja 2010

Wrażenia po lekturze książki "JUnit. Pragmatyczne testy jednostkowe w Javie"

Od książki "JUnit. Pragmatyczne testy jednostkowe w Javie" oczekiwałem, że będzie dobrym wprowadzeniem do tematyki testów jednostkowych i nie zawiodłem się.
Tak jak w przypadku "Pragmatycznego programisty", autorzy Andrew Hunt oraz David Thomas wykazali się umiejętnością przekazywania wiedzy w sposób lekki, przyjazny dla czytelnika.


"JUnit. Pragmatyczne (...)" z pewnością należy do grupy książek pisanych z myślą o czytelniku. Celem autorów nie jest samo zapoznanie czytelnika z tematyką testów jednostkowych, ale i również przekonanie do słuszności ich właściwego stosowania. Bezpośrednim tego dowodem mogą być zamieszczone historie, opisujące efekty nieodpowiedniego wykorzystania testów jednostkowych lub kompletnego pominięcia ich podczas realizacji projektów.

Nie zabrakło również sporej ilości kodu źródłowego, demonstrującego wykorzystanie JUnit podczas implementacji testów oraz rozdziałów poświęconych obiektom imitacji czy zagadnieniom projektowania.

Podsumowując, książkę oceniam bardzo dobrze, z pewnością stanowi wartościowe wprowadzenie do tematyki testów jednostkowych.
Z czystym sumieniem mogę polecić lekturę każdemu, mając przy tym (tak jak i autorzy w przedmowie) nadzieję, że nie będzie ostatnią na ten temat.

piątek, 7 maja 2010

"JUnit. Pragmatyczne testy jednostkowe w Javie" oraz "Czysty kod. Podręcznik dobrego programisty"

Moja domowa biblioteczka jeszcze nie imponuje swoją obszernością, aczkolwiek cieszy mnie fakt, że stale się powiększa, a interesujących pozycji do przeczytania nie brakuje.

Nowo pozyskana pozycja "JUnit. Pragmatyczne testy jednostkowe w Javie" mile zaskoczyła mnie już na samym początku - autorzy Andrew Hunt oraz David Thomas napisali również "Pragmatycznego programistę", którego miałem przyjemność przeczytać w zeszłym roku.




Rozdziały "Wprowadzenie", "Najprostsze testy jednostkowe" oraz "Implementacja testów JUnit", z którymi zdążyłem się zapoznać, jedynie wzmogły mój apetyt na dalszą lekturę. W dodatku rozbawiła mnie przykładowa wymówka od testowania, której mógłby użyć programista, tj. "Testowanie nie należy do moich obowiązków" oraz komentarz autorów "To rzeczywiście interesujące wytłumaczenie.
W takim razie na czym polega Twoja praca?"
.

Na półce czeka również kolejna nowa zdobycz, mianowicie "Czysty kod. Podręcznik dobrego programisty", którego lektury także nie mogę się doczekać. Swoimi wrażeniami po przeczytaniu książek podzielę się za pośrednictwem bloga, zachęcam również do komentowania - może jest jakaś godna uwagi pozycja, którą właśnie czytacie lub przeczytaliście?