1. Startseite
  2. Wissen kompakt
  3. Anwendungsentwicklung

Wissen kompakt: Anwendungsentwicklung ist der Prozess zur Erstellung von Anwendungssoftware, die dem Anwender hilft, bestimmte Aufgaben und Aktivitäten durchzuführen.

Anwendungsentwicklung Definition

Anwendungsentwicklung beschreibt den gesamten Prozess zur Herstellung von Software. Anwendungssoftware nutzen wir tagtäglich

  • zum Editieren von Texten,
  • als Tabellenkalkulation,
  • zum Gestalten von Websites,
  • zum Aufnehmen von Videos und Podcasts,
  • zum Versenden und Empfangen von E-Mails,
  • als Media-Player,
  • oder als Grafikprogramm.

Die Einsatzszenarien sind weit gefächert, so dass es Sinn ergibt, bei der Betrachtung der Anwendungsentwicklung verschiedene Softwarearten zu unterscheiden.

Anwendungsentwicklung - der Prozess zur Entwicklung von Anwendungssoftware

Arten von Software

Grundsätzlich gibt es drei verschiedene Arten von Software:

  • Systemsoftware ist die Basis, auf dem Programme laufen. Typische Beispiele sind Betriebssysteme wie Windows, Linux oder macOS.
  • Programmiersoftware bezeichnet Programme, die Entwickler für die Programmierung, das Testen, das Build Management oder das Deployment verwenden. Das können einzelne Tools wie Debugger oder Minifier oder integrierte Entwicklungsumgebungen (IDE für Integrated Development Environment) sein. Alternativ wird auch von Middleware gesprochen.
  • Anwendungssoftware adressiert den Endbenutzer und bietet Funktionen zur Ausführung bestimmter Aufgaben und Aktivitäten. Typische Beispiele sind Programme zur Dokumentenerstellung und -ablage, zur Bildbearbeitung, zur Wiedergabe von Film oder Musik etc.

Im Kontext der Softwareentwicklung für mobile Geräte gibt es noch den Begriff der App – als Abkürzung für Applikation. Auch wenn Applikation nur ein anderes Word für Anwendungssoftware ist, so werden unter Apps häufig Programme verstanden, die auf Handys oder Tablet-PCs laufen.  Da inzwischen aber auch Apps für Desktop-PCs angeboten werden, verschwimmt die Abgrenzung zunehmend.

Zusammengefasst lässt sich also sagen: Anwendungsentwicklung ist der Prozess zur Erstellung von Anwendungssoftware, die dem Anwender hilft, bestimmte Aufgaben und Aktivitäten durchzuführen.

Phasen der Anwendungsentwicklung

Es gibt verschiedene Phasen der Anwendungsentwicklung:

Anforderungsanalyse

In der Phase der Anforderungsanalyse geht es darum, die Anforderungen der Stakeholder und damit auch der Kunden und Anwender in Erfahrung zu bringen. Unter anderem muss der Systemkontext definiert werden, es gilt Stakeholder zu identifizieren, zu analysieren und mit ihnen zu kommunizieren. Evtl. werden Szenarien oder Kreativitätstechniken wie Brainstorming oder Brainwriting genutzt, um Anforderungen zu ermitteln. Idealerweise erfolgt die Anforderungsanalyse nach einem definierten Prozess.

Architekturentwurf

In der Phase geht es darum, die Architektur der Anwendung zu bestimmen, also Technologien, Programmiersprachen, Datenbanken, Schnittstellen etc. Hier könnte das Twin-Peaks-Model zum Tragen kommen.

Implementierung

Die Implementierung ist die zentrale Phase der Anwendungsentwicklung, die allerdings ohne die anderen Phasen nicht gelingen kann. In der Praxis empfiehlt es sich, sogenannten Clean Code zu implementieren.

Testing

