Repository navigation
Expand file tree
/
Copy pathsoftware_dev.dot
More file actions
37 lines (34 loc) · 2.2 KB
/
Copy pathsoftware_dev.dot
File metadata and controls
37 lines (34 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
digraph SoftwareDevelopmentAgreement {
rankdir=TB;
splines=curved;
concentrate=true;
nodesep=0.9;
ranksep=1.2;
graph [fontname="Helvetica" fontsize=13 label="SoftwareDevelopmentAgreement — State Machine" labelloc=t labeljust=c pad=0.5];
node [fontname="Helvetica" fontsize=11 margin="0.25,0.15"];
edge [fontname="Helvetica" fontsize=10];
// Entry point
__start [label="" shape=point width=0.2];
__start -> AwaitingKickoff;
// States
AwaitingKickoff [label="Awaiting Kickoff" shape=box style="rounded,filled" fillcolor="#f5f5f5" color="#555555"];
Development [label="Development" shape=box style="rounded,filled" fillcolor="#f5f5f5" color="#555555"];
Review [label="Review" shape=box style="rounded,filled" fillcolor="#f5f5f5" color="#555555"];
AwaitingFinalPayment [label="Awaiting Final Payment" shape=box style="rounded,filled" fillcolor="#f5f5f5" color="#555555"];
Fulfilled [label="Fulfilled" shape=doublecircle style=filled fillcolor="#b7f5b7" color="#2e7d32" penwidth=2 width=1.2 height=1.2];
DeveloperBreached [label="Developer\nBreached" shape=doublecircle style=filled fillcolor="#ffcdd2" color="#c62828" penwidth=2 width=1.2 height=1.2];
ClientBreached [label="Client\nBreached" shape=doublecircle style=filled fillcolor="#ffcdd2" color="#c62828" penwidth=2 width=1.2 height=1.2];
Expired [label="Expired" shape=doublecircle style=filled fillcolor="#fff9c4" color="#f57f17" penwidth=2 width=1.2 height=1.2];
// Transitions
AwaitingKickoff -> Development [label="Kickoff Complete"];
AwaitingKickoff -> Expired [label="⏱ time_limit(delivery_window)"];
Development -> Review [label="Prototype Approved"];
Development -> DeveloperBreached [label="⚠ breach(Developer)"];
Development -> Expired [label="⏱ time_limit(delivery_window)"];
Review -> AwaitingFinalPayment [label="Review Complete"];
Review -> ClientBreached [label="⚠ breach(Client)"];
Review -> Expired [label="⏱ time_limit(review_period)"];
AwaitingFinalPayment -> Fulfilled [label="Payment Received"];
AwaitingFinalPayment -> Expired [label="⏱ time_limit(payment_due)"];
AwaitingFinalPayment -> ClientBreached [label="⚠ breach(Client)"];
}