Temat: model dziedziny i model konceptualny

Czy możecie mi wytłumaczyć co oznaczają pojęcia "model dziedziny" oraz "model konceptualny" ?
Czy model dziedziny zawiera także diagram konceptualny klas ?
Jarosław Żeliński

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

Temat: model dziedziny i model konceptualny

Krzysztof Sorocki:
Czy możecie mi wytłumaczyć co oznaczają pojęcia "model dziedziny" oraz "model konceptualny" ?
Czy model dziedziny zawiera także diagram konceptualny klas ?

model konceptualny to model pojęciowy (opis przestrzeni pojęć, sformalizowany glossariusz)
model dziedziny to logika biznesowa projektowanego oprogramowania

są to wa zupełnie różne modele ale do obydwu używamy tego samego narzędzia: diagramu klas

tu troszkę więcej:
http://it-consulting.pl/autoinstalator/wordpress/2011/...Jarek Żeliński edytował(a) ten post dnia 15.02.13 o godzinie 23:35

Temat: model dziedziny i model konceptualny

A za pomoca diagramu konceptualnego na którym są klasy i powiazania między nimi nie pokaże się logiki biznesowej ? Dajmy na to prosty przykład. Chcemy zrobić system do wystawiania faktury. Mamy klasę Użytkownik i Faktura połączone asocjacją o nazwie "wystawia" - mamy tu logikę biznesową.
Jarosław Żeliński

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

Temat: model dziedziny i model konceptualny

Krzysztof Sorocki:
A za pomoca diagramu konceptualnego na którym są klasy i powiazania między nimi nie pokaże się logiki biznesowej ? Dajmy na to prosty przykład. Chcemy zrobić system do wystawiania faktury. Mamy klasę Użytkownik i Faktura połączone asocjacją o nazwie "wystawia" - mamy tu logikę biznesową.

Mylisz chyba diagram klas z diagramem ERD, model obiektowy to nie model bazy danych.

Fakturę wystawia aktor systemu (np. Pani fakturzystka) a nie klasa użytkownik, co najwyżej korzystając z wzorca Fabryka lub metoda wytwórcza będzie odrębnie klasa TwórcaFaktur i klasa (a docelowo agregat) FakturaVAT. Użytkownik siedzi przed komputerem :)

To co Ty opisałeś to co najwyżej model pojęciowy (konceptualny, ang. conceptual oznacza pojęciowy a nie koncepcyjny) dziedziny systemu, który nie jest materiałem na implementację.

To, że jakaś osoba wystawia faktury, to nie logika biznesowa a wstęp do przypadku użycia WystawFakturęVAT, logika biznesowa to logiczne ograniczenia np. to, że dana firma nie dopuszcza faktur zbiorczych albo to, że każda fakturę muszą zatwierdzić merytorycznie dwie osoby: od finansów i od sprzedaży, logika biznesową będzie także system upustów dla stałych klientów na tej fakturze.

Temat: model dziedziny i model konceptualny

Problem w tym, że jak czytam w sieci o tych pojęciach to czasami opisy są sprzeczne.

Np. tutaj http://www.redpill.com.pl/artykuly/akademia/113-dziedzina
w opisie dziedziny jest zdanie:

"Zwróćmy uwagę, że na modelu dziedziny nie umieszczamy klas implementujących logikę aplikacji".

Czyli według nich "Model dziedziny" nie pokazuje logiki aplikacji (biznesowej).

Na innej stronie znalazłem:

"Model konceptualny (koncepcyjny) jest to inaczej obraz danych postrzeganych przez użytkownika (sposób wykorzystania, interpretacji danych)."

Czyli według nich model konceptualny i koncepcyjny to to samo. A niej jest ?

Może prościej byłoby mi zrozumieć to na jakimś przykładzie gdzie widoczne byłyby różnice pomiędzy modelem dziedziny a konceptualnym.
Jarosław Żeliński

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

Temat: model dziedziny i model konceptualny

To będzie moje subiektywne odczucie ;)
Krzysztof Sorocki:
Problem w tym, że jak czytam w sieci o tych pojęciach to czasami opisy są sprzeczne.

jest także wiele książek o sprzecznych treściach, ale to tylko poglądy ich autorów, podobnie jak i moje, ja sobie radzę z tym tak, że korzystam z pojęcia "klasa", w sposób sformalizowany (OMG opis UML) a na konkretny użytek opisuję to co chce zamodelować nie łamiąc zasad "języka" (UML to język a nie metoda)

teraz pora na subiektywne popastwienie się nad cudzymi pomysłami :)

Np. tutaj http://www.redpill.com.pl/artykuly/akademia/113-dziedzina
w opisie dziedziny jest zdanie:

"Zwróćmy uwagę, że na modelu dziedziny nie umieszczamy klas implementujących logikę aplikacji".
Czyli według nich "Model dziedziny" nie pokazuje logiki aplikacji (biznesowej).


