Startseite topics Software development Was ist Softwareentwicklung?  
Erkunden Sie die Lösungen von IBM für Softwareentwicklung Abonnieren Sie Cloud-Updates
Grafik, die die verschiedenen Elemente der Softwareentwicklung von der Erstellung, Analyse und Sicherung bis hin zur Bereitstellung von Lösungen zeigt
Was ist Softwareentwicklung?

Softwareentwicklung bezieht sich auf eine Reihe von Informatikaktivitäten, die sich mit dem Prozess der Erstellung, des Designs, der Bereitstellung und der Unterstützung von Software befassen.

Software selbst beschreibt die Anweisungen oder Programme, die einem Computer sagen, was er tun soll. Sie ist unabhängig von Hardware und macht Computer programmierbar. Es gibt drei grundlegende Arten von Software:

Systemsoftware für Kernfunktionen wie Betriebssysteme, Festplattenverwaltung, Dienstprogramme, Hardwaremanagement und andere, für den Betrieb notwendige Funktionen.

Programmiersoftware gibt Programmierern Tools wie Texteditoren, Compiler, Linker, Debugger und andere Werkzeuge zur Erstellung von Code an die Hand.

Anwendungssoftware (Anwendungen oder Apps), die Benutzern bei der Ausführung bestimmter Aufgaben helfen. Beispiele sind Produktivitätssuites für den Bürobetrieb, Datenverwaltungssoftware, Mediaplayer und Sicherheitsprogramme. Der Begriff „Anwendungen“ bezieht sich auch auf Web- und mobile Anwendungen, wie sie beim Kauf auf Amazon.de, dem Austausch auf Facebook oder dem Veröffentlichen von Bildern auf Instagram verwendet werden.1

Eine mögliche vierte Art ist die eingebettete Software. Software für eingebettete Systeme wird zur Steuerung von Maschinen und Geräten verwendet, die normalerweise nicht als Computer bezeichnet werden – unter anderem Telekommunikationsnetze, Autos und Industrieroboter. Diese Geräte und ihre Software können im Rahmen des Internets der Dinge (IoT) miteinander verbunden sein.2

An der Softwareentwicklung sind in erster Linie Programmierer, Softwaretechniker und Softwareentwickler beteiligt. Die Verantwortlichkeiten überschneiden sich dabei und die Dynamik der Zusammenarbeit kann je nach Entwicklungsabteilung und Community stark variieren.  

Programmierer oder Coder schreiben Quellcode, um Computer für bestimmte Aufgaben zu programmieren, etwa das Zusammenführen von Datenbanken, die Bearbeitung von Online-Bestellungen, das Weiterleiten von Kommunikation, die Durchführung von Suchvorgängen oder die Anzeige von Text und Grafiken. In der Regel interpretieren Programmierer Anweisungen von Softwareentwicklern und -technikern und verwenden für die Umsetzung Programmiersprachen wie C++ oder Java.

Softwaretechniker wenden Grundsätze aus dem Ingenieurwesen an, um Software und Systeme zur Problemlösung zu erstellen. Sie setzten eine Modellierungssprache und andere Tools ein, um Lösungen zu entwickeln, die oft allgemein auf Probleme angewendet werden können, im Gegensatz zu situations- oder kundenspezifischen Lösungen. Lösungen für die Softwaretechnik basieren auf wissenschaftlichen Methoden und müssen in der Praxis funktionieren, wie etwa bei Brücken oder Aufzügen. Sie tragen heute mehr Verantwortung, da Produkte durch die Verwendung von Mikroprozessoren, Sensoren und Software immer intelligenter werden. Produkte sind nicht mehr nur zu Zwecken der Marktdifferenzierung auf Software angewiesen. Vielmehr muss die entsprechende Softwareentwicklung mit der mechanischen und elektrischen Produktentwicklung koordiniert werden.

Softwareentwickler übernehmen im Vergleich zu Technikern eine weniger feste Rolle und können sich im Detail mit bestimmten Projektbereichen befassen, einschließlich der Programmierung von Code. Gleichzeitig steuern sie den gesamten Lebenszyklus der Softwareentwicklung – einschließlich der Zusammenarbeit zwischen funktionalen Teams, um Anforderungen in Funktionen umzuwandeln, Entwicklungsteams und -prozesse zu verwalten und Softwaretests sowie -wartungen durchzuführen.3