Natürlich muss die Anwendung auch getestet werden. Hier gibt es verschiedene Arten von Tests wie Unittests, Integrationstests und Systemtests. Im Sinne des Releasemanagements empfiehlt es sich auch, mit Alpha- und Betaversionen zu arbeiten, um frühzeitig Feedback von Anwendern einzuholen. Nur weil eine Anwendung funktioniert, heißt es noch lange nicht, dass sie auch die Bedürfnisse der Anwender abdeckt.

Deployment

In dieser Phase wird den Anwendern die Anwendungssoftware zur Verfügung gestellt. Alternativ lässt sich diese Phase auch als Freigabe oder Abnahme bezeichnen. Idealerweise sollten Unternehmen darauf verzichten, Bananensoftware auszuliefern. Und natürlich gilt es, die Funktionen der Anwendungssoftware zu dokumentieren, und bspw. Handbücher und Tutorials zur Verfügung zu stellen.

Pflege und Wartung

Eine Anwendungssoftware ohne Fehler ist nur schwer vorstellbar. In anderen Worten: Software wird weiterentwickelt, Fehler werden beseitigt, neue Funktionen kommen hinzu. Änderungen sollten in einem Changelog festgehalten werden. Typischerweise kommt es im Laufe der Zeit zu einem Refactoring und auch Hotfixing ist keine Seltenheit. 

Vorgehen bei der Anwendungsentwicklung

Es gibt natürlich auch verschiedene Vorgehensweisen bei einer Anwendungsentwicklung. Bspw. könnte man die  verwendeten Vorgehensmodelle unterscheiden:

  • Wasserfall-Modell
  • Spiral-Modell
  • V-Modell
  • V-Modell XT
  • Model Driven Development
  • Feature Driven Development
  • Test Driven Development
  • Domain Driven Development

Oder man könnte auch nach

  • der Art der Programmierung (ein Entwickler, Pair Programming, Mob Programming),
  • der Verwendung von Fremd- und Fertigprodukten (Eigenprogrammierung, Zukauf von einzelnen Modulen und Komponenten),
  • der verwendeten Philosophie (Scrum und das agile Manifest, Extreme Programming, Kanban) oder
  • der Technik (bspw. Rapid Application Development, Low Code Application Development, No Code Application Development, Mobile Application Development oder Enterprise Application Development) unterscheiden.

Da viele dieser Unterscheidungen fließend – und vielleicht auch akademisch – sind, ist es für jede Organisationen wichtig, für sich zu entscheiden, wie die Anwendungsentwicklung strukturiert wird. Ziel ist es, die acht Kriterien für Softwarequalität zu erfüllen.

Qualitätsmerkmale der Anwendungsentwicklung

Die ISO 25010 definiert folgende acht Qualitätsmerkmale für Software:

  • funktionale Software, also funktional korrekt, angemessen und vollständig
  • verlässliche Software, im Sinne von ausgereift, verfügbar, fehlertolerant und wiederherstellbar
  • effiziente Performance, d.h. mit guten Zeitverhalten, Kapazitäten schonend und Ressourcen effektiv nutzend
  • höchste Sicherheit, d.h. nicht manipulierbar, authentifizierbar, sicher zu administrieren (auch mittels geschützten Benutzer-Accounts), sowie Datenschutz und Integrität
  • hohe Kompartibilität im Sinne von optimaler Co-Existenz zu anderer Software und Interoperabilität
  • perfekte Usability und damit gute Bedienbarkeit, leichter Zugang und leicht erlernbar, ästetisches User-Interface und optimale Erkennbarkeit, sowie Schutz vor Fehlbedienung durch den Nutzer
  • einfache Wartung durch modularen Aufbau, wiederverwendbaren Komponenten, umfangreichen Testoptionen, guten Analyse-Funktionen und leichter Modifizierbarkeit
  • leichte Portierbarkeit, also leicht zu installieren, einfach auszutauschen und gut adaptierbar

