Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Microsoft obiektowo - Using Models within the Development...

Od pewnego czasu śledzę stronę Using Models within the Development Process:
http://msdn.microsoft.com/pl-pl/library/dd409423%28v=V...

Paradoksalnie jak śledzę treść dokumentacji jakie widuje w projektach mam wrażenie,że to inny świat - dlaczego wiele firm programistycznych nie stosuje takich metod pracy skoro są zalecane nawet nawet przez dostawców narzędzi programistycznych?

Od siebie mogę powiedzieć, że tak właśnie (nie licząc kosmetycznych różnic) prowadzę analizy wymagań i metodyka sprawdza się doskonale...

konto usunięte

Temat: Microsoft obiektowo - Using Models within the Development...

Bo nikt nie jest tym zainteresowany?
Bo nie ma ogniwa łączącego programistę z "juzerem"?
Programista: dobra, napisze coś potem...
Użytkownik: dobra, dobra, byleby działało...

Modelowanie naprawdę się przydaje, tylko trzeba tego używać (w dyskusji, w generacji kodu, w rozliczeniu pracy, w estymatach), a nie "czytać" - jak to wielu myśli.
Mateusz Kurleto

Mateusz Kurleto Szukamy wybitnych
talentów do
świetnego zespołu IT
w Gdańsku

Temat: Microsoft obiektowo - Using Models within the Development...

Nie wiem dlaczego wiele firm programistycznych nie używa, mogę odpowiedzieć dlaczego moja używa. A sprawa jest prosta.

Modele opisane w artykule są często elementem dokumentacji wymagań, jeśli jest prowadzona i dostarczana przez klienta, jeśli nie jest to w miarę niskim kosztem potrafimy oszacować ilość potrzebnych przypadków użycia, a potem z nich na podstawie metodyki Use Case Points Estimation i doświadczenia organizacji (do dobrania odpowiednich parametrów) potrafię oszacować pracochłonność.

Dlaczego modeluję dalej? Poza wymagania? Dlatego, że szybciej i taniej robi się zmiany w modelach niż w kodzie źródłowym. Dla przykładu:

implementacja fragmentu oprogramowania -> 120 rbh
prezentacja u klienta i analiza zgodności z wymaganiami -> 4h
opracowanie listy zmian w kodzie -> 10h
usuwanie starego rozwiazania -> 20h
implementacja nowego rozwiazania -> 40h
razem: 174h

z modelowaniem:

zamodelowanie fragmentu oprogramowania -> 10h
prezentacja modelu u klienta i analiza zgodności z wymaganiami -> 6h (na modelach się pracuje zwykle dłużej z klientem)
opracowanie zmian -> 4h
implementacja na podstawie modelu -> 70h
razem: 90h

i jestem prawie 2 razy tańszy... a i klient bardziej zadowolony, bo jak juz klika po aplikacji to działa ona tak jak powinna

konto usunięte

Temat: Microsoft obiektowo - Using Models within the Development...

Z mojego doświadczenia wynika (php webdevelopment), że osoby które decydują o tym jak ma wyglądać praca nad projektami oraz kogo zatrudniać w firmie, często nie zdają sobie kompletnie sprawy z tego ile można na tym zyskać. Poprzez co, tracą nieustannie nie wiedząc jednocześnie czemu tak się dzieje...
Konrad E.

Konrad E. analityk,
projektant,
programista

Temat: Microsoft obiektowo - Using Models within the Development...

Każda rozsądna firma posiada własną metodykę opracowywania wymagań oraz oceniania rozmiaru, budżetu oraz czasu projektu. Czy takich firm jest dużo - tu każdy personalnie chyba jest w stanie ocenić ile takich firm zna i jaki mają poziom.