Die Arbeit der Softwareentwicklung beschränkt sich jedoch nicht auf Programmierer oder Entwicklungsteams. Auch Fachleute wie Wissenschaftler, Gerätehersteller und Hardwareproduzenten erzeugen Softwarecode, auch wenn sie nicht in erster Linie Softwareentwickler sind. Es beschränkt sich auch nicht auf traditionelle Branchen der Informationstechnologien wie Software- oder Halbleiterunternehmen. Laut dem Brookings Institute (Link befindet sich außerhalb von ibm.com) ist es sogar so, dass diese Unternehmen „weniger als die Hälfte der Unternehmen darstellen, die Software entwickeln“.

Wichtig ist die Unterscheidung zwischen kundenspezifischer Softwareentwicklung und kommerzieller Softwareentwicklung. Kundenspezifische Softwareentwicklung ist der Prozess des Konzipierens, Erstellens, Bereitstellens und Wartens von Software für eine bestimmte Gruppe von Benutzern, Funktionen oder Unternehmen. Im Gegensatz dazu wird Standardsoftware (Commercial Off-the-Shelf Software, COTS) für eine breite Palette an Anforderungen entwickelt und kann daher kommerziell vermarktet und vertrieben werden.

Flexibilität am Arbeitsplatz mit DaaS

Lesen Sie, wie Unternehmen mit Desktop-as-a-Service (DaaS) das gleiche Maß an Leistung und Sicherheit erreichen können wie bei der lokalen Bereitstellung der Anwendungen.

Ähnliche Inhalte

Registrieren und Leitfaden zur Hybrid Cloud lesen

Schritte im Softwareentwicklungsprozess

Die Entwicklung von Software umfasst normalerweise die folgenden Schritte:

  • Auswahl einer Methodik zur Erstellung eines Frameworks, in dem die Schritte der Softwareentwicklung angewendet werden. Darin wird ein allgemeiner Arbeitsablauf oder eine Roadmap für das Projekt beschrieben. Zu den Methoden gehören unter anderem Agile Entwicklung, DevOps, Rapid Application Development (RAD), Scaled Agile Framework (SAFe) und die Wasserfall-Methodik.
  • Einholen von Anforderungen, um die Anforderungen der Benutzer und anderer Stakeholder zu verstehen und zu dokumentieren.
  • Auswahl oder Erstellung einer Architektur als zugrundeliegende Struktur, innerhalb der die Software betrieben wird.
  • Entwicklung eines Designs, um Lösungen für die Probleme zu finden, die sich aus den Anforderungen ergeben, oft unter Einbeziehung von Prozessmodellen und Storyboards.
  • Erstellung eines Modells mithilfe eines Modellierungstools, das eine Modellierungssprache wie SysML oder UML verwendet, um eine frühzeitige Validierung, Prototypisierung und Simulation des Designs durchzuführen.
  • Codeerstellung in der entsprechenden Programmiersprache. Einbeziehung von Peer- und Team-Reviews, um Probleme frühzeitig zu beseitigen und schneller hochwertige Software zu produzieren.
  • Testen mit vorgeplanten Szenarien als Teil von Softwaredesign und -codierung und Durchführung von Leistungstests, um Belastungstests bei der Anwendung zu simulieren.
  • Verwaltung von Konfigurationen und Mängeln, um alle Softwareartefakte (Anforderungen, Design, Code, Test) zu verstehen und unterschiedliche Versionen der Software zu erstellen. Festlegung von Prioritäten für die Qualitätssicherung und Freigabekriterien, um Mängel zu beheben und nachzuverfolgen.
  • Bereitstellung der Software zur Verwendung und Reaktion auf Benutzerprobleme sowie deren Lösung.
  • Migration von Daten auf die neue oder aktualisierte Software von vorhanden Anwendungen oder Datenquellen (bei Bedarf).
  • Verwaltung und Messung des Projekts, um die Qualität und Bereitstellung über den gesamten Lebenszyklus der Anwendung zu gewährleisten und den Entwicklungsprozess mit Modellen wie dem Capability Maturity Model (CMM) zu bewerten.

Die Schritte des Softwareentwicklungsprozesses passen in das Application Lifecycle Management (ALM). IBM® Engineering Management ist eine übergeordnete ALM-Lösung, welche die Verwaltung der parallelen Entwicklung von Mechanik, Elektrik und Software ermöglicht.

  • Anforderungsanalyse und Spezifikation
  • Design und Entwicklung
  • Testen
  • Bereitstellung
  • Wartung und Support

Die Schritte des Softwareentwicklungsprozesses können in die Phasen des Lebenszyklus eingeteilt werden, aber das Wichtige am Lebenszyklus ist, dass er sich wiederholt, um eine kontinuierliche Verbesserung zu ermöglichen. So können beispielsweise Benutzerprobleme, die in der Wartungs- und Supportphase auftreten, die Anforderungen für den Beginn des nächsten Zyklus sein.