Viele dieser Qualitätsmerkmale liegen auch bei der Anwendungsentwicklung auf der Hand: jeder Anwender wünscht sich bspw. eine hohe Funktionalität, eine gute Zuverlässigkeit und eine einfache Bedienung. Und natürlich sollte eine Anwendungssoftware auch immer leicht zu warten sein oder auf unterschiedlicher Hardware betrieben werden können. Manche Aspekte sind aber schwieriger zu greifen: Was ist eine perfekte Usability? Wie funktioniert eine leichte Installation bei einer Enterprise Lösung, die weltweit in verschiedenen Zeitzonen genutzt wird? Oder was ist eine effiziente Performance? Je nach Einsatzgebiet der Anwendungssoftware müssen Hersteller für diese Fragen entsprechende Antworten finden.

Fragen aus der Praxis

Hier finden Sie einige Fragen und Antworten aus der Praxis:

Welche Trends gibt es in der Anwendungsentwicklung?

Die Anwendungsentwicklung befindet sich in einem ständigen Wandel, geprägt von neuen Technologien, Methoden und Paradigmen. Zu den wichtigsten Trends, die die Branche derzeit prägen, gehören die verstärkte Nutzung von Cloud-Computing, die Einführung von DevOps-Praktiken, der Aufstieg von Low-Code/No-Code-Plattformen sowie die zunehmende Integration von künstlicher Intelligenz und maschinellem Lernen.

Ein besonders prägender Trend ist das Cloud-Computing. Entwickler setzen vermehrt auf cloudbasierte Dienste, um Anwendungen schneller und effizienter bereitzustellen. Cloud-Plattformen wie Amazon Web Services (AWS), Microsoft Azure und Google Cloud bieten eine Vielzahl von Diensten, die es ermöglichen, skalierbare, flexible und hochverfügbare Anwendungen zu entwickeln. Insbesondere Serverless-Architekturen, bei denen Entwickler Code ohne die Notwendigkeit einer Serververwaltung ausführen können, gewinnen an Popularität, da sie Kosten senken und die Entwicklungszeit verkürzen.

DevOps ist ein weiterer zentraler Trend, der die Art und Weise, wie Software entwickelt und bereitgestellt wird, revolutioniert hat. Durch die Verschmelzung von Entwicklung (Development) und Betrieb (Operations) entstehen kürzere Release-Zyklen, eine verbesserte Zusammenarbeit zwischen Teams und eine höhere Softwarequalität. Automatisierung spielt hierbei eine entscheidende Rolle, sei es durch Continuous Integration/Continuous Deployment (CI/CD) Pipelines, automatisierte Tests oder Monitoring-Tools. Diese Praktiken ermöglichen eine schnelle und kontinuierliche Auslieferung von Software, was wiederum die Anpassungsfähigkeit an Marktveränderungen erhöht.

Low-Code/No-Code-Plattformen sind ebenfalls auf dem Vormarsch. Diese Werkzeuge ermöglichen es, Anwendungen mit minimalem Programmieraufwand zu entwickeln, was besonders für Unternehmen attraktiv ist, die schnell Lösungen umsetzen müssen, aber nicht über genügend Entwicklerressourcen verfügen. Im Idealfall senken sie die Einstiegshürden und ermöglichen es auch Nicht-Entwicklern, funktionale Anwendungen zu erstellen. Dieser Trend könnte die Art und Weise, wie Software entwickelt wird, nachhaltig verändern, indem er die Entwicklung demokratisiert und Unternehmen eine höhere Agilität verleiht.

Ein weiterer wichtiger Trend ist die Integration von künstlicher Intelligenz (KI) und maschinellem Lernen (ML) in Anwendungen. KI-gesteuerte Funktionen wie Chatbots, personalisierte Empfehlungen und prädiktive Analysen werden immer häufiger in Softwarelösungen integriert. Frameworks einiger großer Cloud-Anbieter erleichtern es Entwicklern, KI-Modelle in ihre Anwendungen einzubinden. Diese Technologien eröffnen völlig neue Möglichkeiten, Nutzererlebnisse zu verbessern, Prozesse zu automatisieren und wertvolle Einblicke aus Daten zu gewinnen.