Z mojej praktyki modelowanie całego procesu biznesowego oprogramowania jak i innych aspektów, pozwala wychwycić wiele punktów krytycznych, zagrożeń oraz ocenić prawdopodobieństwo wykonania projektu. Jednakże wielokrotnie świadomość klienta ( lub nawet jej brak) z istotności dokumentacji jest dość nikła. Dla niego niejednokrotnie modele mogą na papierze być niezrozumiałe, opis dostarczony zbyt długi, aby się z nim zapoznać, a również brak skrystalizowania wizji procesów mających zachodzić w aplikacji powoduje totalną ignorancję osoby, która najwięcej może przecież powiedzieć o oczekiwaniach. Często tacy ignoranci spodziewają się, że dokumentacja ( model klas, procesów biznesowych, diagramy stanów i wiele wiele innych wziętych z UML'a ) mogą powstawać równolegle z powstawaniem aplikacji. Klienta interesuje przecież w 70%(lub więcej) jak coś będzie wyglądało (percepcja wzrokowa), a dopiero później jak będzie to działać. Klienci są zorientowani na gotowy produkt - czyli działające oprogramowanie, usługa itp. Programiści są za to zorientowani na wytwarzanie tej "bajki o robotach" przedstawionej przez klienta.
W swojej karierze spotykam się czasem z klientami, którzy przychodzą załamani, bo mają super wyglądającą aplikację do której mają dokumentację (przeważnie pseudo dokumentację), ale funkcjonalnie to nie mają pojęcia jak to działa lub mają ogromny problem z obsługą. Na 80% napisał ją jakiś student lub jeszcze gorzej licealista, gimnazjalista, przez co wytworzenie jej było bardzo tanie. Po czym ten sam klient dziwi się, że modyfikacja działającego rozwiązania może być droższa niż wytworzenie i opracowanie jej od początku.

Podsumowując, dla firmy ważnym elementem jest wypracowanie zwinnej metodyki opatrzonej dobrym modelowaniem zarówno konceptualnym jak i fizycznym. Zalet jest od groma, poczynając od zaoszczędzonego czasu, posiadania repozytorium gotowych fragmentów algorytmów lub nawet aplikacji, kończąc oczywiście na korzyściach materialnych. Wad - praktycznie niewiele - główna - czas wdrożenia i przystosowania się nowego pracownika.
Dla klienta, któremu wytwarzamy oprogramowanie, usługę, ważny jest finalny produkt, a czy będzie dokumentacja, to już kwestia poboczna.
Nie twierdzę, że wszyscy klienci są tacy, jednakże większość prężnie rozwijającego się sektora małych i średnich firm takie są. Firmy z sektora dużych firm i korporacji wydają się(świadomie użyte takie sformułowanie) być bardziej świadome, gdyż muszą się spowiadać na co wydali pieniądze, lecz rzeczywistość często ma się różnie.

Zupełnie inna jest też kwestia dyscypliny Account managera w informowaniu o dokumentacji oraz zarządzaniu dość często zmieniającymi się wymaganiami, które niejednokrotnie potrafią przewrócić do góry nogami wytworzoną aplikację.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Microsoft obiektowo - Using Models within the Development...

Konrad E.:
Jednakże wielokrotnie świadomość klienta ( lub nawet jej brak) z istotności dokumentacji jest dość nikła. Dla niego niejednokrotnie modele mogą na papierze być niezrozumiałe, opis dostarczony zbyt długi, aby się z nim zapoznać, a również brak skrystalizowania wizji procesów mających zachodzić w aplikacji powoduje totalną ignorancję osoby, która najwięcej może przecież powiedzieć o oczekiwaniach.

Z tego powodu zacząłem dzielić dokumentacje na niedługi opis prozą i część techniczną dla wykonawcy. Z opisanego powyżej (i nie tylko) powodu postępuję podobnie do biura architektonicznego:
- klient mówi jakie ma oczekiwania co do tego jak chce mieszkać
- architekt projektant przygotowuje dla tego klienta wizualizacje z opisem zaś szczegółowe plany techniczne są adresowane do develoepra-wykonawcy.

Nie wyobrażam sobie by osoba kupująca projekt domku jednorodzinnego (że nie wspomnę o wielkim biurowcu) była w stanie zrozumieć i odebrać projekt np. instalacji elektrycznej czy hydrauliki, na poziomie zamawiającego ważne jest gdzie się zapala światło w kibelku i wiara w to, że wszystko spłynie gdzie trzeba po naciśnięciu przycisku na ścianie bo takie są wymagania klienta (klient tylko oczekuje, ze będzie jasno w kibelku jak będzie mu to potrzebne i że swoimi działaniami nie spowoduje skażenia środowiska)

Ktoś mógłby mi zarzucić, że nie da się tego odebrać merytorycznie ale wtedy powiem to co mój kolega tłumacz a drugi prawnik: "jak zamawiasz u mnie tłumaczenie (lub opinie prawną) to co odbierasz i za co płacisz skoro nie potrafisz sam ocenić efektów mojej pracy?"

I na tym to polega: na zaufaniu i możliwości składania reklamacji (wyjaśnień) developerowi - dlatego w budownictwie wymagany jest nadzór autorski czyli taka gwarancja architekta, że nie ucieknie jak weźmie pieniądze za projekt.

Ale to tłumaczy podział dokumentacji na dwie części a nie jej robienie lub nierobienie....
Często tacy ignoranci

raczej uważają, że mają prawo zgłaszani uwag do tego czego nie rozumieją ;)
Klienci są zorientowani na gotowy produkt - czyli działające oprogramowanie, usługa itp. Programiści są za to zorientowani na wytwarzanie tej "bajki o robotach" przedstawionej przez klienta.

