زمان خواندن : 12 minutes

کدپای شما در حال رشد است. وابستگی‌ها بین ماژول‌ها به‌سرعت در حال افزایش هستند. مستندات معماری قبل از نوشتن، منقضی می‌شود. و اگر ساخت Gradle شما بتواند به‌صورت خودکار diagram‌های بروز شده را از ساختار واقعی کد تولید کند؟ این دقیقاً چیزی است که پیلاین Graphify + PlantUML Gradle Plugin انجام می‌دهد:`graphify . --no-viz`Knowledge Graph را استخراج می‌کند,`./gradlew generateKnowledgeGraphDiagram`او آن را به نمودارهای PlantUML تبدیل می‌کند. صفر LLM، صفر دستورالعمل، 100% قطعی.

تیک

[]

مشکل: نمودارها همیشه در عقب از کد می‌مانند

هر پروژه‌ای که بیش از چند هزار خط دارد، این سندرم را می‌شناسد:

  1. در ابتدای پروژه، یک نمودار معماری رسم می‌کنیم.

  2. کد توسعه می‌یابد، وابستگی‌ها تغییر می‌کنند

  3. نمودار یک دروغ تزئینی می‌شود

  4. هیچ‌کس آن را به‌روز نمی‌کند چون این کار خسته‌کننده است.

  5. به تازگی آمده‌ها بر آن استناد می‌کنند و اشتباه می‌کنند

@startuml
skinparam backgroundColor #FEFEFE
skinparam ActivityBackgroundColor #FDEDEC
skinparam ActivityDiamondBackgroundColor #FFF3CD

start

:Diagramme d'architecture créé\n(manuellement, à la main);

:Le code évolue\n(nouvelles classes, nouvelles dépendances);

:Diagramme obsolète\n(ne reflète plus le code);

if (Qui met à jour ?) then (Personne)
    :Documentation mensongère;
    note right: Les nouveaux développeurs\nse basent dessus... et font des erreurs
