Die Zwei-Faktor-Authentifizierung für mehr Sicherheit von Webanwendungen und Apps

Die Zwei-Faktor-Authentifizierung für Webanwendungen

Die Menge sensibler Daten, die online abgelegt wird, nimmt täglich zu. Seien es Google und sein Speicherdienst Drive, Facebook mit höchst privaten Informationen, die nur einem bestimmten Kreis von Nutzern zugänglich sein soll oder die eigene Dropbox mit den letzten Urlaubsfotos – bei nicht wenigen Internetdiensten kann ein erfolgreicher Hacker-Angriff sehr schmerzhaft für alle Betroffenen sein.

Natürlich nutzen auch Unternehmen zunehmend Online-Dienste oder Web-Apps für unterschiedlichste Anwendungen. Zwischen einem potenziellen Hacker und diesen Diensten steht meistens nur ein einziges Passwort. Viele dieser Passwörter sind nicht besonders komplex und irgendwann ist auch der beste Schlüssel geknackt.

Manchmal müssen Angreifer gar nicht erst den Login knacken. Es genügt, wenn ihnen die Passwort-Datenbank des Dienst-Anbieters in die Hände fällt und diese nicht ausreichend abgesichert war. Auch das Mitlesen von Passwörtern per Keylogger ist, besonders auf fremden bzw. öffentlichen Rechnern, ein ernstzunehmendes Risiko.

Aus diesen Gründen empfiehlt es sich für Unternehmen wie Privatanwender gleichermaßen, bei wichtigen Online-Diensten eine zweite Barriere nach dem Passwort einzurichten: die Zwei-Faktor-Authentifizierung.

Was ist die Zwei-Faktor-Authentifizierung?

Bei dieser besonderen Form des Identitätsnachweises passiert folgendes:

  • Für eine Anmeldung werden Benutzername und Passwort ganz klassisch eingegeben. Anschließend aber fragt der Online-Dienst nach einer PIN. Diese wird auf das zu diesem Zweck bei der Nutzerregistrierung angegebene Smartphone als SMS gesendet oder per App generiert.
  • Der sehr wirkungsvolle Schutz der Zwei-Faktor-Authentifizierung besteht darin, dass das Passwort allein in den Händen eines Angreifers nutzlos ist. Der Hacker benötigt zusätzlich das entsprechende Smartphone, um an den, meistens sechsstelligen, Sicherheitscode zu kommen. Die rein digitale Anmeldung wird also um einen physisch getrennten zweiten Kanal ergänzt und die Sicherheit damit massiv ausgebaut.

Die Methode hat aber natürlich auch Nachteile:

  • Bei jeder Anmeldung an einem neuen Gerät muss das jeweilige Smartphone, griffbereit sein. Um beispielsweise im “Funkloch” nicht ohnmächtig zu sein, weil keine SMS empfangen werden können, oder nach einem eventuellen Diebstahl des Smartphones ohne die Generator-App keinen Zugriff mehr auf die Dienste zu haben, ist es empfehlenswert, stets wenigstens eine Alternative bei der Einrichtung anzugeben. Dann kann im Notfall einfach eine Code-SMS an ein Zweit-Smartphone gesendet werden. Auch eine ausgedruckte Liste mit Notfall-PINs ist sinnvoll – wenn auch als rein analoge Methode und damit Notlösung.
  • Manche Dienste kommen nicht mit den sechsstelligen Sicherheitscodes zurecht. Für solche Fälle gibt es bei vielen Anbietern spezielle und zum Teil noch längere Passwörter, die in die jeweilige Anwendung eingetragen werden müssen. Sollte der Aufwand dafür nach einiger Zeit doch zu hoch werden, lässt sich die Zwei-Faktor-Authentifizierung auch wieder deaktivieren.

Mehr Sicherheit für Software, Apps und Webanwendungen

Eine Authentifizierung mit zwei getrennten Komponenten ist grundsätzlich empfehlenswert. Der etwas geringere Komfort durch den minimalen Mehraufwand beim Login wird durch ein enormes Plus an Sicherheit wieder gut gemacht.

Haben Sie Interesse an einer Individualentwicklung mit dem hohen Sicherheitsniveau einer Zwei-Faktor-Authentifizierung oder eine Erweiterung Ihrer bestehenden Systeme? Wenden Sie sich gerne jederzeit an die Spezialisten der kreITiv GmbH und lassen Sie sich zum Thema Sicherheit beraten.

Kotlin vs. Java, Wachablösung der Programmiersprachen

Kotlin, die moderne Java-Alternative in der Softwareentwicklung

Sicherlich hat nahezu jeder Java-Entwickler einmal das Buch “Java ist eine Insel” in den Händen gehabt. Der Name der Programmiersprache Kotlin ist eine Anspielung darauf, da es sich auch dabei um eine Insel handelt. Hier, in der Nähe von St. Petersburg, sitzt ein Teil des Entwicklerteams, das für die Firma JetBrains an Kotlin arbeitet.

Es ist eine sehr junge Programmiersprache, die in Bytecode für die Java Virtual Machine (JVM) übersetzt wird und auch in JavaScript-Quellcode transformiert werden kann. Laut der Entwicklerwebseite setzen diverse kleine und große Projekte die Sprache intensiv ein, darunter namhafte Webdienste, wie z. B. Pinterest, Gradle, Evernote, Uber und Atlassian (für das Tool Trello).

Ist Kotlin das bessere Java?

Um Kotlin kommt man inzwischen kaum herum, wenn man sich mit JVM-Sprachen beschäftigt. Als Quasi-Standard hat es sich bereits in der Android-Entwicklung etabliert und erobert nach und nach weitere Bereiche der Softwareentwicklung. Ein Hauptgrund ist sicher die fast nahtlose Interoperabilität mit Java. Auch die modernen Features lassen die Fangemeinde immer weiter anwachsen.

Durch was zeichnet sich Kotlin aus? Natürlich gibt es Anknüpfungspunkte und starke Ähnlichkeiten, die an andere Sprachen wie Scala, Groovy und Java erinnern. Die Sprache, die Java-Interoperabilität als ein wesentliches Merkmal für sich beansprucht, ist noch recht jung. Viele Jahre der Softwareentwicklung in Java werden durch den neuen Ansatz nicht von heute auf morgen verworfen. Kotlin ist mehr eine Evolution als eine Revolution.

Es ist eine pragmatische Programmiersprache, die aus den praktischen und alltäglichen Bedürfnissen des Entwicklers JetBrains entstanden ist. Empfohlen wird, neue Module in Kotlin zu entwickeln und “alten Code” Schritt für Schritt zu ersetzen.

