piątek, 5 września 2008

Wszechświaty równoległe

Wszechświaty równoległe...
Starożytna idea, która jakiś czas temu została wskrzeszona dzięki M-teorii. Teorii gdzie w 11, 12, 13 albo nawet 26 wymiarowej przestrzeni strun są rozpięte membrany. Brany "wiszące" w hiperprzestrzeni mogą w szczególności być dobrze znanymi nam 4-wymiarowymi wszechświatami rządzącymi się odrębnymi prawami przyrody. Brany mogą się zderzać/zlepiać niczym mokre gacie suszące się na równoległych sznurkach. Takie okresowe spotkania gaci wiążą się z pewnymi ciekawymi (i dosyć istotnymi z punku widzenia nagich małp biegających po trzecim kamieniu od słońca na peryferiach jakiejś prowincjonalnej galaktyki) zdarzeniami: zetknięcie dwóch bran to kolaps wszechświatów a następujące po nim oderwanie - wielki wybuch. I tak nieustannie... "A skądże to, jakże to, czemu tak gna?"

Mimo, że wiedzeni ciekawością póki co nie możemy (i być może nigdy nie będziemy mogli) zobaczyć membran rozpiętych na wielowymiarowej przestrzeni to jednak nie wszystko stracone...

Przecież nie ma takiego kuriozum, którego nie można by uświadczyć w programowaniu:)


Ostatnio było o kolejności. Kontynuując temat złej kolejności prowadzącej do paranoi czas na "GUI driven development". Co się dzieje, gdy zaczniemy od projektu ekranów (zwanego dumnie analizą)? Rozdzielenie ekranów pomiędzy programistów i wydanie rozkazu: RÓB (mylić z RUP) skutkuje tym, że każdy drąży swoją własną "studnię". Studnię, która schodzi w dół przez wszystkie warstwy: warstwę prezentacji (formularz i logika widoku), warstwę logiki biznesowej aż do persystencji i bazy danych (którą możemy niestety już mieć).

Czym to skutkuje? Każda studnia jest niezależnym wszechświatem równoległym - z własnym stylem, własną estetyką i własnym kodem biznesowym.

Kodem biznesowym, który jest powielany, ponieważ każdy jest tak zajęty kopaniem swojej studni, że nie ma czasu aby ogarnąć kod studni drążonych obok. Nie ma czasu ani co gorsza zasobów mentalnych - ograniczeń pojemności poznawczej nie przeskoczymy. Klapki na oczy, kilof w dłoń, kokodżambo i do przodu - yy właściwie to do dołu. Oczywiście zmiany w jednej studni są niespójne z działaniem innej więc mamy bugi. Te najbardziej paskudne - biznesowe, bo techniczne można łatwo zdiagnozować (działa albo nie).

GUI oczywiście się zmienia więc spaghetti nieuchronnie rośnie ponieważ ekrany nigdy nie są całkowicie niezależne. Logika biznesowa zmienią się nie mniej zatem mamy wiele miejsc na wykazanie się w refaktoringu tego samego:)


Po latach błędów i wypaczeń z odsieczą przychodzi na szczęście Domain Driven Design. Racjonalna kolejność nakazuje aby najpierw zająć się modelem domenowym. GUI jest jedynie zestawem perspektyw, które prezentują jakieś aspekty modelu domenowego. Więc zamiast studni mamy różne "okulary" przez które patrzymy na to samo - bez powielania.


//=========================
Analizowanie poprzez projektowanie ekranów jest oczywiście kuszące. Nie wymaga praktycznie żadnego skila (UML jest dla nerdów). Narysować ekran potrafi każdy. Zrozumieć też - klient szczególnie.

Brak komentarzy: