~ Chinese Proverb ~
8 klasycznych technik programistycznych leżących u podstaw nowoczesnej inżynierii oprogramowania (Polish)
Sławomir Sobótka
Download slidesZdobycze współczesnej inżynierii oprogramowania są niczym innym jak syntezą sprawdzonych i ugruntowanych technik klasycznych. Przykładowo Domain Driven Design to profilowanie analizy i projektowania Object Oriented stricte na potrzeby systemów biznesowych. Command-query
Responsibility Segregation to naturalny wynik ewolucji klasycznych architektur warstwowych.
Niejednokrotnie bywa tek, że zespoły projektowe nie mogą pozwolić sobie na drastyczną zmianę metodyki tworzenia systemu obarczonego garbem historii.
Podczas prezentacji będę chciał przekonać uczestników, że o ile nagła zmiana metodyki może być kłopotliwa, to bez problemu możemy czerpać z DDD i CqRS poszczególne techniki po to aby metodą małych kroków zmieniać jakość kodu.
Myślą przewodnią prezentacji jest następująca teza: myślenie inżynieryjne (zdefiniujemy czym jest myślenie w stylu inżyniera) jest ważniejsze niż narzędzia i metodyki a brak tego stylu myślenia jest głównym powodem problemów technicznych w naszej branży.
Podczas prezentacji będą przedstawiane kolejne techniki programistyczne w odniesieniu do ich dosłownych odpowiedników ze świata inżynierii lądowej i mechaniki konstrukcyjnej. Innymi słowy będziemy inspirować się dokonaniami branży, które są nieco bardziej dojrzałe aby dostrzec, że pewne klasy problemów posiadają sprawdzone style rozwiązań.
Podczas prezentacji zostaną przedstawione następujące techniki programistyczne:
- adaptacja nieodpowiednich interfejsów: Value Objects jako adapter typów technicznych do koncepcji biznesowych; wpływa na testability
- modelowanie ról i dynamicznych odpowiedzialności obiektów; podejście Extension Objects i Role Object
- wariacja zachowań: Strategy Design Pattern jako odpowiednik funkcji; wpływ na testability
- coupling - epicentrum wstrząsów w projekcie. Teoria trzech rodzajów couplingu oraz jego hermetyzacja w fabrykach.
- zdarzenia - nie tylko kliknięcia w buttony. Zdarzenia jako część modelu biznesowego; wykorzystanie w celu uzyskania: skalowania, wydajności, decouplingu kontekstów, składowania modelu behawioralnego, budowy architektury pluginowej
- maszyna stanów - naturalny model dla wielu problemów biznesowych
- specyfikacje - jedyny racjonalny sposób na modelowania złożonych, dynamicznych reguł; wpływ na testability
- wizytator - sposób na instrukcje switch