Was zeichnet Kotlin als Programmiersprache aus?

Dieser Beitrag soll kein Tutorial werden und nur einige Aspekte der Programmiersprache anreißen.

Ein wesentliches Feature der Sprache ist die Zusicherung, dass eine Variable keinen „null“-Wert enthält. Damit erspart sich der Entwickler „if not null“-Abfragen. Zwar bietet Java 8 mit „Optional“ scheinbar ein vergleichbares Feature, allerdings mit dem Unterschied, dass „Optional“ rein auf Konvention basiert. Daher müssen Java-Entwickler „Optional“ nicht verwenden, aber sie müssen in Kotlin explizit einen „nullbaren“ Typ benutzen, wenn NULL ein gültiger Wert sein soll.

Diese Eigenschaft wird durch ein Fragezeichen am Ende des Typs ausgedrückt. Damit wird einem API-Benutzer deutlich, dass er mit einem möglichen NULL-Wert umgehen muss. Diese Sicherheit gilt allerdings nur für Code, der in Kotlin geschriebenen ist. Wenn dagegen eine in Java geschriebene Bibliothek verwendet wird, muss damit gerechnet werden, dass „null“-Werte vorkommen.

Kotlin ist prägnanter als Java. Das lässt sich an verschiedenen Beispielen zeigen. Semikolons am Ende von Statements sind optional. Das entspricht dem Anspruch moderner Programmiersprachen.

Die Reihenfolge von Datentyp und Bezeichner wurde im Gegensatz zu Java getauscht und folgt nun dem Konzept, das von anderen modernen Sprachen, wie Scala und Go, verwendet wird. An vielen Stellen kann beispielsweise darauf verzichtet werden, den Typ einer Variablen anzugeben. Für veränderliche Werte gibt es das Schlüsselwort „var“, für unveränderliche Werte „val“.

Mit Extension Functions können bestehende Klassen um weitere Funktionalitäten erweitert werden. Dies ist besonders nützlich, wenn man einer Klasse, die man selbst nicht kontrolliert, eine Funktion hinzufügen möchte. In Java wird üblicherweise mit Utility-Klassen gearbeitet, die statische Methoden enthalten. In Kotlin ist es möglich, eine Funktion zu schreiben, die auf dem Objekt der Klasse String aufgerufen werden kann.

 

Kotlin ist unter Entwicklern sehr beliebt

Die Sprache kommt in der Industrie sehr gut an. Das wird z. B. an der Unterstützung durch das Spring-Framework deutlich. Hier kann Kotlin neben Java und Groovy als Sprache ausgewählt werden. Ein wichtiger Beliebtheitshinweis ist die offizielle Unterstützung durch Google als Programmiersprache für Android. Diese wurde auf der Entwicklerkonferenz Google I/O im Mai 2017 angekündigt.

Domänenspezifische Sprachen sind ein weiteres Anwendungsgebiet. Gradle bietet eine Build-Beschreibungssprache, die auf Groovy basiert. Seit Version 3.0 ist alternativ auch eine Kotlin-basierte Sprache verfügbar. Diese liefert die Aussicht auf bessere Unterstützung in der Entwicklungsumgebung, ist aber momentan noch im Entstehungsprozess. Informationen zum aktuellen Projektfortschritt sind auf der Projektseite von Kotlin verfügbar.

Kotlin lernen

Um sich die Programmiersprache anzuschauen und zu testen, gibt es verschiedene Möglichkeiten.

  • Browserbasierter Editor mit Beispielen und Übungen: https://try.kotlinlang.org
  • Mit IntelliJ IDEA kann ein Projekt angelegt werden. Die IDE konvertiert auch Java-Code, wenn er in eine Kotlin-Quellcode-Datei kopiert wird. Trotz einigem Optimierungsbedarf funktioniert die Konvertierung recht gut.

 

Ein angenehmes Wesensmerkmal der Softwareentwicklung ist, dass es keinen Stillstand gibt. Die Spezialisten der kreITiv haben die Trends ständig im Blick und verfolgen Entwicklungen, die im Interesse des Kunden liegen, sehr aufmerksam. Haben Sie Fragen oder Wünsche im Bereich Softwareentwicklung? Wenden Sie sich gerne jederzeit an uns.

Erfahrungen und Erkenntnisse aus der komponentenbasierten Entwicklung

Komponentenbasierte Entwicklung von Softwareanwendungen

Das sich in den letzten Jahren der Trend zum auf Komponenten basierenden Entwicklungsansatz (component driven development) hin entwickelt hat, haben wir im Blogartikel “Wie wir bei kreITiv ein stimmiges User Interface entwickeln” kürzlich schon beschrieben.

In einem zweiten und deutlich technischeren Beitrag möchten wir nun weiterführend auf die Vorteile dieses Ansatzes eingehen und das Konzept mit der sogenannten Redux-Implementierung vervollständigen.

Vorteile des komponentenbasierten Entwicklungsansatzes

Die komponentenbasierte Entwicklung beschreibt ein innovatives Vorgehen, welches sich in unserer Branche immer größerer Beliebtheit erfreut. Im Vergleich zu herkömmlichen Ansätzen, wird hier von vornherein mehr auf klare Strukturierung und ein hohes Maß an Wiederverwendbarkeit von Codestrukturen geachtet. Arbeitspakete sind deutlich einfacher zu gliedern und lassen sich flexibler in Teams teilen.

Der Ansatz stammt aus dem Bereich der Entwicklung von webbasierter Software und kann Unternehmen als Neuerung wertvolle Rückschlüsse auf Entwicklungsprozesse für Anwendungen liefern. Er eignet sich besonders für Projekte, die mehr als einen Entwickler in der Umsetzung benötigen oder einen sehr hohen qualitativen Anspruch an das User Interface legen. Mit dem Konzept schafft man sich Strukturen, die eine spätere Weiterentwicklung sowie die Skalierbarkeit der eigenen Anwendung deutlich erleichtern.

Ganz konkret lassen sich vier entscheidende Vorteile festhalten.

  • Isolierte Komponentenentwicklung

    Damit ist es dem Entwickler möglich, seinen Fokus klar auf verschiedene Teilaspekte einer Anwendung zu legen. Jeder Teil einer Anwendung wird hierbei separat entwickelt und auch getestet. Das führt in der Regel zu wesentlich weniger Fehlern bei der späteren Implementierung.

  • Komponentenzustände

    Im Komponenten Tree werden vorab alle notwendigen und möglichen Zustände geplant und aufgelistet. Dies hat zur Folge, dass eine Komponente in jedem Kontext der Anwendung sauber funktioniert und auf jeden Anwendungsfall entsprechend reagieren kann.

  • Parallelisierte Entwicklung

    Die gleichzeitige Umsetzung mehrerer Komponenten ermöglicht es, Aufgaben zwischen verschiedenen Teammitgliedern so zu teilen, wie es auf der Ebene von “Bildschirmen” nicht möglich ist.

  • Vielfältige Testmöglichkeiten

    Neben den klassischen visuellen Tests über das Storybook, können die Entwickler hier auch Module, wie den Unit Test (JEST) oder automatisierte DOM Tests, nutzen.