else (Quelqu'un)
    :Mise à jour manuelle\n(2-3 heures de travail);
    note right: Déjà obsolète\nà la prochaine PR
endif

stop

@enduml

سوال این نیست که آیا باید نمودار داشته باشیم؟ — همهٔ می‌دانند بله. سوال این است :کی آنها را به‌روز می‌دارد؟

پاسخ: هیچ‌کس. مگر اینکه خودکار باشد.

راه‌حل: یک خط لوله déterministe Knowledge Graph → PlantUML

مبدأ ساده است : به جای رسم دستی نمودارها، ما آنهااز ساختار واقعی کد تولید می‌شود.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

actor Développeur
component "Graphify
(نصب graphifyy با pip)" as Graphify
collections "graphify-out/graph.json
(گراف دانش)" as KGJSON
component "افزونه Gradle PlantUML
(generateKnowledgeGraphDiagram)" as Plugin
component "KnowledgeGraphParser" as Parser
component "KnowledgeGraphRenderer" as Renderer
component "PlantumlService
(اعتبارسنجی + رندر PNG)" as PS
collections "diagrams/knowledge-graph/
(.puml + .png)" as Output

Développeur --> Graphify : graphify . --no-viz
Graphify --> KGJSON : extrait la structure\ndu code source
Développeur --> Plugin : ./gradlew generateKnowledgeGraphDiagram
Plugin --> Parser : parse(graph.json)
Parser --> Plugin : KnowledgeGraph\n(noeuds + arêtes + communautés)
Plugin --> Renderer : render(graph, filters)
Renderer --> Plugin : code PlantUML\ndéterministe
Plugin --> PS : validateSyntax + generateImage
PS --> Output : .puml + .png

note bottom of Plugin
  Pipeline DÉTERMINISTE
  Aucun appel LLM
  Résultat reproductible
end note

@enduml

دو دستور. همین است.

# Étape 1 : extraire le Knowledge Graph
graphify . --no-viz

# Étape 2 : générer les diagrammes PlantUML
./gradlew generateKnowledgeGraphDiagram

نتیجه؟ فایل‌ها`.puml` et .png`در`diagrams/knowledge-graph/, نسخهٔ‌گذاری‌شده در Git, همیشه به‌روز با کد.

مرحله ۱: Graphify را نصب کنید و Knowledge Graph را استخراج کنید

نصب

Graphify یک ابزار پایتون است که کدبیس شما را تجزیه و تحلیل می‌کند و یک گراف دانش منظم می‌سازد:

# Méthode recommandée
uv tool install graphifyy && graphify install --platform opencode

# Alternative avec pip
pip install graphifyy && graphify install --platform opencode

تنظیم استثناها

یک فایل ایجاد کن`.graphifyignore`در ریشه پروژه برای استبعاد فایل‌هایی که بخشی از منطق کسب‌وکار نیستند :

# Secrets — JAMAIS dans le graphe
*-context.yml
*.env

# Fichiers générés
build/
.gradle/

# Tests fonctionnels
src/functionalTest/

استخراج Knowledge Graph

graphify . --no-viz

پرچم`--no-viz`تولید HTML را رد می‌کند (در یک pipeline Gradle بی‌فایده است). نتیجه یک فایل است`graphify-out/graph.json`شامل :

  • گره‌ها: کلاس‌ها، توابع، فایل‌ها — با نوعشان و جامعه

  • لبه‌ها: رابطه‌ها بین گره‌ها (EXTRACTED از کد, INFERRED توسط LLM)

  • جامعات: گروه‌بندی خودکار گره‌های مرتبط

نمونه ساختار`graph.json`
{
  "nodes": [
    {"id": "0", "label": "LlmService", "file_type": "code", "community": 0},
    {"id": "1", "label": "ApiKeyPool", "file_type": "code", "community": 0},
    {"id": "2", "label": "PlantumlService", "file_type": "code", "community": 1}
  ],
  "links": [
    {"source": "1", "target": "0", "relation": "uses", "confidence": "EXTRACTED", "weight": 0.9},
    {"source": "0", "target": "2", "relation": "calls", "confidence": "INFERRED", "weight": 0.7}
  ]
}

کد منبع (.kt, .java) تحلیل می‌شود به‌صورت محلی توسط tree-sitter,بدون تجدید نظر LLM. فقط فایل‌های مستندات (.adoc, .md) نیاز به یک تماس LLM برای استخراج معانی دارند. بنابراین`--update`در کد Kotlin به‌طور تقریبی آنی است.

مرحله ۲: پلاگین Gradle Knowledge Graph را به PlantUML تبدیل می‌کند

معماری لاین‌پایپ

پلاگین`com.cheroliv.plantuml`یک تسک را یک‌ساز می-conduct`generateKnowledgeGraphDiagram`که تبدیل می‌کند`graph.json`در نمودارهای PlantUML به صورتکاملاً تعیین‌مند:

@startuml
skinparam backgroundColor #FEFEFE

participant "Gradle" as G
participant "GenerateKnowledgeGraphDiagramTask" as Task
participant "KnowledgeGraphParser" as Parser
participant "KnowledgeGraphRenderer" as Renderer
participant "سرویس PlantUML" as PS

collections "graphify-out/graph.json" as JSON

G -> Task : execute
Task -> JSON : read
Task -> Parser : parse(graph.json)
Parser --> Task : KnowledgeGraph\n(noeuds + arêtes + communautés)
Task -> Renderer : render(graph, filters)
Renderer --> Task : code PlantUML\n(déterministe)
Task -> PS : validateSyntax(plantumlCode)
alt syntaxe valide
    Task -> PS : generateImage → .png
else syntaxe invalide
    Task -> Task : save .puml avec warning
end

@enduml

قطعات داخلی

جزء نقش

KnowledgeGraphParser

تجزیه`graph.json`— پشتیبانی ۳ فرمت : graphify natif (nodes+links), ارث (communities), flat. آیدی‌های عددی را به برچسب‌ها حل می‌کنند.

KnowledgeGraphRenderer

به صورت deterministic یک`KnowledgeGraph`در کد PlantUML. گروه‌ها بر اساس نوع، جوامع در بسته‌ها، راهنمای خودکار.

GenerateKnowledgeGraphDiagramTask

وظیفه Gradle که : parse → render → validate → PNG را orchestre می‌کند. قابل تنظیم از طریق ویژگی‌های Gradle.

kgmodels.kt

مدل‌های donnée :`KnowledgeGraph`, KnowledgeGraphNode, KnowledgeGraphEdge, KnowledgeGraphCommunity, EdgeType.

PlantumlService

اعتبارسنجی نحوی + رندر PNG (بازکاربرد شده توسط تمام وظایف پلاگین).

قوانین رnderینگ

renderer اعمال می-conduct مقررات بصری حتمی :

نوع لبه نوتیشن PlantUML معنی

استخراج شده

-→(خط صاف، سیاه)

رابطه استخراج شده از کد منبع (اطمینان)

استنتاج شده

..>(خط نقطه‌ای)

رابطه استنتاجی توسط LLM (امتیاز اعتماد)

مبهم

--x(خط قرمز خط چین)

رابطه مبهم (باید بررسی شود)

جامعات به عنوان بسته‌های PlantUML با یک پالت رنگ خودکار نمایش داده می‌شوند

مرحله 3: استفاده روزانه

دیاگرام کامل

# Générer le diagramme du Knowledge Graph complet
./gradlew generateKnowledgeGraphDiagram

خروج:`diagrams/knowledge-graph/knowledge-graph-full.puml`+.png

فیلتر بر اساس جامعه

# Une seule communauté
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.community=community_0

# Limiter le nombre de noeuds (lisibilité)
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.community=community_0 \
  -Pplantuml.kg.maxNodes=15

فیلتر براساس نوع لبه

# Uniquement les relations certaines (EXTRACTED)
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.edgeTypes=EXTRACTED

# Relations certaines + inférées
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.edgeTypes=EXTRACTED,INFERRED

فیلتر براساس نوع گره و اطمینان

# Uniquement les classes de code
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.nodeTypes=code

# Seuil de confiance minimum (pour les INFERRED)
./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.minConfidence=0.7

دایرکتوری خروجی سفارشی

./gradlew generateKnowledgeGraphDiagram \
  -Pplantuml.kg.outputDir=docs/architecture

مرجع کامل ویژگی‌ها

مالکیت عيب توضیحات

plantuml.kg.community

(همه)

فیلتر کردن جوامع بر اساس نام (مطابقت زیررشته)

plantuml.kg.edgeTypes

(همه)

انواع لبه‌ها جدا شده با کاما :`EXTRACTED`, INFERRED, AMBIGUOUS

plantuml.kg.minConfidence

0.0

حداقل آستانه اطمینان برای لبه‌ها

plantuml.kg.maxNodes

(بیحد)

حداکثر تعداد گره‌ها برای نمایش

plantuml.kg.nodeTypes

(همه)

انواع گره‌ها جدا شده با کاما (مثال.class, code)

plantuml.kg.outputDir

diagrams/knowledge-graph

دایرکتوری خروجی برای فایل‌ها`.puml` et .png

پایپلاین کامل در گردش کار گرادل

نوع گردش کار

@startuml
skinparam backgroundColor #FEFEFE
skinparam ActivityBackgroundColor #E8F4FD
skinparam ActivityDiamondBackgroundColor #FFF3CD
skinparam ActivityBorderColor #2C3E50

start

partition "استخراج" {
    :graphify . --no-viz;
    note right: Analyse le code source\ntree-sitter (local, pas de LLM)

    :graphify-out/graph.json;
    note right: Noeuds + arêtes\n+ communautés
}

partition "تولید" {
    :./gradlew generateKnowledgeGraphDiagram;
    note right: Pipeline déterministe\nparse → render → validate → PNG

    if (Filtres actifs ?) then (Oui)
        :Appliquer filtres\n(community, edgeTypes,\nmaxNodes, nodeTypes);
    else (Non)
        :Diagramme complet;
    endif

    :diagrams/knowledge-graph/\nknowledge-graph-full.puml\nknowledge-graph-full.png;
}

partition "يكي‌سازي" {
    :git add diagrams/knowledge-graph/;
    :git commit;
    note right: Diagrammes versionnés\ntoujours à jour avec le code
}

stop

@enduml

ادغام در چرخه توسعه

پایپ‌لاین به‌طور طبیعی در مراحل کلی توسعه ادغام می‌شود :

@startuml
skinparam backgroundColor #FEFEFE

state "توسعه" as dev
state "استخراج
graphify . --no-viz" as extract
state "ایجاد
./gradlew generateKnowledgeGraphDiagram" as generate
state "کمیتی
دیاگرام‌های نسخه‌گذاری‌شده" as commit

[*] --> dev
dev --> extract : Code modifié
extract --> generate : graph.json à jour
generate --> commit : .puml + .png générés
commit --> dev : Diagrammes dans le repo

note right of extract
  Quasi instantané sur du code Kotlin
  (tree-sitter, pas de LLM)
end note

note right of generate
  Déterministe
  Pas de LLM
  Résultat reproductible
end note

@enduml

به‌روزرسانی افزایشی

وقتی کد تغییر می‌کند، تمام گراف را از صفر بازسازی نمی‌کنیم :

# Mise à jour incrémentale (fichiers modifiés uniquement)
graphify . --update

# Puis régénérer les diagrammes
./gradlew generateKnowledgeGraphDiagram

--update`فقط فایل‌های تغییر یافته را (تشخیص داده‌شده توسط SHA256 در`graphify-out/cache/) بر روی کد Kotlin، تقریباً به‌طور لحظه‌ای است زیرا tree-sitter به‌محلی کار می‌کند و بدون تماس با LLM.

