Was ist Softwareentwicklung?
Lernen Sie die Grundlagen der Softwareentwicklung und wie sie Unternehmen dabei hilft, innovativ zu sein und zu konkurrieren
Entdecken Sie Softwareentwicklungslösungen
Side view portrait of contemporary African-American man looking at computer screen while working late at night writing code, copy space
Was ist Softwareentwicklung?

Softwareentwicklung bezieht sich auf einen Reihe von Aktivitäten im Bereich Informatik, die der Erstellung, Gestaltung, Bereitstellung und Unterstützung von Software dienen."

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

Systemsoftware für Kernfunktionen wie Betriebssysteme, Plattenverwaltung, Dienstprogramme, Hardware-Management – und andere, für den Betrieb notwendige.

Programmierungssoftware gibt Programmierern Tools wie Texteditoren, Compiler, Linker, Debugger und andere Tools, die Code erzeugen.

Anwendungssoftware (Anwendungen oder Apps), die Benutzern dabei helfen, Aufgaben auszuführen. Beispiele sind Produktivitäts-Suites für den Bürobetrieb, Datenverwaltungssoftware und Sicherheitsprogramme. Anwendungen bezieht sich auch auf Web- und mobile Anwendungen, wie sie beim Einkauf auf Amazon.de, dem Teilen von Inhalten auf Facebook oder dem Veröffentlichen von Bildern auf Instagram verwendet werden.1

Ein möglicher vierter Typ 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 miteinander verbunden sein im Rahmen des Internet der Dinge (IoD).2

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

Programmierer oder Codierer 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, Durchführen von Suchvorgängen oder die Anzeige von Text oder Grafiken. Normalerweise interpretieren Programmierer Anweisungen von Softwareentwicklern und -technikern und verwenden Sprachen wie C++ oder Java, um sie umzusetzen.

Softwaretechniker wenden Grundsätze aus dem Ingenieurwesen an, um Software und Systeme zur Problemlösung zu gestalten. Sie setzten eine Modellierungssprache und andere Tools ein, um Lösungen zu entwickeln, die oft auf Probleme im Allgemeinen angewandt werden können, im Gegensatz zu situations- oder kundenspezifischen Lösungen. Software-Engineering-Lösungen basieren auf wissenschaftlichen Methoden und müssen in der Praxis funktionieren, wie etwa bei Brücken oder Aufzügen. Ihre Verantwortung ist gewachsen, 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 muss mit der mechanischen und elektrischen Produktentwicklung koordiniert werden.

Softwareentwickler haben eine weniger festgelegte Rolle als die Techniker und können sich im Detail mit bestimmten Projektbereichen befassen – einschließlich dem Schreiben von Code. Gleichzeitig bestimmen Sie den Softwareentwicklungslebenszyklus – einschließlich der Umwandlung von Anforderungen in Features im Rahmen funktionsübergreifender Teamarbeit, dem Management von Entwicklungsteams und -prozessen sowie Softwaretests und -wartung.3

Die Arbeit der Softwareentwicklung beschränkt sich nicht auf Programmierer oder Entwicklungsteams. Auch Fachleute wie Wissenschaftler, Geräte- und Hardwarehersteller erzeugen Software-Code, obwohl sie nicht in erster Linie als Softwareentwickler fungieren. Es beschränkt sich auch nicht auf traditionelle Branchen der Informationstechnologien wie Software- oder Halbleiterunternehmen. Laut Brookings Institute (Link außerhalb ibm.com) stellen diese Unternehmen „weniger als die Hälfte der Unternehmen, die Software entwickeln dar."

Ein wichtiger Unterschied ist der zwischen kundenspezifischer Softwareentwicklung und kommerzieller Softwareentwicklung. Kundenspezifische Softwareentwicklung ist der Prozess des Entwerfens, Erstellens, Bereitstellens und Wartens von Software für eine bestimmte Gruppe von Benutzern, Funktionen oder Organisationen. Dagegen wird Standardsoftware (commercial off-the-shelf ,COTS, software) für eine breite Palette an Anforderungen entwickelt und kann daher kommerziell vermarktet und vertrieben werden.

Schritte im Softwareentwicklungsprozess