Sind alle Komponenten mit ihren States entwickelt worden, so können diese auch optional in eine Library, also eine Bibliothek, implementiert werden, um in späteren Projekten wiederverwendet zu werden. In der Regel folgt danach die Implementierung der Anwendung. Dies kann innerhalb des Storybooks oder auch außerhalb realisiert werden. In diesem Schritt werden nun die zuvor entwickelten Komponenten in Container Elemente implementiert, damit diese eine direkte Anbindung an den Store der Bibliothek erhalten können.

In einem unserer Storybooks können Sie sich einen Überblick der einzelnen Komponenten, eingearbeitet in den jeweiligen Views, verschaffen. Komponenten können z.B. Input-Felder, Grafiken, aber auch die umschließenden Komponenten in Form einer Karte sein. Ein Storybook beinhaltet im Normalfall tatsächlich nur einzelne Komponenten, keine ganzen Seitenansichten. Das Ziel ist es, alle benötigten Elemente in ihren verschiedenen Stadien während der Entwicklung darzustellen. Eine weitreichende Logik wird dabei vernachlässigt.

Das Konzept der Redux-Implementierung

Die Überführung der entwickelten Komponenten in eine Bibliothek macht nun die Installation von Redux als State Management Library und der Erweiterung React-Redux notwendig. Redux selbst ist eine quelloffene und mittlerweile von React unabhängige Bibliothek und kann auch für andere reaktive Frameworks verwendet. So zum Beispiel für die auch von uns in Projekten verwendeten Frameworks Vue oder Angular.

Aufbau einer Redux-Implementierung

  • Actions: Beschreiben, wie Daten manipuliert werden.

  • Action Creator: Erzeugen aus der Action ein JavaScript-Objekt, verknüpfen dieses mit Daten und führen gegebenenfalls asynchrone Operationen wie API-Calls aus. Hierfür wird Thunk als Erweiterung empfohlen.

  • Reducer: Erzeugen einen neuen Anwendungsstate. Wichtig ist, dass ein State nie manipuliert werden kann. Es wird immer ein neuer State erzeugt, der dann vom Reducer in den Store geschrieben wird.

  • Store: Ist der anwendungseigene Speicher. Werden Komponenten mit ihm verknüpft, dann erhält jede deren Änderungen und kann entsprechend neugerendet werden.

Vorteile der Redux-basierenden Datenverarbeitung

  • Strikte Trennung von Präsentation und Verarbeitung der Daten: Die Darstellung der Daten selbst wird in der Regel über Stateless-Komponenten realisiert, welche Änderungen der Daten selbst über ihre Properties und Container triggern können. Die eigentliche Manipulation der Information geschieht über die Reducer, die als Pure Function geschrieben werden.
  • Deterministische Zustände: Dank der strikten Vorgaben für die Konzeption eines Reducers sind alle Zustände, welche Daten einer Anwendung annehmen können, begrenzt. Dies minimiert die möglichen Fehler in Punkto Verarbeitung enorm.
  • Standardisiertes Architekturkonzept: Redux als Library gibt den Aufbau der Datenverarbeitung vor, was zu Folge hat, dass Anwendungen einheitlicher und damit wartbarer werden.

 

Auf Basis unserer Projekterfahrungen können wir damit als Fazit ziehen: Mit einem komponentenbasierten Entwicklungsansatz benötigt man mehr Zeit für die Entwicklung von Anwendungen, jedoch rechtfertigt sich mehr Mehraufwand, da letztlich qualitativ hochwertige Anwendungen entstehen.

Wir sind gespannt, welche Entwicklungen es in diesem Bereich in den kommenden Jahren noch geben wird und behalten natürlich insbesondere die Webtechnologien für unsere Kunden und Projekte genau im Auge.

Arten der Versionsverwaltung in der Softwareentwicklung

Versionsverwaltung in der Softwareentwicklung

In der heutigen Softwareentwicklung ist eine Versionsverwaltung für große und teambasierte Projekte unabdingbar. Sie ermöglicht es, in nachvollziehbaren Schritten eine Anwendung zu entwickeln. Doch was genau versteht man als Versionsverwaltung und welche Vorteile hat es für die Entwicklung von Software?

Warum überhaupt eine Versionsverwaltung

Versionsverwaltung kurz VCS (Version Control System) ist ein System, mit dem Quellcode verwaltet und nachvollzogen, Anwendungen stetig optimiert oder ggf. auch auf einen früheren Stand eines Projektes zurückgegriffen werden kann. Die wohl bekanntesten Beispiele aus der Praxis, welche mit VCS entwickelt werden, sind das Open Source Projekt für den Linux-Kernel, die Entwicklung des Android Betriebssystems oder auch die Entwicklung der Programmiersprache PHP.

In großen Projekten arbeiten häufig mehrere Entwickler an einer Software und es treffen verschiedene Versionen des Quelltextes aufeinander. Um Fehler zu vermeiden und die Entwicklung zu optimieren, sind die folgenden Funktionalitäten deshalb sehr wichtig:

  • Protokoll der Änderungen,
  • Wiederherstellung und Archivierung von Entwicklungsständen sowie
  • die Koordination von Aufgaben beteiligter Personen.

Die 3 Arten der VCS

Die lokale Versionsverwaltung dient der Versionierung von Dateien oder häufig Dokumenten und wird in der Regel nur auf einem einzelnen System eingesetzt.

Bei der zentralen Versionsverwaltung wird das gesamte Projekt nur auf einem System festgehalten und den berechtigten Personen zur Verfügung gestellt. Die unterschiedlichen Stände der Software sind bloß auf diesem System abgelegt.

Die verteilte Versionsverwaltung bietet allen beteiligten Entwicklern die Möglichkeit, an einer lokal geklonten Version des Projektes zu arbeiten und mit einem zentralen Stand abzugleichen und ggf. auch den Quellcode durch andere Entwickler oder automatisierte Mechanismen überprüfen zu lassen.

Tools zur Versionsverwaltung in Projekten