دگفودینگ: پلاگین خود را مستند می‌کند

پلاگین PlantUML برای تبدیل پرامپت‌ها به نمودار موجود است. این پلاگین همچنین می‌تواند Knowledge Graph کدبیس propre خود را به نمودارهای مستندات تبدیل کند. این dogfooding است: پلاگین سرویس خود را مصرف می‌کند.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

package "خط لوله عادی
(کاربر → نمودارها)" as normal {
    [Fichier .prompt] as prompt
    [LlmService\n+ ApiKeyPool] as llm1
    [ProcessPlantumlPromptsTask] as task1
    [Diagramme PNG] as out1

    prompt --> task1
    task1 --> llm1
    llm1 --> out1
}

package "Pipeline Knowledge Graph
(تعیین‌ شده، بدون LLM)" as kg {
    [graphify-out/graph.json] as kgjson
    [KnowledgeGraphParser] as parser
    [KnowledgeGraphRenderer] as renderer
    [PlantumlService] as ps
    [Diagramme PNG\n(documentation du plugin)] as out2

    kgjson --> parser
    parser --> renderer
    renderer --> ps
    ps --> out2
}

package "Pipeline Dogfooding
(LLM → مستندات پلاگین)" as dogfood {
    [GraphifyPromptAdapter] as gpa
    [Fichiers .prompt\nauto-générés] as auto_prompt
    [LlmService\n+ ApiKeyPool] as llm2
    [ProcessPlantumlPromptsTask] as task2
    [Diagramme PNG\n(documentation LLM)] as out3

    kgjson --> gpa
    gpa --> auto_prompt
    auto_prompt --> task2
    task2 --> llm2
    llm2 --> out3
}

