Repozytorium projektu na przedmiot Inżynieria Oprogramowania na III semestrze kierunku Informatyki Technicznej na uczelni AGH
Agile to sposób pracy nad projektem który łączy różne cechy które przynoszą widoczne efekty podczas pracy. Wszystkie cechy nawzajem się przenikają i wpewnym stopniu uzupełniają.
Sprinty czyli małe bloki które należy wykonać.
Feature wykonanie każdego sprintu przynosi rozwój projektu.
Samodzielność zespołu każdy w wystarczającym stopniu może decydować jak ma wyglądać projekt i zgodnie z swoją intuicją go modyfikować.
Elastyczność czyli każdy wykonuje swoje elementy w wygodnym dla niego czasie.
Repozytorium kodu to narzędzie programisty, umożliwiające automatyczne wykrywanie zmian w plikach i automatyczne dokonywanie aktualizacji. Każdy update repozytorium kodu jest opisywany wiadomością, a historia zmian oraz ich autorzy są odpowiednio wyszczególnieni. Dzięki temu możliwe jest łatwe znalezienie potencjalnie występujących problemów oraz przywrócenie kodu do poprzedniego stanu. Wykorzystanie repozytorium dodatkowo sprzyja pracy w zespole, ułatwia podział projektu na mniejsze bezkolizyjne części.
Git to darmowy, rozproszony system kontroli wersji o otwartym kodzie źródłowym, zaprojektowany do obsługi wszystkiego, od małych do bardzo dużych projektów, szybko i wydajnie. Pozwala na tworzenie gałęzi oraz ich łaczenie, umożliwia prace offline, posiada pełne wsparcie dla obecnych protokołów sieciowych (np. HTTP). Co najważniejsze, nie zapamiętuje zmian pomiędzy kolejnymi wersjami kodu, a całe ich obrazy (snapshots).
Github to hostingowy serwis internetowy przeznaczony dla projektów programistycznych wykorzystujący system kontroli wersji Git. Pozwala na synchronizacje repozytorium pomiędzy kilkoma deweloperami, pobieranie oraz publikowanie kodu, pull request'y, oraz webhooki (wykrozystany do automatycznego budowania dokumantacji). Dodatkowo serwis jest darmowy dla zwykłych użytkowników oraz posiada bardzo dobrą dokumentację. Jest to obecnie najpopularniszy serwis do hostingu repozytorium.
git clone [url]
pobranie kodu żródłowego wraz z kontrolą wersjigit pull origin dev
pobranie zmian na gałęzi devgit push origin [branch]
wysłanie nowej funkcjonalności(gałęzi) na zdalne repozytoriumgit add .
dodanie zmiangit commit -m "informacje o zmianie"
dodanie nowego commit'u wraz z wiadomosciagit checkout [branch]
zmiana gałęzigit branch [name]
dodanie nowej gałęzi
- główna gałąź to "dev", nowe funkcjonalności dodajemy na nowe gałęzi a następnie dołączamy do dev'a (PR)
- rozpoczynająć pracę pobieramy najnowszą wersję oprogramowania (git clone)
- rozwiązujemy konflikty przy pomocy internetowego edytora
- dodaliśmy plik .gitignore aby nie synchronizować zbędnych plików
Ciągła integracja (CI) to praktyka programistyczna, która rozwiązuje problem budowania, testowania oraz integracji kodu. Jej zasadniczym elementem jest pojedyncze, współdzielone repozytorium kodu źródłowego, do którego dostęp powinien posiadać każdy programista rozwijający produkt.
Przy pomocy testów oraz zdalnego repozytorium staraliśmy się jak najczęściej integrować naszą pracę. Po rozwinięciu funkcjonalności oraz skompilowaniu projektu, przeprowadzaliśmy testy a następnie dodawaliśmy zmiany na nową gałąź. Następnie integrowaliśmy nową gałąź z główną "dev", pobieraliśmy nowy kod i kompilowaliśmy.
TDD jest to technika tworzenia oprogramowania, zaliczana do metod zwinnych, polega na:
- pisaniu testów sprawdzających daną funkcjonalność
- implementacji danej funkcjonalności do momentu przejścia testu
- refaktoryzacji kodu aby spełniał oczekiwane standardy
Stworzyliśmy szkielet projektu, klas i metod, napisaliśmy testy, na początek wszystkie były negatywne :
- implementacja musi przechodzić test jednostkowy
- po przejściu testu jednostkowego następowała refaktoryzacja kodu
- wykorzystanie testów usprawniło iteracyjne wytwarzanie oprogramowania
- metodyka testowania pozwoliła na uniknięcie wielu niechcianych błędów
Standardy kodowania poprawiają czytelność kodu, a ich stoswanie jest dobrym nawykiem. Tworzenie projektu w Visual studio w znaczący sposób ułatwia uzyskania dużej przejrzystości kodu, oraz uzyskania takiego same stylu pisania dla wszystkich osób biorących udział w projekcie. Możemy zauważyć, że wszystkie klay zaczynają się od dużych liter, a zmienne zawsze od małych. Wszystkie nazwy zmiennych, klas, plików są dobierane tak aby tworzony kod był przejrzysty i stosunkowo łatwy do zrozumienia dodatkowo stosowano komentarze dla uzyskania jeszcze większej przejrzystośći.
Dokumentacja generuje się automatycznie podczas każdego PR na gałąź dev (folder ./docs), do automatyzacji tego procesu wykorzystano usługę "readthedocs" oraz narzędzie "sphinx".
Dokumentacja : https://e-bank.readthedocs.io/pl/latest/
Inspekcja kodu i refaktoryzacja są elementami które nie nie rozwijają samego projektu, ale znacznie ułatwiają jego tworzenie i rozwijanie. Dlatego już na etapie pisania kodu starano się jej dokonywać na bieżaco, nawet jeśli nie uzyskano zadowalającego efektu podcza samego pisania wracano później już do gotowych fragmentów kodu i porządkowano go tak aby nadal był przejrzysty.