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.
Die Entwicklung von Software umfasst normalerweise die folgenden Schritte:
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.
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.
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:
Der Einsazt von Softwareentwicklung zur Markendifferenzierung im Sinne eines Wettbewerbsvorsprungs erfordert Fachkenntnisse der Techniken und Technologien zur Beschleunigung der Softwarebereitstellung, Qualität und Wirksamkeit.
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.
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.
Bietet Verbindungen zwischen Tools von IBM Lifecycle Management und Drittanbieter-Tools wie Git, GitLib und GitHub.
Code, Inhalte, Gemeinschaft und mehr
Melden Sie sich für die wichtigsten Themen an
Werden Sie komplexen Geschäftsanforderungen gerecht mit Geschwindigkeit und Beweglichkeit, indem Sie Ihre Softwareenwicklungs-Tools miteinander verbinden
1 Software, Techopedia (Link außerhalb von ibm.com)
2 Embedded software, Wikipedia (Link außerhalb von ibm.com)
3 Software Engineer vs. Software Developer – What's the Difference? Fullstack Academy (link außerhalb von ibm.com)
4 The Forrester Wave™: Low-Code development Platforms for AD&D Pros, Q4 201 John R. Rymer, Forrester Research, Inc. 23 October, 2017 (Link außerhalb von ibm.com)