digraph G { rankdir=LR; overlap=scale; concentrate=true; // Generate Node Definitions // Generate Output Node { rank=sink; gId_4_5_outputNodeId[label="Control\ Relay", shape=ellipse,peripheries=2]; } // Generate Input Node { rank=source; gId_6_5_inputNodeId[label="Temperature", shape=ellipse,peripheries=2]; } // Generate Input Node { rank=source; gId_7_5_inputNodeId[label="Set\ Points", shape=ellipse,peripheries=2]; } // Generate Struct Node gId_9_5_structNodeId [shape=record, label="Set\ Points | {{ SP\ Lower\ Set\ Point | SP\ Upper\ Set\ Point}}"]; // Generate Process Node gId_10_5_processNodeId[label="Upper\ Set\ Point", shape=ellipse]; // Generate Process Node gId_11_5_processNodeId[label="Lower\ Set\ Point", shape=ellipse]; // Generate Const Node { gId_14_5_constNodeId[label="Off", shape=hexagon]; } // Generate Process Node // Generate Debug Node gId_21_5_debugNodeId[label="Ignition\ Count", shape=octagon]; ////////////////////////////////////////////////////////// // Generate Requirement Description node ReqRow_10[label="Extract", shape=box]; // Generate output link(s) from Process (requirement) description node to Defined Name ReqRow_10 -> gId_10_5_processNodeId; // Generate link(s) from argument(s) // into the Process (requirement) description node gId_7_5_inputNodeId -> gId_9_5_structNodeId; gId_9_5_structNodeId:gId_9_8_elementNodeId -> ReqRow_10; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // Generate Requirement Description node ReqRow_11[label="Extract", shape=box]; // Generate output link(s) from Process (requirement) description node to Defined Name ReqRow_11 -> gId_11_5_processNodeId; // Generate link(s) from argument(s) // into the Process (requirement) description node gId_7_5_inputNodeId -> gId_9_5_structNodeId; gId_9_5_structNodeId:gId_9_7_elementNodeId -> ReqRow_11; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // Generate Requirement Description node ReqRow_17[label="REQ1:\ At\ startup\ the\ FCS\ shall\ set\nthe\ Furnace\ Mode\ to\ off", shape=box]; // Generate output link(s) from Process (requirement) description node to Defined Name ReqRow_17_gId_23_5_processNodeId[label="Furnace\ Mode", shape=ellipse,fillcolor=palegreen,style=filled]; ReqRow_17 -> ReqRow_17_gId_23_5_processNodeId; // Generate link(s) from argument(s) // into the Process (requirement) description node gId_14_5_constNodeId -> ReqRow_17; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // Generate Requirement Description node ReqRow_18[label="REQ2:\ While\ the\ Furnace\ Mode\ is\nOff,\ if\ the\ Sampled\ Temperature\nfalls\ below\ the\ Lower\ Setpoint\ the\nFCS\ shall\ turn\ the\ Control\ Relay\ On.", shape=box]; // Generate output link(s) from Process (requirement) description node to Defined Name ReqRow_18 -> gId_4_5_outputNodeId; // Generate link(s) from argument(s) // into the Process (requirement) description node gId_23_5_processNodeId_ReqRow_18[label="Furnace\ Mode", shape=ellipse,fillcolor=palegreen,style=filled]; gId_23_5_processNodeId_ReqRow_18 -> ReqRow_18; gId_24_5_processNodeId_ReqRow_18[label="Sampled\ Temperature\nAKA\nMeasured\ Temperature\nIndoor\ Temperature", shape=ellipse,fillcolor=palegreen,style=filled]; gId_24_5_processNodeId_ReqRow_18 -> ReqRow_18; gId_11_5_processNodeId -> ReqRow_18; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // Generate Requirement Description node ReqRow_19[label="REQ3:\ While\ the\ Furnace\ Mode\ is\nOff,\ if\ the\ Measured\ Temperature\nfalls\ below\ the\ Lower\ Setpoint\ the\nFCS\ shall\ set\ the\ Furnace\ Mode\ to\ On.", shape=box]; // Generate output link(s) from Process (requirement) description node to Defined Name ReqRow_19_gId_23_5_processNodeId[label="Furnace\ Mode", shape=ellipse,fillcolor=palegreen,style=filled]; ReqRow_19 -> ReqRow_19_gId_23_5_processNodeId; // Generate link(s) from argument(s) // into the Process (requirement) description node gId_23_5_processNodeId_ReqRow_19[label="Furnace\ Mode", shape=ellipse,fillcolor=palegreen,style=filled]; gId_23_5_processNodeId_ReqRow_19 -> ReqRow_19; gId_24_5_processNodeId_ReqRow_19[label="Sampled\ Temperature\nAKA\nMeasured\ Temperature\nIndoor\ Temperature", shape=ellipse,fillcolor=palegreen,style=filled]; gId_24_5_processNodeId_ReqRow_19 -> ReqRow_19; gId_11_5_processNodeId -> ReqRow_19; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // Generate Requirement Description node ReqRow_20[label="REQ4:\ When\ the\ FCS\ sets\ the\ Furnace\nMode\ to\ On,\ the\ FCS\ shall\ increment\nthe\ Ignition\ Count.", shape=box]; // Generate output link(s) from Process (requirement) description node to Defined Name ReqRow_20 -> gId_21_5_debugNodeId; // Generate link(s) from argument(s) // into the Process (requirement) description node gId_23_5_processNodeId_ReqRow_20[label="Furnace\ Mode", shape=ellipse,fillcolor=palegreen,style=filled]; gId_23_5_processNodeId_ReqRow_20 -> ReqRow_20; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // Generate Requirement Description node ReqRow_22[label="REQ5:\ While\ the\ Furnace\ Mode\ is\ On,\nif\ the\ Sampled\ Temperature\ rises\nabove\ the\ Upper\ Setpoint,\ the\ FCS\nshall\ turn\ the\ Control\ Relay\ Off.", shape=box]; // Generate output link(s) from Process (requirement) description node to Defined Name ReqRow_22 -> gId_4_5_outputNodeId; // Generate link(s) from argument(s) // into the Process (requirement) description node gId_23_5_processNodeId_ReqRow_22[label="Furnace\ Mode", shape=ellipse,fillcolor=palegreen,style=filled]; gId_23_5_processNodeId_ReqRow_22 -> ReqRow_22; gId_24_5_processNodeId_ReqRow_22[label="Sampled\ Temperature\nAKA\nMeasured\ Temperature\nIndoor\ Temperature", shape=ellipse,fillcolor=palegreen,style=filled]; gId_24_5_processNodeId_ReqRow_22 -> ReqRow_22; gId_10_5_processNodeId -> ReqRow_22; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // Generate Requirement Description node ReqRow_23[label="REQ6:\ While\ the\ Furnace\ Mode\ is\ On,\nif\ the\ Indoor\ Temperature\ rises\nabove\ the\ Upper\ Setpoint\ the\ FCS\nshall\ set\ the\ Furnace\ Mode\ to\ Off", shape=box]; // Generate output link(s) from Process (requirement) description node to Defined Name ReqRow_23_gId_23_5_processNodeId[label="Furnace\ Mode", shape=ellipse,fillcolor=palegreen,style=filled]; ReqRow_23 -> ReqRow_23_gId_23_5_processNodeId; // Generate link(s) from argument(s) // into the Process (requirement) description node gId_23_5_processNodeId_ReqRow_23[label="Furnace\ Mode", shape=ellipse,fillcolor=palegreen,style=filled]; gId_23_5_processNodeId_ReqRow_23 -> ReqRow_23; gId_24_5_processNodeId_ReqRow_23[label="Sampled\ Temperature\nAKA\nMeasured\ Temperature\nIndoor\ Temperature", shape=ellipse,fillcolor=palegreen,style=filled]; gId_24_5_processNodeId_ReqRow_23 -> ReqRow_23; gId_10_5_processNodeId -> ReqRow_23; ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // Generate Requirement Description node ReqRow_24[label="REQ7:\ The\ FCS\ shall\ sample\ the\nTemperature\ once\ a\ second.", shape=box]; // Generate output link(s) from Process (requirement) description node to Defined Name ReqRow_24_gId_24_5_processNodeId[label="Sampled\ Temperature\nAKA\nMeasured\ Temperature\nIndoor\ Temperature", shape=ellipse,fillcolor=palegreen,style=filled]; ReqRow_24 -> ReqRow_24_gId_24_5_processNodeId; // Generate link(s) from argument(s) // into the Process (requirement) description node gId_6_5_inputNodeId -> ReqRow_24; ////////////////////////////////////////////////////////// }