Warum ist Softwareentwicklung wichtig?

Softwareentwicklung ist auch deshalb wichtig, weil sie allgegenwärtig ist. IBM Vice President und Blogger Dibbe Edwards erklärt dazu: „Software hat sich bei vielen Produkten – von Autos über Waschmaschinen bis hin zu Thermostaten – als wichtiges Unterscheidungsmerkmal erwiesen, wobei sie durch ein wachsendes Internet der Dinge miteinander verbunden sind.“

Nachfolgend einige Beispiele:

  • Soul Machines (Link befindet sich außerhalb von ibm.com) verwendet Software, um virtuelle Online-Berater zu entwickeln, die den Kundenservice und die Effizienz verbessern. Die Berater haben menschliche Gesichter, Mimik und Stimmen und reagieren intelligent, empathisch und effizient auf die Fragen und Bedürfnisse von Kunden. Sie können über 40 Prozent der Kundenanfragen ohne menschliches Eingreifen beantworten lernen aus ihren Interaktionen, um sich mit der Zeit zu verbessern. Mithilfe von IBM Watson Assistant, der die Fähigkeiten der künstlichen Intelligenz (KI) in den Entwicklungsprozess integriert, kann Soul Machines innerhalb von 8 bis 12 Wochen einen virtuellen Berater entwickeln und auf den Markt bringen.
  • „Es ist ein Wettlauf“, so Erik Bak-Mikkelsen. „Wir müssen mit den Entwicklungen auf dem Markt Schritt halten.“ Bak-Mikkelsen ist Leiter des Bereichs Cloud Operations bei car2go (Link befindet sich außerhalb von ibm.com). Er weiß, dass die Bereitstellung neuer Fähigkeiten und Funktionen für die Ride-Sharing-Apps und Fahrzeuge von car2go der Schlüssel ist, um jetzt und in Zukunft erfolgreich zu sein. Um dies zu erreichen, hat car2go seinen Entwicklungsbetrieb in eine Managed-Services-Cloud verlagert und ein DevOps-Entwicklungsmodell eingeführt. Das Resultat sind beschleunigte Entwicklungszyklen, kürzere Markteinführungszeiten und die Fähigkeit, für künftiges Wachstum zu skalieren.
  • Die Arbeit an Stromleitungen kann tödlich sein. Um auf Nummer sicher zu gehen, verwenden Techniker sogenannte „Lockout-Tagout-Vorrichtungen“ mit physischen Sicherheitsschildern und Vorhängeschlössern, um den Strom während der Arbeit am Einsatzort abzuschalten. Das französische Energieunternehmen Enedis (Link befindet sich außerhalb von ibm.com) hat in Zusammenarbeit mit IBM Garage for Cloud eine Software entwickelt, die diese Schlösser und Sicherheitsschilder überwacht und sie in ein gemeinsames Netzwerk integriert. Die Sicherheitsschilder und Schlösser registrieren es, wenn sie aus dem Wagen eines Technikers entfernt werden, und teilen die Zeit und den Standort mit. Wenn der Techniker die Schlösser anbringt, wird ihr Standort auf einer digitalen Karte verzeichnet. Alle Stakeholder können die Karte einsehen, um die Sicherheit zu gewährleisten, Ausfallzeiten zu reduzieren und Reparaturen zu erleichtern. Dank des Ansatzes der gemeinsamen Entwicklung von IBM Cloud Garage konnte Enedis innerhalb von drei Monaten einsatzbereite Prototypen entwickeln.
Hauptmerkmale einer effektiven Softwareentwicklung