Dziedzina problemu (systemu) to udokumentowana cała wiedza dziedzinowa czyli to "co" przetwarzamy i to "jak" to robimy, logika biznesowa jak najbardziej jest elementem dziedziny systemu. Dlaczego? Pojęcie Model np. we wzorcu MVC to wszystko to co nie jest ani interfejsem użytkownika (View) ani technologią (Controller), to tu jest więc miejsce na całą logikę biznesową. Specjaliści od TDD powiedzieli by pewnie, że logike biznesową powinno się dan przetestować niezależnie od platformy jej implementacji. Autor z Redpill, w moich oczach, poszedł w stronę antywzorca "anemiczny model dziedziny", czyli w bazodanowe, nie mające nic wspólnego z paradygmatem obiektowym, podejście do programowania. Zamiana diagramu ERD na diagram klas nie ma nic wspólnego z obiektową analizą i projektowaniem.

Ode mnie: model dziedziny to model odwzorowujący modelowane zjawisko czyli logikę jego zachowań bardziej niż atrybuty (dobre praktyki nauki modelowania dziedziny polegają na tworzeniu modelu dziedziny w postaci klas bez atrybutów ale z operacjami - tylko interfejsy, gorąco polecam do nauki karty CRC).
Na innej stronie znalazłem:

"Model konceptualny (koncepcyjny) jest to inaczej obraz danych postrzeganych przez użytkownika (sposób wykorzystania, interpretacji danych)."

Czyli według nich model konceptualny i koncepcyjny to to samo. A niej jest ?

przypomnę "conceptual model" to model pojęciowy, definicje pojęć i związki między nimi, to technika tworzenia diagramów ERD

tu kolejny problem: użytkownik widzi dokumenty i ludzi z nich korzystających a nie dane... gdyby to zdanie dotyczyły pojęciowego relacyjnego modelu danych to bym się zgodził, z obiektowością, moim zdaniem, nie ma to nic wspólnego...

Może prościej byłoby mi zrozumieć to na jakimś przykładzie gdzie widoczne byłyby różnice pomiędzy modelem dziedziny a konceptualnym.

tu podałem przykłady:
http://it-consulting.pl/autoinstalator/wordpress/2011/...

niestety bardzo wielu programistów i projektantów nadal stosuje stare, strukturalne metody analizy i projektowania (model danych oddzielony od wykonywanych funkcji na nich), szkoda że ich "nowoczesność" polega wyłącznie na zamianie diagramów DFD/ERD na diagramy UML bez zmiany podejścia....

programistom zaczynającym z analizą obiektową i UML polecam gorąco na początek:
http://helion.pl/ksiazki/analiza-i-projektowanie-obiek...Jarek Żeliński edytował(a) ten post dnia 16.02.13 o godzinie 13:20

Temat: model dziedziny i model konceptualny

Coraz większy mętlik w głowie. Wcześniej miałem do czynienia tylko z diagramem związków encji. Teraz nawet nie bardzo widzę różnicę pomiędzy nim a diagramem klas.
Piszesz, że diagram klas w modelu dziedziny opisuję logikę aplikacji a jak to się ma do definicji diagramu klas która mówi, że jest to statyczny opis struktury systemu. Skoro jest to model statyczny to raczej nie pokazuje zachowania.
Jarosław Żeliński

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

Temat: model dziedziny i model konceptualny

Krzysztof Sorocki:
Coraz większy mętlik w głowie. Wcześniej miałem do czynienia tylko z diagramem związków encji. Teraz nawet nie bardzo widzę różnicę pomiędzy nim a diagramem klas.

różnica jest fundamentalna:
- ERD to diagram opisujący dane i tylko dane (tu nie wiemy nawet do czego one służą bo ta wiedza jest w funkcjach)
- model dziedziny to diagram obrazujący wyłącznie role (obiekty mają cel istnienia, ich atrybuty są ich prywatną własnością, nie widać ich)
Piszesz, że diagram klas w modelu dziedziny opisuję logikę aplikacji a jak to się ma do definicji diagramu klas która mówi, że jest to statyczny opis struktury systemu. Skoro jest to model statyczny to raczej nie pokazuje zachowania.

Logika to nie dynamika działania a zestaw reguł logiki działania. Reguły są statyczne, dynamiczne są zachowania (odpowiedź na bodziec).

model statyczny to coś jak Ty dla otoczenia:
- masz konkretną rolę (np. murarz), po tym można identyfikować Twoje umiejętności i wiedzę, wiadomo co potrafisz i jak o to poprosić
- nikt nie wie ile masz lat, jaki masz nastrój, itp. więc "dane" nie mają znaczenia, znaczenie mają Twoje umiejętności, i to, że jako konkretny murarz masz imię i nazwisko, po którym można Cie identyfikować.

Gdzie logika biznesowa? Ty wiesz jak murować, w razie potrzeby dostaniesz procedurę działania. Poprawny i kompletny Model dziedziny (dokumentowany diagramem klas) to klasy reprezentujące zarówno murarza jak i procedury działania czyli logikę biznesową.

Wyobraź sobie Twoje CV, co jako Ty oferujesz? Swoja metrykę? Nie To co potrafisz (zgodnie z prawem nawet twoja płeć nie ma znaczenia). Nie zmienia to faktu, że teczka CV pracowników to model statyczny...

(gdyby diagram klas służył do tego co ERD nie było by diagramu klas...;))Jarek Żeliński edytował(a) ten post dnia 17.02.13 o godzinie 12:05



Wyślij zaproszenie do