<mxfile host="app.diagrams.net" agent="Software Delivery Observatory" type="device">
  <diagram id="sdlc-loop" name="Software Development Life Cycle">
    <mxGraphModel dx="1422" dy="800" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="826" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        <mxCell id="title" value="The Software Development Life Cycle" style="text;html=1;fontSize=26;fontStyle=1;fontColor=#0f172a;align=left;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="40" y="24" width="760" height="34" as="geometry"/></mxCell>
        <mxCell id="subtitle" value="One connected loop from idea to production and back — not a straight line that ends at launch." style="text;html=1;fontSize=14;fontColor=#334155;align=left;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="40" y="58" width="900" height="24" as="geometry"/></mxCell>
        <mxCell id="credit" value="Created by Software Delivery Observatory" style="text;html=1;fontSize=12;fontColor=#64748b;align=right;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="700" y="24" width="430" height="20" as="geometry"/></mxCell>
        <mxCell id="n2" value="1 · Discover" style="swimlane;html=1;rounded=1;arcSize=6;startSize=40;horizontal=1;fillColor=#2563eb;strokeColor=#cbd5e1;fontColor=#ffffff;fontSize=17;fontStyle=1;swimlaneFillColor=#ffffff;align=left;spacingLeft=14;" vertex="1" parent="1"><mxGeometry x="40" y="110" width="330" height="210" as="geometry"/></mxCell>
        <mxCell id="n2b" value="PLANNING" style="text;html=1;fontSize=10;fontStyle=1;fontColor=#ffffff;align=right;verticalAlign=middle;" vertex="1" parent="n2"><mxGeometry x="220" y="12" width="96" height="16" as="geometry"/></mxCell>
        <mxCell id="n2s" value="Turn a business signal into clear intent." style="text;html=1;fontSize=12;fontStyle=2;fontColor=#334155;align=left;verticalAlign=top;whiteSpace=wrap;" vertex="1" parent="n2"><mxGeometry x="14" y="48" width="302" height="34" as="geometry"/></mxCell>
        <mxCell id="n2l" value="· Business strategy&lt;br/&gt;· Problem discovery&lt;br/&gt;· User research&lt;br/&gt;· Requirements" style="text;html=1;fontSize=13;fontColor=#0f172a;align=left;verticalAlign=top;whiteSpace=wrap;spacingTop=2;" vertex="1" parent="n2"><mxGeometry x="14" y="86" width="302" height="110" as="geometry"/></mxCell>
        <mxCell id="n3" value="2 · Design" style="swimlane;html=1;rounded=1;arcSize=6;startSize=40;horizontal=1;fillColor=#2563eb;strokeColor=#cbd5e1;fontColor=#ffffff;fontSize=17;fontStyle=1;swimlaneFillColor=#ffffff;align=left;spacingLeft=14;" vertex="1" parent="1"><mxGeometry x="420" y="110" width="330" height="210" as="geometry"/></mxCell>
        <mxCell id="n3b" value="PLANNING" style="text;html=1;fontSize=10;fontStyle=1;fontColor=#ffffff;align=right;verticalAlign=middle;" vertex="1" parent="n3"><mxGeometry x="220" y="12" width="96" height="16" as="geometry"/></mxCell>
        <mxCell id="n3s" value="Decide what to build and how it holds together." style="text;html=1;fontSize=12;fontStyle=2;fontColor=#334155;align=left;verticalAlign=top;whiteSpace=wrap;" vertex="1" parent="n3"><mxGeometry x="14" y="48" width="302" height="34" as="geometry"/></mxCell>
        <mxCell id="n3l" value="· UX research &amp; flows&lt;br/&gt;· System architecture&lt;br/&gt;· API design&lt;br/&gt;· Security design" style="text;html=1;fontSize=13;fontColor=#0f172a;align=left;verticalAlign=top;whiteSpace=wrap;spacingTop=2;" vertex="1" parent="n3"><mxGeometry x="14" y="86" width="302" height="110" as="geometry"/></mxCell>
        <mxCell id="n4" value="3 · Build" style="swimlane;html=1;rounded=1;arcSize=6;startSize=40;horizontal=1;fillColor=#6d28d9;strokeColor=#cbd5e1;fontColor=#ffffff;fontSize=17;fontStyle=1;swimlaneFillColor=#ffffff;align=left;spacingLeft=14;" vertex="1" parent="1"><mxGeometry x="800" y="110" width="330" height="210" as="geometry"/></mxCell>
        <mxCell id="n4b" value="BUILDING" style="text;html=1;fontSize=10;fontStyle=1;fontColor=#ffffff;align=right;verticalAlign=middle;" vertex="1" parent="n4"><mxGeometry x="220" y="12" width="96" height="16" as="geometry"/></mxCell>
        <mxCell id="n4s" value="Write, review, test, secure, and package the work." style="text;html=1;fontSize=12;fontStyle=2;fontColor=#334155;align=left;verticalAlign=top;whiteSpace=wrap;" vertex="1" parent="n4"><mxGeometry x="14" y="48" width="302" height="34" as="geometry"/></mxCell>
        <mxCell id="n4l" value="· Local development&lt;br/&gt;· Code review&lt;br/&gt;· Automated testing&lt;br/&gt;· Containerization" style="text;html=1;fontSize=13;fontColor=#0f172a;align=left;verticalAlign=top;whiteSpace=wrap;spacingTop=2;" vertex="1" parent="n4"><mxGeometry x="14" y="86" width="302" height="110" as="geometry"/></mxCell>
        <mxCell id="n5" value="4 · Deliver" style="swimlane;html=1;rounded=1;arcSize=6;startSize=40;horizontal=1;fillColor=#0f766e;strokeColor=#cbd5e1;fontColor=#ffffff;fontSize=17;fontStyle=1;swimlaneFillColor=#ffffff;align=left;spacingLeft=14;" vertex="1" parent="1"><mxGeometry x="800" y="400" width="330" height="210" as="geometry"/></mxCell>
        <mxCell id="n5b" value="DELIVERING" style="text;html=1;fontSize=10;fontStyle=1;fontColor=#ffffff;align=right;verticalAlign=middle;" vertex="1" parent="n5"><mxGeometry x="220" y="12" width="96" height="16" as="geometry"/></mxCell>
        <mxCell id="n5s" value="Move a trusted artifact safely into production." style="text;html=1;fontSize=12;fontStyle=2;fontColor=#334155;align=left;verticalAlign=top;whiteSpace=wrap;" vertex="1" parent="n5"><mxGeometry x="14" y="48" width="302" height="34" as="geometry"/></mxCell>
        <mxCell id="n5l" value="· CI/CD pipeline&lt;br/&gt;· Deployment strategy&lt;br/&gt;· Cloud runtime&lt;br/&gt;· Feature flags" style="text;html=1;fontSize=13;fontColor=#0f172a;align=left;verticalAlign=top;whiteSpace=wrap;spacingTop=2;" vertex="1" parent="n5"><mxGeometry x="14" y="86" width="302" height="110" as="geometry"/></mxCell>
        <mxCell id="n6" value="5 · Operate" style="swimlane;html=1;rounded=1;arcSize=6;startSize=40;horizontal=1;fillColor=#b45309;strokeColor=#cbd5e1;fontColor=#ffffff;fontSize=17;fontStyle=1;swimlaneFillColor=#ffffff;align=left;spacingLeft=14;" vertex="1" parent="1"><mxGeometry x="420" y="400" width="330" height="210" as="geometry"/></mxCell>
        <mxCell id="n6b" value="OPERATING" style="text;html=1;fontSize=10;fontStyle=1;fontColor=#ffffff;align=right;verticalAlign=middle;" vertex="1" parent="n6"><mxGeometry x="220" y="12" width="96" height="16" as="geometry"/></mxCell>
        <mxCell id="n6s" value="Run the live system and respond to reality." style="text;html=1;fontSize=12;fontStyle=2;fontColor=#334155;align=left;verticalAlign=top;whiteSpace=wrap;" vertex="1" parent="n6"><mxGeometry x="14" y="48" width="302" height="34" as="geometry"/></mxCell>
        <mxCell id="n6l" value="· Observability&lt;br/&gt;· Incident response&lt;br/&gt;· Performance&lt;br/&gt;· Security patching" style="text;html=1;fontSize=13;fontColor=#0f172a;align=left;verticalAlign=top;whiteSpace=wrap;spacingTop=2;" vertex="1" parent="n6"><mxGeometry x="14" y="86" width="302" height="110" as="geometry"/></mxCell>
        <mxCell id="n7" value="6 · Learn" style="swimlane;html=1;rounded=1;arcSize=6;startSize=40;horizontal=1;fillColor=#b45309;strokeColor=#cbd5e1;fontColor=#ffffff;fontSize=17;fontStyle=1;swimlaneFillColor=#ffffff;align=left;spacingLeft=14;" vertex="1" parent="1"><mxGeometry x="40" y="400" width="330" height="210" as="geometry"/></mxCell>
        <mxCell id="n7b" value="FEEDBACK" style="text;html=1;fontSize=10;fontStyle=1;fontColor=#ffffff;align=right;verticalAlign=middle;" vertex="1" parent="n7"><mxGeometry x="220" y="12" width="96" height="16" as="geometry"/></mxCell>
        <mxCell id="n7s" value="Listen, measure, and feed the next loop." style="text;html=1;fontSize=12;fontStyle=2;fontColor=#334155;align=left;verticalAlign=top;whiteSpace=wrap;" vertex="1" parent="n7"><mxGeometry x="14" y="48" width="302" height="34" as="geometry"/></mxCell>
        <mxCell id="n7l" value="· Customer feedback&lt;br/&gt;· Analytics&lt;br/&gt;· Iteration&lt;br/&gt;· Technical debt" style="text;html=1;fontSize=13;fontColor=#0f172a;align=left;verticalAlign=top;whiteSpace=wrap;spacingTop=2;" vertex="1" parent="n7"><mxGeometry x="14" y="86" width="302" height="110" as="geometry"/></mxCell>
        <mxCell id="n8" value="intent" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#64748b;strokeWidth=2;fontSize=11;fontColor=#334155;labelBackgroundColor=#ffffff;endArrow=blockThin;endFill=1;" edge="1" parent="1" source="n2" target="n3"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n9" value="decisions" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#64748b;strokeWidth=2;fontSize=11;fontColor=#334155;labelBackgroundColor=#ffffff;endArrow=blockThin;endFill=1;" edge="1" parent="1" source="n3" target="n4"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n10" value="trusted artifact" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#64748b;strokeWidth=2;fontSize=11;fontColor=#334155;labelBackgroundColor=#ffffff;endArrow=blockThin;endFill=1;" edge="1" parent="1" source="n4" target="n5"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n11" value="live system" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#64748b;strokeWidth=2;fontSize=11;fontColor=#334155;labelBackgroundColor=#ffffff;endArrow=blockThin;endFill=1;" edge="1" parent="1" source="n5" target="n6"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n12" value="signals" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#64748b;strokeWidth=2;fontSize=11;fontColor=#334155;labelBackgroundColor=#ffffff;endArrow=blockThin;endFill=1;" edge="1" parent="1" source="n6" target="n7"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="n13" value="feedback &amp; telemetry restart the loop" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#64748b;strokeWidth=2;fontSize=11;fontColor=#334155;labelBackgroundColor=#ffffff;endArrow=blockThin;endFill=1;dashed=1;strokeColor=#2563eb;fontColor=#2563eb;" edge="1" parent="1" source="n7" target="n2"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="note1" value="In practice the phases overlap — mature teams discover, build, and operate at the same time across different features." style="text;html=1;fontSize=12;fontColor=#334155;align=center;verticalAlign=middle;whiteSpace=wrap;" vertex="1" parent="1"><mxGeometry x="40" y="636" width="1090" height="20" as="geometry"/></mxCell>
        <mxCell id="note2" value="Launch is the middle of a system&apos;s life, not the end: most of a product&apos;s life is spent being operated, maintained, and improved." style="text;html=1;fontSize=12;fontColor=#334155;align=center;verticalAlign=middle;whiteSpace=wrap;" vertex="1" parent="1"><mxGeometry x="40" y="658" width="1090" height="20" as="geometry"/></mxCell>
        <mxCell id="source" value="software-delivery-observatory.onrender.com/software-development-lifecycle-visual" style="text;html=1;fontSize=11;fontColor=#64748b;align=right;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="600" y="688" width="530" height="18" as="geometry"/></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