Welche Tools gibt es, um Versionsverwaltung für das eigene Projekt zu nutzen und welchen Vorteil bieten webbasierte Services gerade im Bereich der Webentwicklung? Die bekanntesten Tools – um nur zwei zu nennen – sind sicherlich Apache Subversion (SVN) oder Git mit seinen webbasierten Repositories GitHub, GitLab oder Bitbucket.

  • SVN als freie Software zählt zu den zentralen Versionsverwaltungssystemen und wird vor allem für die Versionierung von Binärdateien verwendet. Die Unterstützung für die Bearbeitung auf einem zentralen System hat den Vorteil, dass gerade bei großen Binärdateien, z. B. bei grafischen Elementen, die Erkennung weitestgehend automatisch erfolgt und SVN die Änderungen abgleicht.
  • Git im Gegenzug als verteilte Versionsverwaltung ermöglicht im betrieblichen Einsatz eine schnellere Bearbeitung durch die lokale Version auf dem System des Entwicklers. Des Weiteren kann jeder beteiligte Entwickler den Stand einsehen und überprüfen, bevor dieser in die zentrale Version eingespielt werden.

Gerade in der Webentwicklung werden immer häufiger webbasierte Services eingesetzt. So bietet zum Beispiel GitHub mit seiner Vielzahl an frei verfügbaren Open Source Projekten einer Vielzahl von Entwicklern die Möglichkeit, Software kostenfrei zu versionieren.

Im betrieblichen Umfeld muss man meist auf ein kostenpflichtiges Angebot zurückgreifen. Hier kann aber GitLab als webbasierter Service genutzt werden, da man so zusätzlich die sensiblen Daten einer Software in Unternehmen auf einem eigenen Server behalten kann.

Zusammengefasst lässt sich sagen, dass Softwareprojekte heutzutage nicht mehr ohne eine Versionsverwaltung ob lokal, zentral oder verteilt möglich sind. Eine Vielzahl von Tools lassen auch Ihnen die Chance, Ihre Idee zukunftsträchtig zu verwirklichen. Selbstverständlich stehen Ihnen die kreITiv Softwareentwickler bei Fragen und zur Unterstützung gern zur Seite.

Wie wir bei der kreITiv ein stimmiges User Interface entwickeln

Wie wir bei kreITiv ein stimmiges User Interface entwickeln

Dem User Interface kommt als Schnittstelle zum Endanwender eine entscheidende Bedeutung für jede Form von Software zu. Sie bestimmt, ob eine Anwendung – so komplex oder simpel sie auch ist – überhaupt sinnvoll genutzt werden kann.

Fehler im Design können Motivation beim Nutzer und damit den Betreiber viel Geld kosten, wenn bspw. in einem Onlineshop kein Kauf ausgelöst oder in einem Webportal kein Account registriert werden kann. Aus diesem Grund beschäftigen wir uns also auch als Softwareentwickler immer schon frühzeitig mit dem Thema User Interface (UI).

1. Der Komponentenbaum für bessere Übersicht

Die Planung ist und bleibt ein wichtiger Bestandteil der Softwareentwicklung. Auch bei der Entwicklung mit komponenten-basierenden Frameworks, die bereits zahlreiche Vorarbeiten liefern, darf die Planung nicht zu knapp ausfallen. Ein stufenweises Herangehen hat sich inzwischen etabliert und erscheint aus mehreren Gründen sinnvoll.

Wichtig ist es, mit einem Prototypen zu beginnen. Dieser gibt das Design und eine gewisse Teilfunktionalität vor. Drei Arten des Prototypings in der Softwareentwicklung haben wir im Blog schon einmal behandelt. Basierend auf dem Prototyp, kann im nächsten Schritt ein Komponentenbaum aufgebaut werden. Dieser visualisiert den Aufbau der Anwendung und stellt die Zusammenhänge zwischen den Komponenten dar.

2. Ein Storybook zur interaktiven Entwicklung

Aufbauend auf dem Komponentenbaum kann ein sogenanntes Storybook entwickelt werden. Das Storybook dient zur Visualisierung der UI-Komponenten einer Software.

  • Für Entwickler bietet das Storybook die Möglichkeit, diese Komponenten interaktiv zu entwickeln sowie die einzelnen Komponenten intensiv zu testen.
  • Zusätzlich dient es als eine Art Dokumentation, welche es ermöglicht, Komponenten in anderen Projekten wiederzuverwenden. Dies hat den positiven Effekt, dass bei Folgeprojekten Entwicklungszeit eingespart werden kann.

Storybook zur interaktiven SoftwareentwicklungDurch das interaktive Entwickeln bekommt der Kunde auch einen Einblick in die Entstehung der Software und kann den Fortschritt stets mitverfolgen. Eine zeitnahe Feedback-Übermittlung bzw. Gegensteuerung bei ungeplanten oder ungewollten Entwicklungen ist damit jederzeit möglich. Missverständnisse, die oft erst gegen Ende von Projekten sichtbar werden, können deutlich reduziert werden. Das trägt zur Zufriedenheit aller Stakeholder des Entwicklungsprojektes bei.

Zwei Trends in Sachen User Interface

In der Entwicklercommunity ist die Unterstützung für das Thema Storybook in letzter Zeit stark gestiegen. Nicht nur große Firmen, wie Airbnb oder Xebia, setzen auf das Konzept, sondern auch einzelne Entwickler konzentrieren sich jetzt mit Vollzeit auf die Weiterentwicklung des Storybooks. Sehr lesenswerte Ansätze und Ausblicke liefert der Artikel “Storybook: The Next Chapter” auf medium.com

Ein weiterer positiver Trend in diesem Bereich ist die Verwendung von Komponenten-Bibliotheken, wie zum Beispiel Material UI von Google. Entwickler können sich dabei aus einem Repertoire von vorgefertigten Komponenten bedienen, welche bereits über ein gewisses Maß an Grundlogik verfügen. Das Design dieser Elemente ist an Android angelehnt und kann daher intuitiv verwendet werden. So müssen die Grundlagen nicht immer wieder neu erarbeitet, sondern können bei jedem Projekt verfeinert und optimiert werden.

Dieses modulare Vorgehen und die Best-Practice-Ansätze führen zu einer schlanken, einheitlichen und schnellen Entwicklung und werden in zunehmendem Maße auch in die alltägliche Arbeit der kreITiv-Softwareentwicklung integriert.

Erklärung und Vorteile von Progressive Web Apps

Progressive Web Apps – Die mobile Revolution?

