Realizacja projektu – poradnik

Po co jest ten poradnik?

Niniejszy poradnik zawiera odpowiedzi na najczęściej zadawane pytania dotyczące realizacji projektu. Przeczytanie tego uważnie i w całości wyjaśni wiele wątpliwości, które zapewne pojawią się w trakcie realizacji projektu.

1. Dokumentacja wstępna.

Gdzie szukać materiałów do projektu?

Poszukiwania najlepiej zacząć od wyszukiwarki internetowej. Przy tym należy uważać na wpisywane zapytania, np. wpisanie w Google frazy „mp3″ niekoniecznie będzie skutkowało odnalezieniem opisu algorytmu kompresji dźwięku.

W przypadku tematu niektórych projektów polegających na implementacji konkretnego algorytmu (np. szyfrującego, takiego jak AES) koniecznie należy odwiedzić stronę twórców algorytmu i pobrać udostępnione tam materiały. Będzie to najlepszy możliwy opis zagadnienia i da dobry punkt odniesienia do pozostałych materiałów. Strony takie także można odnaleźć przy pomocy wyszukiwarki internetowej.

Warto także skorzystać z Wikipedii, jednak należy pamiętać, że encyklopedia ta  nie jest źródłem w sensie bibliografii. W Wikipedii bardzo często pojawiają się błędy i nieścisłości, dlatego też do materiałów tam zawartych trzeba podchodzić ostrożnie. Jednak w przypadku wielu popularnych tematów może ona służyć jako dobry punkt wyjścia do poszukiwań potrzebnych informacji, zwłaszcza godne uwagi mogą być linki do źródeł zewnętrznych.

