Dobry start dla początkujących programistów - wprowadzenie do współczesnej inżynierii oprogramowania

Kod: Craft-practices-start
Kategoria: Craftsmanship
Forma: 50% wykłady / 50% warsztaty
Czas trwania: 3 dni
Grupa docelowa: developerzy
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

Program szkolenia został zaprojektowany z myślą o początkujących programistach lub doświadczonych programistach migrujących z języków nieobiektowych.

Celem szkolenia jest szybkie i efektywne wprowadzenie w świat programowania skupiając się na tych aspektach, które są szczególnie istotne w codziennej praktyce.

Rzetelne ogólne podstawy dają swobodę w uczeniu się szczególnych technologii i frameworków, ponieważ są uniwersalne.

Wyróżniki szkolenia

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • Tylko najważniejsze tematy, bez certyfikatowych kruczków
  • Szersze spojrzenie pozwalające ocenić: co, kiedy i po co
  • Podstawy, które pozwalają zrozumieć wynikające z nich zagadnienia zaawansowane

Program Szkolenia

Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.

  1. Techniki Object Oriented Design.
    1. Analiza Paradygmatu Object oriented i jego poprawna interpretacja.
    2. Ukierunkowanie myślenia w stylu OO.
    3. Podstawowe Building Blocks
      1. Obiekty
      2. Struktury danych
      3. Procedury
      4. Funkcje
      5. Implementacja (i emulacja) w językach obiektowych
    4. Najlepsze praktyki i pułapki.
      1. Wady naiwnego modelowania rzeczowniki-czasowniki
      2. Modelowanie hermetycznych agregatów - model behawioralny
      3. Modelowanie niezmienników.
      4. Modelowanie czasu jako jednego z głównych czynników złożoności esencjonalnej
    5. Couping - 3 rodzaje
      1. Call
      2. Contain
      3. Create
    6. GRASP - General Responsibility Assignment Software Patterns.
    7. SOLID
      1. Single Responsibility Principle (SRP)
      2. Open/Closed Principle (OCP)
      3. Liskov Substitution Principle (LSP)
      4. Dependency Inversion Principle (DIP)
      5. Interface Segregation Principle (ISP).
    8. Antywzorce i typowe pułapki
      1. Błędy dziedziczenia
      2. Typowe błędy w modelowaniu obiektowym
        1. Superklasy
        2. Wyciąganie "przed nawias"
        3. Struktury danych zamiast agentów
      3. Code smell – wykrywanie ok 20 zapachów kodu
      4. Techniki refaktoryzacji
  2. Zasady czystego kodu
    1. Nazewnictwo
    2. Przypisywanie odpowiedzialności
    3. Obsługa błędów
    4. Typowe błędy
    5. Zarządzanie widocznością
    6. Ukrywanie niewiedzy
    7. Powtórzenia są złe o ile nie są dobre
  3. Wzorce implementacyjne
    1. Zasady pakietowania
      1. Jedna klasa publiczna na pakiet - kiedy ma to sens
      2. Moduły czy warstwy
    2. Konwencje kodowania
    3. Obsługa wyjątków
      1. Checked, Unchecked albo status - czym się kierować
  4. Podstawowe wzorce projektowe w praktycznych przykładach do codziennego wykorzystania
    1. Strategy
      1. Podejście funkcyjne
      2. Open-closed Principle
    2. Template Method
    3. Factory Idiom
      1. Zarządzanie couplingiem
    4. Chain of Responsibility i jego modyfikacje
      1. Zastosowanie do walidacji
    5. State Machine
  5. Podstawowe architektury aplikacyjne
    1. Rozróżnienie architektury aplikacyjnej od systemowej
    2. Design of Deisgn
    3. Podejście warstwowe
      1. Różnice pomiędzy Layer a Tier
      2. Ogólny podział - 3I
      3. Interfejsy
      4. Interakcje
      5. Integracja
    4. Warstwa prezentacji
      1. MVC, MVP, MVVM
      2. Front Controler i Page Controler
      3. DTO - zastosowanie
      4. Ekrany komponentowe
    5. Podział na logikę aplikacji i logikę domenową
      1. Logika aplikacji
        1. Modelowanie Use Case/User Story
        2. Stanowo czy bezstanowo
        3. Problemy projektowania API modułu
      2. Logika domenowa i Techniki Domain Driven Design - Building Blocks
        1. Agregaty, Encje, Value Objects
        2. Serwisy Domenowe, Polityki, Specyfikacje
        3. Fabryki, Repozytoria
  6. Praktyczne wykorzystanie technik Inversion of Control do budowy frameworków i systemów – na przykładzie Spring/EJB/Seam (do wyboru)
    1. Dependency Injection – podstawowa technika IoC
      1. Wykorzystanie zamiast wzorców fabrykujących
      2. Budowanie konkretnych Strategii, Dekoratorów itd. w zależności od stanu aplikacji (kontekst, konfiguracja)
      3. Otwartość na rozbudowę dzięki wzorcom Strategii
    2. Systemy sterowane zdarzeniami – silniejsza technika IoC
      1. Użycie do tworzenie rozszerzalnych architektur opartych o pluginy
    3. Aspect Oriented Programming
      1. Wstęp do AOP
      2. Przykłady zastosowania AOP
  7. Testability – projektowanie architektur aplikacji zorientowanych na testy
    1. Strategiczne testowanie
      1. Problem eksplozji kombinatorycznej przypadków testowych
      2. Mapowanie warstw aplikacji na piramidę testów
    2. Strategia
      1. Warstwa domenowa - testowanie jednostkowe
      2. Warstwa serwisów - testowanie end2end
    3. Dążenie do uruchamiania logiki poza serwerem – zwiększanie produktywności, redukcja czasu używanego na redeploy
    4. Zagadnienia podatności architektury na testy: problemy i pułapki
    5. Techniki testowania jednostkowego: dummy, fake, stub, mock
    6. Narzędzia testowania jednostkowego i integracyjnego (xUnit, Mockito)
    7. 3 poziomy testów
      1. Specification by Example - cele biznesowe
      2. Flow - User Story
      3. Automatyzacja interakcji z UI - Agenty będące abstrakcją nad skryptem testowym


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Materiały związane ze szkoleniem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Zapytaj o szkolenie

Imię i nazwisko:
Firma:
E-mail/Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń