niedziela, 14 października 2012

Kalendarz na październik

Informacja dla entuzjastów inżynierii oprogramowania o nadchodzących wydarzeniach (które współorganizujemy):

Niekomercyjne:

- Warsjawa - 27.10.2012 warsztaty z zakresu Specification by Example oraz Behavior Driven Development

Podczas warsztatów będziemy demonstrować 2 uzupełniające się podejścia do modelowania wymagań: Behavior Driven Developemnt oraz Specification by Example. Dodatkowo nawiążemy do wynikającego z nich modelowania domeny z wykorzystaniem Building Blocks DDD. Przedstawimy również własne podejście do strategicznego testowania: mapowania rodzajów testów na warstwy aplikacji.

Od strony warsztatowej będziemy pracować nad 3-poziomowymi wykonywalnymi specyfikacjami:
3. Wykonywalne specyfikacje (cele biznesowe)
2. Wykonywalny flow (np. User Story)
1. Automatyzacja interakcji z systemem (abstrakcja nad ciężkimi w utrzymaniu skryptami testowymi: Agenty oparte na Selenium i Spring Remoting)

Podczas warsztatów będziemy pracować na istniejącym systemie demonstracyjnym: http://bottega.com.pl/ddd-cqrs-sample-project dążąc do modelowania wymagań na 2 i 3 poziomie wraz z implementacją wykonywalnych scenariuszy i specyfikacji z wykorzystaniem JBehave.

Komercyjne:
-Szkolenie Domain Driven Design - 22-24.10.2012
strona wydarzenia w ramach JDD
(uczestnictwo w konferencji jest obligatoryjne:)


- Java Developers Day - 25.10.2012 Prezentacja “Ports & Adapters – adaptacyjna architektura na miarę potrzeb”
Architektura Ports & Adapters jest syntezą współczesnej wiedzy na
temat rozwiązań stosowanych w systemach enterprise.

W jej giętkim mikro-jądrze znajdziemy miejsce na DDD, TDD, CqRS, Event
Sourcing i pluginy.
Jej twarda skorupa Portów oferuje skalowanie oraz zapewnia SAO Ready.
Natomiast zewnętrzna aura Adapterów umożliwia integrację przy pomocy:
receptorów zdarzeń, Sagi Biznesowej, Pipes and Filters, REST, WS
wspierając strategię rynkową multiscreen.

Całość w zintegrowanej formie, gdzie "wszystko jest na miejscu i
wszystko ma swoje miejsce".

Podczas prezentacji będę chciał przekonać Was do podejścia, w których wyłaniamy formę architektury systemu oraz aplikacji z treści przykładowych scenariuszy i wymagań. Wykorzystamy w tym celu techniki myślenia wizualnego oraz Building Blocks wchodzące w skład architektury Ports&Adapters.

wtorek, 9 października 2012

ORM - "The Vietnam of Computer Science"

...cytat Teda Newarda rozbawił mnie szczerze - ale to śmiech przez łzy. Martin Fowler natomiast pyta: Ale co w zamian?

Możemy uciec się do rozwiązań typu Datoms (Encja, Atrybut, Wartość, Timestamp) lub bardziej "semantycznego" Event Sorcingu.

Jednak są to rozwiązania specyficznych klas problemów (podróże w czasie, wektory uczące dla Sztucznych Sieci Neuronowych) lub problemów skali Googl/Twitter/Facebbok - mimo, że nie pracujemy w tych firmach, to lubimy się na nie powoływać w swych elaboratach architektonicznych:)

Natomiast w typowych systemach biznesowych wystarczy przyjęcie prostych i racjonalnych zasad doboru odpowiedniego młotka do odpowiedniej klasy problemu:
  • Obiekty persystentne to Agregaty, których granice są wyznaczane wg dobrych praktyk DDD: np. modelowanie niezmienników oraz modelowanie jednostki zmiany biznesowej
  • Do persystencji Agregatów używamy ORM, ponieważ dobrze zakreślone granice agregatów (w tym unikanie zbędnych połączeń) rozwiązują większość problemów
  • Do wydajnego odczytu danych przekrojowych nie używamy ORM - nie służą do tego typu zadań 
Proste, łatwe i... przyjemne:)
W razie problemów z wydajnością warto spróbować różnych form separacji z podejścia: Command-query Responsibility Segregation.

//==========================

Więcej w archiwalnym poście, natomiast rozwinięcie w najbliższym numerze programistamag.pl