Organizacja zajęć projektu z Podstaw inżynierii programowania / Inżynierii programowania
- Projekty wykonywane są w grupach 3-4 osobowych. Inna liczebność członków zespołu projektowego wymaga zgody Prowadzącego.
- Każdy zespół projektowy wybiera swojego team leadera, który odpowiada za koordynację pracy w zespole. Team leader odpowiada za kontakt z Prowadzącym w imieniu zespołu osobiście, bądź może do tego wyznaczyć inną osobę.
- Każdy zespół musi dotrzymywać terminów wg Harmonogramu opisanego poniżej.
- Na zaliczenie projektu musi stawić się cały zespół.
- Przebieg zaliczenia projektu odbywa się wg następujących punktów:
- Przedstawienie tematyki projektu i założeń projektowych
- Prezentacja aplikacji wraz z przeprowadzonymi testami
- Przedstawienie sposobu implementacji poszczególnych elementów aplikacji (kod źródłowy, użyte biblioteki, narzędzia itp.)
- Obrona projektu - każdy z członków zespołu referuje część aplikacji wykonaną przez siebie
- Złożenie sprawozdania - dokumentacja techniczna w formie papierowej oraz dokumentacja wraz z kodami źródłowymi w wersji elektronicznej (wysłanej na wskazanego maila)
Harmonogram kamieni milowych:
- Do końca października 2021 r. - Zgłoszenie zespołów projektowych z wskazaniem Team Leadera. Zgłoszenie tematów projektów (tematy MUSZĄ być unikalne). Przygotowanie wstępnej listy funkcjonalności projektu (zapisy będą w dokumencie do którego link zostanie przysłany mailem)
- Do końca listopada 2021 - Przygotowanie prezentacji z pełnymi założeniami projektu: Treść założeń, schemat baz danych (jeśli dotyczy), wykorzystywane technologie, diagramy UML.
- Ostatnie zajęcia w semestrze - I termin oddania projektu
Wymagania dotyczące projektu
- Projekt musi być zaimplementowany w obiektowym, nieskryptowym języku programowania.
- Konkretny język programowania pozostaje do wyboru zespołu projektowego
- Tematy projektu powinny dotyczyć wykonania systemu zarządzania firmą lub organizacją (np. hotel, akademik, zajezdnia autobusowa itp.)
- Wykonanie zadania wymaga przeprowadzenia typowych czynności realizowanych w ramach projektu tworzenia systemu informatycznego: specyfikacji wymagań, projektowania architektury oprogramowania, implementacji, opracowania testów oraz dostosowania systemu do potrzeb klienta.
- W ramach projektu i implementacji należy uwzględniać poniższe wymagania:
- przynajmniej po 2 różne wzorce projektowe konstrukcyjne, strukturalne, czynnościowe (użycie konkretnego wzorca powinno być uzasadnione konkretną funkcjonalnością projektu. Nie tworzymy "sztucznych" zastosowań),
- stosujemy zasady "czystego kodu" - SOLID, DRY, KISS
- korzystamy z w miarę najnowszych wersji języków programowania (tzn., że korzystamy z dobrodziejstw nowszych wersji - dla przykładu: korzystanie z Javy 8, 11, 13 i brak stosowania Optional, LocalDateTime, Stream itp nie spełnia założeń)
- dozwolone i mile widziane jest stosowanie z mechanizmów ORM
- stosujemy dziedziczenia, polimorfizm itd.
- mile widziane AOP (Aspect Oriented Programming)
- Każdy projekt musi mieć zaimplementowane testy jednostkowe oraz integracyjne
Przykładowe tematy
- Projekt i implementacja systemu CRM (zarządzanie danymi klientów, kampanie reklamowe, zarządzanie historią spraw klientów itp. itd.)
- Projekt i implementacja systemu do zarządzania firmą transportową (samochody, kierowcy, zlecenia, raporty itp. itd.)
- Projekt i implementacja systemu WMS (zarządzanie magazynem - generowanie dokumentów magazynowych, inwentaryzacja, lokalizacja elementów w magazynie itp. itd.)
- .................... (rozważam Państwa propozycje. W razie potrzeby wymyślę kolejne)