Täglich nutzen wir Progressive Web Apps und wissen es nicht einmal. Diese sogenannten PWA’s besitzen alle Funktionalitäten und Möglichkeiten klassischer Smartphone-Apps, laufen aber vollständig im Webbrowser und haben damit den Vorteil, dass sie nicht erst installiert werden müssen. In den letzten Jahren hat der Vormarsch dieser Art von App begonnen und sie ist nun im Begriff, herkömmliche Apps vollständig abzulösen.

Nach der allgemeinen Einführung in die Web Apps, befassen wir uns deshalb noch einmal genauer mit dem Thema und tragen zusammen, was eine Progressive Web App ausmacht, ob sie dem Vergleich zu klassischen Apps standhält und welche Chancen für Unternehmen bietet. Die vielen Vorteile dieser Entwicklungen zeigen wir aber gleich vorweg…

  • Keine Installation notwendig, Nutzung direkt im Browser

  • Updates auf dem Server und nicht beim Nutzer

  • Nutzung dank Caching auch offline möglich

  • Unterschiedlichste Funktionen abdeckbar

  • Inhalte können von Suchmaschinen indexiert werden

  • Simples Teilen der App per URL

  • Geringere Entwicklungs- und Wartungskosten

  • Unabhängigkeit von App Stores

  • Gesicherter Zugriff für geschäftliche Anwender auf Firmendaten möglich

 

Was genau sind eigentlich Progressive Web Apps?

Bekannte Webdienste wie Gmail, Netflix, Trivago, Microsoft Office, Instagram oder Twitter sind Progressive Web Apps. Es sind Anwendungen, die im Webbrowser ausgeführt werden und dem Nutzer das gleiche Erlebnis wie native Apps liefern (also eigens für diese Funktion erstellte Anwendungen, die auf dem Endgerät in einer separaten Umgebung verarbeitet werden). Egal ob Smartphone, Tablet oder Desktop-PC, der Nutzer kann im Browser Mails lesen und schreiben, Flugreisen buchen oder Filme schauen.

PWA’s stellen also Funktionen bereit, die über das reine Anzeigen von Texten und Bildern im Webbrowser hinausgehen. “Progressive” werden sie im Vergleich zu bisherigen Web Apps durch die Möglichkeit, auch offline nutzbar zu sein.

Die Technik dahinter ist nicht allzu komplex. Das wichtigste Element für die Umsetzung von Progressive Web Apps sind die sogenannten Service Worker. Sie arbeiten im Hintergrund der Webseite und ermöglichen das Laden von bestimmten Inhalten in den Cache, ohne dass es einer erneuten HTTP-Kommunikation bedarf. Fordert ein Nutzer bestimmte Inhalte an, hat der Service Worker diese Inhalte bereits in den Cache geladen, da der Entwickler diese vorab definiert hat.

Hierbei kommen moderne Methoden der Webentwicklung, wie das Prerendering, Preloading und Prefetching, zum Einsatz. Während der Entwicklung einer Progressive Web App werden diese Schlüsselressourcen identifiziert, referenziert und vorgeladen. Je nach Nutzerinteraktion weiß die App, welche Inhalte angefordert werden und muss diese nicht extra über die Internetverbindung nachladen.

Dieses Prinzip reduziert die Abhängigkeit von Übertragungsraten speziell des mobilen Internets und verbessert die User Experience.

Die Kontrolle des Cachings schließt noch einen weiteren Aspekt mit ein – das Laden der Inhalte erfolgt wesentlich schneller, somit müssen die Nutzer keine langen Wartezeiten in Kauf nehmen. Der Nutzungsprozess wird dadurch auf einem hohen Niveau trotz schonendem Gebrauch der Netzwerkressourcen gehalten.

Die Vorteile von PWA’s in der App-Entwicklung

Technik, Nutzererfahrung und Onlinemarketing

  • Deutlich hervor sticht, dass man PWA’s nicht aus dem jeweiligen App-Store herunterladen und installieren muss. Somit gehören auch Updates der Vergangenheit an. Mit der Funktion “Add-To-Homescreen”, welche so gut wie jedes mobile Betriebssystem unterstützt, kann der Nutzer den Link wie ein klassisches App-Symbol auf seinem Desktop abspeichern und jederzeit aufrufen.
  • Ein weiterer Vorteil von Progressive Web Apps ist die Nutzung auch bei schlechter oder gar keiner Internetverbindung. Die App muss lediglich einmal online genutzt werden, dann sollten die Inhalte im Cache auch offline verfügbar sein.
  • Des Weiteren haben Entwickler die Möglichkeit, auf mehr Funktionen des Smartphones zuzugreifen, wie bspw. das Senden von Push-Benachrichtigungen auf mobile Geräte.
  • Außerdem ist das Teilen der App sehr simpel. Während bei nativen Apps erst ein Link über den Store aufgerufen werden muss, kann für PWA’s ganz einfach die URL aus dem Webbrowser kopiert werden.
  • Und auch für das Onlinemarketing bieten sich Vorzüge: Bei Progressiven Web Apps können die Inhalte nämlich im Gegensatz zu nativen Apps vollständig von Suchmaschinen indexiert werden.

Unternehmerische Vorteile

  • Die wirtschaftlichen Vorteile sind die geringeren Entwicklungs- und Wartungskosten. Eine zeitintensive Entwicklung für mehrere Betriebssysteme wird überflüssig und Updates können direkt eingespielt werden, ohne dass Nutzer extra darüber informiert werden müssen.
  • Da Progressive Web Apps nicht installiert werden müssen, sind die Betreiber unabhängig von App Stores. Entwickler müssen demnach vom Verkaufspreis keine Anteile für die jeweilige Plattform abgeben.
  • Zudem ist die mentale Hürde zur Installation einer App deutlich höher, als der Schritt zum Aufrufen einer Webseite und dem Abspeichern als Homescreen-Icon. Betreiber einer PWA benötigen also weniger Überzeugungskraft als mit einer App, erzielen aber im Endeffekt eine ähnlich hohe Conversion Rate sowie Kundenbindung.
  • Auch für Businessanwendungen gibt es kaum Grenzen: Geschäftliche Anwender profitieren mit dem gesicherten Zugriff auf Firmendaten von Desktops, Laptops, iOS- und Android-Geräten, welche aus dem Browser heraus ermöglicht werden. Über Services – lokal oder über die Cloud – können diese Daten dann sicher und hochverfügbar bereitgestellt werden. In den Bereichen Datenschutz und Datensicherheit hat sich gerade im Mobile Bereich sehr viel getan, sodass auch die Geräte selbst mittlerweile durchaus für den Unternehmensalltag zum Einsatz kommen können.

Welche Zukunft haben Progressive Web Apps?