Zusammengefasst lässt sich sagen, dass die Anwendungsentwicklung heute stärker denn je von Innovationen geprägt ist. Die zunehmende Verlagerung in die Cloud, die Einführung von DevOps, der Aufstieg von Low-Code/No-Code-Plattformen sowie die wachsende Bedeutung von KI und ML sind zentrale Trends, die die Zukunft der Branche bestimmen werden. Entwickler, die sich mit diesen Technologien und Methoden vertraut machen, werden gut gerüstet sein, um die Herausforderungen der digitalen Transformation zu meistern.

Warum ist Clean Code bei der Entwicklung von Anwendungen wichtig?

Clean Code, also sauberer Code, ist ein Ansatz in der Softwareentwicklung, der darauf abzielt, Code so zu schreiben, dass er leicht lesbar, wartbar und erweiterbar ist. Der Gedanke hinter Clean Code ist, dass Software nicht nur für Maschinen, sondern vor allem für Menschen geschrieben wird – nämlich für Entwickler, die den Code später lesen, verstehen und ändern müssen. Sauberer Code zeichnet sich durch klare Struktur, aussagekräftige Benennungen, einfache Logik und die Vermeidung von unnötiger Komplexität aus.

Die Vorteile dieses Ansatzes sind vielfältig. Erstens fördert Clean Code eine bessere Zusammenarbeit im Team, da der Code für alle Entwickler leicht verständlich ist. Dies reduziert die Einarbeitungszeit für neue Teammitglieder und erleichtert die gemeinsame Arbeit an komplexen Projekten. Zweitens führt sauberer Code zu weniger Fehlern und höherer Codequalität, da klarer, gut strukturierter Code leichter zu testen und zu debuggen ist. Drittens erleichtert er zukünftige Anpassungen und Erweiterungen, was besonders wichtig ist, wenn sich Anforderungen ändern oder neue Features hinzukommen.

Letztlich sorgt der Clean Code-Ansatz dafür, dass Softwareprojekte langfristig stabil, kosteneffizient und wartungsfreundlich bleiben. Entwickler, die Clean Code praktizieren, tragen maßgeblich dazu bei, dass Projekte erfolgreich abgeschlossen und kontinuierlich verbessert werden können.

Welche Bedeutung hat Cybersecurity bei der Anwendungsentwicklung?

Cybersecurity spielt eine entscheidende Rolle in der Anwendungsentwicklung, da die Sicherheit von Anwendungen direkten Einfluss auf den Schutz sensibler Daten und die Integrität von Systemen hat. Schwachstellen in der Sicherheit können zu Datenverlust, finanziellen Schäden und Reputationsverlust führen. Daher ist es unerlässlich, Sicherheitsmaßnahmen von Anfang an in den Entwicklungsprozess zu integrieren.