W dalszych poszukiwaniach warto uwzględnić bazy tekstów naukowych, takie jak np. CiteSeer (http://citeseer.ist.psu.edu), IEEExplore (http://ieeexplore.ieee.org) lub Google Scholar (http://scholar.google.pl/). Często na tych stronach można znaleźć opisy działających implementacji (co również się przyda i zostanie opisane później). Materiały odnalezione przez CiteSeer są dostępne bez opłat, podobnie dostęp do bazy IEEExplore z domeny Politechniki Warszawskiej (czyli m.in. z wydziału oraz z akademików) jest darmowy. W przypadku Google Scholar nie ma reguły, część materiałów wymaga opłat. Istnieją też inne tego rodzaju wyszukiwarki, które można znaleźć w Internecie .

Pozostałe materiały to oczywiście literatura podana przez prowadzących, materiały z wykładów oraz podręczniki. Można skorzystać z książek dostępnych w bibliotece, ale w wielu przypadkach źródła odnalezione w Internecie w zupełności wystarczą. Nie ma potrzeby sztucznego zwiększania liczby źródeł. Lepiej wybrać kilka, ale dobrze opisujących zagadnienie.

Jakie materiały/źródła są potrzebne?

Po pierwsze – teoria. Są to źródła opisujące algorytm, ważne zagadnienia związane z tematem, wszystko co umożliwia/ułatwia zrozumienie tematu.

Po drugie – implementacje. Wszystkie dostępne materiały opisujące implementacje danego zagadnienia. Dotyczy to zarówno artykułów naukowych, jak i implementacji komercyjnych (firm sprzedających IPcore’y) – będą bardzo przydatne w porównywaniu efektywności działania projektu. Opis implementacji może też zawierać sugestie i wskazówki znacznie ułatwiające dalsze tworzenie projektu.

Po trzecie – oprogramowanie. Odnalezienie implementacji programowych algorytmu uchroni od konieczności pisania własnych programów, a te będą niezbędne przy testowaniu poprawności działania, wyszukiwaniu ewentualnych błędów oraz (w przypadku niektórych tematów) badania dokładności obliczeń.

Czy są jakieś materiały po polsku?

W przypadku niektórych tematów trudno jest znaleźć publikacje w języku polskim.. Znacznie więcej źródeł jest po angielsku i z nich należy korzystać.

Nie wiem gdzie szukać materiałów, co mam robić?

Tematy projektów są tak układane, aby do wszystkich można było odnaleźć odpowiednie materiały. Samodzielność w odnajdowaniu źródeł jest bardzo ważna, nie tylko w kontekście projektu, ale ogólnie w pracy inżyniera. Jeżeli zastosowano się do wskazówek tu zawartych , ale pomimo tego nie udało się odnaleźć odpowiednich źródeł to warto się zwrócić o pomoc do prowadzącego projekt.

Co powinna zawierać dokumentacja wstępna?

Dokumentacja wstępne powinna zawierać następujące elementy:

Opis algorytmu

Skrócony opis algorytmu, tak aby było wiadomo co projektowany układ ma robić. Nie ma potrzeby nadmiernie się rozpisywać, zazwyczaj wystarczy przetłumaczyć i w zwięzłej formie przedstawić odnalezioną specyfikację. Chodzi jedynie o to, aby czytający zrozumiał zasadę działania.

Interfejs układu

Opis wejść i wyjść układu oraz komunikacji ze „światem zewnętrznym”. Wejścia i wyjścia powinny być opisane w tabelce, która ma zawierać 4 kolumny: nazwa sygnału (ta, która będzie stosowana w późniejszej implementacji), typ portu (wejście/wyjście), szerokość szyny (liczba bitów w sygnale) oraz uwagi dodatkowe (takie jak np. czy sygnał jest aktywny stanem wysokim/niskim, czy wyjście jest dekodowane kombinacyjnie czy jest wyjściem z rejestru, krótki opis funkcji spełnianej przez sygnał).

Pod tabelką powinien znaleźć się krótki opis zachowania sygnałów, np. opisy na ile cykli muszą być wystawione dane, jak powinny się zmieniać dane na wejściu/wyjściu etc. Dobrze jest grupować sygnały pod względem spełnianych funkcji, np. razem opisywać sygnały dotyczące pamięci, danych wejściowych etc. Pozwoli to uniknąć opisywania każdego sygnału z osobna.

Struktura układu

W tym punkcie powinny się znaleźć wszystkie schematy i rysunki struktury układu. Układ powinien zostać podzielony na mniejsze bloki funkcjonalne, należy rozróżnić rejestry (lub grupy rejestrów), logikę kombinacyjną. przede wszystkim schemat struktury powinien być czytelny.

Opis działania układu

Ten rozdział powinien zawierać opis działania układu. W odróżnieniu od rozdziału dotyczącego interfejsu (gdzie opisane zostało działanie układu z punktu widzenia komunikacji z otoczeniem) tutaj należy opisać w jaki sposób zmienia się stan wewnętrzny układu. Trzeba uwzględnić automat sterujący (wypisać jego stany, opisać co się dzieje w kolejnych stanach, w jakich okolicznościach automat przejdzie do innego stanu), opisać przepływ danych (w jakich rejestrach są zapisywane dane, kiedy i jak zmienia się zawartość rejestrów), wpływ sygnałów sterujących (czy wpływają na zmiany stanów automatu lub np. adresują jakieś wewnętrzne komponenty w rodzaju multiplekserów) etc.

Weryfikacja, testowanie i ocena wydajności

W tej części należy przedstawić sposób weryfikacji i testy potwierdzające poprawność działania. Należy opisać tzw. scenariusze testowe, stanowisko testowe. Powinna się tu znaleźć symulacja z opisem poszczególnych przypadków. Weryfikacja działania urządzenia po skonfigurowaniu na platformie uruchomieniowej, itp. Ocena wydajności powinna obejmować dyskusję wykorzystania zasobów, omówienie parametrów czasowych (ścieżka krytyczna, maksymalna częstotliwość taktowania zegara) oraz szybkości przetwarzania danych. Mile widziane zrzuty z ekranu z adnotacjami (strzałki z opisem poszczególnych elementów widocznych na rysunkach i zrzutach).

Dlaczego dokumentacja wstępna musi być aż tak rozbudowana?

Projektowanie układów niestety nie przypomina pisania programów. W szczególności trudniej jest wprowadzać zmiany do już napisanego projektu. Dlatego też im lepiej przemyślana jest koncepcja co i jak należy zrobić, tym łatwiejsza będzie późniejsza implementacja. Doświadczenie wielu projektantów pokazuje, że projekty dobrze przemyślane i wyspecyfikowanie przed przystąpieniem do implementacji, powodują znacznie mniej problemów i zabierają mniej czasu. Dlatego też opłaca się spędzić trochę czasu nad dokumentacją wstępną, dzięki temu realizacja przebiegnie szybko i sprawnie.

Jak długa powinna być dokumentacja wstępna – ile stron?

Dokumentacja wstępna nie musi być długa. Nie ma potrzeby sztucznego zwiększania jej objętości. Dobra dokumentacja przede wszystkim musi być przemyślana i czytelna. Liczba stron nie ma żadnego znaczenia, jeśli tylko znajdują się tam wszystkie potrzebne informacje przedstawione w sposób czytelny. Ogólna zasada powinna być taka, że jeśli coś może być przedstawione zwięźle (ale równocześnie czytelnie), to tak właśnie należy to napisać. Należy pamiętać, że odpowiednio przygotowane rysunki niosą znacznie więcej informacji niż „sto słów”

Kiedy należy  przyjść na konsultacje?

Na konsultacje należy przyjść zawsze, gdy napotka się problem, z którym nie potrafią sobie Państwo poradzić. Prowadzący projekt powinien pomóc w jego rozwiązaniu i zasugerować kierunek dalszych prac. Przed konsultacją z prowadzącym projekt warto samodzielnie poszukać możliwych propozycji rozwiązania problemu (rozwiązania wielu typowych problemów można znaleźć w Internecie). Pomaga to znacznie w dyskusji w czasie konsultacji i oszczędza czas. Oczywiście nie oznacza to, że należy spędzać tydzień na poszukiwaniu rozwiązania, chodzi raczej o podjęcie takiej próby. Warto pamiętać, że prowadzący są po to, aby pomagać w realizacji projektów, nie są zaś członkami grupy realizującej projekt. Zapewne z chęcią posłużą dobrą radą, ale nie należy oczekiwać od nich rozwiązywania wszystkich problemów jakie się pojawią w Państwa projekcie.

Prowadzący projekty mają wyznaczone godziny konsultacji kiedy mogą się spotkać ze studentami. Wskazane jest przestrzeganie godzin konsultacji – poza nimi może się zdarzyć, że prowadzący nie będzie miał czasu na rozmowę o projekcie (choć wcale tak nie musi być). Wizyty poza godzinami konsultacji warto uzgodnić wcześniej (np. mailem). Warto też śledzić strony WWW prowadzących, zazwyczaj tam umieszczane są wszelkie informacje dotyczące projektów lub konsultacji.