Was ist Softwareentwicklung?

  • Aktualisiert vor2 Monaten 
  • 5Minuten Lesezeit
  • 948Wörter
  • 34Leser

Sowohl innerhalb als auch außerhalb der IT-Branche wird oft gefragt, was Softwareentwicklung ist. Es handelt sich dabei um einen Prozess zur Erstellung von Computersoftware unter Verwendung einer oder mehrerer spezifischer Programmiersprachen, die Funktionen zur Erreichung bestimmter geschäftlicher oder persönlicher Ziele bietet. Die Entwicklung von Software ist in der Regel eine geplante Initiative mit einer Reihe von Schritten und Phasen, die zur Erstellung von einsatzfähiger Software führen und von Unternehmen für maßgeschneiderte Softwareentwicklung ausgeführt werden. Eine gute Definition lautet daher: "ein Prozess mit einer Reihe von Aktivitäten zur Erstellung von Computersoftwareprodukten, einschließlich ihres Entwurfs, ihrer Entwicklung, ihrer Prüfung und ihres Einsatzes". Software selbst ist ein Satz von Anweisungen oder Programmen, die einem Computer sagen, was er tun soll. Sie ist unabhängig von der Hardware und macht Computer programmierbar.

 

Entwicklung

Seit dem Aufkommen der Software-Produktentwicklung in den 1960er Jahren wurden viele verschiedene Ansätze für die Entwicklung der Software verwendet; der heute am häufigsten verwendete Ansatz ist die agile Entwicklung. Unter agiler Softwareentwicklung versteht man einen Ansatz, bei dem die Entwicklungsanforderungen und -lösungen durch die Zusammenarbeit von selbstorganisierenden und funktionsübergreifenden Teams und ihren Kunden erarbeitet werden.  Im Gegensatz zu den eher traditionellen und oft unflexiblen Softwareentwicklungsbeispielen ermutigt und fördert agile Software flexible Reaktionen auf Veränderungen, indem sie adaptive Planung, evolutionäre Entwicklung, frühzeitige Lieferung und kontinuierliche Verbesserung befürwortet.

 

Software wird mithilfe von Computerprogrammierung entwickelt, die von einem Softwareentwickler durchgeführt wird. Ein Softwareentwickler ist laut Definition "eine Person, die Software entweder selbst oder in Zusammenarbeit mit anderen erstellt". Was tun Softwareentwickler tagtäglich? Sie setzen Prozesse und Techniken ein, um funktionierende Software zu erstellen, darunter Anforderungsdefinition, Datenflussdesign, Code-Design, Prozessflussdesign, Flussdiagramme, Code-Erstellung, Softwareentwicklungstests und Fehlerbehebung. Dieser durchgängige Prozess wird manchmal auch als Softwareentwicklungs-Lebenszyklus (SDLC) bezeichnet. Der Begriff "Full-Stack-Softwareentwickler" bezeichnet jemanden, der sowohl anwenderorientierte Software als auch Serversoftware entwickelt, einschließlich Datenbankentwicklung und Entwicklung von Anwendungsschnittstellen.

 

Was sind die verschiedenen Arten der Softwareentwicklung?

 

Es gibt mehrere verschiedene Arten. Sie können in vier grundlegende Kategorien eingeteilt werden:

 

    Anwendungsentwicklung, die den Benutzern Funktionen zur Durchführung von Aufgaben bietet. Beispiele hierfür sind Office-Produktivitätssuiten, Media-Player, Social-Media-Tools und Buchungssysteme. Die Anwendungen können auf dem persönlichen Computer des Benutzers oder auf Servern laufen, die in der Cloud oder von einer internen IT-Abteilung gehostet werden. Die Entwicklung von Medienstreaming ist ein Beispiel für die Anwendungsentwicklung für die Cloud.

  • Entwicklung von Systemsoftware zur Bereitstellung von Kernfunktionen wie Betriebssystemen, Speichersystemen, Datenbanken, Netzwerken und Hardware-Management.
  • Entwicklungstools, die Softwareentwicklern die Werkzeuge für ihre Arbeit zur Verfügung stellen, einschließlich Code-Editoren, Compilern, Linkern, Debuggern und Testprogrammen.
  • Entwicklung eingebetteter Software, die die Software zur Steuerung von Maschinen und Geräten wie Autos, Telefonen und Robotern erstellt.

 

