1. Startseite
  2. Wissen kompakt
  3. Anwendungsentwicklung

Anwendungsentwicklung

Inhaltsverzeichnis: DefinitionArten von SoftwarePhasen der AnwendungsentwicklungVorgehenQualitätsmerkmaleHinweise

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.

Impuls zum Diskutieren:

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

Hinweise:

Haben Sie Lust auf einen neuen Lieblings-Newsletter?

Die Inhalte auf dieser Seite dürfen Sie gerne teilen oder verlinken.

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?