ZAŁOŻENIE I CELE PRZEDMIOTU:
- Celem tego przedmiotu jest zrealizowanie przez studentów dużego projektu programistycznego. Powinno być to podsumowanie i praktyczne zweryfikowanie wiedzy programistycznej nabytej przez studentów na etapie licencjackim.
- Studenci powinni w trakcie tych zajęć przejść przez pełen cykl produkcji oprogramowania: od specyfikacji wymagań po testowanie (ze względów organizacyjnych zagadnienia takie jak pielęgnacja oprogramowania czy szkolenie użytkowników, choć ważne, są pomijane lub przedstawiane w bardzo ograniczonym zakresie).
- Zaleca się, by studenci w trakcie prac nad projektem poznawali (sami) nowe technologie konieczne do realizacji zadania. Faza pozyskiwania specyfikacji powinna być jak najbardziej zbliżona do rzeczywistości (tzn. studenci nie powinni dostawać gotowej specyfikacji wymagań, lecz stworzyć ją na podstawie rozmów z prowadzącym zajęcia — pełniącym wówczas rolę klienta).
- W ramach zajęć studenci wykonują złożony projekt programistyczny zgodnie ze standardami inżynierii oprogramowania. Przewiduje się, że w każdej grupie po wspólnym wykonaniu projektu i specyfikacji projektowej następuje podział zadań miedzy uczestników grupy i wykonanie oprogramowania poszczególnych zadań.
- Etap końcowy polega na uruchomieniu zadania, wykonaniu testowania i wdrożeniu projektu.
WYMAGANIA:
- Stworzenie specyfikacji wymagań na podstawie kontaktów z użytkownikiem.
- Przygotowanie dokumentacji projektowej.
- Zaimplementowanie systemu połączone z tworzeniem odpowiedniej dokumentacji (technicznej i użytkownika).
- Przeprowadzenie testów.
DOKUMENTACJA TECHNICZNA:
- Diagram UML Projektu
- Niezbędny Diagram Przypadków użycia.
- Opcjonalny Diagram ERD jeśli jest baza danych.
- Opcjonalny wygenerowany diagram klas z IDE.
- Niezbędny Diagram Wdrożeniowy.
- Dokumentacja instalacji środowiska
- Lista wykorzystanych języków, IDE, pluginów itp.Lista kroków w punktach jak wykonać instalacje konkretnych składników (kompilator, baza danych, pluginy, środowisko uruchomieniowe itp.) poparte linkami oraz zdjęciami z instalacji. np.
- Instalacja IDE (np. NetBeans, Eclipse, JetBrains, Visual studio)
- Konfiguracja IDE i instalacja wtyczek do kompilatora (np. ReSharper dla Visual Studio,jigloo dla eclipse itp. według potrzeb).
- Instalacja i konfiguracja odpowiednich frameworków i Serwerów Aplikacyjnych
- Inne niezbędne kroki konieczne do samodzielnego postawienia środowiska wymaganego do skompilowania utworzonego przez autora kodu oraz jego uruchomienia.
- Wygenerowana dokumentacja z kodu (np. javadoc jeśli java, dypodc jeśli python itp.). Dokumentacja dla kluczowych klas, metod i pól projektu.
Dokumentacja użytkownika
Jak korzystać z aplikacji?
Opis kluczowych funkcjonalności. Zdjęcia z waszej aplikacji wraz z opisem.
Spis błędów.
Lista nietypowych zachowań systemu wraz z krótkim opisem.
Opis niezgodności projektu z założonymi Kryteriami Akceptacji wraz z uzasadnieniem.
WYMAGANIA TECHNICZNE:
- Przygotowanie aplikacji realizującej jeden z dostępnych tematów;
- Aplikacja powinna posiadać interfejs użytkownika pozwalający na dowolne modyfikowanie zbioru danych wejściowych (tj. liczba i rozłożenie sensorów/POI, poziom baterii, zasięg widoczności, model komunikacji, itp.). Dodatkowo, aplikacja powinna obsługiwać wczytywanie tych parametrów z odpowiednio przygotowanego pliku tekstowego;
- W trakcie symulacji należy wizualizować działanie sieci sensorowej zaznaczając aktywne/nieaktywne sensory, wybraną ścieżkę komunikacji z węzłem centralnym, itp.
- Wynikiem działania aplikacji powinien być plik tekstowy zawierający wyniki symulacji, tj. liczba aktywnych sensorów, poziom baterii, liczba oraz lista widocznych sąsiadów, aktualnym poziom pokrycia (Q, Coverage), itp.;
- Dodatkowo, dane powinny być zwizualizowane w postaci odpowiednio przygotowanych wykresów.
TEMATY PROJEKTÓW:
- Metody rozwiązywania problemu maksymalizacji czasu życia sieci sensorowej – metody dokładne (podziału i ograniczeń, programowanie liniowe) [WWW];
- Metody rozwiązywania problemu maksymalizacji czasu życia sieci sensorowej – metody heurystyczne i metaheurystyczne (symulowane wyżarzanie, algorytmy genetyczne) [WWW];
- Metody rozwiązywania problemu maksymalizacji czasu życia sieci sensorowej – metody heurystyczne i metaheurystyczne (automaty uczące i komórkowe) [WWW];
- Wykorzystanie teorii gier w procesie maksymalizacji czasu życia sieci sensorowej [WWW];
- Wykorzystanie automatów komórkowych w procesie maksymalizacji czasu życia sieci sensorowej [WWW];
- Analiza i symulacja wybranych protokołów routingu w sieciach sensorowych [WWW];
- Korelacja węzłów sieci sensorowej i ich komunikacja z węzłem centralnym w procesie transmisji danych pomiarowych [WWW];