Best way to model a domain with a domain expert

I did some analysis and used a number of tools to collect requirements: user storyboards, usage examples, GUI graphics, GUI prototypes, user stories and scripts that can be used as eligibility criteria, etc.

While each of them has more or less merit, I think there is one important bit. These methods can accurately capture how the user interacts with your application. But the programmer must create and develop a “model” that should be reflected in the code.

I have been reading Evans DDD recently and it offers something else. You need to create a domain model with a domain expert and share it with him. In order to communicate ideas with the user, in the book he often uses special drawings created by UML.

I wonder if this is the best way to talk about a model with a domain expert. Are there any other tools besides UML diagrams that you could use to capture domain knowledge and use it while discussing the domain with your domain expert?

+5
source share
8 answers

(, , ) - , , UML .

, - http://www.fmc-modeling.org/.

white/blackboarding mind-mapping FreeMind

( ) TheBrain

/ ( ) LucidChart

, , , .

, , - , . , , .

+2

/ , :

  • -
  • -
  • ..

. sometools "" " " . "": .

: , .... .

, "" - . , , . .

: , Gottesdiener

http://ebgconsulting.com/facassets.php

ZOMBIE [ ]

:

: ,

+1

, . . , .

. .

UML nix , , . , , .

, , .

. .

0

, "/" , . , .


- ( ) - . , .

:

Payment
    comments
        can be edited
            if user is authorized
                with role [Role]
    can be approved
        if user is authorized
        if payment is initiated
        if payment is not paid yet
        if amount does not exceed allowed budget
    when approved
        remembers that
        saves approving date
    can be rejected
        if something something...
    when rejected
        forgets planned pay date
        resets amount to be paid

( , text2mindmap)

:

public class Payment{
    public virtual void EditComments(string comments){
        Authorize<EditPaymentComments>();
        CommentsEntered=true;
        CommentsEditedBy=User;
        CommentsEditedOn=SysDateTime.Now();
        Comments=comments;
    }
    public virtual void Approve(){
        EnsureCanBeApproved();
        IsApproved=true;
        ApprovedOn=SysDateTime.Now();
        Raise(new Approved(this));
    }
    protected virtual void EnsureCanBeApproved(){
        Authorize<AcceptPayments>();
        ThrowIf(!IsInitiated,
            "Payment is not initiated.");
        ThrowIf(IsPaid,
            "Payment is already paid.");
        ThrowIf(ExceedsAllowedBudget(ToBePaid),
            "Amount to be paid exceeds allowed budget.");
    }
    public virtual void Reject(){
        EnsureCanReject();
        ForgetPlannedPayDate();
        ToBePaid=0;
        IsInitiated=false;
        IsRejected=true;
        Raise(new Rejected(this));
    }
    private void ForgetPlannedPayDate(){
        Deadline=DateTime.MinValue;
        DeadlineKnown=false;
    }
}
0

. , , - ... . , , , , , , .

0

.

- , , , : " ?", " , , ", " ?", " , ?"... .

, UML ( , , ), .

, , - , , - . - , . , - " - ?", ", , ?" - , , , .

, (, , ).

0

All Articles