You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
= Software Architecture Documentation Starter with arc42 and C4 Model
5
7
@@ -9,32 +11,60 @@ This example shows how to use https://arc42.org/[arc42] in combination with the
9
11
10
12
It shows how to use the techniques described in https://www.workingsoftware.dev/software-architecture-documentation-the-ultimate-guide/[The Ultimate Guide to Software Architecture Documentation].
11
13
12
-
If you're looking for a step-by-step video on how to use this starter project, you can find it on Youtube here: https://www.youtube.com/watch?v=TLcUISoEn2s
14
+
video::TLcUISoEn2s[youtube, title="Step-by-step video tutorial"]
13
15
14
16
Check out the deployed https://bitsmuggler.github.io/arc42-c4-software-architecture-documentation-example/[example HTML build] provided on GitHub Pages.
15
17
16
-
Go through the following steps:
18
+
== Quick Start
17
19
18
-
. <<Prerequisites>>
19
-
. <<Build the software architecture documentation>>
20
-
.. <<Generate PlantUML Diagrams from the C4 (Structurizr) Model>>
21
-
.. <<Generate the software architecture documentation representations>>
20
+
Get started in 3 simple steps:
22
21
22
+
[source, bash]
23
+
----
24
+
# 1. Generate diagrams from C4 model
25
+
./dtcw exportStructurizr
26
+
27
+
# 2. Build HTML documentation
28
+
./dtcw generateHTML
29
+
30
+
# 3. Open the result
31
+
open build/html5/internet-banking-system.html
32
+
----
33
+
34
+
For more details, see <<Build the software architecture documentation>>
35
+
36
+
37
+
== Techniques & Technologies
23
38
24
-
== Technologies
39
+
=== Documentation
25
40
26
-
* https://arc42.org/[arc42] to get the structure for the software architecture documentation
27
-
* https://c4model.com/[C4 Model] an "abstraction-first" approach to diagramming software architecture, based upon abstractions that reflect how software architects and developers think about and build software.
28
-
* https://structurizr.com/dsl[Structurizr DSL] to describe the https://c4model.com/[C4 Model] of the software system
29
-
* https://github.com/structurizr/cli[Structurizr CLI] a command line utility for Structurizr to export the https://plantuml.com/[PlantUML] diagrams from the C4 Model described in the Structurizr DSL
30
-
* https://asciidoc.org/[AsciiDoc] as format to write the software architecture documentation
31
-
* https://asciidoctor.org/[Asciidoctor] to generate the representations of the software architecture documentation written in AsciiDoc.
32
-
* https://doctoolchain.org[docToolchain] to automate the generation of the software architecture documentation.
33
-
* https://kroki.io[Kroki] to generate diagrams
34
-
* https://github.com/npryce/adr-tools[adr-tools] to generate and manage Architecture Decision Records (ADRs)
35
-
* https://www.workingsoftware.dev/technical-debt-records/[Technical Debt Records] to record technical debts (TDRs)
41
+
[cols="1,3"]
42
+
|===
43
+
|https://arc42.org/[arc42] |Structure template for software architecture documentation
44
+
|https://asciidoc.org/[AsciiDoc] |Markup format for writing documentation
45
+
|https://asciidoctor.org/[Asciidoctor] |Processor to generate HTML, PDF and other formats
46
+
|===
36
47
37
-
For more tech inspiration take a look at the https://www.workingsoftware.dev/documentation-as-code-tools[Documentation as Code Technology Radar].
48
+
=== Architecture Modeling
49
+
50
+
[cols="1,3"]
51
+
|===
52
+
|https://c4model.com/[C4 Model] |Abstraction-first approach to diagramming software architecture
53
+
|https://structurizr.com/dsl[Structurizr DSL] |DSL to describe C4 models as code
54
+
|https://github.com/structurizr/cli[Structurizr CLI] |CLI to export PlantUML diagrams from Structurizr DSL
55
+
|===
56
+
57
+
=== Tooling & Automation
58
+
59
+
[cols="1,3"]
60
+
|===
61
+
|https://doctoolchain.org[docToolchain] |Automation for generating documentation
62
+
|https://kroki.io[Kroki] |Diagram generation service
63
+
|https://github.com/npryce/adr-tools[adr-tools] |Generate and manage Architecture Decision Records (ADRs)
64
+
|https://www.workingsoftware.dev/technical-debt-records/[Technical Debt Records] |Record and track technical debts (TDRs)
65
+
|===
66
+
67
+
TIP: For more tech inspiration take a look at the https://www.workingsoftware.dev/documentation-as-code-tools[Documentation as Code Technology Radar].
38
68
39
69
== Prerequisites
40
70
@@ -62,46 +92,39 @@ If you have already generated ADRs with the adr-tools, you can migrate them to t
62
92
63
93
== Build the software architecture documentation
64
94
65
-
=== Generate PlantUML Diagrams from the C4 (Structurizr) Model
95
+
=== Available Commands
66
96
67
-
https://doctoolchain.org/docToolchain/[docToolchain] uses the Structurizr CLI to generate the PlantUML diagrams from the C4 Model described in the Structurizr DSL.
97
+
https://doctoolchain.org/docToolchain/[docToolchain] provides the following commands via the `./dtcw` wrapper script:
68
98
69
-
[source, bash]
70
-
----
71
-
./dtcw exportStructurizr
72
-
----
99
+
[cols="2,3"]
100
+
|===
101
+
|Command |Description
73
102
74
-
=== Generate the software architecture documentation representations
103
+
|`./dtcw exportStructurizr`
104
+
|Generate PlantUML diagrams from the C4 Model (Structurizr DSL)
75
105
76
-
NOTE: these examples use the public https://kroki.io[kroki.io] instance to generate the diagrams.
77
-
For your own documentation, replace the references to kroki.io with your own kroki instance.
106
+
|`./dtcw generateHTML`
107
+
|Generate HTML documentation
78
108
79
-
Generate the documentation as HTML representation
109
+
|`./dtcw generatePDF`
110
+
|Generate PDF documentation
80
111
81
-
[source, bash]
82
-
----
83
-
./dtcw generateHTML
84
-
----
85
-
86
-
Generate the documentation as PDF representation
87
-
88
-
[source, bash]
89
-
----
90
-
./dtcw generatePDF
91
-
----
112
+
|`./dtcw generateSite`
113
+
|Generate documentation as Microsite
92
114
93
-
Generate the documentation as Microsite
115
+
|`./dtcw exportMarkdown`
116
+
|Convert Markdown ADRs to AsciiDoc
117
+
|===
94
118
95
-
[source, bash]
96
-
----
97
-
./dtcw generateSite
98
-
----
119
+
NOTE: These examples use the public https://kroki.io[kroki.io] instance to generate the diagrams.
120
+
For your own documentation, replace the references to kroki.io with your own kroki instance.
99
121
100
-
=== Appendix
122
+
[appendix]
123
+
== Manual Setup (without dtcw)
101
124
102
125
If you want to build everything without the `./dtcw` script, you can use the following commands.
103
126
104
-
==== Generate the PlantUML diagrams from the Structurizr DSL
127
+
=== Generate the PlantUML diagrams from the Structurizr DSL
0 commit comments