O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Mobile App Engineering

Book Description

Mobile Anwendungen (Apps) sind allgegenwärtig und haben sich im privaten und geschäftlichen Umfeld weltweit durchgesetzt. Viele Unternehmen lassen mobile Apps entwickeln, um ihre Webanwendungen zu unterstützen bzw. um diese vollständig auf mobilen Endgeräten verfügbar zu machen.Und auch wenn es sich prinzipiell um Softwareentwicklung handelt, gibt es bei der Mobile-App-Entwicklung signifikante Unterschiede zur konventionellen objektorientierten Softwareentwicklung für Desktop- und Notebook-Computer.Vor diesem Hintergrund beschreibt dieses Lehrbuch ein strukturiertes und systematisches Vorgehen zur Entwicklung mobiler Apps. Anhand eines durchgehenden industriellen Anwendungsbeispiels wird praxisnah und detailliert beschrieben, wie sämtliche Phasen des Softwarelebenszyklus – also von den Requirements bis zum Go Live – mit geeigneten Methoden, Werkzeugen, Sprachen und Best Practices der Softwaretechnik durchzuführen sind, um hochqualitative mobile Apps zu entwickeln.

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Geleitwort
  5. Vorwort
  6. Danksagung
  7. Inhaltsverzeichnis
  8. 1 Einleitung
  9. 2 Herausforderungen zur Entwicklung mobiler Apps
    1. 2.1 Oberflächengetriebene Konzeption und Entwicklung
    2. 2.1.1 Usability
    3. 2.1.2 User Experience
    4. 2.1.3 User-Centered Design
    5. 2.1.4 Interaktionsdesign
    6. 2.1.5 Multi-Touch-Displays
    7. 2.1.6 Guidelines, Styleguides und Normen
    8. 2.1.7 Konsequenzen für das Mobile App Engineering
    9. 2.2 Hardware- und softwareseitige Fragmentierung
    10. 2.2.1 Mobile Endgeräte und Betriebssysteme
    11. 2.2.2 Gesten
    12. 2.2.3 Konsequenzen für das Mobile App Engineering
    13. 2.3 Entwicklungsparadigmen
    14. 2.3.1 Native mobile App
    15. 2.3.2 Mobile Web-App
    16. 2.3.3 Hybride mobile App
    17. 2.3.4 Interpretierte mobile App
    18. 2.3.5 Cross-kompilierte mobile App
    19. 2.3.6 Konsequenzen für das Mobile App Engineering
    20. 2.4 Hardwarekomponenten mobiler Endgeräte
    21. 2.4.1 Multitouch-Display
    22. 2.4.2 Akkumulator
    23. 2.4.3 Central Processing Unit
    24. 2.4.4 Netzanbindung
    25. 2.4.5 Sensoren und Aktoren
    26. 2.4.5.1 Beschleunigungssensor
    27. 2.4.5.2 Gyroskop
    28. 2.4.5.3 GPS-Sensor
    29. 2.4.5.4 Magnetfeldsensor
    30. 2.4.5.5 Kamera
    31. 2.4.5.6 Mikrofon
    32. 2.4.5.7 Helligkeitssensor
    33. 2.4.5.8 Annäherungssensor
    34. 2.4.5.9 Voltmeter
    35. 2.4.5.10 Vibrationsaktor
    36. 2.4.5.11 Weitere Sensoren
    37. 2.4.6 Konsequenzen für das Mobile App Engineering
    38. 2.5 Berücksichtigung des Anwendungskontexts
    39. 2.6 Vertrieb via App Store
    40. 2.7 Zusammenfassung
    41. 2.8 Übungen
    42. 2.9 Weiterführende Literatur
  10. 3 Die mobile Stromversorgungs-App ENPURE
    1. 3.1 Projektbeschreibung
    2. 3.1.1 Zielsetzung
    3. 3.1.2 Zielgruppe
    4. 3.1.3 Eingesetztes Entwicklungsparadigma
    5. 3.1.4 Rollen im Projekt
    6. 3.1.5 Laufzeit und Umfang des Projekts
    7. 3.1.6 Middleware und Backend-Systeme
    8. 3.2 Initialisierung der mobilen App
    9. 3.3 Onboarding
    10. 3.4 Registrierung
    11. 3.5 Tarifrechner
    12. 3.5.1 Registrierung zum Vertragsabschluss
    13. 3.5.2 Zahlungsdaten eingeben
    14. 3.5.3 Passwortvergabe
    15. 3.6 Lieferprozess/Mein Vertrag
    16. 3.6.1 Daten und Bonität prüfen
    17. 3.6.2 Anschluss prüfen
    18. 3.6.3 Altvertrag kündigen
    19. 3.6.4 Liefertermin bestätigen
    20. 3.6.5 Vertrag ablehnen
    21. 3.7 Vertragsinformationen laden
    22. 3.8 Abschlag und Zählerstand
    23. 3.8.1 Abschlag anpassen
    24. 3.8.2 Zählerstand mitteilen
    25. 3.8.3 Zählerstände abrufen
    26. 3.9 Rechnungen verwalten
    27. 3.10 Postfach
    28. 3.10.1 Preisinformation übermitteln
    29. 3.10.2 Bezahlung
    30. 3.10.3 Informationen über Zahlungseingang
    31. 3.10.4 Erinnerung/Mahnung
    32. 3.11 Login
    33. 3.11.1 Passwort ändern/vergessen
    34. 3.11.2 Einstellungen
    35. 3.12 Kündigung
    36. 3.13 Informationen
    37. 3.14 Reporting und Tracking
    38. 3.14.1 Crash- und Bug-Reporting
    39. 3.14.2 Benutzungsstatistik
    40. 3.15 Zusammenfassung
    41. 3.16 Übungen
    42. 3.17 Bezugsquellen der mobilen App ENPURE
  11. 4 Requirements Engineering
    1. 4.1 Projektvision und Benutzergruppen definieren
    2. 4.1.1 Projektvision
    3. 4.1.2 Ziel- und Benutzergruppen definieren
    4. 4.2 Anwendungs- und Systemkontext ermitteln
    5. 4.2.1 Systemkontext ermitteln
    6. 4.2.2 Anwendungskontext ermitteln
    7. 4.2.3 Domänenmodell erstellen
    8. 4.3 Personas entwickeln
    9. 4.4 Szenarien entwerfen
    10. 4.5 Storyboard erstellen
    11. 4.6 Anforderungen ermitteln
    12. 4.6.1 Anforderungen kategorisieren
    13. 4.6.2 Semistrukturierte Interviews durchführen
    14. 4.6.3 Anforderungsworkshop durchführen
    15. 4.6.4 Interaction Room
    16. 4.6.5 Anwendungsfälle modellieren
    17. 4.6.6 Anwendungsfall-Spezifikationsschablone ausfüllen
    18. 4.6.7 User Stories ermitteln
    19. 4.6.8 Funktionale Anforderungen
    20. 4.6.9 Nicht funktionale Anforderungen
    21. 4.6.9.1 Mobile Endgeräte und Betriebssystemversionen
    22. 4.6.9.2 Entwicklungsparadigma auswählen
    23. 4.6.9.3 Einzuhaltende Standards definieren
    24. 4.6.10 Requirements im ENPURE-Projekt
    25. 4.7 Anforderungsspezifikation erstellen
    26. 4.7.1 Arten der Anforderungsdokumentation
    27. 4.7.2 Anforderungsdokument gliedern
    28. 4.7.3 Einsatzzwecke der Anforderungsspezifikation
    29. 4.7.4 Anforderungen testbar formulieren
    30. 4.7.5 Anforderungen analysieren
    31. 4.7.6 Anforderungen priorisieren
    32. 4.7.6.1 Nutzenbetrachtung
    33. 4.7.6.2 Risikobetrachtung
    34. 4.7.6.3 Kostenbetrachtung
    35. 4.7.7 Anforderungsspezifikation im ENPURE-Projekt
    36. 4.8 Versionsplanung durchführen
    37. 4.9 Zusammenfassung
    38. 4.10 Übungen
    39. 4.11 Weiterführende Literatur
  12. 5 Konzeption und Design
    1. 5.1 Interaktionsdesign entwickeln
    2. 5.1.1 Visuelles Vokabular
    3. 5.1.1.1 Grundannahmen
    4. 5.1.1.2 Basiselemente des visuellen Vokabulars
    5. 5.1.1.3 Eindeutige und prägnante Namen
    6. 5.1.1.4 Ungerichtete Kanten
    7. 5.1.1.5 Gerichtete Kanten
    8. 5.1.1.6 Kantenbeschriftungen
    9. 5.1.1.7 Simultane Ereignisse
    10. 5.1.1.8 Fortsetzungspunkte
    11. 5.1.1.9 Wecker-App unter iOS 10
    12. 5.1.2 UML-Zustandsdiagramme
    13. 5.1.3 Interaktionsdesign im ENPURE-Projekt
    14. 5.2 Mobile App grafisch gestalten
    15. 5.2.1 Gestaltungsrichtlinien für mobile Apps
    16. 5.2.2 Visuelles Konzept entwickeln
    17. 5.3 GUI-Prototyping
    18. 5.3.1 Prototyping-Grundlagen
    19. 5.3.2 Arten des Prototypings
    20. 5.3.3 Low-Fidelity-Prototyping
    21. 5.3.4 High-Fidelity-Prototyping
    22. 5.4 Konzeption der Barrierefreiheit
    23. 5.4.1 Visuelle Beeinträchtigungen
    24. 5.4.2 Hörschädigungen
    25. 5.4.3 Physische Beeinträchtigungen
    26. 5.4.4 Kognitive Beeinträchtigungen
    27. 5.4.5 Richtlinien zur Barrierefreiheit
    28. 5.5 Seitenspezifikation erstellen
    29. 5.6 Softwarearchitektur
    30. 5.6.1 Model-View-Controller
    31. 5.6.1.1 MVC-Muster im praktischen Einsatz
    32. 5.6.1.2 Anwendung des MVC-Musters unter Android
    33. 5.6.1.3 Anwendung des MVC-Musters unter iOS
    34. 5.6.2 Model-View-Presenter
    35. 5.6.3 Model-View-ViewModel
    36. 5.6.4 Softwarearchitektur im ENPURE-Projekt
    37. 5.7 Release- und Iterationsplan erstellen
    38. 5.7.1 Dauer der Iterationen
    39. 5.7.2 Explorative Iterationen
    40. 5.7.3 Erstellung des Release- und Iterationsplans
    41. 5.8 Zusammenfassung
    42. 5.9 Übungen
    43. 5.10 Weiterführende Literatur
  13. 6 Implementierung
    1. 6.1 Programmierung nativer mobiler Apps
    2. 6.2 Android-Grundlagen
    3. 6.2.1 Entwicklung, Build und Ausführung
    4. 6.2.2 Signierung
    5. 6.2.3 Laden und Installation
    6. 6.2.4 Ausführung
    7. 6.2.5 Garbage Collection
    8. 6.2.6 App-Komponenten
    9. 6.2.6.1 Activity
    10. 6.2.6.2 Service
    11. 6.2.6.3 Content Provider
    12. 6.2.6.4 Broadcast Receiver
    13. 6.2.7 Android-Systemarchitektur
    14. 6.2.8 Entwicklung mit Android Studio
    15. 6.2.8.1 Das Android-Manifest
    16. 6.2.8.2 Java-Quellcode
    17. 6.2.8.3 Ressourcen
    18. 6.2.8.4 Gradle
    19. 6.2.9 Intents und Intent-Filter
    20. 6.2.9.1 Explizite Intents
    21. 6.2.9.2 Implizite Intents
    22. 6.2.9.3 Intent-Filter
    23. 6.2.10 Fragmente
    24. 6.2.11 Design
    25. 6.2.12 View und ViewGroup
    26. 6.2.13 Back-Stack
    27. 6.2.14 App-Widgets und Widgets
    28. 6.2.15 Prozesse und Threads
    29. 6.2.16 Android-Implementierung des ENPURE-Tarifrechners
    30. 6.3 iOS-Grundlagen
    31. 6.3.1 Cocoa Touch
    32. 6.3.2 Entwicklung mit Xcode
    33. 6.3.3 App-Komponenten
    34. 6.3.3.1 UIScreen
    35. 6.3.3.2 UIWindow
    36. 6.3.3.3 UIView
    37. 6.3.3.4 UIViewController
    38. 6.3.3.5 UINavigationController
    39. 6.3.3.6 UIPageViewController
    40. 6.3.3.7 UITabBarController
    41. 6.3.3.8 UITableViewController
    42. 6.3.4 Auslieferung einer mobilen iOS-App
    43. 6.3.5 Bedienung einer iOS-App
    44. 6.3.6 Design
    45. 6.3.7 Ausführung
    46. 6.3.8 iOS-Implementierung des ENPURE-Tarifrechners
    47. 6.4 Cross-Plattform-Entwicklung
    48. 6.4.1 Xamarin
    49. 6.4.2 React Native
    50. 6.4.3 Apache Cordova mit Ionic
    51. 6.5 Dokumentation der Programmierung
    52. 6.6 Zusammenfassung
    53. 6.7 Übungen
    54. 6.8 Weiterführende Quellen und Literatur
  14. 7 Test
    1. 7.1 Definition
    2. 7.2 Herausforderungen und Strategien
    3. 7.2.1 Entwicklung und Ausführung
    4. 7.2.2 Fragmentierung
    5. 7.2.3 Konzeption, Design und native Entwicklung
    6. 7.2.4 Anschaffungskosten
    7. 7.2.5 Gerätehardware und deren Eigenschaften
    8. 7.2.6 Testwerkzeuge zur Automatisierung
    9. 7.3 Arten von Tests
    10. 7.3.1 Whitebox-Test
    11. 7.3.2 Blackbox-Test
    12. 7.3.3 Greybox-Test
    13. 7.4 Tests für mobile Apps
    14. 7.4.1 Teststrategie
    15. 7.4.2 Testfälle
    16. 7.4.3 Testszenarien
    17. 7.5 Tests während der Konzeptions- und Designphase
    18. 7.5.1 Usability-Test durch Experten
    19. 7.5.1.1 Testobjekt
    20. 7.5.1.2 Testziele
    21. 7.5.1.3 Tester und Operatoren
    22. 7.5.1.4 Testmethode
    23. 7.5.1.5 Testablauf
    24. 7.5.1.6 Usability-Test durch Experten im ENPURE-Projekt
    25. 7.5.2 Usability-Test durch Benutzer
    26. 7.6 Tests während der Implementierung
    27. 7.6.1 Debuggen
    28. 7.6.2 Unit Tests
    29. 7.6.3 Prüfung der Logdateien
    30. 7.6.4 Integrationstests
    31. 7.6.5 Funktions- und Benutzbarkeitstests
    32. 7.6.5.1 Funktionstests
    33. 7.6.5.2 Benutzbarkeitstest
    34. 7.6.5.3 Test der Fehlermeldungen
    35. 7.6.6 Performanztest
    36. 7.7 Tests nach der Implementierung
    37. 7.7.1 Test des Energieverbrauchs
    38. 7.7.1.1 Test bei vollgeladenem Akku
    39. 7.7.1.2 Test bei fast entladenem Akku
    40. 7.7.1.3 Test bei leerem Akku
    41. 7.7.1.4 Werkzeuge zur Anzeige des Energieverbrauchs
    42. 7.7.2 Stress- und Robustheitstest
    43. 7.7.3 Stand-by-Test
    44. 7.7.4 Installationstest
    45. 7.7.5 Update-Test
    46. 7.7.6 Datenbanktest
    47. 7.7.7 Test des lokalen Speichers
    48. 7.7.8 Sicherheitstest
    49. 7.7.9 Testen der Betriebssystem-Richtlinien
    50. 7.7.10 Konformitätstest
    51. 7.7.11 Crashtest
    52. 7.8 Testautomatisierung
    53. 7.8.1 Identifizierungstechniken
    54. 7.8.2 Ausgewählte Testwerkzeuge
    55. 7.8.2.1 Appium
    56. 7.8.2.2 Calabash
    57. 7.8.2.3 Espresso Test Recorder
    58. 7.8.2.4 ios-driver
    59. 7.8.2.5 Keep It Functional
    60. 7.8.2.6 Monkey
    61. 7.8.2.7 Robotium
    62. 7.8.2.8 Selenium
    63. 7.8.2.9 Spoon
    64. 7.8.3 Kriterien zur Auswahl eines Testwerkzeugs
    65. 7.9 Testdokumentation
    66. 7.9.1 Test-Checklisten
    67. 7.9.2 Checklisten im ENPURE-Projekt
    68. 7.10 Zusammenfassung
    69. 7.11 Übungen
    70. 7.12 Weiterführende Literatur
  15. 8 Go Live
    1. 8.1 Veröffentlichungsort einer mobilen App
    2. 8.2 Veröffentlichungsprozesse
    3. 8.2.1 Veröffentlichung im Apple App Store
    4. 8.2.2 Veröffentlichung bei Google Play
    5. 8.2.3 Mobile-App-Indexierung
    6. 8.3 Mobile-App-Tracking
    7. 8.3.1 Vorgehen beim Mobile-App-Tracking
    8. 8.3.2 Kennzahlen für das Mobile-App-Tracking
    9. 8.3.3 Reaktionsmöglichkeiten
    10. 8.3.4 Zielgruppen des Mobile-App-Tracking
    11. 8.3.5 Softwarewerkzeuge zum Mobile-App-Tracking
    12. 8.4 Pflege und Wartung
    13. 8.5 Zusammenfassung
    14. 8.6 Übungen
    15. 8.7 Weiterführende Literatur
  16. 9 Zusammenfassung und Ausblick
  17. Anhang
    1. A Abkürzungen
    2. B Glossar
    3. C Literatur- und Quellenverzeichnis
  18. Fußnoten
  19. Stichwortverzeichnis