Skip to content

Commit 4aeb8d8

Browse files
authored
Merge pull request #672 from isaqb-org/consistent-citation-keys
Add and Implement ADR012 for Citation Key Standardization
2 parents cfb0015 + a1c3da4 commit 4aeb8d8

File tree

3 files changed

+123
-24
lines changed

3 files changed

+123
-24
lines changed

README.adoc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,16 @@ To unify upper/lowercase within the (EN) version, we use the _Chicago manual of
455455

456456
For the German (DE) version, we don't use punctuation at the end of bullet-list items, unless on ends-of-sentences.
457457

458+
==== Citation Keys
459+
460+
We follow standardized citation keys:
461+
462+
* Single author: `[lastname YYYY]`, e.g. `[Starke 2024]`
463+
* Multiple authors: `[lastname+ YYYY]`, e.g. `[Bass+ 2021]`
464+
* Standards: `[standard-id]`, e.g. `[ISO 25010:2023]`
465+
* Known terms/products: `[abbreviation]`, e.g. `[arc42]`
466+
467+
See ADR-012 for complete guidelines and special cases.
458468

459469
[[handling-references]]
460470
=== Based on Established Content And References

docs/09-references/00-references.adoc

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
- [[[aosa, AOSA]]] The Architecture of Open Source Applications. Edited by Amy Brown and Greg Wilson. Online: <https://aosabook.org/en/>.
1313
- [[[arc42, arc42]]] arc42, the open-source template for software architecture communication, online: <https://arc42.org>. Maintained on <https://github.com/arc42>
14-
- [[[archimate, Archimate]]] The ArchiMate® Enterprise Architecture Modeling Language, online: <https://www.opengroup.org/archimate-forum/archimate-overview>
14+
- [[[archimate, ArchiMate]]] The ArchiMate® Enterprise Architecture Modeling Language, online: <https://www.opengroup.org/archimate-forum/archimate-overview>
1515

1616
// B
1717
- [[[bass,Bass+ 2021]]] Len Bass, Paul Clements, Rick Kazman: Software Architecture in Practice. 4^th^ Edition, Addison Wesley 2021.
@@ -24,37 +24,37 @@
2424
// C
2525
- [[[clementseval,Clements+ 2002]]] Paul Clements, Rick Kazman, Mark Klein: Evaluating Software Architectures. Methods and Case Studies. Addison Wesley, 2002.
2626
- [[[clementsdoc,Clements+ 2010]]] Paul Clements, Felix Bachmann, Len Bass, David Garlan, David, James Ivers, Reed Little, Paulo Merson and Robert Nord: _Documenting Software Architectures: Views and Beyond_, 2nd edition, Addison Wesley, 2010
27-
- [[[cncf, Cloud-Native]]] The Cloud Native Computing Foundation, online: https://www.cncf.io/
27+
- [[[cncf, CloudNative]]] The Cloud Native Computing Foundation, online: https://www.cncf.io/
2828

2929
// E
30-
- [[[eilebrecht,Eilebrecht+2024]]] Karl Eilebrecht, Gernot Starke: Patterns kompakt: Entwurfsmuster für effektive Software-Entwicklung (in German). 6th Edition Springer Verlag 2024.
30+
- [[[eilebrecht,Eilebrecht +2024]]] Karl Eilebrecht, Gernot Starke: Patterns kompakt: Entwurfsmuster für effektive Software-Entwicklung (in German). 6th Edition Springer Verlag 2024.
3131

32-
- [[[erd, Chen 1976]]] Chen, Peter (March 1976): _The Entity-Relationship Model - Toward a Unified View of Data_. ACM Transactions on Database Systems. 1 (1): 9–36..
32+
- [[[erd,Chen 1976]]] Chen, Peter (March 1976): _The Entity-Relationship Model - Toward a Unified View of Data_. ACM Transactions on Database Systems. 1 (1): 9–36..
3333
- [[[evans,Evans 2004]]] Eric Evans: _Domain-Driven Design: Tackling Complexity in the Heart of Software,_ Addison-Wesley, 2004.
3434