Inwieweit sich Progressive Web Apps in der Zukunft durchsetzen werden, bleibt noch abzuwarten. Die technologische Entwicklung in diesem Bereich wird von Google vorangetrieben und war anfangs nur für Android-Geräte und den Chrome-Browser verfügbar. Die großen Konkurrenten der Branche haben ihre Systeme nach langer Zurückhaltung mittlerweile aber ebenfalls für Progressive Web Apps nachgerüstet.

So hat Microsoft im September 2017 angekündigt, den mit Windows 10 eingeführten Edge-Browser für PWA‘s zu optimieren. Im „Redstone 4“-Update des Betriebssystems aus dem Frühjahr 2018 war der PWA-Support dann endgültig enthalten. Apple hat schon seit einiger Zeit Service Worker in das Webkit des hauseigenen Safari-Browsers integriert und damit die Basis für Progressive Web Apps geschaffen. Und auch reine Browserentwickler, wie Mozilla mit seinem Firefox, sind mit von der Partie.

Es ist wohl also nur noch eine Frage der Zeit bis sich Progressive Web Apps auf dem Markt etabliert haben – die Bedingungen dafür erfüllen sie jedoch bereits. Interessieren Sie sich für die Entwicklung von Progressiven Web Apps? Dann lassen Sie sich von der Softwareentwicklung der kreITiv beraten!

Künstliche Intelligenz im privaten und beruflichen Alltag

Gegenwart und Zukunft von künstlicher Intelligenz

Auch wenn man es kaum glauben mag, aber was im Bereich der künstlichen Intelligenz einst als ferne Zukunft galt, ist heute bereits allgegenwärtig. Selbstfahrende Autos, Sprachassistenten, neuronale Netzwerke. All diese Errungenschaften haben unser Leben in den letzten Jahren verändert. Wir möchten einen kurzen Überblick zum Stand der Dinge in Sachen KI im beruflichen und privaten Alltag geben.

Künstliche Intelligenz in Unternehmen

Viele Unternehmen benutzen neben smarten ERP-Systemen schon jetzt auch intelligente Algorithmen, welche den Mitarbeitern bspw. zeitaufwändige Aufgaben abnehmen.

1. Vor allem im Bereich Chatbots und künstliche Telefonie erreicht KI momentan ihren Durchbruch.

Die kürzlich vorgestellte Demo eines komplett autonomen Telefonanrufes von Google Duplex zeigt die Möglichkeiten der digitalen Kommunikation. Die Software führte eigenständig ein Telefonat durch, machte mit dem angerufenen Restaurant eine Reservierung zum Abendessen aus und fügte diese als Termin in den Kalender des Telefons ein.

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

Diese und weitere Routineaufgaben im Büro oder im Feierabend könnte künstliche Intelligenz uns künftig also auch auf mündlicher Ebene abnehmen.

2. Auch die Schrift- und Bilderkennung funktioniert dank künstlicher Intelligenz heutzutage schon tadellos.

Durch diese Funktionalität kann dem Anwender eine wesentlich intuitivere Nutzererfahrung geboten werden. So können z. B. handschriftliche Notizen digitalisiert, eingescannte Unterschriften erkannt oder Bildersammlungen nach Personen, Orten und Farbstimmungen vorsortiert werden. Unsere Softwareentwickler sind ihren Projekten stets daran orientiert, diese Nutzererfahrungen zu verbessern. Aus diesem Grund evaluieren wir ständig neue Methoden für ein besseres Nutzererlebnis.  

3. In der Medizin als Anwendungsgebiet rettet die KI Menschenleben.

Neben der großen Arbeitserleichterung durch künstliche Intelligenzen, bieten sie außerdem einen erheblichen Vorteil im medizinischen Bereich. Die frühzeitige Erkennung von Krankheiten ist hier ein wesentliches Einsatzfeld. Nur die intelligenten Algorithmen der KI können riesige Datenmengen aufnehmen, verarbeiten, bestimmte Vergleiche ziehen und so u. a. die Prävention unterstützen.

Wie lernt eine KI?

Wir greifen erneut zum Beispiel Google. Dessen quelloffenes Framework für künstliche Intelligenz und maschinelles Lernen “Tensor Flow” ist frei nutzbar und verfolgt zur Erstellung einer KI immer eine ähnliche Schrittweise: 

  1. Es müssen möglichst viele Datensätze einer bestimmten Sache vorliegen. Diese nutzt die KI dann zum Training.
  2. Ein grundlegendes Rechenmodell muss ausgewählt werden. Einige sind z. B. für die Bilderkennung, andere für bestimmte Spracherkennung ausgelegt und optimiert.
  3. Schließlich wird das Modell anhand der Datensätze aus Big Data trainiert.
  4. In verschiedenen Tests wird an neuen unbekannten Beispielen überprüft, wie genau die KI arbeitet.
  5. Nach erfolgreicher Absolvierung der Tests ist die Intelligenz nun praxistauglich.

Mithilfe intelligenter Algorithmen und moderner Frameworks kann Ihnen die kreITiv dabei behilflich sein, auch Ihre Geschäftsprozesse zu optimieren. Wir betrachten Projekte immer aus ganzheitlicher Sicht und stellen spezifisch Teams aus Softwareentwicklern, ERP- und IT-Spezialisten und der Onlinemarketing-Abteilung zusammen. > Kontaktieren Sie uns

Fragen und Antworten zum Einstieg als Programmierer bei kreITiv

Als Praktikant in der Welt der Programmierer und Softwareentwickler

Unser Praktikant Tony findet Antworten auf die 4 wichtigsten Fragen, die sich Schüler und Auszubildende beim Einstieg in die Welt von Softwareentwicklung und IT stellen sollten.

1. Welche Voraussetzungen sollte ich als Praktikant mitbringen?

Die junge Generation wächst heute ganz selbstverständlich mit dem Medium Internet, sowie Smartphones und Tablets auf. Aus dem normalen Alltag ist all das nicht mehr wegzudenken. Doch nur weil man diese nutzen und zu bedienen weiß, heißt das noch lange nicht, dass man die Strukturen dahinter nachvollziehen kann. Jedoch wird mit diesem Grundwissen der Einstieg in das Thema deutlich vereinfacht.

Programmieren ist nicht einfach; es zu erlernen erst recht nicht, denn anders als in herkömmlichen Berufen, entwickelt die Technik sich stetig weiter und die Herausforderungen wachsen mit jedem Projekt. Doch wer ein gewisses Maß an Vorstellungsvermögen und Bereitschaft sich dahinter zu klemmen hat, kann diese Hürde meistern. Eine weitere wichtige Vorrausetzung ist das grundlegende Interesse, diese technischen Vorgänge nachzuvollziehen, weil Fehlersuche zur täglichen Arbeit als Praktikant in der Webentwicklung gehört und sie teils viele Stunden in Anspruch nehmen kann.

