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?
(, , ) - , , UML .
, - http://www.fmc-modeling.org/.
white/blackboarding mind-mapping FreeMind
( ) TheBrain
/ ( ) LucidChart
, , , .
, , - , . , , .
- . UML . DSL ( , ). , , (, , [] ..), .
UML- . , .
, . ( , .NET). http://www.amazon.com/Professional-Refactoring-ASP-NET-Wrox-Programmer/dp/047043452X/ref=sr_1_1?s=books&ie = UTF-8 & QID = 1306529986 & = 1-1
/ , :
. sometools "" " " . "": .
: , .... .
, "" - . , , . .
: , Gottesdiener
http://ebgconsulting.com/facassets.php
ZOMBIE [ ]
:
: ,
. Object-Role Modeling. , , .
, . . , .
. .
UML nix , , . , , .
, , .
, "/" , . , .
- ( ) - . , .
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; } }
. , , - ... . , , , , , , .
.
- , , , : " ?", " , , ", " ?", " , ?"... .
, UML ( , , ), .
, , - , , - . - , . , - " - ?", ", , ?" - , , , .
, (, , ).