3535
// F
36-
- [[[felleisenetal, Felleisen+2014]]] Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi: How to Design Programs. Second Edition. MIT Press, 2014. <https://htdp.org/>
36+
- [[[felleisenetal, Felleisen +2014]]] Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi: How to Design Programs. Second Edition. MIT Press, 2014. <https://htdp.org/>
3737

3838
- [[[ford,Ford 2017]]] Neil Ford, Rebecca Parsons, Patrick Kua: Building Evolutionary Architectures: Support Constant Change. OReilly 2017.
3939

40-
- [[[fordhardparts,Ford+2021]]] Neal Ford, Mark Richards, Pramod Sadalage und Zhamak Dehghani: Software Architecture: The Hard Parts. Modern Trade-Off Analyses for Distributed Architectures. OReilly 2021.
40+
- [[[fordhardparts,Ford+ 2021]]] Neal Ford, Mark Richards, Pramod Sadalage und Zhamak Dehghani: Software Architecture: The Hard Parts. Modern Trade-Off Analyses for Distributed Architectures. OReilly 2021.
4141
- [[[fowler,Fowler 2002]]] Martin Fowler: Patterns of Enterprise Application Architecture. (PoEAA) Addison-Wesley, 2002.
4242

4343
// G
4444

45-
- [[[ghandietal,Ghandi+24]]] Raju Gandhi, Mark Richards and Neal Ford. Head-First Software Architecture. OReilly 2024.
46-
- [[[gof,Gamma+94]]] Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. 1994.
45+
- [[[ghandietal,Ghandi+ 2024]]] Raju Gandhi, Mark Richards and Neal Ford. Head-First Software Architecture. OReilly 2024.
46+
- [[[gof,Gamma+ 1994]]] Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. 1994.
4747
- [[[geewax,Geewax 2021]]] J. Geewax. API Design Patterns. Manning, 2021. This book lays out a set of design principles for building internal and public-facing APIs.
4848
- [[[geirhos,Geirhos 2015]]] Matthias Geirhos. Entwurfsmuster: Das umfassende Handbuch (in German). Rheinwerk Computing Verlag. 2015
49-
- [[[gharbietal,Gharbi+2024]]] Mahbouba Gharbi, Arne Koschel, Andreas Rausch, Gernot Starke: Basiswissen Softwarearchitektur. 5. Auflage, dpunkt Verlag, Heidelberg 2024.
49+
- [[[gharbietal,Gharbi+ 2024]]] Mahbouba Gharbi, Arne Koschel, Andreas Rausch, Gernot Starke: Basiswissen Softwarearchitektur. 5. Auflage, dpunkt Verlag, Heidelberg 2024.
5050
- [[[Goll,Goll 2014]]] Joachim Goll: Architektur- und Entwurfsmuster der Softwaretechnik: Mit lauffähigen Beispielen in Java (in German). Springer-Vieweg Verlag, 2. Auflage 2014.
5151

