Design und Entwicklung von Android Media Backend Services zur Steuerung von USB und Radio und Kommunikation mit Front-End Medienanwendungen. Die Backends erfüllen jeweils die Rollen MediaBrowserService oder MediaLibraryService innerhalb der Android Media Architektur.
Die Backend Services selbst nutzen ein reaktives Design mit parallelen und asynchronen Abläufen (flows), um den Front-End Anwendungen die Mediendaten sehr schnell zur Verfügung zu stellen.
Das Projekt folgte den Design-, Entwicklungs-, und Qualitätsprozessen des Herstellers, Entwicklungsprozess war agil (Scrum).
Verwendete Entwicklungssysteme:
Design und Entwicklung eines Unterhaltungssystem für Passagiere im Oberklassenmodell. Neben der Entwicklung der Android Anwendungen nach Designvorgaben des Herstellers musste auch Software entwickelt werden, um dieses System mit anderen Systemen im Fahrzeug zu integrieren. Die Aufgaben umfassten somit:
Das Projekt folgte den Design-, Entwicklungs-, und Qualitätsprozessen des Herstellers, Entwicklungsprozess war agil (Scrum).
Verwendete Entwicklungssysteme:
Entwicklung von Unittests in Kotlin, Build System mit cmake, Versionsverwaltung mit Git
Eine von mir bereits implementierte Bibliothek zur Nachrichtenverschlüsselung (basierend auf dem Double Ratchet Protokoll) wurde erweitert und teilweise neu entwickelt, um verschlüsselte Nachrichten über einen XMPP Server austauschen zu können. Diese Bibliothek dient als Basis für Anwendungen auf den Systemen Android, iOS und Windows. Neben den Verschlüsselungsfunktionen enthält die Bibliothek auch Funktionen zum verschlüsselten Speichern von Nachrichten und Anhängen, Kommunikation mit einem XMPP Server und weitere Hilfsfunktionen zur Verwaltung.
Für die jeweiligen Systeme, insbesondere Android, wurden entsprechende Module entwickelt und getestet, um die Einbindung in die verschiedenen Programmierumgebungen zu gewährleisten.
Für die Funktionstests wurden Tests für C++ und Java implementiert oder bestehende Tests erweitert. Die C++ Tests wurden auf Basis des Google Test Frameworks implementiert, die Java Tests verwenden JUnit und Androids Testumgebung für embedded Tests.
Die Softwareentwicklung erfolgt in einem agilen Entwicklungsprozess (Scrum).
Die Anforderungen an die neu zu erstellende Anwendung wurde seitens des Kunden in einem agilen, Scrum basierten Prozess zusammen mit den Fachabteilungen definiert.
Die Anwendung wurde dann entsprechend diesen Anforderungen entwickelt. Bei dem UI der Anwendung wurde besonderer Wert auf einfachste Bedienbarkeit gelegt, da die Nutzer die Störungsmeldungen in kurzer Zeit und während des normalen Arbeitsablaufes eingeben müssen.
Zusätzlich zur Entwicklung der Android-Anwendung wurden noch REST Schnittstellen zu einem Backendserver definiert und in der Anwendung implementiert.
Die Softwareentwicklung, die Tests sowie die Abnahme erfolgte einem agilen und strikten Scrum-Entwicklungsprozess.
Die bestehenden Anwendung musste in größeren Teilen neu strukturiert und angepasst werden, um Abläufe zur Steuerung des IoT Gerätes stabiler und sicherer zu machen. Darüber hinaus wurden auch Anpassungen vorgenommen, um die Bedienung der Anwendung besser an das in Android Bedienkonzept anzupassen.
Neben diesen Verbesserungen und Umstrukturierungen wurden auch neue Funktionen erstellt, die innerhalb von Sprints implementiert wurden. Hierbei war eine enge Zusammenarbeit zwischen Frontendentwicklung (Android, iOS), Backendserver und Entwicklung des IoT Gerätes notwendig.
Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum).
Der Kunde benötigt eine Rahmenapplikation, in die verschiedene weitere Funktionsmodule eingegliedert werden können. In einem ersten Schritte wurde ein Modul für Videolegitimation in die Rahmenapplikation integriert. In weiteren Schritte sollen weitere Module folgen.
Daneben die Unterstützung der Projektleitung bei Android-spezifischen Fragen, Deploymentkonzept, Bewertung der Softwarezulieferungen von Dritten, usw.
Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum).
In diesem Projekt bestand die Aufgabe darin eine bestehende Androidanwendung zu erweitern. Die Anwendung verwendet ein spezielles Framework, um Fahrzeugdaten zu erfassen und darzustellen, mit einem Backend-Server zu kommunizieren und Aufträge entgegenzunehmen.
Diese Anwendung wurde erweitert, um Bluetooth-Geräte zur Datenerfassung (Scanner, Fahrzeugdaten) zu unterstützen. Zusätzlich wurden noch eine Netzwerküberwachung sowie Schnittstellen für RFID Karten entwickelt.
Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum).
Design und die Entwicklung einer Anwendung für Android.
Die Anwendung implementiert verschlüsselte Audio- und Videoübertragung sowie Messaging mit Attachments (u.a. Audio, Video, Bild Attachements). Die Anwendung nutzt die übliche Android Architektur wie Activities, Fragments, Boradcastreceivers, und Services.
(https://play.google.com/store/apps/details?id=com.silentcircle.silentphone&hl=de)
Besondere Schwerpunkte dieser Anwendung liegen auf den Bereichen Sicherheit der Anwendung (verschlüsselte Kommunikation), Sicherheit der Daten, einfache Bedienbarkeit (UI Design und Implementierung), sowie auf Energieeffizienz um die Laufzeit der mobilen Geräte nicht zu verkürzen.
Die Verschlüsselungsfunktionen sowie bestimmte Protokollfunktionen wurden in den Programmiersprachen C und C++ implementiert und über die entsprechenden Schnittstellen mit dem Android Java Code integriert.
Die Nutzung von Android Diensten wie zum Beispiel Bluetooth, Powermanagement, Netzmanagment und Monitoring ist für diese Anwendung notwendig.
Ein wichtiger Teil des Projekts und der Implementierung ist die Integration der Anwendung mit den Backendsystemen. Die Integration mit Benutzerverwaltung und den Konfigurationssystemen Integration erfolgt mit Webservices (REST, JSON)
Die Projektentwicklung erfolgt in einem internationalen Team, überwiegend remote. Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum). Als Entwicklungssystem kommt Android Studio/Gradle zum Einsatz, Continous Integration (CI) erfolgt mit Jenkins, Softwarerepository ist Git, das Reportingsystem ist Atlassian JIRA.
In diesem Projekt bestand die Aufgabe darin für eine bereits vorhandene Bankenanwendung weiter automatisierte Test zu designen und zu implementieren. Das Ziel war die Testabläufe noch weiter zu automatisieren und die Qualität für die weitere Entwicklung sicherzustellen.
Die Anwendung verfügte bereits über einen größeren Umfang an normalen JUnit Tests, aber noch keinerlei automatisch ablaufende UI Tests. Die neuen UI Tests wurden hauptsächlich mit den Android Testverfahren Espresso, UI Automator und den entsprechenden Hilfsfunktionen implementiert.
In diesem Projekt bestand die Aufgabe darin eine vorhandene Anwendung für Kontaktdaten in Richtung Sicherheit weiterzuentwickeln. Dazu wurde die verwendete Datenbank (Android SQLite) gegen die Variante SQLCipher ausgetauscht und die Datenbankzugriffe entsprechen angepasst. Darüber hinaus wurden noch Hilfsfunktionen zur Passwort- und Schlüsselverwaltung implementiert.
Ein weiterer Schwerpunkt war die sogenannten „Cloud“ Funktionen zu entfernen, damit keine Benutzerdaten und Kontakte an externe Datenbanken übermittelt werden können (Facebook, Google, Microsoft und ähnliche). Dazu war eine Restrukturierung der SQL Kontaktdatenbank notwendig. Dies erforderte auch die Modifikation und teilweise Neuimplementierung der entsprechenden Android Content Provider für die Kontaktdaten.
Auch das UI wurde entsprechend den Anforderungen des Kunden umgestaltet und teilweise neu implementiert. Im Rahmen dieser Erweiterungen wurde auch eine Integration von Google Maps vorgenommen und getestet, allerdings aus Sicherheitsgründen nicht für das Produkt freigegeben.
Die Anwendung wurde auch an die Bedürfnisse der sichern VoIP Anwendung sowie einer sicheren Messageanwendung angepasst.
Die Projektentwicklung erfolgt in einem internationalen Team. Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum). Als Entwicklungssystem kommen Android Studio/Gradle oder Eclipse/ADT zum Einsatz, Continous Integration (CI) erfolgt mit Jenkins, das Reportingsystem ist Atlassian JIRA.
Design und Entwicklung von Android Media Backend Services zur Steuerung von USB und Radio und Kommunikation mit Front-End Medienanwendungen. Die Backends erfüllen jeweils die Rollen MediaBrowserService oder MediaLibraryService innerhalb der Android Media Architektur.
Die Backend Services selbst nutzen ein reaktives Design mit parallelen und asynchronen Abläufen (flows), um den Front-End Anwendungen die Mediendaten sehr schnell zur Verfügung zu stellen.
Das Projekt folgte den Design-, Entwicklungs-, und Qualitätsprozessen des Herstellers, Entwicklungsprozess war agil (Scrum).
Verwendete Entwicklungssysteme:
Design und Entwicklung eines Unterhaltungssystem für Passagiere im Oberklassenmodell. Neben der Entwicklung der Android Anwendungen nach Designvorgaben des Herstellers musste auch Software entwickelt werden, um dieses System mit anderen Systemen im Fahrzeug zu integrieren. Die Aufgaben umfassten somit:
Das Projekt folgte den Design-, Entwicklungs-, und Qualitätsprozessen des Herstellers, Entwicklungsprozess war agil (Scrum).
Verwendete Entwicklungssysteme:
Entwicklung von Unittests in Kotlin, Build System mit cmake, Versionsverwaltung mit Git
Eine von mir bereits implementierte Bibliothek zur Nachrichtenverschlüsselung (basierend auf dem Double Ratchet Protokoll) wurde erweitert und teilweise neu entwickelt, um verschlüsselte Nachrichten über einen XMPP Server austauschen zu können. Diese Bibliothek dient als Basis für Anwendungen auf den Systemen Android, iOS und Windows. Neben den Verschlüsselungsfunktionen enthält die Bibliothek auch Funktionen zum verschlüsselten Speichern von Nachrichten und Anhängen, Kommunikation mit einem XMPP Server und weitere Hilfsfunktionen zur Verwaltung.
Für die jeweiligen Systeme, insbesondere Android, wurden entsprechende Module entwickelt und getestet, um die Einbindung in die verschiedenen Programmierumgebungen zu gewährleisten.
Für die Funktionstests wurden Tests für C++ und Java implementiert oder bestehende Tests erweitert. Die C++ Tests wurden auf Basis des Google Test Frameworks implementiert, die Java Tests verwenden JUnit und Androids Testumgebung für embedded Tests.
Die Softwareentwicklung erfolgt in einem agilen Entwicklungsprozess (Scrum).
Die Anforderungen an die neu zu erstellende Anwendung wurde seitens des Kunden in einem agilen, Scrum basierten Prozess zusammen mit den Fachabteilungen definiert.
Die Anwendung wurde dann entsprechend diesen Anforderungen entwickelt. Bei dem UI der Anwendung wurde besonderer Wert auf einfachste Bedienbarkeit gelegt, da die Nutzer die Störungsmeldungen in kurzer Zeit und während des normalen Arbeitsablaufes eingeben müssen.
Zusätzlich zur Entwicklung der Android-Anwendung wurden noch REST Schnittstellen zu einem Backendserver definiert und in der Anwendung implementiert.
Die Softwareentwicklung, die Tests sowie die Abnahme erfolgte einem agilen und strikten Scrum-Entwicklungsprozess.
Die bestehenden Anwendung musste in größeren Teilen neu strukturiert und angepasst werden, um Abläufe zur Steuerung des IoT Gerätes stabiler und sicherer zu machen. Darüber hinaus wurden auch Anpassungen vorgenommen, um die Bedienung der Anwendung besser an das in Android Bedienkonzept anzupassen.
Neben diesen Verbesserungen und Umstrukturierungen wurden auch neue Funktionen erstellt, die innerhalb von Sprints implementiert wurden. Hierbei war eine enge Zusammenarbeit zwischen Frontendentwicklung (Android, iOS), Backendserver und Entwicklung des IoT Gerätes notwendig.
Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum).
Der Kunde benötigt eine Rahmenapplikation, in die verschiedene weitere Funktionsmodule eingegliedert werden können. In einem ersten Schritte wurde ein Modul für Videolegitimation in die Rahmenapplikation integriert. In weiteren Schritte sollen weitere Module folgen.
Daneben die Unterstützung der Projektleitung bei Android-spezifischen Fragen, Deploymentkonzept, Bewertung der Softwarezulieferungen von Dritten, usw.
Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum).
In diesem Projekt bestand die Aufgabe darin eine bestehende Androidanwendung zu erweitern. Die Anwendung verwendet ein spezielles Framework, um Fahrzeugdaten zu erfassen und darzustellen, mit einem Backend-Server zu kommunizieren und Aufträge entgegenzunehmen.
Diese Anwendung wurde erweitert, um Bluetooth-Geräte zur Datenerfassung (Scanner, Fahrzeugdaten) zu unterstützen. Zusätzlich wurden noch eine Netzwerküberwachung sowie Schnittstellen für RFID Karten entwickelt.
Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum).
Design und die Entwicklung einer Anwendung für Android.
Die Anwendung implementiert verschlüsselte Audio- und Videoübertragung sowie Messaging mit Attachments (u.a. Audio, Video, Bild Attachements). Die Anwendung nutzt die übliche Android Architektur wie Activities, Fragments, Boradcastreceivers, und Services.
(https://play.google.com/store/apps/details?id=com.silentcircle.silentphone&hl=de)
Besondere Schwerpunkte dieser Anwendung liegen auf den Bereichen Sicherheit der Anwendung (verschlüsselte Kommunikation), Sicherheit der Daten, einfache Bedienbarkeit (UI Design und Implementierung), sowie auf Energieeffizienz um die Laufzeit der mobilen Geräte nicht zu verkürzen.
Die Verschlüsselungsfunktionen sowie bestimmte Protokollfunktionen wurden in den Programmiersprachen C und C++ implementiert und über die entsprechenden Schnittstellen mit dem Android Java Code integriert.
Die Nutzung von Android Diensten wie zum Beispiel Bluetooth, Powermanagement, Netzmanagment und Monitoring ist für diese Anwendung notwendig.
Ein wichtiger Teil des Projekts und der Implementierung ist die Integration der Anwendung mit den Backendsystemen. Die Integration mit Benutzerverwaltung und den Konfigurationssystemen Integration erfolgt mit Webservices (REST, JSON)
Die Projektentwicklung erfolgt in einem internationalen Team, überwiegend remote. Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum). Als Entwicklungssystem kommt Android Studio/Gradle zum Einsatz, Continous Integration (CI) erfolgt mit Jenkins, Softwarerepository ist Git, das Reportingsystem ist Atlassian JIRA.
In diesem Projekt bestand die Aufgabe darin für eine bereits vorhandene Bankenanwendung weiter automatisierte Test zu designen und zu implementieren. Das Ziel war die Testabläufe noch weiter zu automatisieren und die Qualität für die weitere Entwicklung sicherzustellen.
Die Anwendung verfügte bereits über einen größeren Umfang an normalen JUnit Tests, aber noch keinerlei automatisch ablaufende UI Tests. Die neuen UI Tests wurden hauptsächlich mit den Android Testverfahren Espresso, UI Automator und den entsprechenden Hilfsfunktionen implementiert.
In diesem Projekt bestand die Aufgabe darin eine vorhandene Anwendung für Kontaktdaten in Richtung Sicherheit weiterzuentwickeln. Dazu wurde die verwendete Datenbank (Android SQLite) gegen die Variante SQLCipher ausgetauscht und die Datenbankzugriffe entsprechen angepasst. Darüber hinaus wurden noch Hilfsfunktionen zur Passwort- und Schlüsselverwaltung implementiert.
Ein weiterer Schwerpunkt war die sogenannten „Cloud“ Funktionen zu entfernen, damit keine Benutzerdaten und Kontakte an externe Datenbanken übermittelt werden können (Facebook, Google, Microsoft und ähnliche). Dazu war eine Restrukturierung der SQL Kontaktdatenbank notwendig. Dies erforderte auch die Modifikation und teilweise Neuimplementierung der entsprechenden Android Content Provider für die Kontaktdaten.
Auch das UI wurde entsprechend den Anforderungen des Kunden umgestaltet und teilweise neu implementiert. Im Rahmen dieser Erweiterungen wurde auch eine Integration von Google Maps vorgenommen und getestet, allerdings aus Sicherheitsgründen nicht für das Produkt freigegeben.
Die Anwendung wurde auch an die Bedürfnisse der sichern VoIP Anwendung sowie einer sicheren Messageanwendung angepasst.
Die Projektentwicklung erfolgt in einem internationalen Team. Die Softwareentwicklung erfolgte entsprechend einem agilen Entwicklungsprozess (Scrum). Als Entwicklungssystem kommen Android Studio/Gradle oder Eclipse/ADT zum Einsatz, Continous Integration (CI) erfolgt mit Jenkins, das Reportingsystem ist Atlassian JIRA.