note "همان LlmService، همان ApiKeyPool،
همان PlantumlService
— بدون هیچ تکرار" as N

@enduml

وظائف Gradle مرتبط :

وظیفه LLM ? توضیح

generateKnowledgeGraphDiagram

نه

تبدیل کن`graph.json`در PlantUML (قطعی)

generateDiagramDocs

بله

تولید کن`.prompt`از گراف، آن‌ها را از طریق LLM (dogfooding) پردازش می‌کند

# Documentation déterministe (rapide, pas de LLM)
./gradlew generateKnowledgeGraphDiagram

# Documentation LLM (plus riche, consomme des tokens)
./gradlew generateDiagramDocs

چرا این تعیین‌پذیر است (و چرا مهم است)

نکته کلیدی پایپ لاین`generateKnowledgeGraphDiagram` : او هیچ LLM را صدا نمی‌زند. تبدیل`graph.json`PlantUML یک تابع صاف است.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

rectangle "خط لولDeterministic
(generateKnowledgeGraphDiagram)" as det {
    [graph.json] as json
    [KnowledgeGraphParser] as parser
    [KnowledgeGraphRenderer] as renderer
    [PlantUML code] as puml

    json --> parser : parse
    parser --> renderer : KnowledgeGraph
    renderer --> puml : render (fonction pure)
}

rectangle "خط لول LLM
(processPlantumlPrompts)" as llm {
    [.prompt] as prompt
    [LlmService] as llmSvc
    [ChatModel] as model
    [PlantUML code] as puml2

    prompt --> llmSvc
    llmSvc --> model : API call
    model --> puml2 : réponse non-déterministe
}