Tu wiele złego robią sobie sami programiści twierdząc, ze "wszystko da się zaprogramować" i negując treść wymagań wprowadzają nieautoryzowane przez analityka zmiany - "ulepszenia". Dobry developer nie zmieni kształtu ścian czy nie skróci trasy kabli tylko dlatego, że mieszkaniec wyraził takie życzenie (mniej kabla i taniej) bo ten sam mieszkaniec mu potem zarzuci, że pociął kable wiercąc dziury pod obrazek.

Dla klienta, któremu wytwarzamy oprogramowanie, usługę, ważny jest finalny produkt, a czy będzie dokumentacja, to już kwestia poboczna.

Dlatego jemu ona na plaster, nie liczą "widoków"... niestety z mojej praktyki wynika, ze pierwszym który ścina analizę wymagań i projektowanie jest właśnie firma programistyczna (zapewne jej handlowiec) bo uważa, że szybciej i taniej zrobią sami.... dokładnie jak domorośli murarze stawiający domy na wsi.....ze skutkami jakie większość znamy...

zastanawiam się jak tych developerów namówić do tworzenia dobrej dokumentacji....
Mateusz Kurleto

Mateusz Kurleto Szukamy wybitnych
talentów do
świetnego zespołu IT
w Gdańsku

Temat: Microsoft obiektowo - Using Models within the Development...

Jarek Żeliński:
Dlatego jemu ona na plaster, nie liczą "widoków"... niestety z mojej praktyki wynika, ze pierwszym który ścina analizę wymagań i projektowanie jest właśnie firma programistyczna (zapewne jej handlowiec) bo uważa, że szybciej i taniej zrobią sami.... dokładnie jak domorośli murarze stawiający domy na wsi.....ze skutkami jakie większość znamy...

zastanawiam się jak tych developerów namówić do tworzenia dobrej dokumentacji....
Ja w imieniu developerów protestuje.

Dla mnie sprawa jest prosta. Dostaję dokumentację - muszę ją tylko dostosować do swoich gotowców.

Nie ma dokumentacji - muszę ją robić od zera i wyceniać projekt metoda wróżenia z fusów.

Wniosek: DOKUMENTACJA WYMAGAŃ JEST CACY:)
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Microsoft obiektowo - Using Models within the Development...

Mateusz Kurleto:
Ja w imieniu developerów protestuje.

;)

Dla mnie sprawa jest prosta. Dostaję dokumentację - muszę ją tylko dostosować do swoich gotowców.

Nie ma dokumentacji - muszę ją robić od zera i wyceniać projekt metoda wróżenia z fusów.

Wniosek: DOKUMENTACJA WYMAGAŃ JEST CACY:)

a ja znam nie jedną firmę i jej programistów, która proponuje mi za wykonanie analizy może 1000zł bo to takie papierki co klient chce ale oni nie potrzebują bo zawsze robili bez i klient płacił...

"Rozpętałem" tę dyskusje by pogadać o poziomie "kultury projektowej" bo mam wrażenie, że jest niziutka nawet w dużych firmach. Osobiście upatruje problem w metodyce RUP i innych zorientowanych na przypadki użycia, które gloryfikują wywiady z klientem, user story i opis wymagań, którego autorem jest, z pomocą "stenografów" (bo raczej to nie są analitycy) właśnie sam zamawiający de'facto nie mający pojęcia o inżynierii oprogramowania i nie raz słabe o zarządzaniu. Tak tworzone dokumentacje jeśli dobrze opisują część implementacyjną to właśnie słabo wypadają po oddaniu pierwszego prototypu" - słowa klienta: "to jest dokładnie to czego chcieliśmy ale nie to czego potrzebujemy".Jarek Żeliński edytował(a) ten post dnia 23.04.10 o godzinie 07:02
Wojciech Kłujszo

Wojciech Kłujszo Poszukuję ambitnych
i ciekawych zadań :)

Temat: Microsoft obiektowo - Using Models within the Development...

Moim skromnym zdaniem jest jeszcze jedna sprawa firmy boją się "kosztów" analizy na modelach ponieważ jest droga.

A to nie tak do końca, modelowanie jest bardziej wymagające tu idealnie widać, że ktoś nie ma koncepcji, nie obsługuje wszystkich przypadków itp...
Na modelach ciężko jest pokazać dziwaczne przebiegi i przekombinowane GUI czy UC, które lubią niektórzy projektanci, programiści i analitycy. W związku z tym żeby zaprezentować to co się tak bardzo BARDZO CHCE trzeba "zjeść" więcej czasu.

W związku z powyższym wydaje mi się, że często to właśnie wytwórcy dokumentacji bojkotują modelowanie by ukryć swoje braki, które tak na prawdę i tak wychodzą na jaw w postaci błędów, które za zwyczaj dla organizacji są dużo droższe.

Temat: Microsoft obiektowo - Using Models within the Development...