Ein zentraler Leitfaden, um die häufigsten Sicherheitsrisiken zu erkennen und zu beheben, ist die OWASP Top 10, eine Liste der zehn kritischsten Sicherheitsrisiken für Webanwendungen, die von der Open Web Application Security Project (OWASP)-Gemeinschaft erstellt und regelmäßig aktualisiert wird.[1] Diese Liste dient als anerkannter Standard und Leitfaden für Entwickler, Sicherheitsforscher und Unternehmen, um sich auf die häufigsten und gefährlichsten Sicherheitsprobleme in Webanwendungen zu konzentrieren. Die 10 Punkte lauten:

  • Unsachgemäße Durchsetzung von Zugriffsregeln ermöglicht es Angreifern, auf Funktionen und Daten zuzugreifen, die sie normalerweise nicht einsehen oder manipulieren dürfen.
  • Fehlerhafte Implementierungen von Verschlüsselung oder der fehlende Schutz sensibler Daten gefährden die Vertraulichkeit und Integrität von Informationen.
  • Schwachstellen, die es einem Angreifer ermöglichen, schädlichen Code in die Anwendung einzuschleusen, zum Beispiel durch SQL-Injection, bei der eine Datenbank manipuliert wird.
  • Unsicherheiten, die auf konzeptionellen Fehlern beruhen, wie unzureichende Sicherheitsanforderungen und schlecht gestaltete Prozesse, die Angriffsmöglichkeiten eröffnen.
  • Unsichere Einstellungen oder falsche Konfigurationen von Webservern, Datenbanken, Frameworks und Anwendungen, die Angriffe erleichtern.
  • Nutzung von Bibliotheken, Frameworks oder anderen Software-Komponenten mit bekannten Sicherheitslücken.
  • Schwachstellen in Authentifizierungs- und Sitzungsverwaltungsfunktionen, die es Angreifern ermöglichen, Benutzerkonten zu übernehmen.
  • Risiken, die durch unzureichende Integritätsprüfungen von Software-Updates, Skripten oder Daten entstehen.
  • Unzureichende Protokollierung und Überwachung, die eine rechtzeitige Erkennung und Reaktion auf Sicherheitsvorfälle verhindert.
  • Schwachstellen, bei denen ein Angreifer den Server dazu bringt, unerwünschte Anfragen zu anderen Diensten zu senden, oft um interne Netzwerke anzugreifen.

Fazit: OWASP Top 10 hilft Entwicklern, sichere Codierungspraktiken zu erlernen und umzusetzen, und unterstützt Unternehmen dabei, die Sicherheit ihrer Anwendungen zu verbessern.

Wie wichtig ist Benutzerfreundlichkeit im Zuge einer Anwendungsentwicklung?

Benutzerfreundlichkeit, oft als User Experience (UX) bezeichnet, ist weit mehr als nur ein Aspekt des Designs – sie ist ein zentrales Element, das über den Erfolg oder Misserfolg einer Anwendung entscheidet. Eine gute UX bedeutet, dass eine Anwendung nicht nur funktional ist, sondern auch einfach zu bedienen und angenehm in der Nutzung. Dies setzt voraus, dass die Bedürfnisse und Erwartungen der Nutzer von Anfang an im Mittelpunkt der Entwicklung stehen.

Ein durchdachtes UX-Design berücksichtigt verschiedene Faktoren wie intuitive Navigation, klare und verständliche Interaktionen, konsistentes Design und schnelle Ladezeiten. Diese Elemente tragen dazu bei, dass Nutzer problemlos ihre Ziele erreichen, sei es der Kauf eines Produkts, das Finden von Informationen oder die Nutzung einer Dienstleistung. Wenn eine Anwendung diese Aspekte erfüllt, minimiert sie Frustrationen und maximiert die Zufriedenheit, was wiederum die Wahrscheinlichkeit erhöht, dass Nutzer zurückkehren und die Anwendung weiterempfehlen.

Darüber hinaus hat eine starke UX direkte wirtschaftliche Auswirkungen. Eine Anwendung, die einfach und angenehm zu bedienen ist, reduziert Supportanfragen, senkt die Absprungraten und erhöht die Konversionsraten. Ein schlechtes UX-Design kann hingegen dazu führen, dass Nutzer abspringen und sich Alternativen suchen, was zu Verlusten und negativem Feedback führen kann.

Zusammengefasst ist Benutzerfreundlichkeit nicht nur eine nette Ergänzung, sondern ein essenzieller Bestandteil der Anwendungsentwicklung. Sie schafft den entscheidenden Unterschied zwischen einer Anwendung, die lediglich funktioniert, und einer, die begeistert. Durch die konsequente Fokussierung auf eine herausragende User Experience wird sichergestellt, dass die Anwendung den Nutzern einen echten Mehrwert bietet und langfristig erfolgreich bleibt.

Welche Tipps sind bei der Anwendungsentwicklung nützlich?