note bottom of det
  Même entrée → même sortie
  Pas de latence réseau
  Pas de coût en tokens
  Reproductible en CI
end note

note bottom of llm
  Même entrée → sortie variable
  Latence réseau (1-5s)
  Coût en tokens
  Nécessite une clave API
end note

@enduml

مزایای ملموس :

مزیت اثر

قابلیت بازتولید

همان`graph.json`→ همان نمودار. دقیقاً. همیشه.

هزینهٔ صفر

بدون تماس LLM = بدون توکن = بدون صورتحساب API

تأخیر صفر

پارس + رندر حدود ۱۰۰ میلی‌ثانیه طول می‌کشد، نه ۱ تا ۵ ثانیه.

سازگار CI

کلید API لازم نیست. هیچ تست ناپایداری به دلیل پاسخ LLM متغیر وجود ندارد.

قابل نسخه‌سازی

Le .puml`این متن تولید شده است. می‌توانیم آن را`diff, بررسیکننده در PR، ان را در Git نسخهٔ‌سازی کنید.

دیاگرام‌های خود pipeline

برای بستن حلقه، اینجا نمودار پایپ لاین است که توسط پلاگین تولید می‌شود :

@startuml
skinparam backgroundColor #FEFEFE

participant "توسعه‌دهنده" as Dev
participant "گریدل" as G
participant "ایجاد نمودار گراف دانش" as Task
participant "KnowledgeGraphParser" as Parser
participant "KnowledgeGraphRenderer" as Renderer
participant "سرویس PlantUML" as PS
collections "graphify-out/graph.json" as JSON
collections "دیاگرام‌ها/گراف دانش/" as Out

Dev -> G : ./gradlew generateKnowledgeGraphDiagram
G -> Task : execute
Task -> JSON : read
Task -> Parser : parse(graph.json)
Parser --> Task : KnowledgeGraph

alt filtres actifs
    Task -> Task : appliquer filtres\n(community, edgeTypes, maxNodes…)
end

Task -> Renderer : render(graph, filters)
Renderer --> Task : code PlantUML

Task -> PS : validateSyntax()
alt valide
    Task -> PS : generateImage()
    PS --> Out : .puml + .png
else invalide
    Task -> Out : .puml (avec warning)
end

@enduml

یکپارچه‌سازی در مدیریت پروژه

در پروژه ما، این pipeline در یک استراتژی مدیریت زمینه EAGER/LAZY برای عامل هوش مصنوعی ادغام می‌شود. Knowledge Graph مستندسازی دستی معماری را جایگزین کرده و به جای آن یک گراف ساختاریافته، قابل-query و به‌روزرسانی خودکار را فراهم می‌سازد.

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

package "EAGER\n(همیشه بارگذاری شده)" as eager {
    [PROMPT_REPRISE.adoc\n(contexte session)] as pr
    [INDEX.adoc\n(vue d'ensemble)] as idx
    [GRAPH_REPORT.adoc\n(~50 lignes)] as gr
}

package "LAZY — استراتژی
(به‌طلب)" as lazy_strat {
    [Méthodologies] as meth
    [Archives sessions] as sessions
}

package "LAZY — Graphify
(درخواست‌های هدفمند)" as lazy_graph {
    [graph.json] as gj
    [Queries\n(query/path/explain)] as queries
}

package "پایپ لاین PlantUML
(خود-تولید شده)" as puml {
    [generateKnowledgeGraphDiagram] as kgTask
    [generateDiagramDocs] as ddTask
    [Diagrammes PNG] as diagrams
}

Agent --> eager : Lit en début de session
Agent ..> lazy_strat : Charge si type détecté
Agent ..> lazy_graph : Query si besoin structurel
kgTask --> diagrams : Déterministe
ddTask --> diagrams : Via LLM

note right of gr
  Condensé du Knowledge Graph
  God nodes + communautés
  Remplace ECOSYSTEM_OVERVIEW
  (225 lignes → 50 lignes)
end note

@enduml

ازدواج دو سیستم مکمل است :

  • استراتژی مدیریت زمان و روش را بر عهده دارد.— حاکمیت، فرآیند کار، بایگانی

  • Graphify مدیریت می‌کند چی و کجا— ساختار کد، روابط، کوئریهای هدفمند

