시스템을 구성하는 모듈과 각 모듈 사이의 의존 관계를 보여주는 다이어그램이다. UDS 진단 시스템을 예시로 작성했다.
Draw.io 원문
<mxfile host="65bd71144e">
<diagram name="UDS Diagnostic Structure" id="uds-static">
<mxGraphModel dx="1081" dy="577" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1200" pageHeight="800" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="10" value="<b>UDS_Manager.c</b><hr><b>Variables:</b><br>- currentSession<br>- securityLevel<br>- activeProtocol<hr><b>Functions:</b><br>+ UDS_Init()<br>+ UDS_MainFunction()<br>+ UDS_ProcessRequest()<br>+ UDS_SendResponse()" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="480" y="100" width="240" height="200" as="geometry"/>
</mxCell>
<mxCell id="10_header" value="UDS_Manager.c" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontStyle=1;fontColor=default;fontFamily=Helvetica;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="480" y="100" width="240" height="25" as="geometry"/>
</mxCell>
<mxCell id="20" value="<b>UDS_Session.c</b><hr><b>Variables:</b><br>- sessionType<br>- s3Timer<hr><b>Functions:</b><br>+ SessionControl_0x10()<br>+ CheckSessionLevel()<br>+ ResetToDefault()" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontFamily=Helvetica;fontColor=default;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="120" y="360" width="200" height="160" as="geometry"/>
</mxCell>
<mxCell id="20_header" value="UDS_Session.c" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontStyle=1;fontColor=default;fontFamily=Helvetica;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="120" y="360" width="200" height="25" as="geometry"/>
</mxCell>
<mxCell id="30" value="<b>UDS_Security.c</b><hr><b>Variables:</b><br>- securityLevel<br>- seedKey<br>- attemptCounter<hr><b>Functions:</b><br>+ SecurityAccess_0x27()<br>+ GenerateSeed()<br>+ CompareKey()" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontFamily=Helvetica;fontColor=default;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="360" y="360" width="200" height="170" as="geometry"/>
</mxCell>
<mxCell id="30_header" value="UDS_Security.c" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontStyle=1;fontColor=default;fontFamily=Helvetica;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="360" y="360" width="200" height="25" as="geometry"/>
</mxCell>
<mxCell id="40" value="<b>UDS_DataService.c</b><hr><b>Variables:</b><br>- didTable[]<br>- dataBuffer[]<hr><b>Functions:</b><br>+ ReadDataById_0x22()<br>+ WriteDataById_0x2E()<br>+ GetDataLength()" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontFamily=Helvetica;fontColor=default;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="600" y="360" width="200" height="160" as="geometry"/>
</mxCell>
<mxCell id="40_header" value="UDS_DataService.c" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontStyle=1;fontColor=default;fontFamily=Helvetica;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="600" y="360" width="200" height="25" as="geometry"/>
</mxCell>
<mxCell id="50" value="<b>UDS_DTC.c</b><hr><b>Variables:</b><br>- dtcList[]<br>- dtcStatus<hr><b>Functions:</b><br>+ ReadDTCInfo_0x19()<br>+ ClearDTC_0x14()<br>+ GetDTCStatus()" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontFamily=Helvetica;fontColor=default;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="840" y="360" width="200" height="160" as="geometry"/>
</mxCell>
<mxCell id="50_header" value="UDS_DTC.c" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontStyle=1;fontColor=default;fontFamily=Helvetica;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="840" y="360" width="200" height="25" as="geometry"/>
</mxCell>
<mxCell id="60" value="<b>UDS_Routine.c</b><hr><b>Variables:</b><br>- routineTable[]<br>- routineStatus<hr><b>Functions:</b><br>+ RoutineControl_0x31()<br>+ StartRoutine()<br>+ StopRoutine()<br>+ GetResult()" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontFamily=Helvetica;fontColor=default;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="120" y="570" width="200" height="180" as="geometry"/>
</mxCell>
<mxCell id="60_header" value="UDS_Routine.c" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontStyle=1;fontColor=default;fontFamily=Helvetica;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="120" y="570" width="200" height="25" as="geometry"/>
</mxCell>
<mxCell id="70" value="<b>UDS_Reset.c</b><hr><b>Variables:</b><br>- resetType<hr><b>Functions:</b><br>+ EcuReset_0x11()<br>+ HardReset()<br>+ SoftReset()" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontFamily=Helvetica;fontColor=default;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="360" y="570" width="200" height="150" as="geometry"/>
</mxCell>
<mxCell id="70_header" value="UDS_Reset.c" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontStyle=1;fontColor=default;fontFamily=Helvetica;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="360" y="570" width="200" height="25" as="geometry"/>
</mxCell>
<mxCell id="80" value="<b>UDS_Communication.c</b><hr><b>Variables:</b><br>- commMode<hr><b>Functions:</b><br>+ CommControl_0x28()<br>+ TesterPresent_0x3E()<br>+ ControlDTCSetting_0x85()" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontFamily=Helvetica;fontColor=default;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="600" y="570" width="200" height="150" as="geometry"/>
</mxCell>
<mxCell id="80_header" value="UDS_Communication.c" style="rounded=0;whiteSpace=wrap;html=1;align=center;verticalAlign=top;fillColor=#FFFFFF;strokeColor=#000000;fontSize=11;fontStyle=1;fontColor=default;fontFamily=Helvetica;gradientColor=light-dark(#FFCC99,#FFE6CC);gradientDirection=east;" parent="1" vertex="1">
<mxGeometry x="600" y="570" width="200" height="25" as="geometry"/>
</mxCell>
<mxCell id="100" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="10" target="20" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="540" y="310"/>
<mxPoint x="220" y="310"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="101" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="10" target="30" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="102" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="10" target="40" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="630" y="300"/>
<mxPoint x="630" y="330"/>
<mxPoint x="700" y="330"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="103" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="10" target="50" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="660" y="310"/>
<mxPoint x="940" y="310"/>
</Array>
</mxGeometry>
</mxCell>
<mxCell id="104" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="20" target="60" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="105" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="30" target="70" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="106" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="40" target="80" edge="1">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
댓글을 불러오고 있습니다.