forked from ls1intum/thesis-template-typst
-
Notifications
You must be signed in to change notification settings - Fork 0
/
thesis.typ
513 lines (451 loc) · 14.6 KB
/
thesis.typ
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
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
#import "thesis_template.typ": *
#import "common/cover.typ": *
#import "common/titlepage.typ": *
#import "thesis_typ/disclaimer.typ": *
#import "thesis_typ/acknowledgement.typ": *
#import "thesis_typ/abstract_en.typ": *
#import "thesis_typ/abstract_de.typ": *
#import "common/metadata.typ": *
#cover(
title: titleEnglish,
degree: degree,
program: program,
author: author,
)
#titlepage(
title: titleEnglish,
titleGerman: titleGerman,
degree: degree,
program: program,
supervisor: supervisor,
advisors: advisors,
author: author,
startDate: startDate,
submissionDate: submissionDate
)
#disclaimer(
title: titleEnglish,
degree: degree,
author: author,
submissionDate: submissionDate
)
#acknowledgement()
#abstract_en()
#abstract_de()
#show: project.with(
title: titleEnglish,
titleGerman: titleGerman,
degree: degree,
program: program,
supervisor: supervisor,
advisors: advisors,
author: author,
startDate: startDate,
submissionDate: submissionDate
)
= Introduction
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Introduce the topic of your thesis, e.g. with a little historical overview.
]
== Problem
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Describe the problem that you like to address in your thesis to show the importance of your work. Focus on the negative symptoms of the currently available solution.
]
== Motivation
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Motivate scientifically why solving this problem is necessary. What kind of benefits do we have by solving the problem?
]
== Objectives
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Describe the research goals and/or research questions and how you address them by summarizing what you want to achieve in your thesis, e.g. developing a system and then evaluating it.
]
== Outline
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Describe the outline of your thesis
]
= Background
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Describe each proven technology / concept shortly that is important to understand your thesis. Point out why it is interesting for your thesis. Make sure to incorporate references to important literature here.
]
== e.g. User Feedback
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This section would summarize the concept User Feedback using definitions, historical overviews and pointing out the most important aspects of User Feedback.
]
== e.g. Representational State Transfer
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This section would summarize the architectural style Representational State Transfer (REST) using definitions, historical overviews and pointing out the most important aspects of the architecture.
]
== e.g. Scrum
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This section would summarize the agile method Scrum using definitions, historical overviews and pointing out the most important aspects of Scrum.
]
= Related Work
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Describe related work regarding your topic and emphasize your (scientific) contribution in contrast to existing approaches / concepts / workflows. Related work is usually current research by others and you defend yourself against the statement: “Why is your thesis relevant? The problem was al- ready solved by XYZ.” If you have multiple related works, use subsections to separate them.
]
= Requirements Analysis
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This chapter follows the Requirements Analysis Document Template in @bruegge2004object. Important: Make sure that the whole chapter is independent of the chosen technology and development platform. The idea is that you illustrate concepts, taxonomies and relationships of the application domain independent of the solution domain! Cite @bruegge2004object several times in this chapter.
]
== Overview
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Provide a short overview about the purpose, scope, objectives and success criteria of the system that you like to develop.
]
== Current System
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This section is only required if the proposed system (i.e. the system that you develop in the thesis) should replace an existing system.
]
== Proposed System
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: If you leave out the section “Current system”, you can rename this section into “Requirements”.
]
=== Functional Requirements
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: List and describe all functional requirements of your system. Also mention requirements that you were not able to realize. The short title should be in the form “verb objective”
- FR1 Short Title: Short Description.
- FR2 Short Title: Short Description.
- FR3 Short Title: Short Description.
]
=== Nonfunctional Requirements
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: List and describe all nonfunctional requirements of your system. Also mention requirements that you were not able to realize. Categorize them using the FURPS+ model described in @bruegge2004object without the category functionality that was already covered with the functional requirements.
- NFR1 Category: Short Description.
- NFR2 Category: Short Description.
- NFR3 Category: Short Description.
]
== System Models
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This section includes important system models for the requirements analysis.
]
=== Scenarios
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: If you do not distinguish between visionary and demo scenarios, you can remove the two subsubsections below and list all scenarios here.
*Visionary Scenarios*
Note: Describe 1-2 visionary scenario here, i.e. a scenario that would perfectly solve your problem, even if it might not be realizable. Use free text description.
*Demo Scenarios*
Note: Describe 1-2 demo scenario here, i.e. a scenario that you can implement and demonstrate until the end of your thesis. Use free text description.
]
=== Use Case Model
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This subsection should contain a UML Use Case Diagram including roles and their use cases. You can use colors to indicate priorities. Think about splitting the diagram into multiple ones if you have more than 10 use cases. *Important:* Make sure to describe the most important use cases using the use case table template (./tex/use-case-table.tex). Also describe the rationale of the use case model, i.e. why you modeled it like you show it in the diagram.
]
=== Analysis Object Model
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This subsection should contain a UML Class Diagram showing the most important objects, attributes, methods and relations of your application domain including taxonomies using specification inheritance (see @bruegge2004object). Do not insert objects, attributes or methods of the solution domain. *Important:* Make sure to describe the analysis object model thoroughly in the text so that readers are able to understand the diagram. Also write about the rationale how and why you modeled the concepts like this.
]
=== Dynamic Model
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This subsection should contain dynamic UML diagrams. These can be a UML state diagrams, UML communication diagrams or UML activity diagrams.*Important:* Make sure to describe the diagram and its rationale in the text. *Do not use UML sequence diagrams.*
]
=== User Interface
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Show mockups of the user interface of the software you develop and their connections / transitions. You can also create a storyboard. *Important:* Describe the mockups and their rationale in the text.
]
= System Design
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This chapter follows the System Design Document Template in @bruegge2004object. You describe in this chapter how you map the concepts of the application domain to the solution domain. Some sections are optional, if they do not apply to your problem. Cite @bruegge2004object several times in this chapter.
]
== Overview
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Provide a brief overview of the software architecture and references to other chapters (e.g. requirements analysis), references to existing systems, constraints impacting the software architecture..
]
== Design Goals
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Derive design goals from your nonfunctional requirements, prioritize them (as they might conflict with each other) and describe the rationale of your prioritization. Any trade-offs between design goals (e.g., build vs. buy, memory space vs. response time), and the rationale behind the specific solution should be described in this section
]
== Subsytem Decomposition
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Describe the architecture of your system by decomposing it into subsys- tems and the services provided by each subsystem. Use UML class diagrams including packages / components for each subsystem.
]
== Hardware Software Mapping
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This section describes how the subsystems are mapped onto existing hardware and software components. The description is accompanied by a UML deployment diagram. The existing components are often off-the-shelf components. If the components are distributed on different nodes, the network infrastructure and the protocols are also described.
]
== Persistent Data Management
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Optional section that describes how data is saved over the lifetime of the system and which data. Usually this is either done by saving data in structured files or in databases. If this is applicable for the thesis, describe the approach for persisting data here and show a UML class diagram how the entity objects are mapped to persistent storage. It contains a rationale of the selected storage scheme, file system or database, a description of the selected database and database administration issues.
]
== Access Control
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Optional section describing the access control and security issues based on the nonfunctional requirements in the requirements analysis. It also de- scribes the implementation of the access matrix based on capabilities or access control lists, the selection of authentication mechanisms and the use of en- cryption algorithms.
]
== Global Software Control
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Optional section describing the control flow of the system, in particular, whether a monolithic, event-driven control flow or concurrent processes have been selected, how requests are initiated and specific synchronization issues
]
== Boundry Conditions
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Optional section describing the use cases how to start up the separate components of the system, how to shut them down, and what to do if a component or the system fails.
]
= Case Study / Evaluation
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: If you did an evaluation / case study, describe it here.
]
== Design
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Describe the design / methodology of the evaluation and why you did it like that. E.g. what kind of evaluation have you done (e.g. questionnaire, personal interviews, simulation, quantitative analysis of metrics, what kind of participants, what kind of questions, what was the procedure?
]
== Objectives
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Derive concrete objectives / hypotheses for this evaluation from the general ones in the introduction.
]
== Results
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Summarize the most interesting results of your evaluation (without interpretation). Additional results can be put into the appendix.
]
== Findings
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Interpret the results and conclude interesting findings
]
== Discussion
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Discuss the findings in more detail and also review possible disadvantages that you found
]
== Limitations
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Describe limitations and threats to validity of your evaluation, e.g. reliability, generalizability, selection bias, researcher bias
]
= Summary
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: This chapter includes the status of your thesis, a conclusion and an outlook about future work.
]
== Status
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Describe honestly the achieved goals (e.g. the well implemented and tested use cases) and the open goals here. if you only have achieved goals, you did something wrong in your analysis.
]
=== Realized Goals
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Summarize the achieved goals by repeating the realized requirements or use cases stating how you realized them.
]
=== Open Goals
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Summarize the open goals by repeating the open requirements or use cases and explaining why you were not able to achieve them. Important: It might be suspicious, if you do not have open goals. This usually indicates that you did not thoroughly analyze your problems.
]
== Conclusion
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Recap shortly which problem you solved in your thesis and discuss your *contributions* here.
]
== Future Work
#rect(
width: 100%,
radius: 10%,
stroke: 0.5pt,
fill: yellow,
)[
Note: Tell us the next steps (that you would do if you have more time). Be creative, visionary and open-minded here.
]