Refine
Document Type
- Bachelor Thesis (3)
- Master's Thesis (1)
- Study Thesis (1)
Has Fulltext
- yes (5)
Is part of the Bibliography
- no (5)
Keywords
- Progressive Web Apps (2)
- Bachelor (1)
- C# (1)
- Cross-Plattform Entwicklung (1)
- Entwicklung (1)
- Krypto-API (1)
- M (1)
- Microservice Continuous Delivery (1)
- NativeScript (1)
- Plug in (1)
Department/institution
Untersuchungen haben ergeben, dass bis zu 95% aller verfügbaren Android Apps mindestens einen Programmierfehler bei der Verwendung von sogenannten Krypto-APIs besitzen. Bei korrekter Anwendung dieser APIs können mit ihnen sensible System- und Benutzerdaten vor Angriffen geschützt werden. Bisher gibt es nur wenige verfügbare Tool-basierte Hilfsmittel für Programmierer, welche die Verwendungsfehler identifzieren können. Für die Programmiersprache Java konnten bislang nur sehr wenige dieser spezialisierten Hilfsmittel gefunden werden, darunter das statische Codeanalysetool CogniCrypt. Ein derartiges Werkzeug für C# konnte nicht gefunden werden.
Diese Arbeit befasst sich mit der Entwicklung eines Plugins für die IDE Visual Studio zur statischen Codeanalyse namens Sharper Crypto-API Analysis. Sein Hauptziel ist, Programmierern beim Verwenden der .NET Krypto-API mit der Programmiersprache C# zu unterstützen. Durch Beobachtungen im Entwicklungsprozess sollen einerseits die Parallelen und Unterschiede zwischen der Java- und der C#-Welt im Umgang mit Krypto-APIs erkennbar werden. Andererseits beschreibt diese Arbeit den erforderlichen Aufwand, um ein hoch spezialisiertes, statisches Codeanalysetool zu entwickeln. Die Beobachtungen zeigen, dass die Unterschiede der Java- und C#-Technologien nicht oberflächlich, sondern hauptsächlich im Detail liegen und daher
während der Implementierung des Tools besondere Aufmerksamkeit erfordern. Die Entwicklungsphase selbst zeigt sich als besonders anspruchsvoll, da mit Unsicherheitsfaktoren
bezüglich der Funktions- und Verhaltensweisen von Visual Studio umgegangen werden müssen.
Das Hauptziel von Sharper Crypto-API Analysis konnte durch die Implementation von vier Hauptfunktionsgruppen umgesetzt werden. Die wichtigste von ihnen ist das Bereitstellen von Codeanalysen, welche ausschließlich auf die Verwendung der .NET Krypto-API spezialisiert sind. Die hier entwickelten Codeanalysen betrachten besonders Fehlerquellen, die Programmierer am häufigsten begehen. Um den Programmierern nachhaltig Wissen bezüglich der Krypto-API zu vermitteln, führt diese Arbeit erweiterte Analyseberichte ein, die zusätzlich über Schwachstellen oder Angriffsszenarien informieren. Besonderheiten und Alleinstellungsmerkmale der anderen Funktionsgruppen werden in dieser Arbeit unter besonderer Berücksichtigung von Implementationshinweisen dokumentiert.
Die vorliegende Bachelorarbeit befasst sich mit der Fragestellung, inwiefern Progressive Web Apps zum jetzigen Zeitpunkt in der Lage sind, native Apps zu ersetzen. Dazu wurde ein Vergleich auf Basis ausgewählter Vergleichskategorien durchgeführt. Zur Eingrenzung des Umfangs beschränkte sich der Vergleich auf native Android Apps. Die beiden App-Typen wurden im Rahmen einer Literaturrecherche und auf Basis ausgewählter Vergleichskategorien untersucht und verglichen. Zudem wurde ein Prototyp einer Progressive Web App implementiert, um die Plattformunterstützung und Funktionalität zu überprüfen. Außerdem wurde auch ein Prototyp einer nativen Android App implementiert. Dabei wurde nur die Benutzeroberfläche umgesetzt, um das Look and Feel vergleichbar zu machen. Die Untersuchung und der Vergleich haben gezeigt, dass Progressive Web Apps, anders als native Apps, mit Webtechnologien entwickelt und keine plattformspezifischen Programmiersprachen benötigt werden. Sie werden im Browser ausgeführt und sind dadurch Plattformunabhängig. Zudem wurde gezeigt, dass Progressive Web Apps über Funktionen und Eigenschaften verfügen, die bisher nur nativen Apps vorbehalten waren. Dennoch können sie noch nicht auf alle Funktionen und Komponenten eines mobilen Gerätes zugreifen. Darüber hinaus verfügen sie aber auch über Funktionen und Eigenschaften, die native Apps nicht bieten. Des Weiteren wurde mithilfe eines Prototyps die Plattformunterstützung von Progressive Web Apps überprüft. Die Überprüfung zeigte, dass die Unterstützung durch das Betriebssystem Android weit fortgeschritten und bei iOS hingegen nur sehr eingeschränkt ist. Dadurch variiert der Funktionsumfang je nach Browser und Betriebssystem. Die Untersuchung und der Vergleich der Prototypen zeigten, dass Progressive Web Apps aufgrund ihrer Eigenschaften, Funktionen und die app-ähnliche Benutzeroberfläche, ein ähnliches Look and Feel bieten können, wie native Apps. Außerdem wurde gezeigt, dass Progressive Web Apps, anders als native Apps, i. d. R. nicht über App Stores angeboten werden. Sie durchlaufen dadurch keinen Überprüfungs- und Freigabeprozess und sind nicht an die Richtlinien der App Stores gebunden. Stattdessen können sie über eine URL und über Suchmaschinen aufgerufen und aufgefunden werden. Die durchgeführte Untersuchung und der Vergleich haben gezeigt, dass Progressive Web Apps aufgrund des eingeschränkten Zugriffs auf Geräte- und Software-Funktionen sowie fehlender Browser- und Betriebssystemunterstützung, zum jetzigen Zeitpunkt native Apps noch nicht vollumfänglich ersetzen können.
While developing for multiple platforms at once seems like a convenient solution, there are several challenges arising when trying to abstract the entire mobile development. This paper is meant to evaluate current cross-platform development for mobile applications. The background for its necessity, its conceptual approach and the problems to face when developing cross-platform were determined and explained in detail. Afterwards, certain solutions were evaluated against the former insights. Based on the results, an informed discussion and conclusion was performed. The mobile environment consist of only two big players by now, Android and iOS. These operating systems differ in architecture, design and consequently in the way applications are developed for each of them. Therefore, high demands are made towards cross-platform solutions. Tools which allow for the creation of applications for multiple platforms at once have to match native applications in regard to user experience and performance. At the same time they need to be able to optimize developments with the goal of being cost efficient. Apache Cordova, Xamarin and NativeScript were selected for evaluation in regard to their ability to meet these requirements. Cordova acts as the comparison group of cross-platform tools. It is the big player in the field and there are reasons for this. However, aspiring solutions with higher nativity and ambitious approaches are emerging. Xamarin and NativeScript deliver top quality results while offering loosely coupled developments. Therefore it is possible to develop high quality applications and still benefit from the advantages of platform-independent solutions. As a consequence mobile development is about to change in the foreseeable future. More sophisticated approaches may lead to a higher number of developments done cross-platform, and rightfully so.
Progressive web applications (PWAs) seem to be the next big thing in the mobile landscape. These are web applications with “super-powers” which are meant to provide the kinds of user experiences previously only native mobile applications could. Therefore they are able to match native applications in their capabilities but still thrive on the reachability of the web. They achieve this by implementing certain characteristics which originate from innovative standards and sophisticated best practices. Conveniently, as it is the web, PWAs are working seamlessly cross-platform. One of the closest things to a PWA so far may be an application created with the NativeScript framework. Such an application is also developed with web technologies yet able to use any native interface directly. This is made possible by using a designated runtime for mediating between JavaScript and the mobile system. Eventually, NativeScript is able to offer a high degree nativity yet also of convenient abstraction during development. This paper is set out to deliver further insight into both approaches by contrasting them based on the characteristics of PWAs. For this purpose, these characteristics are elaborated and adjusted to be applicable to native mobile applications. Hence a reasonable basis for what to expect from a native application is derived. Then NativeScript is assessed on this basis by the means of transferable concepts and technologies as well as a prototypic mobile application. Finally, an informed discussion and conclusion is performed based on the results. The comprehensive characteristics of PWAs resolve previous shortcomings with well thought out concepts and new technologies. These are transferable to native mobile applications to a far extent and may also be put into practice with NativeScript. The framework’s approach may be very well called ingenious, however, in the long run it might fall short of the innovative concept of PWAs. Having said this, it is still able to serve as a practical measure for creating appealing user experiences for multiple systems with arguably little effort. Due to large overlap a transformation between the two application types is a realistic option. Either way, web technologies are far from what they used to be and it is exciting to see how the mobile and web landscape will evolve in the future.
Die Digitalisierung fordert kontinuierlich neue Services für bestehende Produkte, revolutioniert Produktionsmethoden und verändert Geschäftsmodelle. Continuous Delivery bietet in der agilen Softwareentwicklung mit kurzen Entwicklungszyklen die Antwort auf diesen Wandel. Die Verwendung einer Continuous Delivery-Umgebung (CD-Umgebung) erfordert einerseits zwar einen initialen Einrichtungsaufwand. Andererseits kann durch den Einsatz einer CD-Umgebung das gesamte Projekt an Schnelligkeit gewinnen. In Kombination mit Microservice-Architekturen lassen sich kleine Deployment-Einheiten umsetzen. Microservice-Architekturen bringen einen Mehrwert durch Flexibilität, Skalierung, Automatisierung, standardisierte Schnittstellen und Ausfallsicherheit. Microservices fungieren autark in verteilten Systemen und weisen nur sehr geringe Abhängigkeiten zu anderen Services auf. Die Kommunikation findet über einheitliche Schnittstellen statt, weshalb Implementierungsdetails der Microservices nach außen betrachtet irrelevant sind.
Für die Umsetzung der CD-Umgebung wird der web-basierte Git-Repository-Manager GitLab in Kombination mit der Container-Orchestrierungsplattform Kubernetes verwendet, da sich beide Programme einfach integrieren lassen.
Innerhalb eines Tutorials wird, basierend auf Best Practices anhand des Beispiels der HSD-Card, erläutert wie eine Microservice-Architektur mit Spring Boot, als Anwendung umgesetzt werden kann. Für die Erstellung der Microservice-Architektur legt das Tutorial Schwerpunkte auf die Verwendung von Software Design Pattern (DDD), die Struktur innerhalb Spring Boot, die Kommunikation via REST sowie die Skalierung, das Load-Balancing und die Überführung in die CD-Umgebung.