|
| 1 | +--- |
| 2 | +title: software design with C4 |
| 3 | +author: Gergő Pintér, PhD |
| 4 | +date: gergo.pinter@uni-corvinus.hu |
| 5 | +lang: en-US |
| 6 | +title-slide-attributes: |
| 7 | + data-background-color: "#181d37" |
| 8 | + data-background-image: ../assets/by-sa.svg |
| 9 | + data-background-size: 125px |
| 10 | + data-background-position: 1.25rem calc(100% - 1.25rem) |
| 11 | +slideNumber: "true" |
| 12 | +showSlideNumber: "print" |
| 13 | +revealjs-url: "../assets/reveal.js-5.2.1/" |
| 14 | +--- |
| 15 | + |
| 16 | +# flashcard application requirements |
| 17 | + |
| 18 | +- Android and iOS (tablets should be supported) |
| 19 | + - at least 5 years old devices should be supported |
| 20 | +- offline app, no subscription plans, one-time payment via the store |
| 21 | +- how the words are groupped |
| 22 | + - by chapters of the textbook |
| 23 | +- the customer provides a wordlist (with meaning) for each chapter |
| 24 | + - in Excel format (xlsx) |
| 25 | +- user will not be able to add new words |
| 26 | +- there is only one interface language |
| 27 | + - the majority language of the country |
| 28 | + |
| 29 | +## requirements part 2 |
| 30 | + |
| 31 | +- logo of the language association should appear on the main screen |
| 32 | +- GUI customization: light/dark theme, font size settings |
| 33 | +- a learning mode is required, which just goes through the words of a chapter |
| 34 | +- and a practicing mode, which selects words randomly from every group |
| 35 | + - words with more left-swipe should appear more frequent |
| 36 | + - if a word was swiped left, three right swipes needed to consider it learnt |
| 37 | +- users should be able to check the statistics |
| 38 | + - progress bar (learnt words / total) |
| 39 | + - which days they learned in the last month, how many cards they've learnt |
| 40 | + |
| 41 | +## simple, offline architecture |
| 42 | + |
| 43 | + |
| 44 | + |
| 45 | +# Level 1: System Context diagram |
| 46 | + |
| 47 | +:::::::::::: {.columns} |
| 48 | +::::::::: {.column width="70%"} |
| 49 | + |
| 50 | +- high level relation with other systems or users |
| 51 | +- similar to use case diagram |
| 52 | +- technologies, protocols and other low-level details are not important |
| 53 | +- understandable for non-technical people |
| 54 | + |
| 55 | +::: {.wide-quote .mt-2} |
| 56 | +> Shows the software system you are building and how it fits into the world in terms of the people who use it and the other software systems it interacts with. |
| 57 | +> |
| 58 | +> Simon Brown - [The C4 Model for Software Architecture](https://www.infoq.com/articles/C4-architecture-model/) |
| 59 | +
|
| 60 | +::: |
| 61 | +::::::::: |
| 62 | +::::::::: {.column width="30%"} |
| 63 | +](c4/system_context.excalidraw.svg) |
| 64 | + |
| 65 | +::::::::: |
| 66 | +:::::::::::: |
| 67 | + |
| 68 | +# component diagram (C4) for statistics module |
| 69 | + |
| 70 | +:::::::::::: {.columns} |
| 71 | +::::::::: {.column width="60%"} |
| 72 | +{width=400 preview-image="../lectures/figures/user_statistics/c4_component.excalidraw.svg" preview-fit="contain"} |
| 73 | + |
| 74 | +[open in Excalidraw](https://excalidraw.com/#json=R0T17732fAGdyAXSdkQO9,vF377cD9ucud_0AoSlF0ag) |
| 75 | + |
| 76 | +::::::::: |
| 77 | +::::::::: {.column width="40%"} |
| 78 | +{width=300} |
| 79 | + |
| 80 | +::::::::: |
| 81 | +:::::::::::: |
| 82 | + |
| 83 | +# customer wants to add telemetry {visibility="hidden"} |
| 84 | + |
| 85 | + |
| 86 | + |
0 commit comments