Alan Zeichick | Content Strategist | 6. September 2024
Backend-Systeme für Bestandskontrolle, Personalwesen und Buchhaltung. Produktivitätsanwendungen zum Erstellen von E-Mails, Dokumenten und Tabellen. Kundenorientierte Software, wie Ihre Website oder Ihre mobile App. Spezialisierte Systeme für IT-Teams, Grafikdesigner, Projektmanager, Führungskräfte und LKW-Fahrer.
Sie bekommen die Idee – es braucht viel Code, um ein modernes Unternehmen zu betreiben.
Die meisten Anwendungen, von denen Ihr Unternehmen abhängt, wurden wahrscheinlich von Softwareanbietern erstellt und sind oft in einem Software-as-a-Service-Modell lizenziert. Denken Sie an Microsoft Office, Oracle NetSuite oder Adobe Photoshop. Andere wurden entweder von internen Entwicklungsteams oder von Auftragnehmern nach Ihren Vorgaben geschrieben oder angepasst. Dieser zweite Fall steht im Mittelpunkt dieses Artikels.
Die Anwendungsentwicklung oder AppDev ist der Prozess zum Entwerfen, Erstellen, Testen und Bereitstellen von Software. Eine erfolgreiche Anwendungsentwicklung erfordert Menschen mit unterschiedlichen Fähigkeiten. Ein AppDev-Team kann Programmierer, Software-Ingenieure, Software-Architekten, Benutzeroberflächen-Designer, Tester, Qualitätssicherungsspezialisten und Projektmanager haben.
Im Kern beginnt die Anwendungsentwicklung mit einem Problem zu lösen oder eine Chance zu ergreifen. Da jede Software Ressourcen zum Erstellen, Bereitstellen und Verwalten benötigt, muss die Wahrscheinlichkeit gut sein, dass der Nutzen des Benutzerfalls gleich oder höher ist als die Kosten. Sobald der Anwendungsfall vereinbart ist, verteilen Unternehmen Ressourcen – Geld, Personal und Zeit – für das Entwicklungsprojekt, das in der Regel einem von zwei Wegen folgt:
Geplante Entwicklung Die Anforderungen der gesamten Anwendung werden vorab abgebildet und von allen Stakeholdern genehmigt. Die Software wird dann für die Verwendung durch Mitarbeiter oder Kunden konzipiert, entworfen, getestet und bereitgestellt. Dieser Prozess kann für große Projekte schmerzhaft langsam sein, Jahre dauern bis er abgeschlossen ist – und während das passiert, ändern sich die Anforderungen und die Anwendungen sind nicht so nützlich wie erhofft.
Iterative Entwicklung. Eine leichte Version der Software ist entworfen, gebaut und getestet. Es wird dann inkrementell verbessert, mit neuen Funktionen und Funktionen in kurzen Bursts hinzugefügt, die oft nur wenige Wochen dauern. Deployments finden häufig statt. Dieser Ansatz, der oft als agil bezeichnet wird, ist flexibler und kann Geschäftsvorteile schneller bereitstellen und gleichzeitig auf sich ändernde Anforderungen reagieren.
Wichtige Erkenntnisse
Anwendungsentwicklung ist mehr als nur Programmierung. Das Schreiben von Code mit einer Sprache wie Java, JavaScript, Python, Go, Rust oder SQL ist nur ein Bruchteil des Prozesses. Teams müssen sicherstellen, dass die Anwendung den Geschäftsanwendungsfall des Unternehmens unterstützt, unabhängig davon, ob sie den Umsatz mit einer aktualisierten Website steigert, die betriebliche Effizienz mit einer App verbessert, die Echtzeiteinblicke in den Bestand bietet, oder die Mitarbeiterzufriedenheit steigert, indem Mitarbeiter über ein Self-Service-Portal auf Paystubs zugreifen und Freizeit beantragen können.
Ebenso wichtig sind Designkriterien, darunter folgende:
Die Verantwortung für all das obige ist in erster Linie die Verantwortung des Anwendungsarchitekten, und diese Anforderungen müssen vom gesamten Anwendungsentwicklungsteam verstanden werden.
Ohne Anwendungen wären die meisten Unternehmen nicht in der Lage, den täglichen Betrieb durchzuführen. Für viele sind Anwendungen der Schlüssel zur Wettbewerbsfähigkeit, und die Fähigkeit, schnell neue Software zu erwerben, anzupassen und zu erstellen, ist entscheidend für ihre Fähigkeit, sich an sich schnell verändernde Märkte anzupassen.
In einigen Fällen kann ein Unternehmen Standardsoftware verwenden oder eine kommerzielle Anwendung anpassen, indem es seine Funktionalität mit APIs (Anwendungsprogrammierschnittstellen) oder SDKs (Software Development Kits) erweitert. Aber manchmal gibt es keine kommerzielle Anwendung, die tun kann, was Sie brauchen, oder mit der einzigartigen Expertise oder dem geistigen Eigentum Ihres Unternehmens umgehen kann. Das ist, wenn Unternehmen, die ihre eigenen Anwendungen entwickeln können, einen Wettbewerbsvorteil erzielen.
Der Prozess der Anwendungsentwicklung erfordert viele Schritte und Teilnehmer, von geschäftlichen Stakeholdern und Champions, um das Projekt zu initiieren und zu finanzieren, bis hin zu technischen Spezialisten, um die Software zu erstellen. Viele Ideen – und manchmal auch konkurrierende Prioritäten – müssen aufeinander abgestimmt werden, um Apps bereitzustellen, die sicher, sicher und funktional sind und dem Unternehmen einen Mehrwert bieten.
Warum Software erstellen? Es gibt zwei Hauptgründe: Es ist Ihr Geschäft, oder es hilft Ihrem Unternehmen.
Nicht alle Anwendungen werden auf die gleiche Weise erstellt. Riesige Softwareentwicklungsprojekte beinhalten einen formalen Prozess, der Monate oder Jahre dauern kann, um eine verwendbare Anwendung zu liefern. Kleinere Projekte könnten in einer Woche oder an einem Tag ausgeschlagen werden. Die Stakeholder des Projekts werden mit dem technischen Entwicklungsteam zusammenarbeiten, um den besten Ansatz zu bestimmen.
Low-Code/No-Code
Nicht alle Anwendungen erfordern die oben beschriebenen umfassenden Anstrengungen. Denken Sie ein paar Jahrzehnte zurück, in denen Power-User – manchmal auch als "Bürgerentwickler" bezeichnet – ausgeklügelte Tabellenmakros zur Lösung von Geschäftsproblemen erstellt haben. In jüngerer Zeit wurde eine Art Entwicklung namens Low-Code/No-Code entwickelt, mit der Geschäftsanwender Anwendungen mit visuellen Tools schreiben können, mit denen sie bestimmte Datenquellen, Algorithmen und Workflows verwenden können. Diese Anwendungen werden in der Cloud ausgeführt und können von Mitarbeitern, Kunden oder anderen Partnern aufgerufen werden. Oft laufen diese No-Code/Low-Code-Apps in einem Standard-Webbrowser oder auf einem mobilen Gerät, wie einem Telefon, Tablet oder Kiosk.
Es gibt viele Vorteile des Low-Code/No-Code-Ansatzes, einschließlich viel schnellerer Entwicklung und Bereitstellung; das integrierte Sicherheitsmodell der Hosting-Plattform; erheblich niedrigere Kosten für die Erstellung und Wartung; und natürlich, den Bedarf an professionellen Softwareentwicklern zu reduzieren und gleichzeitig die Mitarbeiter zu stärken. Professionelle Entwickler mögen diese Tools jedoch auch, um einfachere Probleme zu bewältigen, die kein vollständiges Anwendungsentwicklungsprojekt erfordern.
Während Low-Cost/No-Code-Anwendungen nicht mit der Raffinesse einer Anwendung konkurrieren können, die von Grund auf von Architekten, Designern, Programmierern und Testern entwickelt wurde, können sie Tabellenanpassungen übertreffen und eine anspruchsvolle, benutzerfreundliche Oberfläche bieten, die von Nicht-Programmierern geschätzt wird. Diese Apps können auch verwendet werden, um andere Anwendungen ad-hoc miteinander zu verknüpfen – perfekt, um kurzfristige Probleme zu lösen oder unmittelbare Chancen zu ergreifen.
Die schlanke Natur dieser Werkzeuge ist auch für erfahrene Programmierer praktisch. Sehen Sie sich Oracle APEX an, um mit der Low-Code-Anwendungsentwicklung zu beginnen.
Mobil
Die Entwicklung mobiler Anwendungen umfasst eine breite Palette von Tools, Services und Produkten für die Erstellung und den Vertrieb von Apps. Google Android und Apple iOS sind die beliebtesten Plattformen für mobile Apps und unterstützen eine Reihe von Entwicklungstools und -methoden. Mobile Anwendungen werden häufig mit einer Microservices-Architektur entwickelt, bei der die Anwendung in kleinere Aufgaben aufgeteilt wird, die miteinander kommunizieren.
Aufgrund der Allgegenwart von Android- und iOS-Geräten und der immer verbundenen Natur von Handys und Tablets haben viele Unternehmen mobile Apps als eine großartige Möglichkeit genutzt, sowohl Mitarbeiter als auch Kunden zu bedienen. In der Unternehmenswelt verwenden Mitarbeiter mobile Apps für Vertrieb, Unternehmensressourcenplanung, HR-Selfservice für Mitarbeiter, Sicherheit, Stundennachweise, Messaging und mehr. Während viele mobile Apps von spezialisierten Unternehmen erstellt werden, können Sie sie auch intern für Ihre Mitarbeiter und Kunden entwerfen, entwickeln und bereitstellen.
Datenbank
Unternehmensanwendungen werden auf Daten wie Verkaufstransaktionen, Produktpreislisten, HR-Materialien, E-Mails, Bankdatensätzen, Kundenkontaktinformationen und Unternehmensfinanzen ausgeführt. Der effizienteste Ort zum Speichern von Unternehmensdaten befindet sich in einer Datenbank, sodass sie leicht abgerufen, durchsucht, aktualisiert, geschützt und analysiert werden können.
Sowohl Standard- als auch benutzerdefinierte Anwendungen können über hocheffiziente Abfragesprachen, Standard-Datenaustauschformate und robuste Programmierschnittstellen auf Datenbanken zugreifen. Einige High-End-Datenbanken wie Oracle Database 23ai können jedoch tatsächlich Anwendungen innerhalb der Datenbank-Engine selbst ausführen. Dadurch erhalten Anwendungen oft einen schnellen, sicheren und robusten Zugriff auf diese Daten. Entwicklungstools können auf die Datenbank-Engine selbst für solche Anwendungen ausgerichtet sein. Dieser Ansatz bietet den zusätzlichen Vorteil, dass Datenbankadministratoren diese Anwendungen verwalten und optimieren können, nachdem sie bereitgestellt wurden.
Microservices
Anwendungen, die in einer Cloud-Microservices-Architektur entwickelt wurden, sind in der Regel einfach zu warten und bereitzustellen und sehr robust. Es kann Hunderte oder Tausende von winzigen Microservices geben, von denen jeder einen Baustein enthält, um eine einzelne Aufgabe effizient auszuführen und mit anderen Anwendungen oder Microservices über einfache Kommunikationsprotokolle zu kommunizieren.
Microservices-basierte Anwendungen sind ebenfalls hoch skalierbar. Das cloud-zentrierte Design und die Architektur bedeuten, dass die Cloud, wenn ein bestimmter Service stark genutzt wird, einfach viele Kopien erstellen und ausführen kann – automatisch. Da sich einzelne Microservices auf eine bestimmte Aufgabe konzentrieren, sind sie außerdem einfach zu entwerfen, zu codieren, zu testen und bereitzustellen.
Der Ansatz des Entwicklungsteams beim Erstellen einer Anwendung ist die Methodik. Der Begriff umfasst Designphilosophien, Projektmanagementansätze und Interaktionen zwischen dem Entwicklungsteam, Kunden und anderen wichtigen Stakeholdern. Manchmal diktiert oder informiert die Methodik die Entscheidung über technische Werkzeuge, die vom Entwicklungsteam verwendet werden.
Egal welche Methodik gewählt wird, es gibt zwei Wahrheiten: Das Ziel ist immer ein erfolgreiches Projekt, und jeder Beteiligte wird eine Meinung haben. Im Großen und Ganzen lassen sich moderne Softwareentwicklungsmethoden in zwei grundlegende Kategorien einteilen: Wasserfall und Agilität.
Wasserfall
Die Wasserfallentwicklung, auch als monolithisches oder klassisches Modell bekannt, konzentriert sich auf einen linearen Verlauf der Schritte: Sammeln Sie Anforderungen, Design, Code, testen, genehmigen, bereitstellen, warten. Jeder Schritt wird gründlich ausgeführt, und Sie fahren erst mit dem nächsten Schritt fort, wenn der vorherige Schritt abgeschlossen ist. Sobald ein Schritt abgeschlossen ist, wird er selten, wenn überhaupt, überarbeitet, was bedeutet, dass sich die Wasserfallentwicklung nicht an sich schnell ändernde Situationen oder sich entwickelnde Unternehmensanforderungen anpassen kann. Das macht Wasserfallansätze am besten für Projekte, die das erste Mal richtig sein müssen - wie die Software, die in ein Auto, ein Kernkraftwerk oder ein medizinisches Gerät geht.
Flexibel
Agile Entwicklung geht umgekehrt vor. Agile konzentriert sich auf die schnelle Implementierung und Bereitstellung von Anwendungen, indem ein kleines, minimal tragfähiges Produkt (MVP) erstellt wird. Anschließend werden iterative Verbesserungen vorgenommen, um neue Features und Funktionen hinzuzufügen, Defizite zu beheben, neue Technologien und Ideen zu nutzen und die Leistung zu verbessern.
Es gibt nicht die eine agile Methodik; tatsächlich gibt es Dutzende davon, jede mit ihrer eigenen Geschichte, ihren Anhängern und ihrer Begründung. Im Falle einer testgetriebenen Entwicklung schreiben die Programmierer, bevor sie einen neuen Code erstellen, zunächst die automatisierten Tests, die sicherstellen, dass der neue Code korrekt funktioniert. Dadurch wird sichergestellt, dass der gesamte Code getestet wird, bevor er in die neueste Iteration der Anwendung integriert wird.
Die meisten agilen Methoden erfordern, dass jede Iteration sehr kurz ist, oft nur ein paar Wochen. Bei diesen Iterationen, den sogenannten Sprints, konzentriert sich das Entwicklungsteam darauf, der Anwendung Features oder Funktionen hinzuzufügen.
Schneller
Manchmal ist eine Anwendung konzeptionell einfach zu entwerfen und bereitzustellen, z. B. eine formularbasierte App, ein Report Writer oder ein Abfrage-Tool für eine Datenbank. In diesen Fällen kann ein ausgereifter Anwendungsentwicklungsprozess wie Wasserfall oder agil unnötig sein. Hier kommt eine schnelle Anwendungsentwicklung oder RAD ins Spiel. RAD fällt in den agilen Bucket und zeichnet sich durch benutzerfreundliche Tools aus, mit denen ein sehr kleines Entwicklungsteam – oder sogar eine einzelne Person – eine Benutzeroberfläche erstellen, die interne Logik codieren und mit Unternehmensdatenquellen verknüpfen kann.
Früher wurde die RAD-Entwicklung verwendet, um ein visuelles Modell einer gewünschten Anwendung zu erstellen, so dass Entwickler und Stakeholder sich vor dem "echten" Programmieraufwand auf Aussehen und Funktionalität einigen konnten. Das führte zu einem anderen Begriff für RAD, Rapid Prototyping. Mit dem Aufkommen von Low-Code- und No-Code-Tools hat sich die RAD-Entwicklung jedoch als nützlich für einfache Anwendungen erwiesen, die einfach auf diesem schnellen Prototyp erstellt und bereitgestellt werden können. Darüber hinaus kann die Entwicklungszeit auf Tage verkürzt werden, was Geschäftsanwender begeistert. Wenn eine Anwendung mit einem RAD-Ansatz erstellt werden kann, sollte dies häufig der Fall sein.
Wichtige Unterschiede
| Schnellere Zeit bis zur Bereitstellung. Mit der agilen Entwicklung können die Mitarbeiter oder Kunden des Unternehmens mit der Verwendung der Anwendung beginnen, bevor sie feature-complex ist. Agile ist in mobilen Anwendungen üblich, wo ständig neue Funktionen hinzugefügt werden. | Starre Anforderungen. Ein Wasserfallmodell wird bevorzugt, wenn die Anforderungen sehr spezifisch sind und die Anwendung nicht von ihnen abweichen sollte. Betrachten Sie die Software beispielsweise in einem medizinischen Gerät oder für industrielle Steuerungssysteme. |
| Prototypen können real werden. Ein schneller Prozess zur Anwendungsentwicklung eignet sich am besten für einfache Anwendungen. Mit dem RAD-Ansatz und No-Code/Low-Code-Tools kann ein Entwickler oder sogar ein Poweruser einen Report Writer, eine mobile Schnittstelle in einer Datenbank oder ein Formular für die Datenerfassung in Tagen erstellen und bereitstellen – vielleicht nur Stunden. | Anpassungsfähig an sich verändernde Anforderungen. Mit agiler Entwicklung lassen sich Anforderungsänderungen einfach als neues Feature in zukünftige Zyklen integrieren. Vielleicht muss eine App auf einem brandneuen tragbaren Tablet laufen oder generative KI integrieren können; diese wurden möglicherweise nicht einmal in Betracht gezogen, als die Anwendung zum ersten Mal vorgestellt wurde. |
Im Folgenden finden Sie drei Beispiele für verschiedene Unternehmensanwendungen, die mit spezifischen Methoden erstellt wurden, die am besten zu den Anwendungsfällen passen.
Anwendungen können Kunden und Mitarbeiter unterstützen, das Geschäft erweitern oder einfach Probleme lösen. Allerdings kann die Anwendungsentwicklung auch teuer und ressourcenintensiv sein – und wenn die neue Software Sicherheitslücken aufweist, kann dies ein Risiko für das Unternehmen und seine Kunden darstellen. Im Folgenden finden Sie einige Best Practices, mit denen Sie Risiken minimieren und den Erfolg maximieren können.
Generative KI wird für viele textorientierte Aufgaben verwendet: Zusammenfassen von Berichten, Schreiben von Sonetten, Ausarbeiten von Kundenservice-E-Mails, wodurch Chats kontextbezogener werden. Es stellt sich heraus, dass GenAI auch gut darin ist, Softwarecode zu schreiben: Eine Programmiersprache ist eine Sprache, und aus der Perspektive der Software unterscheidet sie sich nicht sehr von Englisch, Spanisch oder Mandarin.
Wenn es um die Anwendungsentwicklung geht, ist GenAI gut darin, die schriftliche Absicht eines Entwicklers, ausgedrückt in einer menschlichen Konversationssprache, in einen ausgefüllten, einsatzbereiten Code zu übersetzen. Basierend auf frühen Experimenten ist dieser KI-generierte Code funktional, effizient und sicher. Dies ist am offensichtlichsten in Teilen des Codes, die mühsam zu entwickeln sind, wie Datenbankzugriffscode oder der Boilerplate-Text, der zum Einrichten von Microservices verwendet wird.
Ein weiterer Bereich, in dem GenAI Entwicklern helfen kann, ist die Untersuchung von menschlichem Code, um nach Fehlern zu suchen, potenzielle Schwachstellen zu erkennen und darauf hinzuweisen, wo der Programmierer keine Best Practices befolgt hat. Erwarten Sie, dass KI-basierte Unterstützung zu einem Standardfeature von Mainstream-Softwareentwicklungstools und -plattformen wird.
Softwareentwicklung ist eine sich entwickelnde Praxis. Wie bereits erwähnt, wird GenAI eine große Hilfe sein, indem Entwickler von mühsamen Aufgaben befreit werden. Es wird zu einem Grundnahrungsmittel für die Anwendungsentwicklung werden und in Mainstream-Entwicklungswerkzeuge eingebettet werden. Durch neue Architekturen wie Microservices können neue Anwendungen schnell erstellt werden, indem ein modularer Ansatz verwendet wird. Aber es gibt andere Trends, die wir bemerkt haben.
Sicherheit steht im Vordergrund. Böswillige Akteure werden weiterhin eine Bedrohung für Unternehmen darstellen. Daher müssen Anwendungen nicht nur unter Berücksichtigung von Sicherheitsaspekten entwickelt und erstellt werden, sondern auch kontinuierlich aktualisiert werden, sobald neue Angriffstools verfügbar werden.
Mobilität ist gekommen, um zu bleiben. Für viele Menschen ist ein Smartphone ihr primäres Computergerät, was bedeutet, dass Unternehmen es bequem haben müssen, mobile Apps zu erstellen oder für die Verwendung in einem mobilen Browser zu entwerfen.
Demokratisierung. Mitarbeiter werden weiterhin No-Code-/Low-Code-Tools benötigen, mit denen sie ihre eigenen Anwendungen schnell entwickeln können. Wie werden Sie dies fördern, ohne auf Qualität oder Sicherheit zu verzichten?
Oracle bietet eine breite Palette von Entwicklungstools, -services und -plattformen, die für jedes Anwendungsentwicklungsprojekt geeignet sind. Darüber hinaus bietet Oracle die branchenweit umfassendste Sammlung an einsatzbereiten Geschäftsanwendungen, die angepasst und in Ihre eigenen Anwendungen integriert werden können, um Ihre Anforderungen zu erfüllen.
Wo bereitstellen? Oracle bietet die Oracle Cloud Infrastructure (OCI) der zweiten Generation, die über die benötigten Datenbanken, Entwicklerservices, Integrationsservices und Speicher verfügt. Diese werden durch Netzwerke, Analysen und Business Intelligence, Low-Code-/No-Code-Tools und neue KI-Services ergänzt, die von Geschäftsanwendungen genutzt werden können. Ergänzen Sie die Anwendungssicherheits-, Compliance- und Kostenmanagementtools von Oracle, und schon können Sie loslegen.
Im Vergleich zu anderen Clouds bietet Oracle ein besseres Preis-Leistungs-Verhältnis, niedrigere Speicherkosten und 48 kommerzielle und staatliche Regionen auf der ganzen Welt, um Ihre Anforderungen besser zu erfüllen. Sie suchen nicht die Cloud für Ihr nächstes Projekt? Sehen Sie sich die On-Premises-Systeme von Oracle an, einschließlich der Oracle Exadata Enterprise-Datenbankplattform.
Sie können die enorme Palette der Entwicklertechnologien von Oracle untersuchen und dann sehen, wie Sie Anwendungen in Oracle Cloud erstellen, testen und bereitstellen können – kostenlos.
Entwickler und ihre Geschäftskollegen können gleichermaßen von Cloud-nativen Anwendungen profitieren, die speziell darauf ausgelegt sind, Agilität, Skalierbarkeit und Effizienz zu maximieren. Erfahren Sie mehr und sehen Sie sich 10 zusätzliche Möglichkeiten an, wie die Cloud besser wird.
Was macht ein Anwendungsentwickler?
Ein Anwendungsentwickler erstellt Geschäftsanwendungen – oder genauer gesagt, ist Mitglied eines Teams, das diese Anwendungen erstellt. Ein Entwickler muss über technische Fähigkeiten verfügen, wie z. B. Kenntnisse über agile Methoden, eine oder mehrere Programmiersprachen wie Java, SQL, Python und JavaScript und ein solides Verständnis der Softwarearchitekturen. Zu den spezifischen Verantwortlichkeiten gehören Architekturdesign, Codierung, Testen und Debuggen, Design der Benutzeroberfläche, Datenbankintegration, Schreiben von Berichten und Softwarewartung.
Was sind die Schritte in der Anwendungsentwicklung?
Es gibt acht Hauptschritte in der Anwendungsentwicklung; einige davon können parallel durchgeführt werden und können je nach Methodik iterativ durchgeführt werden.