Pewnie będę kontrowersyjny, ale nie wierzę w scenariusz: analityk modeluje, projektant projektuje, a deweloper implementuje. Od razu mówię: to moje zdanie i ja nie chciałbym w taki sposób pracować. Fakt, że inni mogą i odnoszą sukcesy mnie nie przekonuje;)

Jarek, analogia do budownictwa, której użyłeś, jest moim zdaniem nietrafiona. Budowanie oprogramowania to proces kompilacji. Cała reszta do projektowanie i modelowanie (to stwierdzenie to niestety nie mój pomysł -- nie jestem taki mądry).

Dla mnie przypadki użycia są dobrym uzupełnieniem, ponieważ model rzadko może istnieć sam sobie. Zwykle modelujemy jakąś domenę po to, aby rozwiązać konkretne problemy. Te problemy to właśnie przypadki użycia. Są oczywiście domeny, dla których można stworzyć kanoniczny model wystarczający do (prawie) wszystkich użyć. Ale zwykle takie domeny zostały już zamodelowane a model zaimplementowany i jest do kupienia w postaci programu z pudełka.

Więc kiedy mamy już przedstawiony problem (use casy) możemy wspólnie z ekspertami (nie losowo wybranymi przedstawicielami klienta, ale ekspertami branży) rozpocząć proces modelowania, który dla mnie nieodłącznie wiąże się z implementacją. Bo jaki użytek z modelu, który jest nieimplementowalny?

Zamykając klamrą kompozycyjną: to mój sposób pracy. Sposób pracy osoby głęboko przekonanej, że waterfall jest złym procesem i że domain-driven design jest "way to go". Rozumiem i akceptuje fakt, że mogą być inne, być może równie dobre sposoby pracy. Ten po prostu najlepiej odpowiada mojemu charakterowi.
Mateusz Kurleto

Mateusz Kurleto Szukamy wybitnych
talentów do
świetnego zespołu IT
w Gdańsku

Temat: Microsoft obiektowo - Using Models within the Development...

Szymon Pobiega:
...
Więc kiedy mamy już przedstawiony problem (use casy) możemy wspólnie z ekspertami (nie losowo wybranymi przedstawicielami klienta, ale ekspertami branży) rozpocząć proces modelowania, który dla mnie nieodłącznie wiąże się z implementacją. Bo jaki użytek z modelu, który jest nieimplementowalny?
Nie istnieje coś takiego jak model nieimplementowalny. Może byc model niewygodny dla Ciebie. Dlatego właśnie najpierw jest analiza wymagań a potem projekt systemu, żeby z tego co jest potrzebne i wiedzy o tym jak wytwarzamy oprogramowanie zrobić dokumentację, odpowiadającą na pytanie "w jaki sposób zrealizowane zostaną wymagania".

Zamykając klamrą kompozycyjną: to mój sposób pracy. Sposób pracy osoby głęboko przekonanej, że waterfall jest złym procesem i że domain-driven design jest "way to go". Rozumiem i akceptuje fakt, że mogą być inne, być może równie dobre sposoby pracy. Ten po prostu najlepiej odpowiada mojemu charakterowi.
Domain-driven design i waterfall to nie są rzeczy rozłączne. Waterfall to jedna z najprostszych w miare kompletnych metod organizacji wytwarzania oprogramowania. DDD to filozofia modelowania wymagań. To tak się zastanawiać, czy alfa romeo ma ładniejszą linię nadwozia, czy audi lepszą linię produkcyjną w fabryce.

Temat: Microsoft obiektowo - Using Models within the Development...

Całkowite rozdzielenie analizy od projektowania skutkuje dodaniem zbędnej warstwy tłumaczenia między biznesem, a kodem nie dodając w zamian zbyt wiele.

Wszystkie publikacje dotyczące DDD, jakie miałem okazję widzieć kładą nacisk, aby modelarz był jednocześnie implementatorem modelu i aby implementacja była wykonywana równolegle z czynnościami pozyskiwania wiedzy od ekspertów. Jakie źródła (może coś mi umknęło) pokazują wykorzystanie DDD w procesach wodospadowych?
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Microsoft obiektowo - Using Models within the Development...

Wojciech Kłujszo:
Moim skromnym zdaniem jest jeszcze jedna sprawa firmy boją się "kosztów" analizy na modelach ponieważ jest droga.

droga pojecie względne, to podoba dyskusja do tego czy autocasco jest drogie czy nie w kontekście wizji kraksy...

A to nie tak do końca, modelowanie jest bardziej wymagające tu idealnie widać, że ktoś nie ma koncepcji, nie obsługuje wszystkich przypadków itp...