2. Wie kann ich Programmieren lernen?

w3schools.com oder Codecademy.com sind gute Anlaufstellen für den Einstieg in Programmiersprachen wie HTML, CSS, Python, PHP, JavaScript. Beide ermöglichen das Programmieren lernen im Browser. Die meisten dieser Kurse sind kostenlos und reichen völlig aus für die Basics. Wer jedoch mehr lernen möchte, kann auch monatlich einen Festpreis dafür zahlen, um auf mehr Übungen und weitere Features Zugriff zu haben.

Die meisten Seiten, Videos und Tutorials sind auf Englisch, was zusätzlich die Sprachkompetenzen mit auffrischt – auch das ist für Entwickler ein Muss. Ebenso gibt es zahlreiche YouTube Channels, die spannende Tutorials vermitteln. Ich lerne z. B. gerade erste WordPress Plugins zu programmieren. Selbstverständlich muss man dabei viel nachschlagen und googeln, doch es macht Spaß, wenn durch die eingegebenen Codezeilen der Computer die Aktionen erwartungsgemäß durchführt und das richtige Ergebnis liefert.

3. Welche Arten von Programmierern gibt es?

Die IT-Branche ist heutzutage sehr weitläufig und bietet für Entwickler zahlreiche Einsatzgebiete, die für viele auch und gerade als Praktikant interessant sind. Unterteilen kann man grob in folgende Kategorien:

Webprogrammierer/innen:

Von einfachen Webseiten bis hin zu komplexen Webshops oder Onlinespielen gehört ein breites Spektrum zu den Aufgaben eines Webprogrammierers. Wichtige Bestandteile sind Skriptsprachen wie JavaScript, des weiteren serverseitige Programmiersprachen wie Python oder PHP und natürlich die Seitenbeschreibungssprachen wie HTML, CSS, XML.

Systemprogrammierer/innen Desktop, Großrechner:

Die Einsatzmöglichkeiten in der Systemprogrammierung sind sehr speziell. Dabei geht es von künstlicher Intelligenz (z. B. Spracherkennung und -verarbeitung) bis hin zu virtueller Realität.

Anwendungsprogrammierer/innen Apps für mobile Geräte:

Hier sollen Apps nach Kundenwünschen entworfen und angepasst oder selber eine zündende Idee umgesetzt werden. Von reinem Coding bis hin zum Design und Aufbau der App ist dieser Beruf sehr vielseitig, abwechslungsreich und aufgrund des sich stark in diese Richtung entwickelnden Marktes sehr zukunftsträchtig.

Anwendungsprogrammierer/innen Desktop:

Sie entwickeln Software speziell für individuelle Nutzer, testen diese und führen regelmäßig Updates durch. Außerdem verbessern sie die Anwendungen hinsichtlich der Funktionalität (Sicherheit, Design) und anpassen sie an den aktuellen Standard an.

4. Wie lange dauert das Programmieren lernen?

Dafür gibt es keinen Richtwert, viel mehr erfordert Programmierung ein lebenslanges Lernen. Die Grundlagen eignet sich jeder unterschiedlich schnell an, aber bis man mit einem Programm das erste Geld verdienen kann, vergehen sicher erst einmal ein paar Jahre.

Und so heißt es in der Softwareentwicklung vom Praktikant bis zum alten Hasen, sich ständig mit neuen Technologien und Sprachen zu befassen und immer am Ball zu bleiben. Auch nach dem aktuellen Mobile-Trend wird es wieder neue Entwicklungen und damit auch Aufgabenfelder für Programmierer geben.

 

Zusammenfassend kann man sagen, dass die Programmierung und Softwareentwicklung ein abwechslungsreicher, spannender und sich stetig entwickelnder Beruf ist. Du hast Lust auf eine neue Erfahrung? Hast schon sehr viele Jahre als Entwickler gearbeitet? Oder würdest gern mal als Praktikant in die Webentwicklung reinschnuppern? Dann findest du in den Stellenanzeigen der kreITiv vielleicht etwas passendes.

Ursprung und Vorteile reaktiver JavaScript Frameworks für moderne Benutzeroberflächen

Reaktive JavaScript Frameworks – Trend in der Entwicklung von Benutzeroberflächen

Reaktives Verhalten, Virtual DOM und Komponenten sind die wesentlichen Bestandteile von reaktiven JavaScript Frameworks und entscheidende Stichworte für den modernen Softwareentwickler bei der Erstellung von Benutzeroberflächen. Richtungsweisend für die Etablierung dieses Trends können die zahlreichen Entwicklungen der letzten Jahre sein, welche auf eben diesen Frameworks basieren, darunter große Projekte wie Netflix, Facebook, Instagram, WhatsApp oder AirBnB.

Wieso man diesem Trend folgen sollte und welche Vorteile er mit sich bringt, möchten wir in diesem Blogartikel aufzeigen.

Ein eindeutiger Trend, doch wo liegt der Ursprung?

In den vergangenen Jahren dominierten Libraries beziehungsweise Frameworks, wie jQuery oder Mootools, den Bereich der Benutzeroberflächenentwicklung. Nun lässt sich jedoch ein eindeutiger Wechsel in Richtung reaktiver JavaScript Frameworks erkennen.

Bei der Entwicklung von großen Webanwendungen kommt es zunehmend darauf an, eine vernünftige Codestruktur zu erzeugen. Vergleicht man hier als Beispiel jQuery mit Vue oder React als Vertreter der reaktiven Frameworks, so stellt man fest, dass jQuery keine Komponenten bietet.

Mittels Komponenten ist ein Entwickler in der Lage, Struktursprachen wie HTML und CSS mit der JavaScript-Logik innerhalb einer Datei zu bündeln. Diese kann dann an beliebiger Stelle innerhalb der Anwendung mehrfach verwendet werden. Zusätzlich besteht die Möglichkeit, diese Komponenten problemlos innerhalb einer anderen Anwendung zu nutzen. Die variabel einsetzbaren Codestrukturen werden dann in übersichtlicher Art und Weise miteinander verknüpft, sodass am Ende die Darstellung über eine Baumstruktur möglich ist.

Der zentrale Vorteil von reaktiven JS-Frameworks ist somit die Reduktion der Komplexität der Codestruktur. Sekundäre Ziele sind dabei die bessere Verständlichkeit und somit auch leichtere Wartung von komplexen Codestrukturen.

Was ist eigentlich dieses reaktive Verhalten?

