Temat: Analiza obiektowa
Marek Kubiś:
Jarek Żeliński:
to jaki "zestaw czynników pierwszych" widzisz dla analityka?
Na poziomie ogółu: biblioteka ITIL, norma ISO 20000 (w szczególności Part 2: Code of practice). Na poziomie szczegółu wspomniane przez Panią Katarzynę wzorce projektowania (SRP, OCP, LSP, ISP, ..) czy może trafniej nazywając to o co chodzi (aby nie narażać się na pomyłkę z wzorcami projektowymi) - best practises.
powyższe nie jest żadną listą elementów składowych czy wzorców a listą dobrych praktyk i zaleceń
nie upoważnia ale tez i nie zabrania,
dlatego napisałem o samoograniczaniu. ;-)
jak tu rozumieć samoograniczanie? Bo ja raczej widzę samoograniczenie "aby programista nie wymyślał biznesu jeżeli go nie zna"... i drugie poważniejsze "aby nikt sam sobie nie stawiał wymagań a potem ich nie akceptował"
z mojego doświadczenia mogę powiedzieć, że kluczowym problemem jaki obserwuję jest częste upraszczanie przez developerów modeli logiki bo dzięki temu mają "mniej klepania"
To "typowy" problem w każdej bez wyjątku pracy z ludźmi.
wiec trzeba z nim walczyć :)
po drugie nie potrafią stosować metod obiektowych
Zmienić
nauczyć ich? jestem za :)
Po trzecie pewne konstrukcje są konsekwencją logiki biznesowej, której developer najczęściej nie zna (nie jest ekspertem od zarządzania i ma prawo jej nie rozumieć) i nie musi.
??? Na jakiej podstawie oczekiwać realizacji logiki biznesowej kiedy ktoś jej nie zna?
no właśnie, więc analityk po stronie zamawiającego ma robotę... zna się na tym i ma dać opis tej logiki najlepiej w postaci "kompatybilnej" z narzędziami develelopera.
A konstrukcje zależne od logiki biznesowej to typowy błąd projektanta w zakresie Interface Segregation Principle (ISP).
to kiepski projektant... i nie dyskutujemy tu i ISP, tę zasadę także znam.
Tak samo jak murarz stawiający dom, który ma wykonać projekt a nie dyskutować o tym gdzie jest ścianka działowa pomiędzy kuchnią a kibelkiem bo "on by ją wstawił gdzie indziej"...
Ale my nie dyskutujemy o tym, że murarz dyskutuje gdzie ma być ścianka działowa, bo taką dyskusję ucina się krótko, tylko raczej o tym, że ten murarz jak wykonuje tę ściankę to powinien wiedzieć czy ma użyć płytę karton-gips, czy cegłę i w tym kontekście kto ma mu tę informację przekazać: pani która zamieszka w tym mieszkaniu, agent nieruchomości lub ich przedstawiciel (nasz analityk) czy architekt/kierownik budowy (szef projektu IT, kierownik programistów). Ja uważam, że ten drugi.
architekt (dom tej Pani) to osoba, która po rozmowie z nią zaprojektowała dom i tę ściankę - to jego rola.
Jak udokumentować model biznesowy by był jednoznaczny jako zadanie implementacji dla developera?
Testami akceptacyjnymi.
Uuuuuuuu, to tylko badanie czarnej skrzynki, testy akceptacyjne jako metoda odbioru są bardzo dobre, jako metoda definiowania wymagań - najgorsza... bo nie wiem co dostanę dopóki nie dostanę.
Dawno temu Rosjanie kopiowali amerykańskie układy scalone metodą badania reakcji na bodźce elektryczne. To są właśnie przypadki użycia i testy akceptacyjne, ale oni oddali by dużo by dostać projekt logiki tych układów do ich wytworzenia ... nie mieli tych projektów z wiadomych powodów. Jako zamawiający wolę dać developerowi projekt logiki a przypadki użycia jako testy bo to pewniejsze, łatwiejsze i mniej ryzykowne a przede wszystkim mniej kosztowne (co potwierdza moja praktyka od lat): wycena i wytworzenie na bazie tylko przypadków użycia do wyceny na bazie projektu obiektowego ma się nie raz jak 10:1.
Nie rozumiem po skazywać developera na "badanie czarnej skrzynki" i kosztowne próby odtworzenia jej wnętrza, skoro to wnętrze jest znane: idę do klienta, modeluje to jak on pracuje, i daje na tacy developerowi już w postaci modelu dziedziny (i tylko to) i tak ma on kupę roboty z implementacją np. wymagań jakościowych czy GUI.
Ktoś kto opracowuje model biznesowy powinien koncentrować się na testach, które użyje aby prace odebrać.
z tym się nie zgodzę, to podejście "dostawcy". Ja uważam, że ktoś kto opracowuje model biznesowy powinien zadbać o to by był jak najwierniejszy i jak najtańszy w implementacji (czyli pozostawiający jak najmniej na błędy interpretacji wykonawcy).
Jeżeli dodatkowo zależy mu na tym aby można było projekt dalej kontynuować, rozwijać w określonym kierunku, to oceniać należy interfejs, a nie czy klasy są ładne (zasada Open Closed Principle, OCP).
nie widzę związku, "ładne klasy" (co to znaczy ładne?) to klucz do łatwości rozbudowy - zawsze, po drugie dobry projekt, także logiki, to projekt bazujący na interfejsach i nie widzę tu kolizji z tym co napisałem a nawet ma to - OCP- głęboki sens.
Jeżeli nie jest modelem biznesowym ani fizycznym to czym jest model logiczny i kto powinien za tę logikę odpowiadać?
Szef programistów.
a co on ma do zrozumienia biznesu klienta i jego sensu? Szef programistów odpowiada za implementację a nie za model biznesowy zamawiającego. No i o jaką logikę chodzi, bo logika biznesowa a logika architektury oprogramowania jako całości to dwie różne rzeczy. Jedyne co mają wspólnego to to, że logika biznesowa jest celem projektu z perspektywy zamawiającego i jest zawarta gdzieś w środku całości.
Padały tu różne zgrabne skróty: SRP, OCP, LSP, ISP ale to dobre praktyki i zalecenia analizy i projektowania obiektowego, wzorce projektowe to pewne sposoby (ale nie recepty) rozwiązywania pewnych typowych problemów. Większość z nich:
http://pl.wikipedia.org/wiki/Wzorzec_projektowy_(infor...
to wzorce stosowane w ogólnie pojętym programowaniu obiektowym, ale programowanie zawsze poprzedza (powinno) analiza problemu i projektowanie. Na etapie analizy większość tych wzorców nie ma zastosowania (np. obserwator czy pyłek) ale kilka jednak tak.
"Moje przesłanie" w tym tekście:
skoro logikę biznesową także "programuje się" (implementuje się) z użyciem obiektowych wzorców projektowych, to ideałem jest sytuacja by wskazać te wzorce, które wg. najlepszych praktyk są wykorzystywane do implementacji logiki biznesowej i uczynić z nich "klocki", na które należy na etapie analizy biznesowej rozłożyć problem. To się nazywa DDD czyli siedem wzorców spośród wielu do modelowania wymagań na logikę biznesową..
Korzyści są ogromne, bo "wycinamy" etap głuchego telefonu między Zamawiającym i wymaganiami w postaci prozy i tabel a developerem. Dając mu obiektowy model czegoś, czego tak na prawdę nie rozumie, unikam efektu głuchego telefonu bo opis prozą jest niestety bardzo niejednoznaczny i podatny na przekłamania (głuchy telefon).
Nigdy nie mogę zrozumieć, developerów, którzy uważają, że nikt poza nimi nie ma prawa robić modelu dziedziny (logiki biznesowej w postaci obiektowej)...