5252
// H
53-
- [[[hofmeister,Hofmeister et. al 1999]]] Christine Hofmeister, Robert Nord, Dilip Soni: _Applied Software Architecture_, Addison-Wesley, 1999
54-
- [[[hohpe,Hohpe+2004]]] Hohpe, G. and WOOLF, B.A.: _Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions_, Addison-Wesley Professional, 2004
53+
- [[[hofmeister,Hofmeister+ 1999]]] Christine Hofmeister, Robert Nord, Dilip Soni: _Applied Software Architecture_, Addison-Wesley, 1999
54+
- [[[hohpe,Hohpe+ 2004]]] Hohpe, G. and WOOLF, B.A.: _Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions_, Addison-Wesley Professional, 2004
5555
- [[[hombergs,Hombergs 2024]]] Hombergs, Tom: Get Your Hands Dirty on Clean Architecture, Packt, 2nd edition 2024.
56-
- [[[humble,Humble et. al 2010]]] Jez Humble, David Farley. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Pearson International, 2010
57-
- [[[hruschkaetalarc42, Hruschka+2021]]] Peter Hruschka, IvanKostov and Wolfgang Reimesch: arc42-by-Example Vol 2: Architecture Documentation for Embedded Systems and IoT. Leanpub, 2021. https://leanpub.com/arc42byexample-volume2
56+
- [[[humble,Humble+ 2010]]] Jez Humble, David Farley. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Pearson International, 2010
57+
- [[[hruschkaetalarc42, Hruschka+ 2021]]] Peter Hruschka, Ivan Kostov and Wolfgang Reimesch: arc42-by-Example Vol 2: Architecture Documentation for Embedded Systems and IoT. Leanpub, 2021. https://leanpub.com/arc42byexample-volume2
5858
// I
5959
- [[[ietf-http,IETF HTTP]]] Internet Engineering Task Force: RFC 9110, HTTP Semantics. Online: https://www.rfc-editor.org/rfc/rfc9110.html
6060
- [[[isaqbdownloads,iSAQB Downloads]]] iSAQB public download site. https://public.isaqb.org. Contains curricula and mock-examination.
@@ -73,15 +73,15 @@
7373
// L
7474
- [[[lange21,Lange 2021]]] Kenneth Lange: The Functional Core, Imperative Shell Pattern, online: <https://www.kennethlange.com/functional-core-imperative-shell/>
7575
- [[[lehman,Lehman 1980]]] Meir M. Lehman: Programs, Life Cycles, and Laws of Software Evolution. Proceedings of the IEEE, 68(9), 1060-1076, 1980.
76-
- [[[lehmanwiki,Lehman's Laws]]] Laws of Software Evolution. <https://en.wikipedia.org/wiki/Lehman%27s_laws_of_software_evolution>
76+
- [[[lehmanwiki,Wiki-LehmansLaws]]] Laws of Software Evolution. <https://en.wikipedia.org/wiki/Lehman%27s_laws_of_software_evolution>
7777
- [[[lilienthal,Lilienthal 2024]]] Carola Lilienthal: Langlebige Softwarearchitekuren. 4. Auflage, dpunkt Verlag 2024.
7878
- [[[lilienthal-en,Lilienthal 2019]]] Carola Lilienthal: Sustainable Software Architecture: Analyze and Reduce Technical Debt. dpunkt Verlag 2019.
7979
- [[[liskov,Liskov 1994]]] Barbara H. Liskov, Jeannette M. Wing: A behavioral notion of subtyping. ACM Transactions on Programming Languages and Systems, Volume 16, Issue 6, 1994. <doi:10.1145/197320.197383>
8080

8181

8282
// M
8383
- [[[maguire, Maguire 2019]]] Sandy Maguire: Algebra-Driven Design - Elegant Solutions from Simple Building Blocks. Leanpub, 2019.
84-
- [[[miller-distributed,Miller et. al]]] Heather Miller, Nat Dempkowski, James Larisch, Christopher Meiklejohn: Distributed Programming (to appear, but content-complete) <https://github.com/heathermiller/dist-prog-book>.
84+
- [[[miller-distributed,Miller+]]] Heather Miller, Nat Dempkowski, James Larisch, Christopher Meiklejohn: Distributed Programming (to appear, but content-complete) <https://github.com/heathermiller/dist-prog-book>.
8585

8686
// N
8787
- [[[newman,Newman 2021]]] Sam Newman. Building Microservices - Designing Fine-Grained Systems. O'Reilly 2nd edition 2021.
@@ -97,24 +97,23 @@
9797
- [[[q42,Q42]]] arc42 Quality Model, online: <https://quality.arc42.org>.
9898

9999
// R
100-
- [[[rajlich,Rajlich+2000]]] Václav T. Rajlich, Keith H. Bennett: A Staged Model for the Software Life Cycle. IEEE Computer 33(7): 66-71, 2000.
100+
- [[[rajlich,Rajlich+ 2000]]] Václav T. Rajlich, Keith H. Bennett: A Staged Model for the Software Life Cycle. IEEE Computer 33(7): 66-71, 2000.
101101
- [[[readcommunication,Read 2023]]] Jacqui Read: Communication Patterns - An Engineering Approach. A Guide for Developers and Architects. OReilly 2023.
102-
- [[[richardsfundamentals,Richards+20]]] Mark Richards, Neal Ford: Fundamentals of Software Architecture - An Engineering Approach. OReilly 2020.
103-
- [[[rozanskiwoods, Rozanski+11]]] Nick Rozanski, Eoin Woods: Software Systems Architecture - Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley, 2nd edition 2011.
102+
- [[[richardsfundamentals,Richards+ 2020]]] Mark Richards, Neal Ford: Fundamentals of Software Architecture - An Engineering Approach. OReilly 2020.
103+
- [[[rozanskiwoods, Rozanski+ 2011]]] Nick Rozanski, Eoin Woods: Software Systems Architecture - Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley, 2nd edition 2011.
104104

105105
// S
106106
- [[[solid, SOLID]]] Samuel Oloruntoba and Anish Singh Walia: SOLID: The First 5 Principles of Object Oriented Design, <https://www.digitalocean.com/community/conceptual-articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design>.
107-
- [[[sperberklaeren, Sperber+Klaeren]]] Michael Sperber, Herber Klaeren: Schreibe Dein Programm! Tübingen University Press, 2023. <https://www.deinprogramm.de/sdp/>.
107+
- [[[sperberklaeren, Sperber+ 2023]]] Michael Sperber, Herber Klaeren: Schreibe Dein Programm! Tübingen University Press, 2023. <https://www.deinprogramm.de/sdp/>.
108108
- [[[starke,Starke 2024]]] Gernot Starke: Effektive Softwarearchitekturen - Ein praktischer Leitfaden (in German). 10. Auflage, Carl Hanser Verlag 2024. Website: https://esabuch.de
109-
- [[[starkelorz, Starke-Lorz-2023]]] Gernot Starke, Alexander Lorz: Software Architecture Foundation, CPSA Foundation® Exam Preparation. Van Haaren Publishing, 2nd edition, 2023.
110-
- [[[starkeetalarc42, Starke+2023]]] Gernot Starke, Michael Simons, Stefan Zörner, Ralf D. Müller, and Hendrik Lösch: arc42-by-Example - Software Architecture Documentation in Practice. Leanpub, 3rd edition 2023. https://leanpub.com/arc42byexample
109+
- [[[starkelorz, Starke+ 2023a]]] Gernot Starke, Alexander Lorz: Software Architecture Foundation, CPSA Foundation® Exam Preparation. Van Haaren Publishing, 2nd edition, 2023.
110+
- [[[starkeetalarc42, Starke+ 2023b]]] Gernot Starke, Michael Simons, Stefan Zörner, Ralf D. Müller, and Hendrik Lösch: arc42-by-Example - Software Architecture Documentation in Practice. Leanpub, 3rd edition 2023. https://leanpub.com/arc42byexample
111111
- [[[sysml,SysML]]] What is SysML <https://sysml.org/>. For diagrams, see also <https://sysml.org/tutorials/sysml-diagram-tutorial/>.
112112

113113

114114

115-
116115
// T
117-
- [[[distributedsystems,vanSteen+Tanenbaum]]] Andrew Tanenbaum, Maarten van Steen: Distributed Systems, Principles and Paradigms. <https://www.distributed-systems.net/>.
116+
- [[[distributedsystems,Tanenbaum+]]] Andrew Tanenbaum, Maarten van Steen: Distributed Systems, Principles and Paradigms. <https://www.distributed-systems.net/>.
118117

119118
// U
120119
- [[[uml,UML]]] The UML reading room, collection of UML resources <https://www.omg.org/technology/readingroom/UML.htm>. See also <https://www.uml-diagrams.org/>.
@@ -124,5 +123,5 @@
124123
- [[[yorgey,Yorgey 2012]]] Brent A. Yorgey, Monoids: Theme and Variations. Proceedings of the 2012 Haskell Symposium, September 2012 <https://doi.org/10.1145/2364506.2364520>
125124

126125
// Z
127-
- [[[zimmermann-api,Zimmermann+2022]]] Olaf Zimmermann, Mirko Stocker, Daniel Lübke, Uwe Zdun, Cesare Pautasso: Patterns for API Design: Simplifying Integration with Loosely Coupled Message Exchanges. Addison-Wesley, 2022.
126+
- [[[zimmermann-api,Zimmermann+ 2022]]] Olaf Zimmermann, Mirko Stocker, Daniel Lübke, Uwe Zdun, Cesare Pautasso: Patterns for API Design: Simplifying Integration with Loosely Coupled Message Exchanges. Addison-Wesley, 2022.
128127
- [[[zoerner,Zörner 2021]]] Stefan Zörner: Softwarearchitekturen dokumentieren und kommunizieren. 3. Auflage, Carl Hanser Verlag, 2021.
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# 012 - Citation Key Standardization
2+
3+
## Status: Accepted
4+
5+
## Context
6+
7+
The iSAQB curricula and related documents currently (11/2024) use inconsistent citation keys/labels for referencing sources. This includes varying formats for:
8+
- Multiple author references
9+
- Year formatting
10+
- Special character handling
11+
- Edge cases like standards, wikis, or online resources
12+
13+
```
14+
[Miller et. al]
15+
[Sperber+Klaeren]
16+
[Rajlich+2000]
17+
[Bass+ 2021]
18+
[Richards+20]
19+
```
20+
21+
The use of mixed styles and formats, makes maintenance difficult and potentially confuses readers. This affects readability and synchronization between different iSAQB documents, particularly when cross-referencing between curricula, glossary, and other materials.
22+
23+
## Decision
24+
25+
Standardize citation keys starting with the FL curriculum, try to implement the following set of guidelines across other iSAQB documentation.
26+
27+
### 1. Basic Format
28+
29+
```
30+
[lastname YYYY] - single author: [Starke 2024]
31+
[lastname+ YYYY] - multiple authors: [Bass+ 2021]
32+
[lastname YYYYa] - multiple works same year: [Buschmann 1996a]
33+
```
34+
35+
Where:
36+
- Author is the surname of the first author only
37+
- YYYY is the four-digit year
38+
- Space between Author and Year
39+
- "+" indicates multiple authors
40+
- No space between Author and +
41+
42+
### 2. Special Cases
43+
44+
```
45+
[standard-id] - standards: [ISO-25010:2023]
46+
[abbreviation] - known terms: [arc42]
47+
[concept] - concept/website without author: [SOLID], [UML]
48+
[Wiki-topic] - Wikipedia: [Wiki-SOLID], [Wiki-LehmansLaws]
49+
[organization] - organizations [CNCF], [CNCF 2024]
50+
[lastname-concept] - concept/website with author: [Fowler-PoEAA]
51+
[org-topic] - organization docs: [IETF-HTTP], [CNCF-Cloud]
52+
[org-doctype] - organization publications: [iSAQB-Glossary], [iSAQB-Foundation]
53+
```
54+
55+
### 3. Naming Rules
56+
1. Author Names:
57+
- Use surname only: "Martin Fowler" → [Fowler 2002]
58+
- For multiple authors, use first author: "Gamma, Helm, Johnson, Vlissides" → [Gamma+ 1994]
59+
- Alternative known names allowed: "Gang of Four" → [GoF 1994]
60+
- For multiple works by same author/year, append lowercase letters (a, b, c...)
61+
62+
2. Special Characters:
63+
- Remove apostrophes: "Conway's Law" → [ConwaysLaw]
64+
- Keep possessive 's': "Lehman's Laws" → [LehmansLaws]
65+
- Use CamelCase for compound names: "Model View Controller" → [ModelViewController]
66+
- Only if CamelCase is not applicable or confusing, use space: [IETF HTML]
67+
- Keep established names/abbreviations: [arc42]
68+
69+
3. Edge Cases:
70+
- Unknown author: Use organization or short title
71+
- No date available: Omit year component
72+
- Standards: Keep standard number/identifier but shorten if possible: "ISO/IEC 42010:2022" → [ISO 42010:2022]
73+
- Wikipedia articles: Always prefix with "Wiki-"
74+
- For multiple works by same author without year, use descriptive suffix: [Fowler-Patterns], [Fowler-Testing]
75+
76+
77+
## Rationale
78+
79+
This format:
80+
- Aligns with majority of existing citations in FL curriculum and glossary
81+
- Provides clear distinction between single/multiple authors
82+
- Maintains readability while being concise
83+
- Allows easy processing and maintenance
84+
- Accommodates special cases without complexity
85+
86+
## Consequences
87+
88+
- Apply to new citations immediately
89+
- Update existing citations gradually during regular document maintenance
90+
- Document exceptions when required

0 commit comments

Comments
 (0)