-
Notifications
You must be signed in to change notification settings - Fork 0
/
12-design.bib
331 lines (300 loc) · 10.2 KB
/
12-design.bib
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
@book{Brown2011,
editor = {Amy Brown and Greg Wilson},
title = {The Architecture of Open Source Applications: Elegance, Evolution, and a Few Fearless Hacks},
year = {2011},
publisher = {Lulu},
ISBN = {978-1257638017},
url = {https://aosabook.org}
}
@book{Brown2012,
editor = {Amy Brown and Greg Wilson},
title = {The Architecture of Open Source Applications: Structure, Scale, and a Few More Fearless Hacks},
year = {2012},
publisher = {Lulu},
ISBN = {978-0201103427},
url = {https://aosabook.org}
}
@book{Budgen2021,
author = {David Budgen},
title = {Software Design: Creating Solutions for Ill-Structured Problems},
edition = {3rd},
year = {2021},
publisher = {Chapman and Hall/CRC Press},
isbn = {9781138196612}
}
@inproceedings{Byckling2005,
author = {Pauli Byckling and Petri Gerdt and Jorma Sajaniemi},
title = {Roles of Variables in Object-Oriented Programming},
booktitle = {Proc. {OOPSLA'05}},
year = {2005},
publisher = {{ACM}},
doi = {10.1145/1094855.1094972},
note = {Presents single-variable design patterns common in novice programs.}
}
@inproceedings{Cherubini2007,
author = {Mauro Cherubini and Gina Venolia and Rob DeLine and Amy J. Ko},
title = {Let's go to the whiteboard: how and why software developers use drawings},
booktitle = {Proc. {CHI'07}},
year = {2007},
publisher = {{ACM}},
doi = {10.1145/1240624.1240714},
note = {Reports that developers draw diagrams to aid discussion rather than to document designs.}
}
@book{Feathers2004,
author = {Michael C. Feathers},
title = {Working Effectively with Legacy Code},
publisher = {Prentice-Hall},
year = {2004},
isbn = {978-0131177055},
note = {Argues that we can prevent code decaying by making it testable and demonstrates how to do this.}
}
@book{Forsgren2018,
author = {Nicole Forsgren and Jez Humble and Gene Kim},
title = {Accelerate: The Science of DevOps},
publisher = {{IT} Revolution Press},
year = {2017},
isbn = {978-1942788331},
note = {Reports results of surveys about DevOps.}
}
@book{Fowler2018,
author = {Martin Fowler},
title = {Refactoring: Improving the Design of Existing Code},
edition = {2nd},
publisher = {Addison-Wesley Professional},
year = {2018},
isbn = {978-0134757599},
note = {The standard reference on refactoring software.}
}
@inproceedings{Fucci2016,
doi = {10.1145/2961111.2962592},
url = {https://doi.org/10.1145/2961111.2962592},
year = {2016},
month = {September},
publisher = {{ACM}},
author = {Davide Fucci and Giuseppe Scanniello and Simone Romano and Martin Shepperd and Boyce Sigweni and Fernando Uyaguari and Burak Turhan and Natalia Juristo and Markku Oivo},
title = {An External Replication on the Effects of Test-driven Development Using a Multi-site Blind Analysis Approach},
booktitle = {Proceedings of the 10th {ACM}/{IEEE} International Symposium on Empirical Software Engineering and Measurement}
}
@article{Gomez2019,
doi = {10.1016/j.jnma.2019.01.006},
year = {2019},
month = {8},
publisher = {Elsevier},
volume = {111},
number = {4},
pages = {383--392},
author = {L.E. Gomez and Patrick Bernet},
title = {Diversity improves performance and outcomes},
journal = {Journal of the National Medical Association},
note = {Diverse teams of caregivers produce better healthcare outcomes.}
}
@article{Gompers2018,
author = {Paul Gompers and Silpa Kovvali},
title = {The Other Diversity Dividend},
journal = {Harvard Business Review},
volume = {96},
number = {4},
year = {2018},
pages = {72--77},
note = {Shows that diverse venture capital firms make better investments.}
}
@book{Hermans2021,
author = {Felienne Hermans},
title = {The Programmer{\textquotesingle}s Brain: What every programmer needs to know about cognition},
publisher = {Manning},
year = {2021},
isbn = {978-1617298677}
}
@book{Johnson2017,
author = {Jeff Johnson and Kate Finn},
title = {Designing User Interfaces for an Aging Population: Towards Universal Design},
year = {2017},
isbn = {978-0128044674},
publisher = {Morgan Kaufmann}
}
@book{Kerievsky2004,
author = {Joshua Kerievsky},
title = {Refactoring to Patterns},
publisher = {Addison-Wesley Professional},
year = {2004},
isbn = {978-0321213358},
note = {Showed that most refactorings move code to patterns or between patterns.}
}
@book{Kernighan2019,
author = {Brian W. Kernighan},
title = {{UNIX}: A History and a Memoir},
year = {2019},
isbn = {978-1695978553},
publisher = {Independently published}
}
@book{Kim2016,
author = {Gene Kim and Patrick Debois and John Willis and Jez Humble},
title = {The {DevOps} Handbook},
year = {2016},
publisher = {{IT} Revolution Press},
isbn = {978-1942788003},
note = {Helped popularize the idea of DevOps and some of the core practices.}
}
@article{Liskov1994,
doi = {10.1145/197320.197383},
year = {1994},
month = {11},
publisher = {{ACM}},
volume = {16},
number = {6},
pages = {1811--1841},
author = {Barbara H. Liskov and Jeannette M. Wing},
title = {A behavioral notion of subtyping},
journal = {{ACM} Transactions on Programming Languages and Systems},
note = {Formal exposition of the Liskov Substitution Principle.}
}
@book{Meyer1994,
author = {Bertrand Meyer},
title = {Object-Oriented Software Construction},
publisher = {Prentice-Hall},
year = {1994},
isbn = {978-0136290490},
note = {A foundational text in object-oriented software design.}
}
@article{Miller1956,
author = {George A. Miller},
title = {The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information},
journal = {Psychological Review},
volume = {63},
number = {2},
pages = {81--97},
year = {1956},
publisher = {American Psychological Association ({APA})},
doi = {10.1037/h0043158},
note = {The original paper on the limited size of short-term memory.}
}
@inproceedings{Nakshatri2016,
doi = {10.1145/2901739.2903499},
year = {2016},
month = {5},
publisher = {{ACM}},
author = {Suman Nakshatri and Maithri Hegde and Sahithi Thandra},
title = {Analysis of exception handling patterns in Java projects},
booktitle = {Proc. {MSR'13}},
note = {Some depressing news about how programmers (don't) handle exceptions.}
}
@article{Parnas1986,
author = {David Lorge Parnas and Paul C. Clements},
title = {A Rational Design Process: How and Why to Fake It},
journal = {{IEEE} Transactions on Software Engineering},
volume = {{SE}-12},
number = {2},
pages = {251--257},
year = {1986},
month = {2},
publisher = {Institute of Electrical and Electronics Engineers ({IEEE})},
doi = {10.1109/tse.1986.6312940},
note = {Argues that using a rational design process is less important than looking as though you had.}
}
@inproceedings{Petre2013,
author = {Marian Petre},
title = {{UML} in practice},
booktitle = {Proc. {ICSE'13}},
year = {2013},
pages = {722--731},
note = {Found that very few programmers ever use UML as intended.}
}
@book{Petre2016,
author = {Marian Petre and André {van der Hoek}},
title = {Software Design Decoded: 66 Ways Experts Think},
year = {2016},
publisher = {{MIT} Press},
isbn = {0262035189},
note = {A short illustrated overview of how expert software developers think.}
}
@book{Reekie2006,
author = {John Reekie and Rohan {McAdam}},
title = {A Software Architecture Primer},
publisher = {Angophora Press},
year = {2006},
isbn = {978-0646458410}
}
@article{Scanlan1989,
author = {David A. Scanlan},
title = {Structured Flowcharts Outperform Pseudocode: An Experimental Comparison},
journal = {{IEEE} Software},
volume = {6},
number = {5},
pages = {28--36},
year = {1989},
month = {9},
publisher = {Institute of Electrical and Electronics Engineers ({IEEE})},
doi = {10.1109/52.35587},
note = {Reports that students understand flowcharts better than pseudocode if both are equally well structured.}
}
@book{Schon1984,
author = {Donald A. Schön},
title = {The Reflective Practitioner: How Professionals Think In Action},
year = {1984},
publisher = {Basic Books},
isbn = {0465068782},
url = {https://isbndb.com/book/0465068782},
note = {A groundbreaking look at how professionals in different fields actually solve problems.}
}
@article{Sholler2019,
doi = {10.1371/journal.pcbi.1007296},
year = {2019},
month = {9},
publisher = {{PLoS}},
volume = {15},
number = {9},
pages = {e1007296},
author = {Dan Sholler and Igor Steinmacher and Denae Ford and Mara Averick and Mike Hoye and Greg Wilson},
title = {Ten simple rules for helping newcomers become contributors to open projects},
journal = {{PLOS} Computational Biology},
note = {Evidence-based suggestions for making newcomers feel welcome.}
}
@article{Smalls2021,
doi = {10.1371/journal.pcbi.1008563},
url = {https://doi.org/10.1371/journal.pcbi.1008563},
year = {2021},
month = {3},
publisher = {Public Library of Science ({PLoS})},
volume = {17},
number = {3},
pages = {e1008563},
author = {Danielle Smalls and Greg Wilson},
editor = {Scott Markel},
title = {Ten quick tips for staying safe online},
journal = {{PLOS} Computational Biology}
}
@article{Taschuk2017,
author = {Morgan Taschuk and Greg Wilson},
publisher = {Public Library of Science},
title = {Ten Simple Rules for Making Research Software More Robust},
journal = {{PLOS} Computational Biology},
volume = {13},
number = {4},
month = {April},
year = {2017},
DOI = {10.1371/journal.pcbi.1005412}
}
@incollection{Tichy2010,
author = {Walter Tichy},
title = {The Evidence for Design Patterns},
booktitle = {Making Software},
editor = {Andy Oram and Greg Wilson},
year = {2010},
isbn = {978-0596808327},
publisher = {O'Reilly},
note = {Summarizes a series of studies showing that learning design patterns actually makes someone a better programmer.}
}
@misc{UKHO,
author = {{UK Home Office}},
title = {Designing for accessibility},
year = {viewed August 2021},
url = {https://ukhomeoffice.github.io/accessibility-posters/posters/accessibility-posters.pdf}
}
@book{Wickham2017,
author = {Hadley Wickham and Garrett Grolemund},
title = {R for Data Science: Import, Tidy, Transform, Visualize, and Model Data},
publisher = {O'Reilly},
year = {2017},
isbn = {978-1491910399},
note = {The standard reference for the tidyverse set of libraries.}
}