UNSER WÖRTERBUCH DER
APP-ENTWICKLUNG
Hier entsteht unser Wörterbuch der App- Entwicklung als "work in progress" und als exklusiver Service für Sie. Wöchentlich kommen Beiträge hinzu und gerne nehmen wir Ihre Vorschläge entgegen. Schreiben Sie uns doch einfach an info@zelfi.com und sagen uns, welchen Begriff wir als nächstes erklären sollen. |
A
Der Begriff geht auf Kent Beck und sein Forschungsteam sowie das von ihm entworfene „Agile Manifesto“ (s.u.) zurück, das 2001 veröffentlicht wurde. Es enthält die 12 Prinzipien der agilen Softwareentwicklung. Die wichtigsten sind die Zufriedenstellung des Kunden durch kontinuierliche Auslieferung funktionierender Software sowie die Fähigkeit im Entwicklungsprozess auf Veränderungen reagieren zu können und dem Kunden so einen Wettbewerbsvorteil zur verschaffen. Ebenfalls zentral ist die Selbstorganisation der Entwicklungsteams, ihre regelmäßige Selbst-Reflexion, direkte Kommunikation sowie die Vermeidung unnötiger Arbeit. Die Beibehaltung eines gleichmäßigen Tempos in der Entwicklung ist zudem anzustreben. Zu den bekanntesten Agilen Frameworks gehört Scrum, Kanban und Extreme Programming. Scrum gilt heute als am weitesten verbreitet.
Hier geht's zum "Agile Manifesto".
Dieser ist Brot und Butter für alle mobile Entwickler. Er ist ein wichtiges Werkzeug, um auf das Verhalten der Nutzer reagieren zu können und dessen User Experience zu verbessern. Dies zum Beispiel dann, wenn die App einmal längere Zeit im Hintergrund ist und wieder aufgerufen wird.
Eine Activity verwaltet dabei einen Bildschirm bzw. Screen. Klassischerweise stellt eine Activity also einen Bildschirm dar. Eine App besteht damit aus einer Vielzahl loser Activities, die alle dem unten dargestellten Zyklus folgen. Bei jedem Aufrufen einer Activity muss das User Interface (UI) dafür erstellt oder etwas von einem Server heruntergeladen werden, um bestimmte Informationen anzuzeigen. Sobald ich swipe, den Homebutton drücke oder zu einer anderen App switche, rückt die letzte Activity in den Hintergrund und geht damit in onPause. Trage ich Daten auf einem Screen einer App ein und wechsle dann in eine andere App, kann der Entwickler im Rahmen der onPause-Methode die Daten speichern, damit ich beim Wideraufrufen der ersten Anwendung, die zwischengespeicherten Inhalte wieder angezeigt bekomme- dies wäre dann onResume. Interessanterweise ist ein Wechsel des Nutzers von horizontalen zu vertikalen Screens immer mit einer Beendigung der Activity verbunden, denn das UI muss neu geladen werden und bedarf der onCreate und onStart Methode.
Anders gesagt: Sind eingetragene Daten auf einem Screen einer App nach kurzem Wechsel auf eine andere Anwendung nicht mehr aufrufbar, so hat der Entwickler den Android Activity Lifecycle nicht (ausreichend) berücksichtig.
Das iOS-seitige Äquivalent heißt UIViewController Lifecycle.
Eine API, oder Programmierschnittstelle, erlaubt es zwei Softwareprogrammen miteinander zu kommunizieren. Daher können durch Bereitstellung einer API Funktionalitäten einer Software für eine ganz andere nutzbar gemacht werden. Man unterscheidet daher private, public oder Partner APIs. Während private APIs nur für den internen Gebrauch im Unternehmen genutzt werden, werden public APIs der breiten Öffentlichkeit zur Verfügung gestellt. Andere Entwickler können dadurch auf Funktionalitäten der eigenen Software zugreifen. Auf Partner APIs können nur bestimmte Nutzer zugreifen, mit denen die Datennutzung vereinbart wurde.
Neben REST ist die bekannteste API Architektur SOAP (Simple Object Access Protocol)- es gibt jedoch noch viele andere. Steigender Bekanntheit erfreut sich darüber hinaus der von Facebook entwickelte GraphQL. Zwischen den verschiedenen Architekturen gibt es Vor- und Nachteile. Die REST API ist z.B. einfacher in der Handhabung, die SOAP ist dafür sicherer und man kann die ankommenden Daten (xmls) einfacher auf Richtigkeit überprüfen.
Der Begriff App kommt von Application und bezeichnet ganz allgemein (Computer)Programme, die nützliche, nicht systemtechnische Funktionen für den Nutzer erfüllen. Im mobilen Bereich ist der Begriff mobile App gebräuchlich, um Programme auf Mobilgeräten zu bezeichnen. Im deutschen Sprachraum steht der Begriff App alleine oftmals synonym für Anwendungssoftware fürr Smartphones und Tablets. Weitere Unterteilungen von mobile Apps erfolgen in native und plattformunabhängige Apps (Web-Apps, hybride Apps und Cross-Plattform Apps).
B
Streng genommen ist Barrierefreiheit das Ausmaß in dem eine App oder ein sonstiges interaktives Produkt genutzt werden kann, unabhängig von möglichen Einschränkungen der Sinne oder des Denkens. Ein Beispiel hierfür ist, dass ein Screen so gestaltet sein sollte, dass auch Menschen mit einer Farbenblindheit problemlos alles bedienen können. Aus Sicht eines Produkt Managers sollte Barrierefreiheit aber auch bedeuten, dass sein Produkt so konzipiert und gestaltet sein muss, dass eine maximale Anzahl an Menschen das Produkt nutzen können.
Staatliche Einrichtungen sind seit Verabschiedung des Gleichstellungsgesetzes im Jahr 2002 dazu verpflichtet Software so zu gestalten, dass Menschen mit unterschiedlichen Behinderungen diese bedienen können. Gängig sind hier die Integration von leichter Sprache, die Untertitelung von Videos und teilweise die Möglichkeit Kontaktanfragen in Gebärdensprache aufzunehmen. Nationale Rechtsvorschriften zur Umsetzung der Richtlinie (EU) 2016/2102 des Europäischen Parlaments und des Rates „über den barrierefreien Zugang zu den Websites und mobilen Anwendungen öffentlicher Stellen“ nehmen öffentliche Stellen nochmal mehr in die Pflicht.
C
Bei Cross-Plattform Apps wird der Quellcode zu einem Großteil plattformübergreifend genutzt und verarbeitet. Er wird außerdem in einer Framework-spezifischen Sprache geschrieben, wie Javascript und/oder Typescript bei React Native und Ionic oder C# in Xamarin. Mit Hilfe dieser plattformübergreifenden Frameworks wie Xamarin und React Native von Facebook wird die Sprache nachher in das dazugehörige Betriebssystem kompiliert. Die Apps werden also in einer geteilten Programmiersprache geschrieben und dann in die nativen Systeme übersetzt. Bei der Entwicklung werden jedoch die nativen API Schnittstellen verwendet. Mit Cross-Plattform Apps können Apps also für Android und iOS sowie Windows mit nur einem Quellcode entwickelt werden.
Zunehmende Bekanntheit erlangt außerdem das Flutter SDK von Google. Mit der Programmiersprache Dart können hiermit Apps für Android und iOS programmiert werden.
Aus Laien-Sicht ist es oft nicht ersichtlich, ob eine App nativ oder als Cross-Plattform App entwickelt wurde, denn sie werden auch aus den App Stores heruntergeladen und unterscheiden sich optisch nicht zwingend. Leider werden die beiden Begriffe hybride App und Cross-Plattform App oft synonym verwendet. Es lässt sich jedoch sagen, dass sich die Cross-Plattform von der Hybriden dadurch unterscheidet, dass die Hybride primär HTML5-basiert ist und eine Mischung aus nativen und webbasierten Anwendungen darstellt, während die Cross-Plattform dazu neigt, ausschließlich mit nativen Konzepten zu arbeiten.
Nachteile der Cross-Plattform Entwicklung sind verminderte Performance, die Abhängigkeit von Funktionsaktualisierungen der Framework Anbieter sowie hoher Aufwand beim Programmieren.
D
Dart ist eine objektorientierte Programmiersprache von Google und existiert bereits seit 2013. Wie der Name vermuten lässt war Schnelligkeit und Leistungsfähigkeit eines der Ziele für diese neue Programmiersprache. Dart gilt als leicht erlernbar und ist insbesondere für internetfähige Geräte entwickelt worden. Ziel war es unter anderem Probleme von Javascript mit dieser neuen Programmiersprache zu lösen.
Im Bereich der App Entwicklung wird Dart zusammen mit dem Software Development Kit Flutter zur Entwicklung von Cross-Plattform Anwendungen genutzt.
Was sagen unsere Entwickler zu Dart?
„Es ist meiner Meinung nach schneller als andere Programmiersprachen. Manchmal gibt es Dienste wie z.B. das Abhören eines Servers oder Benachrichtigungen, die durch einfache Funktionen leicht zu realisieren sind. Und mit Dart können wir in einer Datei eine Reihe von Funktionen definieren, die z. B. einen Server abhört und ein bestimmtes Ergebnis liefert. also mit anderen Worten einfach und effizient.“
Cesaire Nguefack, Flutter Entwickler
Eine Device Farm ist eine Sammlung einer Vielzahl an Endgeräten, die als Dienstleistung über Cloud-Dienste verfügbar gemacht werden können. Man mietet hier also Testinfrastruktur, die meist große Dienstleister wie z.b. Amazon Web Service bereit stellt. Genutzt werden diese Device Farms vornehmlich von Softwareentwicklern zum Testen ihrer Software auf verschiedenen Endgeräten. Bei der App-Entwicklung versucht man die Funktionalität auf verschiedenen Smartphones (mit unterschiedlichen Displays) sicherzustellen.
F
Flutter ist ein Software Development Kit (SDK), das 2018 von Google als open-source Anwendung veröffentlich wurde. Der Code ist damit öffentlich einsehbar, kann genutzt aber auch verändert werden. Als Baukastensystem verfügt das SDK über Schablonen und Werkzeuge, die zur Entwicklung von Cross-Plattform Apps für iOS und Android genutzt werden können. Darüber hinaus können aber auch Anwendungen für Windows, Desktop und Web geschrieben werden.
Die Framework-spezifische Sprache ist hier Dart, welche nachher in das dazugehörige Betriebssystem kompiliert wird. Die Apps werden also in einer geteilten Programmiersprache geschrieben und dann in die nativen Systeme übersetzt. Wie bei Cross-Plattform Apps üblich, bedarf es also nur einer Code-Basis. Flutter enthält darüber hinaus viele Komponenten, die ansonsten extra programmiert werden müssten wie z.B. Buttons. Eine Besonderheit ist zudem die Funktion Hot reload, die Änderungen, die der Entwickler am Code vornimmt, direkt sichtbar werden lässt. Ein kompletter Neustart der App ist nicht notwendig, sondern es werden nur die geänderten Dateien aktualisiert.
Flutter folgt außerdem einer „Alles ist ein Widget“ Philosophie. Flutter kann daher als ein Framework bezeichnet werden, das auf einer Widget-Kompositionseinheit basiert. Widgets sind die Bausteine der Benutzeroberfläche einer Flutter-Anwendung, und jedes Widget ist eine unveränderliche Deklaration eines Teils der Benutzeroberfläche. Widgets bestehen in der Regel aus vielen anderen kleinen, einmalig verwendbaren Widgets, die zusammen mächtige Effekte auf der Benutzeroberfläche erzeugen.
H
Hybride Apps sind im Wesentlichen Webseiten Code, der von Frameworks (wie z.b. Apache Cordova) in native Container verpackt wurde und dann als App läuft. Sie stellen damit eine Mischform aus nativen Apps und Web-Apps dar. Wie native Apps sind sie in den App-Stores zu finden und müssen heruntergeladen werden. Sie können wie native Apps auf Hardware- und Softwarekomponenten zugreifen (z.B. Kontakte, Kamera, GPS etc.) sind aber in Webtechnologien wie HTML, CSS und Javascript geschrieben und können plattform- und geräteunabhängig genutzt werden, da der Quellcode plattformübergreifend verarbeitet werden kann. Hybrid-Apps laufen für den Nutzer nicht sichtbar im plattformspezifischen Webbrowser des Endgeräts (z.B. Chrome bei Google Pixel-Geräten oder Safari bei iPhones).
Nachteile sind längere Ladezeiten und verminderte Rechenleistung sowie die mangelnde Ausnutzung plattformspezifischer Designelemente.
I
IDEs (integrated development environment) zu Deutsch Entwicklungsumgebungen gibt es seit den 80er Jahren.
Mit der Erfindung dieser integrierten Entwicklungsumgebung konnte man nun die Funktionen Editor, Compiler, Linker und Debugger, die vorher als getrennte Produkte angeboten wurden, nun alle von einem Programm aus nutzen.
Entwicklungsumgebungen können verschiedene Tools enthalten, darunter einen Texteditor, Quelltextformatierungsfunktion, Debugger (Tool zum Diagnostizieren und Auffinden von Bugs), Compiler (übersetzt höhere Programmiersprachen in Maschinencode), Linker (Verbinden von Programmmodulen), Gui Builder (grafische Elemente einfügen, die nicht erst programmiert werden müssen)….etc.
Heute gibt es eine Vielzahl an verschiedenen Entwicklungsumgebungen, von denen manche auf die Nutzung einer Programmiersprache fokussiert sind, andere auf das Ergebnis, also speziell für Games, Webanwendungen etc.
Für die native App Entwicklung relevant sind für iOS Apples eigene Entwicklungsumgebung Xcode sowie Android Studio für Android Apps.
Gemeinsam ist den Entwicklungsumgebungen, dass sie die Entwickler durch den schnellen Zugriff auf wichtige Funktionen entlasten. Häufig wiederkehrende und formale Arbeitsschritte können schneller abgearbeitet werden und ermöglichen die Konzentration auf das eigentliche Programmieren.
Der Integrationstest folgt auf die erfolgreichen Unit-Tests einzelner Klassen. Funktionieren letztere einwandfrei, so muss das Zusammenspiel verschiedener Klassen oder Komponenten getestet werden. Bei kleineren Projekten übernimmt auch dies der Entwickler selbst. Bei komplexeren Projekten kommt hier die Testautomatisierung oder ein separater/eigenständiger Tester ins Spiel. Zum Testen nativer Anwendungen existiert beispielsweise die Software Appium.
J
Java ist eine objektorientierte Programmiersprache und existiert seit 1995. Erfunden wurde sie von James Gosling. Sie gehört zu den am meisten genutzten Programmiersprachen.
Mit Hilfe des Entwicklungswerkzeugs JDK (Java Development Kit) und der Sprache Java können Programme geschrieben werden. Mit Hilfe der Laufzeitumgebung (Java Runtime Environment JRE) werden diese dann ausgeführt. Die Laufzeitumgebung ermöglicht eine plattformunabhängige Funktionsweise (Linux, mac OS oder Windows u.a. sind kein Problem) sofern diese installiert ist.
Im Bereich der App-Entwicklung wird Java vor allem für das Programmieren von Apps für Android genutzt, zusammen mit der Programmiersprache Kotlin. Jede Sprache weist hierbei ihre eigenen Vor- und Nachteile auf. Anstelle der JRE Laufzeitumgebung wird für die Ausführung des Quellcodes auf Smartphones aktuell die Android Runtime (ART) genutzt.
Was sagen unsere Entwickler über Java?
„Im Bereich der App-Entwicklung gibt es keinen technischen Vorteil von Java gegenüber Kotlin. Allerdings gibt es noch Unternehmen, die auf die größere Verbreitung von Java setzen bzw. auf die höhere Anzahl an Consultants, die Java können.“ Oliver Bienek, Android Entwickler
Jetpack Compose ist ein Framework, um native Android Benutzeroberflächen zu erstellen. In der bisherigen Implementierung wird die UI Definition in eine separate xml Datei geschrieben und ist damit getrennt vom restlichen Code. Inhalte der App werden auf dem UI angezeigt, indem man Views aus dem xml per id referenziert und die entsprechenden Werte darauf schreibt. Diese Art von UI Implementierung wird auch imperatives UI genannt. Bei Jetpack Compose wird die UI Definition direkt als Funktion im Code geschrieben. Dadurch werden Inhalte der App und die Anzeige auf dem UI enger miteinander verknüpft und ein UI Element ist selbstständig dazu in der Lage, auf Änderungen der Daten zu reagieren. Die Art von UI Implementierung wird deklaratives UI genannt.
K
Kanban kommt aus dem Japanischen und bedeutet Signalkarte. Ursprünglich wurde dieses agile Framework für die Produktion des Autoherstellers Toyota entwickelt. Im Bereich der Softwareentwicklung steht ein fließender Prozess im Zentrum, bei dem die einzelnen Arbeitspakete auf Karten festgehalten werden und ihr Durchlauf für alle transparent ist. Hierfür wird eine Kanban Tafel genutzt, auf der alle gerade in Bearbeitung befindlichen sowie erledigten Arbeitspakete visualisiert werden. Wichtig ist auch die Beachtung des Pull Prinzips, bei dem z.B. ein Tester kein Arbeitspaket von den Entwicklern erhält, sondern sich dieses selber zieht, sobald sein aktuelles Arbeitspaket beendet ist. Auch die Limitierung der sog. WIPs (Works in progress) ist bei Kanban entscheidend. Ist die festgelegte Anzahl der Tickets erreicht, so muss ein Entwickler zunächst bei den Kollegen unterstützen und beim Abarbeiten von Tickets helfen, um ein neues Arbeitspaket ziehen zu können.
Kanban enthält oftmals Elemente von Scrum; so gibt es zwar keine Sprints, aber Retrospektiven und oder Reviews sind hier ebenfalls gängig, ebenso die Durchführung eines Daily.
Kotlin ist eine objektorientierte Programmiersprache, die es seit 2011 gibt und die von der Firma JetBrains entwickelt wurde. Kotlin und Java Code sind interoperabel, das heißt eine Komponente, die in Kotlin geschrieben ist, kann frei auf Funktionen einer anderen Komponente zugreifen, die in Java geschrieben ist.
Kotlin Code kann außerdem zu Bytecode für die Java Virtual Machine (JVM), JavaScript-Quellcode oder auch direkt in Maschinencode umgewandelt werden, dadurch ist die Sprache grundsätzlich für die Entwicklung von Programmen für verschiedene Plattformen einsetzbar.
In Bezug auf die App Entwicklung wurde bei der Google I/O Entwicklerkonferenz 2017 Kotlin als Android Entwicklungssprache, der bisher genutzten Sprache Java, gleichgestellt. Bei der Goolge I/O 2019 dann wurde Kotlin als bevorzugte Entwicklungssprache benannt. Neue Projekte sollen seitdem bevorzugt in Kotlin geschrieben werden. Google selbst richtet sich bei der Entwicklung neuer Tools zwar vorrangig an Kotlin Entwickler, Support für die Nutzung von APIs in Java gibt es aber weiterhin.
Was sagen unsere Entwickler über Kotlin?
„Grundsätzlich würde ich zumindest in Android nie mehr Java über Kotlin wählen. Kotlin Code ist in der Regel kürzer und bietet ein paar technische Feinheiten, die Java einfach nicht hat.Googles Devise selbst ist "Kotlin First". Das heißt sie behalten sich vor, dass gewisse neue Features erst mit Verzug in Java bereitgestellt werden oder vielleicht sogar überhaupt nicht implementiert werden.“
Oliver Bienek, Android Entwickler
„Kotlin hat einen schlankeren Code als Java. Wenn man z.B. eine Klasse "Person" in Java schreibt, braucht man je nachdem welche Eigenschaften die Person alles hat (Name, Alter,...) mindestens 6 Zeilen Code pro Eigenschaft. Kotlin macht das quasi automatisch und man muss den Code nicht Schreiben.“
Yves Weilandt, Android Entwickler
Kotlin Multiplatform ist ein Framework der Firma Jetbrains von 2020 und seit 2020 als stabiles Release verfügbar. Es erlaubt die Crossplattform Entwicklung einer App für Android und iOS unter Benutzung der Programmiersprache Kotlin. KMM ist Kotlin Multiplatform Mobile, also die Spezialisierung für Apps. Multiplatform kann aber auch z.B. für Web oder Desktop Anwendungen genutzt werden, dann spricht man von KMP. Die Benutzeroberfläche UI kann hiermit noch nicht mit der gemeinsamen Codebasis entwickelt werden, dafür aber die zu Grunde liegende Geschäftslogik.
Für die Benutzeroberfläche ist Compose Multiplatform bereits in der Entwicklung (ebenfalls von JetBrains), allerdings gibt es hier für iOS und Web noch keinen stabilen Release.
M
Ein Mockup kann man als eine Attrappe der eigentlichen App oder eines neuen Features sehen. Aus vielen Wireframes kann ein Mockup erstellt werden. Mit Hilfe eines Mockups kann man Stakeholdern zum Beispiel zeigen, wie viele Klicks man bei einem neuen Bezahlvorgang braucht. Mockups spielen eine große Rolle in modernen, iterativen Entwicklungsprozessen und Usability-Evaluierungen.
Die bekanntesten Tools, die für Mockups verwendet werden sind Axure, Sketch, Figma und Balsamiq. Zuständig für die Ausarbeitung von Mockups ist der UX/UI Designer.
N
Native Apps sind speziell für die Zielplattform (Android, iOS) entwickelte Apps. Neben den plattformspezifischen Software Development Kits (SDK) und den jeweiligen Entwicklungsumgebungen (Android Studio oder Xcode), werden native Apps je nach Plattform mit Hilfe unterschiedlicher Programmiersprachen geschrieben (Java und Kotlin für Android, Objective-C und Swift für iOS sowie C#, C und C++ für Microsoft).
Eine für Android entwickelte native App, ist somit auf einem iPhone nicht nutzbar, sondern muss gesondert für iOS nativ entwickelt werden.
Vorteile der nativen App Entwicklung sind unter anderen die problemlose Nutzung aller Systemkomponenten (Kamera, Sensoren, usw.), bessere Optimierungsmöglichkeiten bei ressourcenintensiven Anwendungen sowie
schnellere Nutzungsmöglichkeiten von neuen System Features.
O
Objective-C ist eine objektorientierte Programmiersprache. Sie wurde 1986 von Tom Love and Brad Cox veröffentlicht und kann als Erweiterung der Sprache C verstanden werden. Bekannt wurde die Sprache durch die Nutzung der Firma Apple und ihres Vorläufers NeXT (amerikanisches Computer- und Software-Unternehmen, das von Steve Jobs mitgegründet wurde). Apple unterstützt vor allem die Nutzung von Objective-C für MacOS, iOS und die diversen API sowie Bibliotheken bis zur Einführung von Swift im Jahr 2014. Seitdem werden beide Sprachen unterstützt. Apple greift dabei weiterhin auf Objective- C zu, entwickelt diese aber nicht mehr weiter. Hinzukommt, dass immer weniger Entwickler Objective-C beherrschen bzw. nutzen.
Was sagen unsere Entwickler zu Objective-C?
„Vorteile von Nutzung von Objective-C gibt es: wenn man die Methoden richtig benennt ist diese Sprache sehr gut lesbar und manchmal liest sich der Code, wie ein Stück Text mit Nomen, Pronomen, Verben etc. Bei allen anderen Sachen (außer Performance - da haben beide Stärken und Schwächen) ist Swift besser."
Roman Sorokin, iOS Entwickler
Unter objektorientierter Programmierung versteht man in der Softwareentwicklung die Beschreibung eines Systems, durch die Darstellung kooperierender Objekte. Diese Objekte haben Eigenschaften und Methoden und werden in Klassen zusammengefasst. Ziel der objektorientierten Programmierung ist die Reduzierung von Komplexität. Die für die native App Entwicklung genutzten Programmiersprachen sind allesamt objektorientierte Sprachen. Hierunter fallen z.B. Objective-C, Swift, Kotlin und Java.
P
Pair Programming gehört zu den agilen Arbeitsmethoden und beschreibt das gemeinsame Programmieren zweier Entwickler, die bestenfalls nebeneinandersitzen und verschiedene Rollen einnehmen. In der Regel gibt es den Navigator und den Piloten. Während der Pilot den Code schreibt, prüft der Navigator selbigen und denkt über Verbesserungen nach oder deckt Fehler auf. Die Rollen werden nicht nur regelmäßig getauscht, sondern auch die Zweier-Teams wechseln immer wieder durch. Es hat sich gezeigt, dass hierdurch kaum Mehrkosten entstehen, da durch das Vier-Augen Prinzip Fehler schneller erkannt werden und höhere Kosten im Nachhinein vermieden werden können. Das Wissen verteilt sich so im gesamten Projetteam gleichmäßig und es stehen keine Wissensinseln. Das Pair Programming gehört zu den Methoden der agilen Softwareentwicklung. Ohne Pair Programming erfolgt die Fehlererkennung hauptsächlich über die regelmäßig stattfindenden Code Reviews anderer Entwickler Kollegen und/oder die Testabteilungen.
Unter einer Programmiersprache versteht man eine formale Sprache zum Ausdrücken von Datenstrukturen und Algorithmen, die von einem Computer umgesetzt werden können. Während für die ersten Computer noch rein maschinennahe Sprache in Binärcode (Nullen und Einsen) verwendet werden musste, gibt es heute eine Vielzahl an maschinenunabhängigen Sprachen, die auch als höhere Programmiersprachen bezeichnet werden. Die Befehle dieser Sprachen werden automatisiert in Maschinensprache übersetzt. Die für die native App Entwicklung genutzten Programmiersprachen sind allesamt objektorientierte Sprachen. Hierunter fallen z.B. Objective-C, Swift, Kotlin und Java.
S
Scrum gehört inzwischen zu dem am weitesten verbreiteten agilen Framework. Wichtig sind hierbei drei Positionen: 1. Der Product Owner (PO), der für den wirtschaftlichen Erfolg des Produkts zuständig ist. Er stimmt sich hierfür mit den Stakeholdern/dem Kunden ab und führt das Product Backlog, wo die genauen Produkteigenschaften und Anforderungen festgehalten und regelmäßig aktualisiert werden. Er bestimmt die Reihenfolge der Implementierung. 2. Das eigentliche Scrum Team besteht aus Entwicklern, aber auch Architekt(en), Tester(n), Dokumentations- und Datenbankexperte(n). Das Scrum Team organisiert sich selbst und bestimmt, wie es Anforderungen aus dem Backlog umsetzt. 3. Der Scrum Master steht dem Scrum Team als Coach zur Seite, achtet auf die Umsetzung der Scrum Regeln und moderiert Meetings wie die Sprint Retrospektive und/oder das Sprint Planning. Ebenfalls zentral ist ein kurzes, täglich stattfindendes Daily, wo die eignen Fortschritte seit dem letzten Daily und Vorhaben bis zum nächsten von jedem kurz erläutert werden.
Damit alle wissen, wo man im Projekt gerade steht wird bei fast allen agilen Frameworks mit Aufgabenboards gearbeitet. So auch bei Scrum.
Ein Software Development Kit (SDK) beinhaltet Hilfsmittel wie Tools und Bibliotheken, die es einem Entwickler vereinfachen sollen, mit einer speziellen Sprache oder für ein spezielles Betriebssystem Software zu entwickeln. Neben vielen anderen Komponenten stellt das SDK z.B. die Schnittstellen bereit, über die auf Quellcode Ebene eine Anwendung angebunden werden kann. Neben dieser API (Application Programming Interface) hält das SDK umfangreiche Dokumentationen zur Nutzung derselben bereit. Editoren, Bibliotheken, Compiler, Debugger, Treiber, Netzwerkprotokolle und Testprojekte können ebenfalls enthalten sein. Die für die App Entwicklung gängigsten SDKs sind das Java Development Kit (JDK), das Android Development Kit und das iOS SDK.
Swift ist eine objektorientierte Programmiersprache. Sie wurde von der Firma Apple Inc. entwickelt und kann für die Softwareentwicklung aller Apple Produkte genutzt werden (iOS, macOS, tvOS, watchOS, iPadOS etc.). Bei der jährlich von Apple veranstalteten Worldwide Developer Conference WWDC wurde Swift erstmals im Jahr 2014 vorgestellt. Laut dem Chefarchitekten Chris Lattner sollte Swift jedoch nur eine Ergänzung zu Objective-C sein, de facto gibt es aber immer weniger Entwickler, die Objective-C beherrschen. Zum Standard wird immer mehr die Nutzung von Swift. Fast jährlich kommen neue Versionen von Swift heraus, die u.a. jeweils verbesserte Syntax und neue Methoden ermöglichen. Die aktuelle Version ist Swift 5.2 (Stand 01/2021)
Was sagen unsere Entwickler zu Swift?
„Swift kam für mich direkt nach Java im Studium. Es ist eine sehr schlanke Sprache und Type-safety ist im Vergleich der größte Pluspunkt. Dies führt zu hoher Betriebs- und Informationssicherheit."
Jonas Sailer, iOS Entwickler
U
Der Unittest oder auch Modultest bezeichnet die kleinste Art von Test. Hierbei wird in der Regel gezielt eine einzelne Methode einer Klasse getestet. Dies bedeutet, dass nur eine Komponente auf einmal getestet wird. Im Optimalfall wird jede Klasse direkt nach der Programmierung getestet, in einigen Fällen werden Tests sogar bereits davor geschrieben. Zu jeder programmierten Klasse schreibt der Entwickler eine Testklasse, die die Funktionalität und Codelogik überprüft. Als bekanntes Framework existiert hier JUnit, was zum Testen von Java Code genutzt wird.
Die User Experience UX oder auch das Benutzererlebnis beschreibt die Gesamtheit der Eindrücke sowie das Nutzererlebnis bei der Interaktion mit einer Software, Website oder einer App .
Das User Experience Design umfasst dabei verschiedenste Komponenten, die über das UI Design und ästhetische Fragestellungen weit hinaus gehen. So ist die Tauglichkeit des Produkts - die Usability - maßgeblich, um dass der Nutzer sein Ziel möglichst schnell erreicht. Daher sollte das Interaktionsdesign möglichst intuitiv gestaltet werden. Auch die Informationsarchitektur, also wie Informationen angezeigt werden und aufeinander aufbauen ist eine wichtige Komponente. Das User Interface und die User Experience stehen in einem Ursache-Wechselspiel zueinander. Während die User Experience sich allerdings vom User Interface trennen lässt, ist das User Interface immer ein Teil der User Experience. Verantwortlich für die Umsetzung ist der sogenannte UX Designer.
Das User Interface bezeichnet die Nutzer-Schnittstelle . Diese ist der Teil eines Produkts bzw. einer App, mit der der Nutzer direkt interagiert und die dem Nutzer Informationen anzeigt. Im einfachsten Fall ist der Lichtschalter eine Benutzerschnittstelle. Bei Software meint man oft die grafische Oberfläche z.B. einer App. Damit der Nutzer eine Anwendung ganz einfach nutzen kann, werden Ergebnisse und Funktionen grafisch dargestellt. Die technischen Prozesse dahinter bleiben dem Nutzer verborgen. Neben dem Drücken von Buttons gewinnt die Sprachsteuerung an Wichtigkeit beim User Interface. Wie nützlich eine Anwendung einem User erscheint, hängt in großem Maße vom User Interface ab. Um dieses optimal zu gestalten, muss die Zielgruppe und ihre Vorkenntnisse genau analysiert werden. Das User Interface ist damit ein Teil der User Experience. Verantwortlich für die Umsetzung ist der sogenannten UI Designer.
Bei UI Tests oder User Interface Tests wird die grafische Benutzeroberfläche getestet, indem Klicks simuliert werden. Dies geschieht in einem Emulator oder einem Testgerät. Die „given-when-then“ Methodik wird genutzt, um Testfälle zu konzipieren. „Given“ beschreibt hier den Kontext bzw. die angenommenen Voraussetzungen, „when“ die Aktion die ausgeführt wird und „then“ das gewünschte zu testende Resultat. Um bei der Vielzahl an verschiedenen Endgeräten (Smartphones mit verschiedenen Displays wie Foldables, Tablets etc.) die Funktionalität auf allen Geräten sicherzustellen, gibt es die Möglichkeit sogenannte Device Farms zu nutzen. Hier mietet man bestimmte Gerätetypen und lässt die UI Tests auf diesen remote über Cloud-Dienste ablaufen.
Für UI Tests werden Frameworks wie Espresso, robolectric und Appium genutzt.
Die User Journey ist ein klassischer Begriff im UX-Umfeld. Sie beschreibt den Weg, den ein Nutzer mit dem Produkt geht, vom Zeitpunkt, an dem der Nutzer das erste Mal an das Produkt denkt (z.B. weil ein Freund es ihm empfohlen hat), über die aktive Nutzung bis hin zur Weiterempfehlung. Ein UX-Designer versucht, dass all diese Berührungspunkte positive Erlebnisse für den Nutzer werden und nimmt dabei eine sogenannte User Journey Map zu Hilfe. In dieser werden alle Berührungspunkte vom Nutzer mit dem Produkt festgehalten und sie zeigt somit die verschiedenen Kontexte, in denen man mit dem Produkt in Kontakt kommen kann. Es kann Unterschiede geben zwischen der ersten und der fünften Nutzung einer App, der Nutzung zu Hause und im Auto oder der Nutzung auf dem iPhone und iPad. Eine ideale User Journey besteht aus vielen positiven Erlebnissen, die den Nutzer ideal dabei begleiten sein Ziel (das er mit der Nutzung des Produkts verfolgt) zu erreichen.
W
Web-Apps sind Webseiten, die nicht nur Informationen anzeigen (wie z.B. Wikipedia oder normale Unternehmenswebsites), sondern die Interaktionen erfordern, wie normale Apps. Web-Apps werden also nicht wie native Apps aus den App Stores heruntergeladen und installiert, sondern die Nutzung erfolgt über den Webbrowser. Dies bedeutet, dass Web-Apps plattformunabhängig genutzt werden können, egal ob Android oder iOS vorliegt. Für die Entwicklung von Web-Apps wird oft Javascript in Verbindung mit HTML und CSS genutzt, generell ist hier aber der Einsatz von vielen Programmiersprachen möglich. Online-Shops und Email-Clients sind Beispiele für Web-Apps.
Nachteile von Web-Apps liegen beim höheren Datenverbrauch und darin, dass sie offline oft nicht genutzt werden können. Durch Caching (interner Speicher) ist die offline Nutzung allerdings vermehrt möglich. Web-Apps können nur eingeschränkt auf Hardware und Software spezifische Komponenten (z.B. Kontakte oder Dateien) zugreifen.
Das Wireframe (Drahtmodell) ist ein Begriff aus der User Experience und bezeichnet einen ersten Konzeptionsentwurf eines Screens (eine Seite einer App z.B.). Dort geht es noch nicht um Farben oder Formdetails sondern erstmal darum alle funktionalen Elemente abzubilden, die auf dem Screen überhaupt angezeigt werden sollen. In der simpelsten Form ist dies eine Bleistiftzeichnung. Ein Wireframe kann aber auch eine Folie in PowerPoint sein, worauf mit Rechtecken die Schaltflächen dargestellt werden.
Wir sind die Zelfi AG und Sie finden uns in der Bahnhofstr. 15 in
55116 Mainz.
Rufen Sie uns an unter der 06131 - 3272605
oder schreiben Sie uns eine E-Mail an info@zelfi.com