Die Entwicklung von Software umfasst normalerweise die folgenden Schritte:

  • Einholen von Anforderungen zum Verständnis der Anforderungen der Benutzer und Stakeholder und deren Protokollierung.
  • Auswahl oder Erstellung einer Architektur als zugrundeliegende Struktur innerhalb derer die Software betrieben wird.
  • Designentwicklung anhand von Lösungen für die sich aus den Anforderungen ergebenden Probleme wobei oft Prozessmodelle und Storyboards verwendet werden.
  • Modellerstellung mithilfe eines Modellierungstools, das eine Modellierungssprache wie SysML oder UML verwendet, zur frühzeitigen Prüfung und Bewertung des Designs sowie zur Prototyperstellung und Simulation.
  • Codeerstellung in der entsprechenden Programmiersprache. Beteiligt sich gleichgeordnet und Team Überprüfung , um Probleme in einem frühen Stadium zu beseitigen und Qualität Software schneller zu produzieren.
  • Testen mit vorgeplanten Szenarien als Teil von Softwaredesign und Codierung — und Durchführung von Leistungstests , simulieren Belastungstests auf die Anwendung zu simulieren.
  • Konfiguration und Mängel Sie alle verstehen Software - Artefakte ( Anforderungen , Gestaltung , - Code , Test - ) und Aufbau verschiedene Versionen der Software . Stellen Sie Qualitätssicherung Prioritäten und Release Bedingungen zu Adresse und Spur Mängel .
  • Bereitstellung der Software zur Verwendung und Beantwortung sowie Lösung von Benutzerproblemen.
  • Datenmigration auf die neue oder aktualisierte Software aus vorhanden Anwendungen oder Datenquellen, ggf.
  • Verwaltung und Messung des Projektst zu verwalten Qualität und Bereitstellung über den Anwendungslebenszyklus und zu bewerten , den Entwicklungsprozess mit Modellen wie die Capability Maturity Model (KMG).

Die Schritte des Softwareentwicklungsprozess entsprechen dem  Application-Lifecycle-Management (ALM). Die Lösung IBM Engineering Management stellt ein Superset des ALM dar, welches die parallele Verwaltung von mechanischen, elektrischen und Softwareentwicklungen ermöglicht.

  • Anforderungsanalyse und -bestimmung
  • Design und Entwicklung
  • Testen
  • Bereitstellung
  • Service und Unterstützung

Die Schritte des Softwareentwicklungsprozesses lassen sich den Phasen des Lebenszyklus zuordnen, aber das Besondere am Lebenszyklus ist, dass er sich wiederholt und so kontinuierliche Verbesserungen ermöglicht. Zum Beispiel können Probleme, die in der Phase Service und Unterstützung am Anfang des nächsten Zyklus als Anforderungen berücksichtigt.

Warum ist Softwareentwicklung wichtig?

Software Entwicklung ist auch darum wichtig, weil man ihr jederzeit und überall begegnet. IBM Vice President und Blogger Dibbe Edwards dazu: „Software hat sich als Alleinstellungsmerkmal bei vielen Produkten etabliert – von Autos über Waschmaschinen bis hin zu Thermostaten – mit einem wachsenden Internet der Dinge, das sie verbindet."

Ein paar Beispiele:

  • Soul Machines (Link außerhalb von ibm.com) nutzt Software, um künstliche Online-Berater zu erstellen, die den Kundenservice und die Effizienz verbessern. Die Berater haben menschliche Gesichter, Gesichtsausdrücke und Stimmen, die intelligent, empathisch und effizient auf Kunden und deren Bedürfnisse reagieren. Sie können Antwort von mehr als 40 Prozent der Kunde Rückfragen ohne Bedienereingriff - und sie lernen von ihren Interaktionen zu verbessern über Uhrzeit . Mit IBM Watson Assistant zur Einbindung des Leistungsspektrums künstlicher Intelligenz (KI) in den Entwicklungsprozess können Soul Machines einen künstlichen Berater innerhalb von etwa 8 bis 12 Wochen erstellen und implementieren.
  • „Es ist ein Wettrennen," sagt Erik Bak-Mikkelsen. „Wir müssen mit dem Marktgeschehen schritthalten." Bak-Mikkelsen ist Regelheader der Punktewolke Unternehmensaktivitäten bei car2go (Link befindet sich extern von ibm.com) . Er versteht, dass die Bereitstellung neuer Features und Funktionen für die Mitfahr-Apps und Fahrzeuge von car2go wichtig , um die Nase vorn zu haben und zu bleiben. Dazu car2go seine Entwicklung Unternehmensaktivitäten in eine Managed-Services- Punktewolke und verabschiedete ein DevOps Entwicklungsmodell . Das Ergebnis ist beschleunigte Entwicklung , kürzere Entwicklungszeit und die Funktionalität zum Maßstab für Future Wachstum.
  • Das Arbeiten mit Stromversorgung kann tödlich sein. Um zu bleiben, "sperren" Tresor Ingenieure Satz elektrisch physisch Tags und Vorhängeschlössern, Potenz von Arbeit Standorten umlenken Französisch Energieversorger Enedis (Link befindet sich extern von ibm.com) arbeitete mit IBM Garage für Cloud Software entwickeln , die instrumentiert diese Schlösser und Tags und bindet sie in ein gemeinsam Netz. Die Markierungsschilder und Schlösser erfassen jedes Mal die Uhrzeit, wenn sie aus dem Technikerwagen entnommen werden und geben die Zeit und Geolocation weiter. Während Techniker die Schlösser anbringen, wird deren Standort auf einer digitalen Karte vermerkt. Alle Beteiligten haben eine Ansicht der Karte, um die Sicherheit zu Gewährleisten, Ausfallzeiten zu reduzieren und Reparaturen zu ermöglichen. Der Ansatz von IBM Cloud Garage zur gemeinsamen Entwicklung ermöglichte es Enedis, in nur drei Monaten einsatzbereite Prototypen zu entwickeln.