Innerhalb einer Komponente kann der Entwickler zum Beispiel Formulardaten definieren, welche automatisch über das Model Binding der Logik zugänglich gemacht werden können. Bei jQuery muss an dieser Stelle mit Events gearbeitet werden, bei Vue und Co. ist dies praktisch nicht notwendig.

Zusätzlich gibt es neue Libraries, wie zum Beispiel Elements für Vue. Durch Elements kann ein Entwickler vorgefertigte Komponenten in seine Anwendung implementieren. Diese verfügen damit schon über eine gewisse Logik und sind auch komplett grafisch aufgearbeitet.

In Puncto Geschwindigkeit können reaktive JavaScript Frameworks natürlich auch bestehen, da mindestens ein virtuelles Strukturabbild des HTML-Dokuments im Speicher vorgehalten wird. Dadurch muss nicht das komplette HTML-Dokument neu geladen werden, wenn sich ein Teil dieser Struktur ändert. Der virtuelle DOM prüft selbstständig, welche Bereiche im Dokument neu gerendert werden müssen und imitiert genau dies automatisch. Damit ist die clientseitige Manipulation deutlich effizienter geworden.

Viele Vorteile rechtfertigen die höhere Entwicklungszeit

Fassen wir die zahlreichen Vorteile von reaktiven JavaScript Frameworks zusammen:

  • Wiederverwendbarer Code durch Komponenten

  • Bessere Wartbarkeit der Anwendung

  • Schnellerer Zugriff auf Daten dank Model Binding und reaktiven Verhaltens

  • Effizientere Manipulation von HTML-Strukturen

  • Höhere Geschwindigkeit

Natürlich besitzt jede neue Technologie auch ein oder zwei Schattenseiten. Im Fall von Vue ist dies der doch spürbar höhere Anspruch für die clientseitige Entwicklung. Das führt letztlich zu einer längeren Entwicklungszeit für eine Anwendung.

Zusammenfassend kann man jedoch sagen, dass der Trend eindeutig in Richtung reaktiver JavaScript Frameworks zeigt, da selbst das World Wide Web Consortium W3C an einer sehr analogen Technologie namens „Shadow DOM“ arbeitet.

Sinn und Zweck der Entwicklung eines Prototyps in einem Software-Projekt

3 Arten von Prototyping in der Softwareentwicklung

Prototyping ist ein seit langem verbreitetes Prinzip in der Softwareentwicklung. Doch um was genau handelt es sich dabei und was ist der Unterschied zu einem Mock-up?

Der Grund für die Existenz beider Prinzipien ist das Entwickeln einer gemeinsamen Basis, die dem Kunden auf der einen und dem Entwicklerteam auf der anderen Seite bei der Kommunikation helfen. Eine konkrete Modellierung hilft beiden Parteien, ein besseres Verständnis vom Zielsystem aufzubauen.

Dabei sind Prototypen funktionsfähige Entwürfe, die bereits grundlegende Funktionalitäten beinhalten. Mock-ups dagegen sind Attrappen und besitzen normalerweise keine Funktionalität, sind also nicht mit Programmlogik angereichert. Dafür können Mock-ups dem Kunden ein deutlicheres Bild vom Endergebnis vermitteln als ein teils funktionsfähiger Prototyp.

Ein Prototyp als erster Schritt zur Software

Prototyping steht am Anfang eines Softwareprojekts für die Entwicklung eines Musters. Es ist ein Verfahren, welches im Software-Engineering eingesetzt wird. Gegenstand des Prototypings ist die Entwicklung einer lauffähigen Software bzw. einer Softwarekomponente, die bestimmte Kernfunktionen abdeckt. Das Verfahren ist kostengünstiger, da es weniger Zeit in Anspruch nimmt als die Komplettentwicklung. Der Prototyp kann erstellt und getestet werden. Fehler können somit frühzeitig erkannt und Änderungswünsche besser berücksichtigt werden als bei der fertigen Software.

Empfehlenswert ist der Einsatz vor allem dann, wenn die endgültigen Anforderungen und Spezifikationen für die komplette Software noch nicht ausgearbeitet werden. Dabei kann man es als iterativen Prozess betrachten, der zwischen Entwicklerteam und Auftraggeber stattfindet.

Es haben sich unter anderem folgende Arten herausgebildet: Exploratives, experimentelles und evolutionäres Prototyping. Daneben gibt es noch das Rapid-Prototyping für die schnelle Herstellung eines Musters.

1. Exploratives Prototyping – Ermittlung verschiedener Lösungsansätze

Das explorative Prototyping dient dazu, den Entwicklern einen Einblick in den Anwendungsbereich zu vermitteln, mit dem Auftraggeber verschiedene Lösungsansätze zu diskutieren und die Realisierungsmöglichkeiten abzuschätzen. Dazu wird auf Grundlage der Anwendung und Kundenvorstellungen ein Prototyp entwickelt. Beim explorativen Prototyping geht es in erster Linie um die Funktionalität des Systems, weniger um dessen (optische) Qualität.

2. Experimentelles Prototyping – Verdeutlichung eines Gesamtsystems

Einen anderen Ansatz verfolgt das experimentelle Prototyping. Hierbei sollen sämtliche Teilsysteme für die spätere Implementierung vollständig definiert werden. Anschließend soll die Funktion der Teilsysteme nachgewiesen und die jeweiligen Schnittstellen überprüft werden. Im Vordergrund stehen also die Einzelkomponenten und ihr Zusammenspiel.

3. Evolutionäres Prototyping – Schrittweise zum Endprodukt

Beim evolutionären Prototyping geht es um eine stufenweise Systementwicklung. Das System soll schrittweise nach den exakten, definierten Spezifikationen aufgebaut werden. Jeder Zwischenschritt dient als Grundlage für die inkrementelle Weiterentwicklung, basierend auf weiteren Spezifikationen. Das evolutionäre Prototyping ist eine Vorgehensweise, bei dem der Prototyp grundsätzlich das fertige Produkt darstellt.

Softwareentwicklung bei der kreITiv

Zusammenfassend sehen wir Prototyping in der Softwareentwicklung als effiziente Technik, um die späteren Anwender frühzeitig und kontinuierlich in die Entwicklung einzubeziehen. Dadurch lässt sich das Risiko von Fehlentwicklungen reduzieren und Kunden sind mit dem Endergebnis deutlich zufriedener.

Auch wir als Team der kreITiv wissen um die Mehrwerte, die Prototyping mit sich bringt und setzen vermehrt auf dieses Werkzeug, um bei jedem Projekt von Anfang an mit dem Kunden ein einheitliches und gemeinsames Verständnis vom Endergebnis zu entwickeln.