Es gibt eine Reihe verschiedener Ansätze für die Entwicklung dieser Kategorien. Dazu gehören:

 

  • Scrum-Entwicklung, bei der multidisziplinäre Teams in zeitlich begrenzten Entwicklungsphasen arbeiten.
  • Kanban-Entwicklung, bei der eine visuelle Arbeitspipeline ohne Timeboxing verwendet wird.
  • Sandbox-Entwicklung, bei der ungetesteter Code von den Produktionssystemen isoliert wird.

 

Jede der Kategorien der verschiedenen Entwicklungsarten zieht in der Regel verschiedene Arten von Softwareentwicklern mit unterschiedlichen Persönlichkeiten, Eigenschaften und Spezialisierungen an. Die Entwicklung von Software für medizinische Geräte erfordert beispielsweise Softwareentwickler, die sich mit der Entwicklung sicherheitskritischer Systeme auskennen. Dies ist eine Spezialisierung, die ein typischer Anwendungssoftwareentwickler wahrscheinlich nicht besitzt, die aber für alle Aspekte der Softwareentwicklung im Gesundheitswesen entscheidend ist. Ein Entwickler von Musiksoftware muss musikalisch begabt sein und über ein Grundwissen in formaler Musiktheorie verfügen, um bei der Entwicklung von Software für die Notation und Aufführung von Musik erfolgreich zu sein. Ein Entwickler von Sicherheitssoftware muss nicht nur über Entwicklungskenntnisse verfügen, sondern auch in allen Aspekten der IT-Sicherheit erfahren sein. Die mobile Entwicklung ist auf die Entwicklung von Anwendungssoftware für mobile Geräte wie Telefone und PDAs spezialisiert. Die Entwicklung von Unternehmenssoftware dient der Entwicklung einer Reihe von Anwendungen, die im gesamten Unternehmen eingesetzt werden.

 

Die entwickelte Software kann innerhalb des Unternehmens proprietär bleiben oder an andere verkauft werden. Sie kann auch jedem, der sie nutzen möchte, frei und umfassend zur Verfügung gestellt werden; dies wird als Open-Source-Entwicklung bezeichnet.

 

Software-Entwicklungsprozess

 

Eine häufig gestellte Frage lautet: "Was sind die Schritte bei der Softwareentwicklung?" Die genauen Schritte variieren je nachdem, welches Entwicklungsmodell von der Organisation angenommen wurde, aber das Ergebnis eines generischen Entwicklungsplans ist für jeden Softwareentwicklungsprozess dasselbe – funktionierende Software.  Jedes Modell und jeder Ansatz umfasst die gleichen übergeordneten Aktivitäten in seinem Entwicklungsprozessmodell:

 

  • Spezifikation
  • Entwurf und Implementierung
  • Validierung
  • Entwicklung

 

Jedes Unternehmen, das Software entwickelt, sollte einen Entwicklungsplan haben, in dem alle durchzuführenden Entwicklungsschritte festgelegt sind. Das gilt unabhängig davon, ob Sie einen traditionellen "Wasserfall"-Softwareentwicklungsablauf oder einen agilen Softwareentwicklungsprozess verwenden.

 

Die meisten, wenn nicht sogar alle Unternehmen werden Software kontinuierlich iterativ entwickeln und im Laufe der Zeit mehr und mehr Funktionen hinzufügen. Ein agiler Softwareentwicklungsplan liefert dies in häufigen kleinen Schritten, wobei die Schritte des Entwicklungslebenszyklus in 1 oder 2 Wochen wiederholt werden. Bei traditionelleren Ansätzen dauert es länger, die Schritte des Softwareentwicklungszyklus auszuführen, und die neuen Funktionen werden in viel größeren Abständen, manchmal sogar in einem Jahr, bereitgestellt.

 

Der heute am weitesten verbreitete Softwareentwicklungsprozess basiert auf dem Manifest für agile Softwareentwicklung.  Darin werden die Grundsätze der agilen Softwareentwicklung, Muster und Praktiken dargelegt, die eine häufige Bereitstellung funktionierender Software ermöglichen, die von den Kunden gewünscht wird. Viele fragen sich, was Scrum in der agilen Softwareentwicklung ist; es ist nur ein Ansatz dafür, der einen Teamansatz verwendet.