Hauptmerkmale der effektiven Softwareentwicklung

Der Einsazt von Softwareentwicklung zur Markendifferenzierung im Sinne eines Wettbewerbsvorsprungs erfordert Fachkenntnisse der Techniken und Technologien zur Beschleunigung der Softwarebereitstellung, Qualität und Wirksamkeit.

  • Künstliche Intelligenz (KI): KI ermöglicht es Software, menschliche Entscheidungsfindung und menschliches Lernen nachzuahmen. Neuronale Netze, maschinelles Lernen, die Verarbeitung natürlicher Sprache und kognitive Fähigkeiten bieten Entwicklern und Unternehmen die Möglichkeit, Produkte und Services anzubieten, die Marktplätze aufmischen und die Konkurrenz hinter sich lassen. IBM Watson bietet Entwicklern eine Möglichkeit, auf Services auf Grundlage künstlicher Intelligenz zuzugreifen und diese über Anwendungsprogrammierungsschnittstellen (application programming interfaces) bzw. APIs zu nutzen. Sie können IBM Watson auch nutzen, um Ihre Produktanforderungen zu verbessern, indem Sie diese auf Mehrdeutigkeiten, undefinierte Akteure, zusammengesetzte oder negative Anforderungen, fehlende Werte oder Toleranzen, unvollständige Anforderungen und ungenaue Anforderungen überprüfen.
  • Cloudnative Entwicklung: die Cloudnative Entwicklung ist eine Möglichkeit, Anwendungen zu erstellen, die Cloudumgebungen ausnutzen können. Eine cloudnative Anwendung besteht aus diskreten, wiederverwendbaren Komponenten, die als Mikroservices bezeichnet werden und für die Integration in eine beliebige Cloudumgebung konzipiert sind. Diese Microservices fungieren als Bausteine und werden häufig in Container gebündelt. Aufgrund dieser Architektur können cloudnative Anwendungen Cloudumgebungen nutzen, um die Anwendungsleistung, -flexibilität und -ausbaufähigkeit zu verbessern.
  • Cloudbasierte Entwicklung: Genau wie IT-Organisationen, sehen auch Softwareentwicklungsorganisationen die Cloud als Mittel für besseres Ressourcenmanagement und Kosteneinsparungen. Auf diese Weise kann die Cloud als flexible und kosteneffiziente integrierte Entwicklungsumgebung (integrated development environment, IDE) fungieren bzw. als Platform as a Service (PaaS) für Entwicklung. Cloudbasierte Entwicklungsumgebungen unterstützen Codierung,Gestaltung, Integration, Tests und andere Entwicklungsfunktionen. Sie können auch Zugriff auf APIs, Mikroservices, DevOps und andere Tools, Services und Fachwissen für die Entwicklungsarbeit dienen. 
  • Blockchain: Blockchain ist ein sicheres, digital verbundenes Hauptbuch, das durch Dritte – etwa Banken, Behörden oder sonstige Vermittler – bedingte Kosten und Schwachpunkte verhindert. So können Unternehmen sich neu erfinden, indem unter anderem Kapital freigesetzt, Abläufe beschleunigt und Transaktionskosten reduziert werden.  Blockchain bietet eine enorme Gelegenheit für die Softwareentwicklung. Entwickler arbeiten mit verteilten Ledgern und Open-Source-Hyperledger (Link außerhalb von ibm.com) -Technologie, um den Unternehmensbetrieb zu verändern.
  • Low Code: Forrester definieren Low Code als: „Produkte und/oder Cloud-Services für die Anwendungsentwicklung, die visuelle, deklarative Techniken anstelle von Programmierung einsetzen und mit niedrigem bzw. gar keinem Kosten- und Trainingsaufwand verbunden sind ..." 4 Kurz gesagt handelt es sich um eine Vorgehensweise, die weniger Codieren erfordert und so Fachfremden oder Entwicklern aus der Allgemeinheit dabei hilft, Anwendungen schnell und zu geringeren Kosten zu erstellen bzw. dabei zu unterstützen.
  • Analyse: Die jährliche Nachfrage nach Datenwissenschaftlern, Datenentwicklern und Datentechnikern wird bis 2020 fast 700.000 offene Stellen betragen. Die Nachfrage verdeutlicht, wie enorm wichtig es für Unternehmen ist, Erkenntnisse und Wert aus der Datenexplosion zu schöpfen. Dementsprechend integrieren Softwareentwickler ein Leistungsspektrum intelligenter Analysen in ihre Anwendungen. Cloudbasierte Services und APIs vereinfachen die gezielte Datenexploration, automatisieren Vorhersageanalysen und erstellen Dashboards, die Erkenntnisse zur besseren Entscheidungsfindung bereitstellen.
  • Modellbasiertes System Engineering (MBSE): In MBSE werde Softwaremodellierungssprachen verwendet, um die Prototyperstellung in einem frühen Stadium sowie Simulationen und Analysen von Softwaredesigns für die frühe Prüfung und Bewertung durchzuführen. Baukonstruktionen in MBSE hilft Ihnen , zu analysieren und ausführlich darstellen Projekt Anforderungen und Verschieben schnell von Gestaltung zu Implementierung .  
  • Mobil: Viele dieser Erlebnisse finden in mobilen Umgebungen statt. Eine wichtig Funktionalität für Software ist die Erstellung von mobilen Apps mit tiefen Verbindungen zu Daten, die die Benutzer bereichern und verbessern. Forrester haben herausgefunden, dass „die tiefe Integration digitaler/mobiler Kundendaten einen starken Einfluss darauf hat, wie Kunden mit Marken interagieren."

 

