Praca magisterska

3 lutego 2013

Trochę dawno to już było, ale do tej pory nie miałem okazji poruszenia publicznie tego tematu. Tak się składa, że ponad 1,5 roku temu, w czerwcu 2011 roku, na Wojskowej Akademii Technicznej, po ciężkiej 3 tygodniowej pracy redagowania i twórczego tworzenia, obroniłem tytuł magistra. Gdybym nie był na cywilnych, byłbym teraz oficerem – podporucznik magister inżynier ;)

Temat mojej pracy brzmiał: „Konstrukcja i integracja mechanizmu monitorów statystycznych na potrzeby symulacji w języku C++„, a jej podstawowym celem było zaprojektowanie i implementacja przenośnej i wydajnej biblioteki udostępniającej monitory statystyczne, wraz z przykładami wykorzystania i użycia. Obok „kodowych” celów, jednym z bardziej teoretycznych aspektów pracy była analiza i przegląd charakterystyk i parametrów statystycznych, jakie można wykorzystać i zaimplementować w tworzonym mechanizmie monitorów, a także analiza możliwości wizualizacji wyników. Do tego doszedł jeszcze jeden byt – przeprowadzenie eksperymentu/symulacji SMO z wykorzystaniem stworzonej biblioteki, jako realnego przykładu użycia i integracji z innymi narzędziami i środowiskiem symulacyjnym. Bardziej dogłębne i dokładniejsze informacje można znaleźć w samej treści pracy w rozdziale „Cele pracy”.

Cześć tekstowa pracy, jak wspomniano, powstawała w około 3 tygodnie, natomiast część związana z samym kodowaniem, konstrukcją i projektowaniem, zajęło już nieco więcej czasu – tworzona była na przestrzeni dłuższego okresu. Prace udało mi się złożyć nieco po czasie, prawie przed samymi obronami, w piątek, a w środę już byłem po obronie. To wszystko dzięki życzliwości dziekanatu, ale jak to zawsze bywa, swoje trzeba było przejść.

Na samej obronie, oprócz prezentacji pracy i egzaminu/pytań, nie obyło się bez jakiś akcji, jak dyskusja i mała kłótnia dotycząca tego, czy C++ jest przenośny, cross-platformowy…

W czasie prezentacji oprócz slajdów był też króciutki filmik, który przedstawiał w wersji skondensowanej użycie stworzonego programu do symulacji SMO. Było to bardzo dobrym pomysłem, niż ewentualna prezentacja „online”, w czasie której mogłoby coś pójść nie tak, o czymś zapomnieć etc., a tak komentarze do nagranego filmiku były przećwiczone, i wszystko co chciałem zostało przedstawione. Mimo wszystko, gdy lektor się chwilowo zająknął komisja stwierdziła, że nie jest tu od oglądalna filmów ;)

Biblioteka sim::mon jest multiplatformową, Open Source’ową (MIT) biblioteką template-based, wykorzystującą szablony i generyczność w celu zapewnienia efektywności i elastyczności, dająca się w łatwy sposób rozszerzać o nowe możliwości i funkcje. Nie wymaga kompilacji, w całości oparta jest na szablonach, do działania wymaga boosta. Do biblioteki dołączono sample ukazujące sposób użycia i wykorzystania, rozszerzania i integracji z innymi środowiskami i toolkitami. Niektóre dołączone przykłady i sample korzystają z innych, dodatkowych bibliotek. Przykłady z GUI, wizualizujące dane na wykresach, zbudowano z zastosowaniem dwóch najpopularniejszych toolkitów graficznych – wxWidgets i Qt. Aplikacje wx’owe oparto na wersji 2.9.1 (trunk) oraz bibliotece do wykresów wxFreeChart w wersji 1.7 (trunk), natomiast qt’owe na wersji 4.7 frameworka i bibliotece renderującej wykresy Qwt w wersji 6.

Mimo iż biblioteka jest (miała w zamierzeniu być) multiplatformowa, oryginalna wersja dołączona do pracy działa tylko pod systemem Windows i kompilatorem MSVC. Związane jest to z wykorzystaniem pewnych rozszerzeń tego kompilatora (lub błędów), które w czasie tworzenia ułatwiły prace. Kompilator ten na podstawie kontekstu potrafi wydedukować, czy podana nazwa odnosi się do nazwy zmiennej czy nazwy typu, zatem nie trzeba tego jawnie specyfikować za pomocą typename. Podobnie, w klasach szablonowych, wszystkie typy stowarzyszone są dziedziczone przez klasy pochodne, co nie wymaga jawnego definiowania „aliasów” do nich za pomocą typedef lub using, gdzie typ stowarzyszony jest zależny od specjalizacji szablonu.

Finalnie nie zostało to naprawione z braku czasu i pewnych problemów, ale przygotowałem odpowiednią poprawkę, która naprawia te niedociągnięcia. Patch ten tylko rozwiązuje problem crossplatformowości, nie naprawia innych (potencjalnych) błędów i elementów biblioteki, ani nie ulepsza kodu, mimo, iż po jego zastosowaniu niektóre rzeczy można byłoby zrobić inaczej i lepiej. Acz wtedy, niektóre fragmenty kodu i opisy zawarte w treści pracy utraciłyby ważność i stałyby się niepoprawne.

Oczywiście, podobnie jak moja praca licencjacka, jak przystało na inżyniera/technika, praca magisterska została napisana w LaTeX-u. Oczywiście, na przekór wszystkim, po co polskie uczelnie techniczne i nietechniczne (z technicznymi kierunkami) mają ułatwiać to zadanie i udostępniać gotowe klasy bądź szablony latexowe. Wszakże, wszyscy powinni pisać prace w Wordzie lub innym WYSIWYG – chyba na polonistyce…

Oczywiście, podobnie jak licencjat, niejako kontynuując tradycję publikowania swojej pracy dyplomowej, magisterka wraz ze wszystkimi źródłami i materiałami od dawna leży na mojej stronie, pod adresem malcom.pl/msc.

Stworzona na potrzeby pracy klasa latexowa uniemożliwiająca skład pracy zgodnie z wymogami WATowskimi – WATthesis.cls, zostanie również upubliczniona (mimo iż jest dołączoną do pracy). Wrzucę ją gdzieś wraz z jej odpowiednikiem „licencjackim” z USia na project.malcom.pl. Być może komuś się jeszcze przyda, tak samo jak źródła tekstowe pracy w latexu – mogą komuś ułatwić redagowanie własnej pracy lub dowolnego innego dokumentu składanego przy użyciu LaTeX-a.

Podobne notatki:

Może zainteresują Cię również następujące, pododbne notatki:

Komentarze i nawiązania (2)

Kanał RSS komentarzy

  1. LaTeX-U, a nie LaTeX-IE :P
    X to nie ‚iks’, a greckie ‚chi’ :P

  2. No tak, X w pismie chyba zawsze bede podswiadomie interpretowal jako ‚iks’ ;)

Dodaj swój komentarz

Możesz użyć tych tagów XHTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Jeśli chcesz wstawić kilku linijkowy fragment kodu, użyj tagów <pre lang="x"></pre> (gdzie x język kodu np. cpp, perl, html). W ten sposób kod zostanie odpowiednio sformatowany i pokolorowany przez system.

Uwaga!

Na tym blogu działa system cache oraz filtr antyspamowy. Twój komentarz może być widoczny na stronie z pewnym opóźnieniem. Proszę o cierpliwość. Jeśli utraciłeś już wszystkie jej zasoby poinformuj mnie o tym, być może system uznał Cię za spamera ;)