bo modelowanie właśnie po to jest: zweryfikować projekt przed rozpoczęciem implementacji bo tu eksperymenty są o rząd wielkości tańsze...:
Na modelach ciężko jest pokazać dziwaczne przebiegi i przekombinowane GUI czy UC, które lubią niektórzy projektanci, programiści i analitycy. W związku z tym żeby zaprezentować to co się tak bardzo BARDZO CHCE trzeba "zjeść" więcej czasu.

w tym upatruję właśnie dużą siłę modelowania: już na papierze wszyscy, także zamawiający i jego "specjaliści od pobożnych życzeń", widzą że pomysły są bez sensu i kosztowne w implementacji, to w moich oczach ten magiczny moment gdy widać nie raz, ze "Król jest nagi".

To tak jak czasem ktoś na GPSie i na mapie po fakcie zobaczy jak błądził, a wystarczyło od razu na mapie (model miasta) poćwiczyć drogę dotarcia do celu - było by łatwiej i taniej.


W związku z powyższym wydaje mi się, że często to właśnie wytwórcy dokumentacji bojkotują modelowanie by ukryć swoje braki, które tak na prawdę i tak wychodzą na jaw w postaci błędów, które za zwyczaj dla organizacji są dużo droższe.

:)
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Microsoft obiektowo - Using Models within the Development...

Szymon Pobiega:
Pewnie będę kontrowersyjny, ale nie wierzę w scenariusz: analityk modeluje, projektant projektuje, a deweloper implementuje. Od razu mówię: to moje zdanie i ja nie chciałbym w taki sposób pracować. Fakt, że inni mogą i odnoszą sukcesy mnie nie przekonuje;)

a jak wyobrażasz sobie inaczej np. postawienie biurowca w centrum miasta?

Jarek, analogia do budownictwa, której użyłeś, jest moim zdaniem nietrafiona. Budowanie oprogramowania to proces kompilacji. Cała reszta do projektowanie i modelowanie (to stwierdzenie to niestety nie mój pomysł -- nie jestem taki mądry).

bronię analogii do budownictwa od czasu gdy moich projektów analitycznych dla developerów: poznałem ich proces developerski, projekty swoją złożonością znacznie przewyższają niejeden informatyczny, budowa biurowca czy osiedla to ok 2 lata a dokumentacja to kontener segregatorów. Wiele projektów IT to np. 5 lat i dokumentacja w jednym segregatorze, budżet przekroczony 10 krotnie a termin wszyscy zapomnieli (o ile nie zarzucono projektu).


Dla mnie przypadki użycia są dobrym uzupełnieniem, ponieważ model rzadko może istnieć sam sobie. Zwykle modelujemy jakąś domenę po to, aby rozwiązać konkretne problemy. Te problemy to właśnie przypadki użycia.

ale ja zawsze pytam: skąd lista przypadków użycia i pewność że pokrywają biznesowy zakres projektu? Bo klient je wymienił z pamięci na sesji warsztatowej? Przeciętny człowiek ma kłopot z lista zakupów w spożywczaku a co dopiero z wymaganiami...

Więc kiedy mamy już przedstawiony problem (use casy) możemy wspólnie z ekspertami (nie losowo wybranymi przedstawicielami klienta, ale ekspertami branży) rozpocząć proces modelowania, który dla mnie nieodłącznie wiąże się z implementacją. Bo jaki użytek z modelu, który jest nieimplementowalny?

Po pierwsze dobry model w zasadzie testuje implementację.

Nie zapominaj też, że kluczowym celem przyszłych użytkowników (najczęściej wybieranych jako materiał do pozyskiwania informacji) jest utrzymać swoje status quo, a celem sponsora projektu jest cel biznesowy. Wyobraź sobie, że masz zaprojektować nowy system wynagrodzeń i robisz to robiąc wywiady z pracownikami zamawiającego...

Zamykając klamrą kompozycyjną: to mój sposób pracy. Sposób pracy osoby głęboko przekonanej, że waterfall jest złym procesem i że domain-driven design jest "way to go". Rozumiem i akceptuje fakt, że mogą być inne, być może równie dobre sposoby pracy. Ten po prostu najlepiej odpowiada mojemu charakterowi.

W moim przekonaniu trzy etapu:
1. model biznesowy i projekt wymagań (tu produktem są Use Cse ale materiałem do ich uzyskania nie są absolutnie wywiady a porządny przetestowany model procesowy tego biznesu i zakres projektu)
2. model dziedziny systemu i logiczny projekt interakcji dla każdego Use Case (to także test czy system zadziała i czy mamy wszystkie wymagane obiekty w dziedzinie i znamy ich odpowiedzialności)
3. model implementacyjny i implementacja

To faktycznie klasyczny wodospad ale nie wyobrażam sobie np. rozpoczęcia implementacji bez pewności że znam wszystkie klasy domenowe i że nie odkryje nowej w połowie implementacji. W ramach każdego etapu może być wiele iteracji bo one wynikają z iteracyjnego poprawiania modeli.

