Projektowanie Oprogramowania Systemów - 1. sem.
Zasady prowadzenia i zaliczenia projektu:
- Projekt realizowany jest w wymiarze 15 godz./sem., tj. 2x45 min. w drugiej połowie semestru (nie dotyczy realizacji zdalnej).
- Za projekt przydzielane są punkty, można otrzymać max. 100 punktów. Po zakończeniu semestru punkty przekazuję prowadzącemu wykład.
- Obowiązują grupy 3 lub 4 osobowe.
Projekt
Element projektu podlegający ocenie
|
Przykładowe narzędzia, biblioteki, oprogramowanie
|
% oceny
|
1. Opracowanie wymagań, modele UML
- zidentyfikować klienta, użytkowników końcowych i inne zainteresowane strony tematu (stakeholders);
- zgromadzić i przeanalizować szczegółowe wymagania funkcjonalne i pozafunkcjonalne zadań;
- określić scenariusze użycia i stworzyć nadającą się do czytania specyfikację funkcjonalną;
- opcjonalnie zawrzeć w niej diagramy UML scenariuszy użycia;
- stworzyć model UML kluczowych elementów projektowanego rozwiązania;
- przeanalizować możliwość użycia dodatkowych bibliotek i narzędzi do realizacji zadania;
- opracować krótką specyfikację techniczną podsumowującą te informacje wraz z harmonogramem pracy;
- przedstawić specyfikację do zaliczenia;
- przygotować harmonogram pracy oraz kamienie milowe.
|
Microsoft Visio |
10
|
2. Napisanie oprogramowania
Oprogramowanie realizującego przetwarzanie obrazów (po uzgodnieniu z prowadzącym, można realizować inny, własny projekt )
Założenia:
- program uruchamiany z linii poleceń;
- program z pliku *.ini powinien odczytać ścieżki źródłowe i docelowe (do analizy pliku ini można wykorzystać dowolną darmową bibliotekę, np. iniParser);
- program odczytuje wszystkie pliki z obrazami ze ścieżki źródłowej;
- program wykonuje przetworzenie odczytanych obrazów (wielowątkowo) - detekcja konturów;
- przetworzone obrazy zapisujemy w folderze docelowym;
- w folderze docelowym zapisujemy matrycę miniatur plików źródłowych oraz matrycę miniatur obrazów docelowych (jeden plik zawierać powinien sklejone ze sobą zmniejszone obrazki źródłowe, drugi plik - sklejone obrazki po przetworzeniu, aby można było szybko zobaczyć efekty działania programu).
Proponuję najpierw zapoznać się z poszczególnymi elementami projektu:
- analiza pliku INI;
- odczytywanie, zapisywanie i wyświetlanie obrazów w OpenCV;
- zasady operacji na macierzach/obrazach w OpenCV;
- wybranie i sprawdzenie metody przetwarzania obrazów.
Uwagi dodatkowe:
- w pliku INI podajemy ścieżkę do folderu z plikami wejściowymi - progam powinien przeczytać wszystkie pliki z tego folderu;
- program powienien umożliwiać pracę z dużą liczbą plików >500;
- obrazki miniaturki powinny mieć zachowane proporcje wysokość/szerokość;
Zdjęcia testowe do testowania oprogramowania (ZIP)
|
Visual Studio 2013 i C++ wraz z biblioteką OpenCV |
20*
|
3. Wykorzystanie narzędzia do pracy grupowej
- uzyskać dostęp do repozytorium systemu kontroli wersji (zewnętrzny hosting GitHub, Bitbucket.);
- wyznaczyć osobę odpowiedzialną za utrzymanie porządku w repozytorium (maintainer);
- zaplanować strukturę repozytorium mając na uwadze używane środowisko IDE, język programowania, dodatkowe artefakty (grafiki UI, specyfikacje itp.).
|
GIT + GitHub |
10
|
4. Wykorzystanie systemu śledzenia błędów
- uzyskać dostęp do repozytorium systemu śledzenia błędów (zewnętrzny hosting GitHub, Bitbucket.);
- wyznaczyć osobę odpowiedzialną za utrzymanie porządku w repozytorium (maintainer).
- wykryte podczas cykli testowania błędy raportować do systemu śledzenia błędów;
- opcjonalnie zastosować metodę test-driven development do zapewnienia jakości;
- zademonstrować użycie testów jednostkowych do walidacji kluczowych elementów oprogramowania.
|
Bugzilla |
10
|
5. Wykorzystanie wątków |
Windows |
10
|
6. Wykorzystanie IPC |
Windows |
10
|
7. Wykonanie dokumentacji projektu
- podczas implementacji zaangażować odpowiedni nakład pracy na dokumentowanie API (komentarze zgodne z Doxygen) oraz inne komentarze w kodzie, wyjaśniające szczególnie zagmatwane algorytmy, mechanizmy, zależności;
- generować dokumentację HTML z komentarzy Doxygen na bieżąco, a nie po zakończeniu projektu;
- przedstawić dokumentację do zaliczenia.
|
Doxygen |
10
|
8. Wykonanie profilowania projektu (hotspot'y)
- użyć profiler do wykrycia hot spotów w opracowanym programie i przeprowadzić próbę ich optymalizacji.
|
Visual Studio Profiler |
10
|
9. Wykonanie wykrywania błędów
- Sprawdzić integralność danych w programie, np.:
- wykryć "memory leak"
- wykryć wykraczanie wskaźników (np. korzystając z makra
_ASSERTE( _CrtCheckMemory( ) ); w trybie DEBUG)
|
Visual Studio + CrtCheckMemory |
10
|
* = Warunek konieczny. Do zaliczenia przedmiotu wymagane jest poprawne działanie oprogramowania.
Powyższą specyfikację opracowano w oparciu o materiały mgr inż. A. Ciarkowskiego.
Przykładowe oprogramowanie przydatne do realizacji projektu:
- Visual Studio
- Microsoft Visio
- Git
- TortoiseGit
- TortoiseSVN
- Doxygen
- Wtyczka do obsługi SVN w Visual Studio - AnkhSVN
- Wtyczka DoxygenComments w Visual Studio
- Biblioteka C++ Boost:
- Konfiguracja projektu Visual C++:
- "C++->General->Additional Include Files" dodajemy $(BOOST_ROOT),
- "Linker->General->Additional Library Directories" dodajemy $(BOOST_ROOT)/lib$(PlatformArchitecture)-msvc-$(VisualStudioVersion)
- Biblioteka OpenCV:
- Konfiguracja projektu Visual C++:
- "C++->General->Additional Include Files" dodajemy $(OPENCV_ROOT)\include,
- "Linker->General->Additional Library Directories" dodajemy $(OPENCV_ROOT)\$(PlatformTarget)\vc12\lib lub $(OPENCV_ROOT)\$(PlatformTarget)\vc12\staticlib (w zależności od tego czy używamy bibliotek dll czy statycznych)
- "Linker->Input->Additional Dependencies" opencv_< biblioteka > $(OPENCV_VERSION_SUFFIX)[d].lib, np. opencv_core$(OPENCV_VERSION_SUFFIX).lib w konfiguracji "Release" oraz opencv_core$(OPENCV_VERSION_SUFFIX)d.lib w konfiguracji "Debug".