Bei der Anwendungsentwicklung gibt es eine Reihe von bewährten Tipps, die den Entwicklungsprozess effizienter gestalten und die Qualität der fertigen Anwendung verbessern können. Einer der wichtigsten Ratschläge ist, von Anfang an klare und präzise Anforderungen zu definieren. Eine gründliche Anforderungsanalyse hilft, Missverständnisse zu vermeiden und sorgt dafür, dass die entwickelten Funktionen den tatsächlichen Bedürfnissen der Nutzer entsprechen.

Ein weiterer Tipp ist die konsequente Anwendung von Versionskontrollsystemen wie Git. Diese ermöglichen es, Änderungen am Code nachvollziehbar zu dokumentieren, gemeinsam im Team zu arbeiten und bei Bedarf frühere Versionen wiederherzustellen. Dies erhöht die Transparenz im Entwicklungsprozess und reduziert das Risiko von Fehlern.

Die Bedeutung von regelmäßigen Tests kann nicht genug betont werden. Automatisierte Tests, wie Unit-Tests und Integrationstests, stellen sicher, dass der Code zuverlässig funktioniert und Änderungen keine unerwünschten Nebenwirkungen haben. Darüber hinaus sollte das Testen auch die Benutzeroberfläche und die Nutzerfreundlichkeit umfassen, um sicherzustellen, dass die Anwendung nicht nur funktional, sondern auch benutzerfreundlich ist.

Ein weiterer wichtiger Aspekt ist die Wartbarkeit des Codes. Prinzipien wie Clean Code, Modularisierung und die Einhaltung von Programmierstandards tragen dazu bei, dass der Code lesbar und leicht zu verstehen ist. Dies erleichtert nicht nur die Zusammenarbeit im Team, sondern auch die zukünftige Wartung und Erweiterung der Anwendung.

Schließlich sollte die Sicherheit von Anfang an in den Entwicklungsprozess integriert werden. Es ist ratsam, bewährte Sicherheitspraktiken wie die regelmäßige Überprüfung auf Schwachstellen, die Nutzung sicherer Bibliotheken und die Implementierung von Schutzmaßnahmen gegen gängige Angriffe, wie die OWASP Top 10, zu berücksichtigen. Auf diese Weise kann das Risiko von Sicherheitsvorfällen minimiert werden.

Durch die Beachtung dieser Tipps kann die Anwendungsentwicklung effektiver gestaltet werden, wodurch qualitativ hochwertige, sichere und benutzerfreundliche Software entsteht, die langfristig erfolgreich ist.

Impuls zum Diskutieren:

Anhand welcher Kriterien erkennen Sie, wie gut ein möglicher Dienstleister beim Thema Anwendungsentwicklung ist?

Hinweise:

Wenn Ihnen der Beitrag gefällt oder Sie darüber diskutieren wollen, teilen Sie ihn gerne in Ihrem Netzwerk. Und falls Sie sich für weitere Tipps aus der Praxis interessieren, dann testen Sie unseren wöchentlichen Newsletter mit neuen Beiträgen, Downloads, Empfehlungen und aktuellem Wissen. Vielleicht wird er auch Ihr Lieblings-Newsletter!

[1] OWASP Top 10: Ein Standarddokument zur Sensibilisierung von Entwicklern und zur Sicherheit von Webanwendungen.

Hier finden Sie ein Video über die Ausbildung zum Fachinformatiker Anwendungsentwicklung.

Hier finden Sie hier einen Erfahrungsbericht zur agilen Migration von Applikationen.

Und hier finden Sie ergänzende Informationen aus unserer Rubrik Wissen kompakt:

Wissen kompakt: Was ist Refactoring?

Was ist Refactoring?

Wissen kompakt: Was ist Mob Programming?

Was ist Mob Programming?

Wissen kompkat: Was ist Low-Code-Entwicklung?

Was ist Low-Code-Entwicklung?