Der Einsatz von Softwareentwicklung zur Differenzierung von Marken und zur Erzielung von Wettbewerbsvorteilen setzt voraus, dass man die Techniken und Technologien beherrscht, die die Bereitstellung, die Qualität und die Effizienz von Software beschleunigen können.

  • Künstliche Intelligenz (KI): KI ermöglicht es Software, menschliche Entscheidungen und Lernprozesse nachzuahmen. Neuronale Netze, maschinelles Lernen, Verarbeitung natürlicher Sprache und kognitive Fähigkeiten bieten Entwicklern und Unternehmen die Möglichkeit, Produkte und Dienstleistungen anzubieten, die den Markt verändern, und so der Konkurrenz immer einen Schritt voraus zu sein. Mit IBM Watson können Entwickler Programmierschnittstellen bzw. APIs für die Verbindung mit Services der künstlichen Intelligenz nutzen und diese als Teil ihrer Anwendungen einsetzen. Sie können IBM Watson auch für die Verbbesserung Ihrer Produktanforderungen nutzen, indem Sie prüfen, ob es Mehrdeutigkeiten, unklare Akteure, zusammengesetzte oder negative Anforderungen, fehlende Einheiten oder Toleranzen, unvollständige Anforderungen und unspezifische Mengen gibt.
  • Cloudnative Entwicklung: Bei der cloudnativen Entwicklung handelt es sich um eine Methode zur Erstellung von Anwendungen für die Nutzung von Cloud-Umgebungen. Eine cloudnative Anwendung besteht aus diskreten, wiederverwendbaren Komponenten, den sogenannten Microservices, die für die Integration in jede Cloud-Umgebung konzipiert sind. Diese Microservices dienen als Bausteine und sind oft in Containern untergebracht. Aufgrund dieser Architektur können cloudnative Anwendungen Cloud-Umgebungen nutzen, um die Anwendungsleistung, Flexibilität und Erweiterbarkeit zu verbessern.
  • Cloudbasierte Entwicklung: Genauso wie IT-Unternehmen zur Verbesserung des Ressourcenmanagements und zur Kostensenkung auf die Cloud setzen, tun dies auch Unternehmen im Bereich der Softwareentwicklung. Auf diese Weise kann die Cloud als schnelle, flexible und kosteneffiziente integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) oder Platform-as-a-Service (PaaS) für die Entwicklung genutzt werden. Cloudbasierte Entwicklungsumgebungen können Codierung, Design, Integration, Tests und andere Entwicklungsaufgaben unterstützen. Sie können auch Zugang zu APIs, Microservices, DevOps und anderen Entwicklungstools, Services und Know-how bieten. 
  • Blockchain: Die Blockchain ist ein sicherer, digital verknüpfter Ledger, der Kosten und Schwachstellen beseitigt, die durch Parteien wie Banken, Aufsichtsbehörden und andere zwischengeschaltete Stellen verursacht werden. Die Blockchain transformiert Unternehmen, indem sie Kapital freisetzt, Prozesse beschleunigt, Transaktionskosten senkt und vieles mehr.  Und somit stellt die Blockchain für die Softwareentwicklung eine enorme Chance dar. Entwickler arbeiten mit verteilten Ledgern und der Open-Source-Technologie Hyperledger (Link befindet sich außerhalb von ibm.com), um die Art und Weise des Geschäftsbetriebs zu transformieren.
  • Low-Code: Forrester definiert Low-Code als: „Produkte und/oder Cloud-Services für die Anwendungsentwicklung, bei denen visuelle, deklarative Techniken anstelle von Programmierung zum Einsatz kommen und die den Kunden zu einem geringen oder gar keinen finanziellen und schulungstechnischen Aufwand zur Verfügung stehen ...“4 Kurz gesagt: Es handelt sich um eine Entwicklungsmethode, die den Bedarf an Codierung reduziert und es Nicht-Programmierern oder „Citizen Developern“ ermöglicht, Anwendungen schnell und kostengünstig zu entwickeln oder bei der Entwicklung zu helfen.
  • Analyse: Der Bedarf an Data Scientists, Datenentwicklern und Datentechnikern wird bis 2020 jährlich fast 700.000 Stellen erreichen. Die Nachfrage zeigt, wie wichtig es für Unternehmen ist, Einblicke und einen Nutzen aus der explodierenden Datenmenge zu gewinnen. Dementsprechend integrieren Softwareentwickler fortschrittliche Analysefunktionen in ihre Anwendungen. Cloudbasierte Services und APIs erleichtern die Datenexploration, die Automatisierung von prädiktiven Analysen und die Erstellung von Dashboards, die neue Erkenntnisse bereitstellen und die Entscheidungsfindung verbessern.
  • Model Based Systems Engineering (MBSE): Beim MBSE werden Softwaremodellierungssprachen verwendet, um ein frühes Prototyping, eine Simulation und eine Analyse von Softwaredesigns zur frühen Validierung durchzuführen. Die Erstellung von Designs in MBSE hilft Ihnen, Projektanforderungen zu analysieren und auszuarbeiten und schnell vom Design zur Implementierung überzugehen.  
  • Mobil: Ein zentraler Aspekt für Softwareentwickler ist die Entwicklung mobiler Apps mit umfassenden Verbindungen zu Daten, die das Benutzererlebnis bereichern und verbessern. Forrester hat herausgefunden, dass „die umfassende Integration von digitalen/mobilen Kundendaten einen starken Einfluss darauf hat, wie Kunden mit Marken interagieren.“

 