Ein kurzes Glossar
  • Agile Entwicklung zerlegt Anforderungen in verwendbare Funktionen und stellt diese mithilfe inkrementeller Entwicklung schnellstmöglich bereit. Eine Rückkopplungsschleife hilft, Mängel zu entdecken, während die Funktion weiter bereitgestellt wird.
  • Capability Maturity Model (CMM)bewertet, wie fachkundig die Softwareentwicklung stattfindet. Es verfolgt den Verarbeitungsfortschritt von Ad\-hoc\- Aktionen über definiert Schritte bis hin zu gemessenen Ergebnissen und optimierten Prozessen.
  • DevOps , eine Kombination aus Entwicklungs- und Unternehmensaktivitäten, ist ein auf Agilität fußendes Konzept, das Softwareentwicklung und IT-Betrieb in der Gestaltung, Entwicklung, Bereitstellung und bei Service und Unterstützung zusammenführt.

  • Zeiteffiziente Anwendungsentwicklung (RAD) ist ein non-lineares Konzept, das Design und Codeerstellung in einem zusammenhängenden Schritt vereint.

  • Skaliertes agiles Framework (SAFe) bietet eine Möglichkeit, agile Methoden in einem größeren Softwareentwicklungsteam oder einer größeren Organisation zu skalieren.

  • Wasserfall, oft als die traditionelle Software Entwicklungsmethodik betrachtet, ist ein Satz von kaskadierend linearen Schritten von der Planung und Anforderungssammlung über Bereitstellung und Wartung.
Tools und Lösungen für die Softwareentwicklung
IBM Engineering Systems Design Rhapsody

Eine bewährte Lösung für Modellierung und Design, mit der Sie Systeme und Software in höherer Qualität schneller bereitstellen können.

Explore IBM Engineering Systems Design Rhapsody
IBM Engineering Workflow Management

Erweiterte Software-Versionskontrolle, Workspace-Management, Kontrolle verteilter Quellen und Unterstützung für die parallele Entwicklung für Einzelpersonen und Teams verbessert die Produktivität durch automatische Nachverfolgung von Änderungen an Artefakten. Die Software ermöglicht eine praktisch unbegrenzte Funktion zum Anhalten und zur Wiederaufnahme der Arbeit, um mit Arbeitsunterbrechungen zurecht zu kommen.

Einführung in IBM Engineering Workflow Management
IBM Engineering Lifecycle Optimization – Integrierte Adapter

Bietet Verbindungen zwischen Tools von IBM Lifecycle Management und Drittanbieter-Tools wie Git, GitLib und GitHub.

Mehr zu IBM Engineering Lifecycle Optimization
Softwareentwicklungsressourcen Softwareentwicklung auf IBM Developer

Code, Inhalte, Gemeinschaft und mehr

Newsletter für IBM Developer

Melden Sie sich für die wichtigsten Themen an

Fünf notwendige Schritte für die erfolgreiche Softwarebereitstellung

Werden Sie komplexen Geschäftsanforderungen gerecht mit Geschwindigkeit und Beweglichkeit, indem Sie Ihre Softwareenwicklungs-Tools miteinander verbinden