Z powyższych 3. etapów tylko 1. jest dla klienta, pozostałe elementy to dokumentacja dla wykonawcy.
Mateusz Kurleto

Mateusz Kurleto Szukamy wybitnych
talentów do
świetnego zespołu IT
w Gdańsku

Temat: Microsoft obiektowo - Using Models within the Development...

Szymon Pobiega:
Całkowite rozdzielenie analizy od projektowania skutkuje dodaniem zbędnej warstwy tłumaczenia między biznesem, a kodem nie dodając w zamian zbyt wiele.
To ja proponuje weź dokumentację biznesową systemu nawet małego. Takiego na 3 miesiące implementacji i połóż ją programistom.
Powodzenia.

Wszystkie publikacje dotyczące DDD, jakie miałem okazję widzieć kładą nacisk, aby modelarz był jednocześnie implementatorem modelu i aby implementacja była wykonywana równolegle z czynnościami pozyskiwania wiedzy od ekspertów. Jakie źródła (może coś mi umknęło) pokazują wykorzystanie DDD w procesach wodospadowych?
Z literatury kojarzę podobną treść jedynie we wzorcu "Archtect also implements" (http://users.rcn.com/jcoplien/Patterns/Process/section...) ale po pierwsze wzorzec ten mówi o tym, że architekci a nie analitycy biznesowi mają uczestniczyć w implementacji a po drugie głównym celem zastosowania wzorca jest poprawa jakości pracy developerów przez uniknięcie oderwania celów implementacyjnych od ich umiejętności i doświadczenia i poprawa komunikacji z nimi.
Autor wzorca stwierdza, że architekt musi mieć wpływa na implementację, że programiści nie radzą sobie z władzą absolutną z poza ich zespołu i że dla dobra procesu niezłym rozwiązaniem jest aby architekt tez pisał kod.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Microsoft obiektowo - Using Models within the Development...

Szymon Pobiega:
Całkowite rozdzielenie analizy od projektowania skutkuje dodaniem zbędnej warstwy tłumaczenia między biznesem, a kodem nie dodając w zamian zbyt wiele.

jeżeli wymaga tłumaczenia to faktycznie jest zła, ale tu milczącą zakładam, ze dokumentacja jest obiektowa i w UML czyli że jej autor i programiści "mówią tym samym językiem" na tym etapie.

Po drugie analiza w DDD to element projektowania, jeżeli masz DDD + MVC to tak na prawdę analityk projektując model dziedziny systemu wykonuje 1/3 projektu wzorca MVC (model).

Po trzecie uważam, ze analiza nie zawierająca koncepcji projektu jest złą analizą (czy to w ogóle jest analiza) bo co w takiej analizie jest jej produktem?

Ja ktoś planuje budowę domu to gada z architektem, który nie tylko pyta gdzie ma być kuchnia ale także ja zaprojektuje ja i cały dom (analagia do analityka). Specjaliści inżynierowie wykonają projekty branżowe - hydraulika, elektryka itp. (analogia do architekta systemu) a developer wymuruje (analogia do programistów)


Wszystkie publikacje dotyczące DDD, jakie miałem okazję widzieć kładą nacisk, aby modelarz był jednocześnie implementatorem modelu i aby implementacja była wykonywana równolegle z czynnościami pozyskiwania wiedzy od ekspertów.

Czy była wśród tych źródeł książka Evansa? Bo w niej jak byk napisano, ze ekspert domenowy ma współpracować z developerem a nie że ma to być ta sama osoba. Evans jawnie rozdziela modelowanie od implementacji, rozwój aplikacji może być iteracyjny ale System V.1.0 powstaje w jednej iteracji: analiza i model -> implementacja (w tym projektowanie), potem można wyciągać wnioski i wykonać System v.1.1 ale ten v.1.0 został oddany i działa. Sam Evans pisze, ze XP to nieporozumienie polegające na przemieszaniu tych faz polegające na tym, że developer oddaje klientowi półprodukty by zapytać czy idzie w dobrym kierunku a nie ma innego wyjścia bo nie ma projektu tylko od razu koduje.
Jakie źródła (może coś mi umknęło) pokazują wykorzystanie DDD w procesach wodospadowych?

Eric Evans? Fowler? Ian Graham? Yourdon? ... Powołują się w rożnych wersjach na wzorzec MVC, którego elementem jest Model. Nie zapominajmy, że często opisywane iteracje dotyczą faz projektu a nie jego całego. Rozwój aplikacji także jest iteracyny ale po drodze sa oddane do użytku działające systemy.

Sam Evans na zmianę z DDD powołuje się na MDD (prace na modelach w fazie projektowania) a nie od razu na kodzie.

Po trzecie moja, i nie tylko, praktyka pokazuje, że projektowanie na papierze jest szybsze i tańsze od kodowania "na gorąco", klasyczny przykład: zmiana modelu danych na papierze to godziny, ta sama zmiana w "do połowy oddanym" projekcie to tygodnie... często słyszę potem: wie Pan teraz już nie możemy dodać identyfikacji i obsługi numerów seryjnych produktów w obsłudze magazynu, wiem, ze dopiero teraz pojawił się temat obsługi napraw gwarancyjnych ale taka zmiana wywróci nam cały projekt i będzie kosztowna...

gdyby wykonano dobry model biznesowy wyszło by to, gdyby projektowano dobrze model dziedziny zgodnie z DDD i metodami zamiast od razu kodować najprostszą wersję modelu danych dało by się go nawet rozbudować po implementacji...
Konrad E.

Konrad E. analityk,
projektant,
programista

Temat: Microsoft obiektowo - Using Models within the Development...

Popieram zdanie Pana Żelińskiego, że dokumentacja musi być zrozumiała dla całego zespołu produkcyjnego. Jeśli już tak obszernie posługujemy się analogią do budownictwa, to chiński architekt nieznający żadnych języków oprócz swojego nie wytłumaczy robotnikom gdzie mają stawiać ściany, gdzie są okna itp. Do tego mają swoje rysunki i opisy - jednolity zapis pozwala na jednoznaczne zrozumienie nad czym wszyscy mają pracować. Dlatego też powstały diagramy DFD, ERD, powstał opis UML jak i wiele innych.

Jednakże nic nam będzie po opisie, jeśli nie będziemy otwarci na modyfikacje lub tez zmiany. Dlatego też od dłuższego czasu tak popularne stały się metodyki Agile ( Xp, AUP, EUP ), w których dość jasno oparto się na doświadczeniu prowadzenia wielu projektów. Zbiór tychże metodyk również nie jest lekarstwem na wszystko. Pamiętajmy, że tak samo jak się zmieniają wymagania projektowe tak samo powinniśmy podchodzić do metodyki wytwarzania oprogramowania. Dzięki czemu sam staram się tam gdzie mogę stosować połączenie XP z RUP oraz Scrum, do tego czerpię inspirację z PMI plus PRINCE2.
To, co jest najważniejsze jednak, to że niestosowanie żadnej metodyki prowadzi do chaosu oraz robienia wielu rzeczy wielokrotnie (prawie jak odkrywanie koła za każdym razem kiedy potrzebujemy coś cięższego przetransportować). Takie zwielokrotnienie w procesie wytwarzania czegokolwiek jest od razu skazane na porażkę konceptu dobrze prosperującej firmy. Stajemy się takimi osłami z klapkami na oczach, które to dany klient nam nakłada.
Metodyki są po to, aby nie dać się osiodłać, aby wskazywać rozwiązania i nie podążać nimi ślepo.

Dla mnie architekt powinien być jak najbardziej świadom pracy programistów, wiedzieć jak działa lub zachowuje się wybrana technologia oraz jakie ma bariery. Analityk w etapie opracowywania projektu musi wspierać się właśnie o wiedzę architekta systemowego jaki i analityka biznesowego danej domeny projektu. Najlepiej jest oczywiście posiadać wszystkie te wymienione umiejętności. Uzyskane w taki sposób rozwiązanie na pewno potrafi przeskoczyć niejedną przeszkodę lub ograniczenie - trafiając tym bardziej w pojęcie "nie da się zrobić". Jakbyśmy się jakiegoś matematyka 100 lat temu zapytali, czy będzie możliwe opracowanie takiej maszyny, która pomoże nam modelować nowe leki - z pewnością powiedziałby, że na 100% nie. A jednak się udało. Z każdym dniem ktoś opracowuje jakąś do tej pory niemożliwą lub unikalną technologię - tak więc nie lubię podejścia w projektowaniu lub wytwarzaniu, że czegoś się nie da. Zadaniem analityka jest znalezienie takiego obejścia oraz opracowanie w postaci modeli UML oraz i opisu słownego dla klienta.

Czy wyobrażacie sobie taką sytuację, w której to jeden programista twierdzi, że coś się da wykonać w 5 minut a drugi twierdzi ze albo się nie da lub będzie to trwało nie wiadomo ile? Sam byłem świadkiem wielu takich sytuacji. A o czym to świadczy? Jedynie o tym, że każdy inaczej podchodzi do różnych problemów czy zagadnień.

Czy DDD jest takie wspaniałe - z mojego doświadczenia dość dobrze sprawia się zamiast modelowania biznesowego projektu, jednakże równie dobrze analityk biznesowy z danej domeny klienta może być świadom pewnych zagrożeń lub ułatwień, do których jeszcze sam klient nie doszedł.

Prototypownie aplikacji ma swoje zalety, jednakże niewiele programów pozwala na dobre opracowanie ich. (np. raz spotkałem się z wykorzystaniem programu do przygotowywania prototypów stron internetowych, aby finalnie wykonać całą aplikację w flex). Dla procesów można również oprzeć się o OOWF, ale czy klient będzie w stanie ogarnąć o co chodzi? Trzeba wykorzystywać na pewno technologię czy też pisać dokumentację pod poziom klienta, aby miał świadomość, że operujemy tymi samymi pojęciami i poruszamy się po tej samej domenie zagadnień.

Podsumowując, jaką metodykę nie wybierzemy, należy zawsze wybierać z niej to, co najlepsze dla nas oraz dla zespołu i szukać nowych rozwiązań. Przecież każda metodyka ma swoje wady i zalety.

Ostatnio miałem przykład takiego "palącego się" do kodowania podejścia do projektu. Całość wyszła żałośnie. "Dokumentacja" była kłębkiem bezmyślnie postawionych kropek i przecinków, w której to wykorzystywane pojęcia by naprzemiennie wprowadzając jedynie chaos (np. słowo klucz pojawiało się w wielu kontekstach, przez co nie wiadomo, o który klucz za każdym razem chodziło). "Dokumentalista" ten twierdził, że zawarł wszystko, co trzeba, a programista drapał się po głowie zachodząc, co autor miał na myśli. Co gorsza, człowiek, który to opracował wdrożył jedną część(najpierw przed opisem lub w trakcie), która, jak się okazało, zupełnie nie pasowała ani do opisu API ani do wytworzonej przez programistę drugiej części.
W tej sytuacji właśnie najlepiej widać, jak ktoś pierw dotyka klawiatury i pisze kod, a przy okazji dokumentuje i przeprowadza analizę, a potem zastanawia się nad tym, czy to co zrobił ma w ogóle sens ( wyszło, że nie, ale to już opowieść na kiedyś indziej).

konto usunięte

Temat: Microsoft obiektowo - Using Models within the Development...

.Ten post został edytowany przez Autora dnia 03.08.16 o godzinie 21:15
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Microsoft obiektowo - Using Models within the Development...

Paweł Włodarski:
Napisałeś "wiele firm".Czy możesz podać dokładną listę tych firm i czy jesteś w stanie napisać ile i które firmy mogą pochwalić się zyskami, a które ponoszą straty lub przestały istnieć? Podałeś swoją tezę w czasie teraźniejszym, więc wnioskuje ,że sytuacja z którą się nie zgadzasz ma ciąg dalszy.

oj widzę obronę :) poprzez atak ale odpowiem:
- za ostatnie 5 lat pracy analityka raz na dziesięć mam do czynienia z przyzwoita dokumentacją (czy taką, która nie zamyka się w 100 stronach mętnej prozy), nie napisze, ze to było 5 czy 500 firm bo nie ma to znaczenia zapewniam, że kilkadziesiąt, a jeżeli dodać moich studentów zaocznych (pracujących także w firmach IT) oraz uczestników konferencji, którzy przyznawali, ze robią lub taka lub inna dokumentację to mamy setki firm, jeżeli dodam uczestników forów to za 5 lat będzie to kupa firm...