Ein kurzes Glossar
  • Agile Entwicklung zerlegt Anforderungen in konsumierbare Funktionen und stellt diese Funktionen durch schrittweise Entwicklung schnell bereit. Eine Feedback-Schleife hilft dabei, Mängel zu finden und zu beheben, während die Funktionalität weiterentwickelt wird.
  • Capability Maturity Model (CMM) bewertet die Leistungsfähigkeit von Softwareentwicklungsprozessen. Es verfolgt den Fortschritt von Ad-hoc-Aktionen über definierte Schritte bis hin zu gemessenen Ergebnissen und optimierten Prozessen.
  • DevOps, eine Kombination aus Entwicklung (Development) und Betrieb (Operations), ist ein agiler Ansatz, der Softwareentwicklung und IT-Betrieb bei Design, Entwicklung, Bereitstellung und Support von Software zusammenbringt.

  • Rapid Application Development (RAD) ist ein nichtlinearer Ansatz, der Design und Codeerstellung zu einem einzigen, miteinander verbundenen Schritt zusammenfasst.

  • Scaled Agile Framework (SAFe) bietet eine Möglichkeit, die agile Methodik auf ein größeres Softwareentwicklungsteam oder ein größeres Unternehmen zu skalieren.

  • Die Wasserfall-Methodik wird oft als die traditionelle Methode der Softwareentwicklung angesehen. Sie besteht aus einer Reihe von aufeinander aufbauenden linearen Schritten von der Planung und Anforderungserfassung bis hin zur Bereitstellung und Wartung.
Tools und Lösungen für die Softwareentwicklung
IBM® Engineering Systems Design Rhapsody

Eine bewährte Lösung für Aktivitäten im Bereich Modellierung und Design, die Ihnen hilft, qualitativ hochwertige Software und Systeme schneller zu entwickeln.

IBM Engineering Systems Design Rhapsody erkunden
IBM Engineering Workflow Management

Erweiterte Softwareversionskontrolle, Arbeitsbereichsverwaltung, verteilte Quellenkontrolle und Unterstützung der parallelen Entwicklung für Einzelpersonen und Teams zur Steigerung der Produktivität durch automatische Verfolgung von Änderungen an Artefakten. Die Software ermöglicht eine praktisch unbegrenzte Suspend-Resume-Funktion, um Arbeitsunterbrechungen zu bewältigen.

Erfahren Sie mehr über IBM Engineering Workflow Management
IBM Engineering Lifecycle Optimization – Integrierte Adapter

Ermöglicht Verbindungen zwischen IBM Engineering Lifecycle Management-Tools und Tools von Drittanbietern wie Git, GitLib und GitHub zur Verwaltung der Versionskontrolle von Software.

Mehr Informationen über IBM Engineering Lifecycle Optimization
Ressourcen zur Softwareentwicklung Softwareentwicklung auf IBM Developer

Code, Inhalte, Community und mehr.

IBM Newsletter für Entwickler

Melden Sie sich für Ihre bevorzugten Themen an.

Fünf wichtige Schritte für eine erfolgreiche Softwarebereitstellung

Erfüllen Sie komplexe Geschäftsanforderungen schnell und flexibel, indem Sie Ihre Softwareentwicklungstools miteinander verbinden.

IBM Research Publikationen lesen

Unsere Informatikforschung konzentriert sich derzeit darauf, bahnbrechende Entwicklungen in den Bereichen Automatisierung, Informationsverarbeitung und Berechnungen zu finden.

Machen Sie den nächsten Schritt

IBM Engineering Lifecycle Management (ELM) kann Ihnen helfen, einen durchgängigen Managementansatz für Ihre Systeme und Softwareentwicklung zu verfolgen. Beherrschen Sie die Komplexität vom Entwurf bis zur Ausführung, vereinen Sie Teams durch den digitalen Thread, nutzen Sie Modellierung und Wiederverwendung, nutzen Sie Erkenntnisse aus automatisierten Berichten und arbeiten Sie sicher im großen Maßstab.

ELM erkunden Buchen Sie eine Live-Demo
Quellen

Software, Techopedia (Link befindet sich außerhalb von ibm.com)

Embedded Software, Wikipedia (Link befindet sich außerhalb von ibm.com)

Software Engineer vs. Software Developer – What’s the Difference? Fullstack Academy (Link befindet sich außerhalb von ibm.com)

The Forrester Wave™: Low-Code development Platforms for AD&D Pros, Q4 201 John R. Rymer, Forrester Research, Inc. 23. Oktober 2017 (Link befindet sich außerhalb von ibm.com)