Giter Site home page Giter Site logo

adrianpabiniak / e-bank Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kolols/e-bank

0.0 0.0 0.0 6.55 MB

Bank internetowy. Repozytorium projektu na przedmiot Inżynieria Oprogramowania na III semestrze kierunku Informatyki Technicznej na uczelni AGH

C++ 100.00%

e-bank's Introduction

e-bank

Repozytorium projektu na przedmiot Inżynieria Oprogramowania na III semestrze kierunku Informatyki Technicznej na uczelni AGH

Metodyka wytwarzania oprogramowania

Metodyka : Agile

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.

Alt text

Wykorzystanie repozytorium

Czy jest repozytorium

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.

Wykorzystany system kontroli wersji : Git

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).

Alt text

Wykorzystane zdalne repozytorium Git : github.com

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.

Alt text

W jaki sposób wykorzystaliśmy repozytorium ?

Hosting kodu źródłowego wraz z kontrolą wersji

Alt text

Rozproszne wytwarzanie oprogramowania przy pomocy gałęzi

Alt text

Łączenie gałęzi na zdalnym serwerze, system Pull Request'ów

Alt text

Najczęściej wykorzystywane komendy

  • git clone [url] pobranie kodu żródłowego wraz z kontrolą wersji
  • git pull origin dev pobranie zmian na gałęzi dev
  • git push origin [branch] wysłanie nowej funkcjonalności(gałęzi) na zdalne repozytorium
  • git add . dodanie zmian
  • git commit -m "informacje o zmianie" dodanie nowego commit'u wraz z wiadomoscia
  • git checkout [branch] zmiana gałęzi
  • git branch [name] dodanie nowej gałęzi

Dodatkowe założenia i wnioski

  • 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

Czym jest ciągła integracja

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.

Alt text

W jaki sposób wykorzystaliśmy ciągłą integrację ?

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.

Test-driven developement (TDD)

Czym jest TDD ?

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

Alt text

W jaki sposób wykorzystaliśmy TDD ?

Stworzyliśmy szkielet projektu, klas i metod, napisaliśmy testy, na początek wszystkie były negatywne :

Alt text

Następnie stopniowo wdrażaliśmy kolejne funkcjonalności, tak aby przechodziły testy :

Alt text

Na koniec procesu wytwarzania oprogramowania wszystkie testy zostały zdane :

Alt text

Dodatkowe założenia i wnioski

  • 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

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 kodu

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, refaktoryzacja

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. Alt text Alt text Alt text Alt text

e-bank's People

Contributors

antooni avatar kolols avatar adrianpabiniak avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.