Version 107.1 by Thomas Schwotzer on 2025/04/08 12:33

Hide last authors
Thomas Schwotzer 87.1 1 Dieses Lehrmodul besteht - wie viele - aus einem praktischen und einen eher theoretischen Teil. Im praktischen Teil lernen Sie den Bau einer Android Anwendung, deren Testen und wenden (neue) Kenntnisse einiger Software-Engineering-Prinzipien an. Wir beginnen am Anfang des Semesters in diese Themen einzuführen. Die Übungen dienen ausschließlich zur Arbeit an Ihrer App. Bei der Arbeit unterstütze ich Sie natürlich gern. Wir werden uns auch mit Unit-Tests beschäftigen. Das ist Gegenstand von Programmieren 3 - sehen Sie das hier als Vertiefung und vor allem den praktischen Einsatz.
2
3 Sobald Sie am Arbeiten an Ihrer App sind, vertiefen wir einige theoretische Aspekte der mobilen Betriebssysteme und Netzwerke. Diese Themen werden in den Modulen Drahtlose Netzwerke und [[Dezentrale Systeme>>url:https://wiki.htw-berlin.de/confluence/display/fb4mobileapplicatio/B210+Decentralized+Systems||shape="rect"]] weiter vertieft.
4
5 Die Endnote setzt sich aus zwei Teilen zusammen:
6
7 1. Ihr Android-Projekt wird bewertet.
8 1. Sie schreiben eine Klausur.
9
Thomas Schwotzer 106.1 10 Beide Teile gehen zu** 50%** in die Endnote ein. Außerdem: **Das Projekt muss erfolgreich bestanden sein**, d.h. wenigstens 50% der Leistung wurden erbracht. Wird das Projekt nicht erfolgreich bestanden, schließen Sie den Kurs mit einem Fehlerversuch ab.
Thomas Schwotzer 87.1 11
Thomas Schwotzer 93.1 12 Wir sind eine Hochschule der angewandten Wissenschaften. Ich meine, es ist ein richtiges Prinzip, wenn das Modul nur Studierende erfolgreich abschließen können, die wenigstens grundlegend in der Lage sind, eine Android-App zu implementieren.
13
Thomas Schwotzer 87.1 14 Die Prozentzahlen aus Projekt und Klausur ergeben die Note dieses Moduls.
15
16 Implikationen daraus:
17
18 Mit einem perfekten Projekt (100%) und einer Klausur mit 0% erhielten Sie als Endnote eine 4,0 ( (100+0) / 2 = 50% → 4,0). Das streben Sie nicht an; das Vorgehen ist aber deutlich besser kalkulierbar als die vorherige Variante. Ich empfehle das nicht.
19
20 Mehr Details zu den Anforderungen und dem Ablauf des semesterbegleitendes Projektes finden Sie hier:
21
Thomas Schwotzer 106.1 22 [[attach:Projekt_Ablauf.pdf||target="_blank"]]
Thomas Schwotzer 87.1 23
24
25 Ablauf des Kurses. Das kann sich in den Semestern jeweils ändern. Es ist der grobe Fahrplan.
26
27 (% class="wrapped" %)
28 |=(((
29 #
30 )))|=(((
31 Lehreinheit
32 )))|=(((
33 Inhalt
34 )))|=(((
35 Links auch zum Selbststudium
36 )))|=(((
37 Übung
38 )))
39 |(((
40 **0**
41 )))|(((
42 **Einstieg**
43 )))|(((
44 (% class="content-wrapper" %)
45 (((
46 Wir reden darüber was Sie in diesem Kurs machen werden. Wir sprechen über das semesterbegleitende Projekt und kurz über die abschließende Klausur.
47 )))
48
49 Wir werfen einen kleinen Blick in die Geschichte, siehe dazu die Folien "wer die Geschichte nicht kennt..." in unserem Moodle-Kurs.
50
51 (% class="content-wrapper" %)
52 (((
53 Wir ordnen Android einmal ein (Dalvik, Java, JVM, Android, ..). Und wir reden über Kotlin und Java und wie Android einen gesamten Softwaremarkt - nicht veränderte - eliminierte.
54 )))
55 )))|(((
Thomas Schwotzer 106.1 56
Thomas Schwotzer 87.1 57 )))|(((
58 (% class="content-wrapper" %)
59 (((
60 Wir stellen Arbeitsfähigkeit her. Am Ende der Übung haben Sie ein lauffähige Entwicklungsumgebung installiert.
61
62 [[Android-Studio Download>>url:https://developer.android.com/studio||shape="rect"]]
63
Thomas Schwotzer 97.1 64 Sie arbeiten das Tutorial [[Build your first application in Java>>url:https://web.archive.org/web/20240304060923/https://developer.android.com/codelabs/build-your-first-android-app#0||shape="rect"]] (das ist keine perfekte Lösung. Die Diskussion zu Kotlin führen wir in der Übung. Das wird sich auch ändern ab Sommer 25).
Thomas Schwotzer 87.1 65
Thomas Schwotzer 96.1 66 durch. Sie stoppen an der Stelle, an der Sie Fragmente implementieren sollen. Stattdessen laden Sie sich das folgende Programmskelett in einem eigenen Projekt herunter und bringen es zum Laufen.
Thomas Schwotzer 87.1 67
Thomas Schwotzer 96.1 68
Thomas Schwotzer 87.1 69 {{view-file att--filename="CompBasedAppSkeleton.zip" display="thumbnail" height="150"/}}
70 )))
71 )))
72 |(((
Thomas Schwotzer 100.1 73 **2 (Reihenfolge Wechseln im Sommer 25)**
Thomas Schwotzer 87.1 74 )))|(((
75 **Android und MVC**
76 )))|(((
77 Wir schauen uns das Konzept MVC anhand einer kleinen Beispielanwendung an. Und reden dabei über Komponenten. Die brauchen wir, um stabile Software zu entwickeln. Weil wir Systeme in Teilsysteme zerlegen müssen, um sie testen zu können. Und das werden Sie in diesem Semester auch praktisch üben.
78
79 Wir schauen uns das Android-Skeleton-Programm genau das rechts neben diesem Satz zu finden ist. Anhand dessen können wir eine Menge über Software-Architekturen diskutieren. Und machen das auch.
80
81 Bei der Gelegenheit kann ich auch loswerden, warum man [[anonyme Klassen>>url:https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html||shape="rect"]] sehr sehr vorsichtig einsetzen sollte. Sie führen meistens dazu, dass man Code hat, der sich ständig wiederholt und in der Tendenz nicht mehr wartbar ist.
82
Thomas Schwotzer 106.1 83
Thomas Schwotzer 87.1 84 )))|(((
85 [[Android:Activity-Lifecycle>>url:https://developer.android.com/guide/components/activities/activity-lifecycle||shape="rect"]]
86
87 [[Wikipedia:MVC>>url:https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller||shape="rect"]]
88
89 [[Mediathek:Facade+Library>>url:https://mediathek.htw-berlin.de/album/video/SEPrinzipienFacadeInversionOfControlFrameworkLibraryDelegate/e603e84f2e279e3f8334f0ce1f3f4dcb/253||shape="rect"]]
90 )))|(((
91 (% class="content-wrapper" %)
92 (((
Thomas Schwotzer 106.1 93
Thomas Schwotzer 87.1 94 )))
95 )))
96 |(((
Thomas Schwotzer 106.1 97 **1a) (s.o.)**
Thomas Schwotzer 87.1 98 )))|(((
Thomas Schwotzer 106.1 99 **Vom Use-Case zum Interface**
Thomas Schwotzer 99.1 100 )))|(((
101 (% class="content-wrapper" %)
102 (((
103 Wir diskutieren einen Ansatz wie an eine mobile App entwickeln kann. Ein paar Worte über Viewpoints: Mobile Anwendungen kann man wie alle nicht-trivialen Systeme aus unterschiedlichen Perspektiven designen und beschreiben. Wir diskutieren das einmal.
104 )))
105 )))|(((
106 [7]
107 )))|(((
108 (% class="content-wrapper" %)
109 (((
Thomas Schwotzer 106.1 110
Thomas Schwotzer 99.1 111 )))
112 )))
113 |(((
Thomas Schwotzer 106.1 114 **1b) (s.o.)**
Thomas Schwotzer 102.1 115 )))|(((
116 **Komponenten**
117 )))|(((
118 Wir machen einen kurzen Einstieg in Software-Komponenten. Was ist das, wie beschreibt man das, wie testet man das? Und warum ist es gut, so zu denken? Und wir reden einmal darüber was ein technical white paper ist. Und was all das mit test-driven-development zu tun hat.
119 )))|(((
120 [[UML Komponentendiagramme>>url:https://www.uml-diagrams.org/component-diagrams.html||shape="rect"]]
121 )))|(((
122 (% class="content-wrapper" %)
123 (((
Thomas Schwotzer 106.1 124
Thomas Schwotzer 102.1 125 )))
126 )))
127 |(((
Thomas Schwotzer 99.1 128 **3**
129 )))|(((
Thomas Schwotzer 87.1 130 **Bluetooth**
131 )))|(((
132 Wir schauen uns Bluetooth als ein Beispiel drahtlosen Layer 2 Netzwerkes an, das ohne vordefinierte Infrastruktur auskommt. Bluetooth kann eine Basis für mobile Ad-hoc Netzwerke (MANETs) sein.
133 )))|(((
134 [4], [5], [6]
135 )))|(((
Thomas Schwotzer 106.1 136
Thomas Schwotzer 87.1 137 )))
138 |(((
Thomas Schwotzer 106.1 139 **4**
Thomas Schwotzer 87.1 140 )))|(((
Thomas Schwotzer 106.1 141 **Security (Identitäten)**
Thomas Schwotzer 87.1 142 )))|(((
143 Geräte bauen Verbindungen und Netzwerke auf. Es ist oftmals sehr relevant, die Identät des anderen Gerätes oder der Person, die das Gerät benutzt sicher stellen zu können. Wir reden über Pairing in Bluetooth, wie man in PLMN sicher stellt, dass das Handy mit den Netz verbunden ist, dass es will und wir schauen uns Zertifikate an.
144 )))|(((
145 [3]
146
147 [[Mediathek: Challenge-Response>>url:https://mediathek.htw-berlin.de/album/video/Prinzipien-2F-Challenge2DResponse/fe59c3b462b1a0fb5d0fef27ddae5377/253||shape="rect"]]
148
149 [[Mediathek: Kryptographie, Zertifikate>>url:https://mediathek.htw-berlin.de/album/video/SEPrinzipien2FKryptografie/20ac30ae9d0301ebc1e5c66b9c33bf18/253||shape="rect"]]
150
151 [[Wikipedia: Diffie-Hellman-Keys>>url:https://de.wikipedia.org/wiki/Diffie-Hellman-Schl%C3%BCsselaustausch||shape="rect"]]
152 )))|(((
Thomas Schwotzer 106.1 153
Thomas Schwotzer 87.1 154 )))
155 |(((
Thomas Schwotzer 106.1 156 **5**
Thomas Schwotzer 87.1 157 )))|(((
158 **Routing in Ad-hoc Netzwerken**
159 )))|(((
160 Wir beschäftigen uns mir Routing Protokollen in Ad-hoc Netzwerken. Wir schauen uns konkret zwei an (DSDV und DSR) und werden dabei über die Unterschiede zwischen pro- und reaktiven Verfahren sprechen.
161
162 Das Thema vertiefen Sie gern im WP-Modul //Technik mobiler Systeme//.
163 )))|(((
Thomas Schwotzer 106.1 164
Thomas Schwotzer 87.1 165 )))|(((
Thomas Schwotzer 106.1 166
Thomas Schwotzer 87.1 167 )))
168 |(((
Thomas Schwotzer 106.1 169
Thomas Schwotzer 87.1 170 )))|(((
171 Naming
172 )))|(((
173 Services müssen benannt werden. Rechner bekommen nicht nur IP-Adressen, sondern auch Namen, die sich Menschen merken können. Wir müssen reden über DNS, LDAP und Servicebeschreibungen, z.B. in Bluetooth (SDP)
174 )))|(((
Thomas Schwotzer 106.1 175
Thomas Schwotzer 87.1 176 )))|(((
Thomas Schwotzer 106.1 177
Thomas Schwotzer 87.1 178 )))
179 |(((
Thomas Schwotzer 106.1 180 **6a**
Thomas Schwotzer 87.1 181 )))|(((
182 **Prinzipien Ortung**
183 )))|(((
184 Wir sprechen über Triangulierung und vor allem Trilateration.
185 )))|(((
186 [[Wikipedia: Lateration>>url:https://de.wikipedia.org/wiki/Lateration||shape="rect"]]
187
188 [[Indoor-Ortung Prinzipien - ein Papier>>url:https://github.com/LocationBasedSystems/Documentation/blob/master/praesentationen_kurzePaper/2016_09_30_Konzept_Skizze_Indoor_Ortung_Navigation.pdf||shape="rect"]]
189 )))|(((
Thomas Schwotzer 106.1 190
Thomas Schwotzer 87.1 191 )))
192 |(((
Thomas Schwotzer 106.1 193 **6b**
Thomas Schwotzer 87.1 194 )))|(((
195 **GPS**
196 )))|(((
197 Wir verstehen wie satellitengestützte Navigation funktioniert. Sie können mit Begriffen wir Referenzellipsoid, Geoid, Normalnull, Nullmeridian, Almanach und Ephemeriden umgehen.
198 )))|(((
199 [[Wikipedia: GPS>>url:https://de.wikipedia.org/wiki/Global_Positioning_System||shape="rect"]]
Thomas Schwotzer 88.1 200
201 [[Earth-centered / Earth-fixed_coordinate_system (ECEF)>>url:https://en.wikipedia.org/wiki/Earth-centered,_Earth-fixed_coordinate_system||shape="rect"]]
Thomas Schwotzer 87.1 202 )))|(((
Thomas Schwotzer 106.1 203
Thomas Schwotzer 87.1 204 )))
205 |(((
Thomas Schwotzer 106.1 206
Thomas Schwotzer 87.1 207 )))|(((
208 **Indoor-Ortung**
209 )))|(((
210 Nach all den Überlegen davor ist sehr klar wie man innerhalb von Gebäuden Ortung realisieren kann. Dort erreichen uns nicht zuverlässig Satellitensignale, oft gar keine. Sie wissen was das Proxityverfahren ist und ggf. sogar warum 5G-Funknetze hier neue Meilensteine setzen.
211 )))|(((
Thomas Schwotzer 89.1 212 [[Überblickspapier>>url:https://github.com/LocationBasedSystems/Documentation/tree/master/praesentationen_kurzePaper||shape="rect"]]
Thomas Schwotzer 87.1 213 )))|(((
Thomas Schwotzer 106.1 214
Thomas Schwotzer 87.1 215 )))
216 |(((
Thomas Schwotzer 106.1 217
Thomas Schwotzer 87.1 218 )))|(((
219 Publish-Subscribe / Observer-Pattern
220 )))|(((
221 Wir schauen uns die Pattern an und deren Inkarnation in Android als Intent und Broadcast.
222 )))|(((
223 [[Android:Broadcasts>>url:https://developer.android.com/guide/components/broadcasts||shape="rect"]]
224
225 [[Android:Services>>url:https://developer.android.com/guide/components/services||shape="rect"]]
226 )))|(((
Thomas Schwotzer 106.1 227
Thomas Schwotzer 87.1 228 )))
229 |(((
Thomas Schwotzer 106.1 230
Thomas Schwotzer 87.1 231 )))|(((
232 Software-Architekturen
233 )))|(((
234 Wir schauen uns einmal generell Architekturen verteilter Systeme an.
235 )))|(((
236 (% class="content-wrapper" %)
237 (((
238 [[Mediathek:Video>>url:https://mediathek.htw-berlin.de/album/video/Verteilte-Anwendungsmuster-P2P-Client-Server-Agenten-SharkASAP/db6b10a1014fbda7eeb9b49eadead34b/329||shape="rect"]]
239
Thomas Schwotzer 106.1 240
Thomas Schwotzer 87.1 241 )))
242 )))|(((
Thomas Schwotzer 106.1 243
Thomas Schwotzer 87.1 244 )))
245 |(((
Thomas Schwotzer 106.1 246
Thomas Schwotzer 87.1 247 )))|(((
Thomas Schwotzer 104.1 248 **ASAP / Shark**
Thomas Schwotzer 87.1 249 )))|(((
Thomas Schwotzer 106.1 250
Thomas Schwotzer 87.1 251 )))|(((
252 * [[Projekt ASAP / Shark Videos (Album)>>url:https://mediathek.htw-berlin.de/album/view/aid/278||shape="rect"]]
253 * [[ASAP@Github>>url:https://github.com/SharedKnowledge/ASAPJava/wiki||shape="rect"]]
254 * [[AWE-Reallabor>>url:https://wiki.htw-berlin.de/confluence/display/htwclusterssc/FB4+AWE+Reallabor||shape="rect"]]
255 )))|(((
Thomas Schwotzer 106.1 256
Thomas Schwotzer 87.1 257 )))
258
259 == {{id name="B35MobileBetriebssystemeundNetzwerke-ErgebnissevonvorherigenSemestern"/}}Ergebnisse von vorherigen Semestern ==
260
261 Es gibt eine Reihe von Videos in unserer Mediathek. Suchen Sie nach [[GMA>>url:https://mediathek.htw-berlin.de/search/title/GMA/description/GMA/tags/GMA/type/all/search/basic/categoriesopt/0||shape="rect"]] oder [[Grundlagen mobiler Anwendungen>>url:https://mediathek.htw-berlin.de/search/title/Grundlagen+mobiler+Anwendungen/description/Grundlagen+mobiler+Anwendungen/tags/Grundlagen+mobiler+Anwendungen/type/all/search/basic/categoriesopt/0||shape="rect"]].
262
263 == {{id name="B35MobileBetriebssystemeundNetzwerke-Literatur"/}}Literatur ==
264
265 [1] Google/Android: //[[Documentation / Tutorials>>url:https://developer.android.com/docs||shape="rect"]]//
266
267 [2] Andrew S. Tanenbaum: //Moderne Betriebssysteme (2. aktualisierte Auflage)//, Prentice Hall (2002)
268
269 [3] [[Ellisys Bluetooth Expert Notes: EEN_BT07 – Secure Simple Pairing Explained>>url:https://www.ellisys.com/technology/een_bt07.pdf||shape="rect"]]
270
271 [4] Bluetooth Special Interest Group: [[Bluetooth Core 5.4. Spec>>url:https://www.bluetooth.com/specifications/specs/core-specification-5-4/||rel="nofollow" shape="rect" class="external-link"]], 2023
272
273 [5] [[Wikipedia: Bluetooth Profiles>>url:https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles||shape="rect"]]
274
275 [6] [[Martin Wooley, A Developer's Guide to Bluetooth Technology (2016)>>url:https://www.bluetooth.com/blog/a-developers-guide-to-bluetooth/||shape="rect"]]
276
Thomas Schwotzer 95.1 277 [7] [[Open Distributed Processing - Viewpoints>>url:https://en.wikipedia.org/wiki/RM-ODP||shape="rect"]]
278
279
280
281
Thomas Schwotzer 87.1 282 == {{id name="B35MobileBetriebssystemeundNetzwerke-KlausurenausvorherigenSemestern"/}}Klausuren aus vorherigen Semestern ==
283
Thomas Schwotzer 92.1 284 (% class="wrapped" %)
Thomas Schwotzer 91.1 285 |=(((
286 (% class="content-wrapper" %)
287 (((
Thomas Schwotzer 90.1 288 {{view-file att--filename="23_24_PZR2_Klausur.pdf" display="thumbnail" height="150"/}}
Thomas Schwotzer 91.1 289 )))
290 )))|=(((
291 (% class="content-wrapper" %)
292 (((
Thomas Schwotzer 90.1 293 {{view-file att--filename="PZR1_Klausur.pdf" display="thumbnail" height="150"/}}
Thomas Schwotzer 91.1 294 )))
295 )))|=(((
296 (% class="content-wrapper" %)
297 (((
298 {{view-file att--filename="24_PZR1_Klausur.pdf" display="thumbnail" height="150"/}}
299 )))
300 )))|=(((
Thomas Schwotzer 106.1 301
Thomas Schwotzer 91.1 302 )))
Thomas Schwotzer 87.1 303
304
305
Thomas Schwotzer 90.1 306
Thomas Schwotzer 87.1 307
Thomas Schwotzer 90.1 308
309
Thomas Schwotzer 91.1 310
311
Thomas Schwotzer 106.1 312