Jeśli owym firmom się nie powodzi to być może masz miarodajny dowód na to, że dokumentacja zgodna ze wskazówkami strony http://msdn.microsoft.com/pl-pl/library/dd409423%28v=V...
może być czynnikiem krytycznym dla projektu.

Argument jest totalnie bezwartościowy z prostej przyczyny: jeżeli się danej firmie powodzi to znaczy, że:
- dobry proces developerski
- dobrych sprzedawców
- dobrych prawników

wielu firmom wystarczą dwa ostatnie by zarabiać duże pieniądze.

Jeśli jednak firmom, które wymienisz powodzi się finansowo to być może odpowiedź na twoje pytanie znajdziemy w parafrazie klasyki:

"Na zadawane często pytanie, czy do powstania dokumentacji typu XYZ musiało dojść, jest tylko jedna logiczna odpowiedź: widocznie nie musiało, skoro nie doszło."

i problem w tym, że dziesiątki nabywców usług IT głośno mówi, że projekt był przeterminowany i pożarł większe niż planowano koszty, większość nawet zna przyczynę: zła analiza i dokumentacja.

"widocznie nie musiało, skoro nie doszło" albo udało się jej uniknąć...;) ... bo wystarczyły kompetencje sprzedawcy i prawnika...

konto usunięte

Temat: Microsoft obiektowo - Using Models within the Development...

.Ten post został edytowany przez Autora dnia 03.08.16 o godzinie 21:14

Następna dyskusja:

Enterprise Unified Process ...




Wyślij zaproszenie do