</think> استراتژی جلسه آن را مدیریت می‌کندوقتی et le چطور(حاکمیت, گردش کار, آستانه‌ها), Graphify مدیریت می‌کندچی et le کجا(ساختار کد، روابط، کوئری‌های هدفمند). خط لول PlantUML آن را مدیریت می‌کندبا چه چیزی (diagrammes déterministes, versionnés, toujours à jour). __

پیکربندی: چک‌لیست در ۵ دقیقه

(Empty) مرحله سفارش

1

Graphify را نصب کنید

uv tool install graphifyy

2

پیکربندی استثناها

ایجاد کن`.graphifyignore`

3

استخراج گراف دانش

graphify . --no-viz

4

دیآگرام‌ها را تولید کنید

./gradlew generateKnowledgeGraphDiagram

5

نتایج را commit کنید

git add diagrams/knowledge-graph/

# Script complet en 5 commandes
uv tool install graphifyy
cat > .graphifyignore << 'EOF'
*-context.yml
*.env
build/
.gradle/
EOF
graphify . --no-viz
./gradlew generateKnowledgeGraphDiagram
git add graphify-out/GRAPH_REPORT.adoc graphify-out/graph.json diagrams/knowledge-graph/

فخ‌ها و کاهش‌ها

پینجه توضیح کاهش

گراف بسیار چگال

یک پروژه بزرگ صدها گره غیر قابل‌خواندن ایجاد می‌کند.

استفاده کردن`-Pplantuml.kg.maxNodes=30`و فیلتر بر پایهٔ جامعه

استثناء‌های بسیار گسترده

فایل‌های بیش از حد در`.graphifyignore`مقدار گراف را کاهش می‌دهد

شروع کنید با حذف فقط credentials و build

جهت فلش‌ها

لبه‌های INFERRED می‌توانند جهت مبهمی داشته باشند

فیلتر بر حسب`-Pplantuml.kg.edgeTypes=EXTRACTED`فقط برای روابط مطمئن

گراف منسوخ

کد تغییر می‌کند اما گراف بازسازی نمی‌شود

استفاده کردن`graphify . --update`به‌صورت منظم یا هوک گیت`graphify hook install`

هزین به‌روزرسانی شدهمع

به‌روزرسانی‌های افزایشی تقریباً رایگان هستند (tree-sitter محلی)

فقط اسناد (.adoc) توکن‌های LLM را مصرف می‌کنند

چیزی که در نهایت به دست می‌آوریم

@startuml
skinparam backgroundColor #FEFEFE

rectangle "قبل" as avant {
    card "نمودارهای کشیده‌شده دستی
همیشه منسوخ
هیچ‌کس آن‌ها را به‌روزرسانی نمی‌کند" as av1 #FDEDEC
}

rectangle "بعد" as apres {
    card "دیاگرام‌های تولید شده به‌صورت خودکار
همیشه به‌روز با کد
نسخه‌گذاری شده در گیت
دترمینیستیک و قابل بازتولید" as ap1 #E8F8E8
}

avant --> apres : graphify . --no-viz\n+ ./gradlew generateKnowledgeGraphDiagram

@enduml

فواید ملموس:

بازده جزئی

مستندات همیشه به‌روز

دآیگرام‌ها کد فعلی را منعکس می‌کنند، نه یک اسنپ‌شات دستی

بدون تلاش برای نگهداری

دیاگرام‌ها در هر ساخت بازسازی می‌شوند

کاهش بدهی فنی

حالا دیگر نیاز به نگهداری دستی نمودارها نیست.

سیاق بصری برای جدیدها

یک توسعه‌دهندهٔ جدید با نگاه به نمودارها، معماری را درک می‌کند.

تنظیم دقیق پتانسیل

جفت‌های (زیرگراف → نمودار) نمونه‌های آموزش هوش مصنوعی هستند

اعتبارسنجی خودکار

`PlantumlService.validateSyntax()`هر نمودار تولید شده را بررسی می‌کند

بوردینگ سریع

5 نمودار = نمای کامل از معماری

_ که کسی که یک _pourquoi دارد، می‌تواند تمام comment‌ها را تحمل کند. __

چرا : نمودارهای همیشه به‌روز. چطور : دو دستور در یک لایپ‌لاین Gradle.

لینک‌ها

مقالات مرتبط