Opis szkolenia

Jesteśmy pasjonatami Czystego Kodu, podejścia Software Craftsmanship oraz Programowania Ekstremalnego, które przez wiele lat przyświecało nam w trakcie wytwarzania oprogramowania. Szkolenie to jest esencją kluczowych aspektów, reguł, zasad i wzorców nowoczesnej inżynierii oprogramowania opartej o wyżej wymienione podejścia, które chcemy Państwu przekazać w formie warsztatów programowania maksymalnie nastawionych na praktykę.

Kandydaci

Na szkolenie zapraszamy osoby z podstawową znajomością języka Java. Szkolenie będzie formą wprowadzenia do kluczowych aspektów nowoczesnej inżynierii oprogramowania.

Czas trwania szkolenia

Szkolenie będzie trwało w sumie 35h i zostanie przeprowadzone w dni ustalone z firmą - zleceniodawcą. Szkolenie może zostać zorganizowane zarówno w dni powszednie jak i w dni weekendowe.

Miejsce szkolenia

Szkolenie odbędzie się w Siedzibie firmy - zleceniodawcy lub w Gdańskim Parku Naukowo-Technologicznym. Istnieje również możliwość organizacji szkolenia poza Trójmiastem

Termin szkolenia

Szkolenie odbędzie się w terminie ustalonym z firmą - zleceniodawcą

Organizacja szkolenia

Na szkolenie dostarczamy sprzęt komputerowy z zainstalowanym i skonfigurowanym środowiskiem oraz narzędziami potrzebnymi do przeprowadzenia szkolenia. Po stronie zleceniodawcy pozostaje kwestia udostępnienia stosownej sali oraz ewentualny catering.

Szczegóły szkolenia

Kurs podzielony jest na część teoretyczną i praktyczną. Każdy rodzaj zagadnienia jest wstępnie omawiany przez prowadzącego a następnie grupa przechodzi do ćwiczeń praktycznych (średnio 25% teoria, 75% praktyka). Podczas ćwiczeń praktycznych przeprowadzane są sesje programistyczne z aktywnym udziałem prowadzącego (live coding). Skupiamy się na praktycznym poznaniu najczęściej wykorzystywanych zagadnień związanych z Software Craftsmanship, Czystym Kodem oraz Programowaniem Ekstremalnym.

Grupa pracuje na przygotowanym przez prowadzących szkielecie modułu, do którego dodawane są poszczególne funkcjonalności zgodnie z regułami, aspektami i zasadami poruszanymi podczas części teoretycznej. Każda sesja programistyczna (a jest ich kilka) kończy się code review przy współudziale grupy oraz prowadzącego.

Narzędzia, które wykorzystujemy podczas kursu - IntelliJ Idea, Git, Gerrit, Sonar, Cobertura/Jacoco, Jenkins, Jira.

Program

  • Wstęp do Software Craftsmanship
  • Aspekty obiektowości
  • Związki pomiędzy obiektami
  • Atrybuty jakościowe oprogramowania - architektoniczne oraz biznesowe
    • Modyfikowalność
    • Dostępność
    • Wydajność
    • Testowalność
    • Skalowalność
    • Bezpieczeństwo
    • Strategie uzyskiwania atrybutów jakościowych
  • Code Smell
  • Principles of Object Oriented Design
    • SOLID
      • Single Responsibility Principle
      • Open-closed Principle
      • Liskov Substitution Principle
      • Interface Segregation Principle
    • Cohesion
      • Release Reuse Equivalency Principle
      • Common Closure Principle
      • Common Reuse Principle
    • Couplings
      • Acyclic Dependencies Principle
      • Stable Dependencies Principle
      • Stable Abstractions Principle
  • Zasady GRASP - General Responsibility Assignment Software Patterns
  • Clean Code
    • Nazywania klas, metod i zmiennych
    • Komentowanie kodu
    • Formatowanie kodu
    • Zasady dotyczące tworzenie klas i funkcji
    • Antysymetria danych i obiektów
    • Obsługa błędów i sytuacji wyjątkowych
    • Granice systemu - testy uczące, korzystanie z kodu innych firm
    • Odzielenie konstruowania systemu od używania
    • Separowanie problemów i Aspect-Oriented Programming
    • Testy jednostkowe
    • Live Demo - oczyszczanie kodu
  • Wzorce projektowe i architektoniczne
    • Gang of Four Patterns
    • Enterprise Application Architecture Patterns
    • Command-Query Responsibility Segregation
    • Hexagonal Architecture
    • Event Sourcing
    • Microkernel
    • Blackboard
    • Broker
  • Elementy Domain-Driven Design
    • Building Blocks of Model-Driven Design
  • Design by Contract
    • Wstęp do podejścia
    • Preconditions i Postconditions
    • Kowariancja i Kontrawariancja
    • Notacja i monitoring kontraktu
    • Design by Contract vs Liskov Substitution Principle
    • Koncepcja Design by Contract w Java
  • Automatyzacja testów
    • Testy jednostkowe
    • Test-Driven Development
    • Behaviour-Driven Development
    • Stubs, Mocks, Fakes
    • Biblioteka TestNG i JUnit
    • Code coverage

Jakie technologie poznasz?

Co zyskasz dodatkowo?

  • Certyfikat ukończenia kursu wraz z rekomendacją
  • Gadżet niespodziankę