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