Email Logo
Telefon Logo
30.03.2023 · Kategorie A

Softwareentwicklung

Software bezeichnet die nicht-physischen Komponenten eines Computers oder mobilen Geräts wie Betriebssysteme, Anwendungen und erzeugte Daten. Ohne die physische Hardware ist Software nutzlos. Die Softwareentwicklung umfasst die Erstellung, Planung, Implementierung und Wartung von Software für verschiedene Anwendungen. Es gibt drei Hauptkategorien von Software: System-, Programmierungs- und Anwendungssoftware. Die Softwareentwicklung umfasst auch Managementtätigkeiten und durchläuft verschiedene Phasen wie Systemanforderungsanalyse, Systementwurf, Programmierung, Tests und Integration. Der Scrum-Ansatz und das V-Modell sind gängige Modelle für die Softwareentwicklung.

Bevor man über Softwareentwicklung spricht, sollte zunächst der Begriff Software definiert werden. Es handelt sich dabei um eine Sammelbezeichnung, die die nicht physischen Komponenten eines einzelnen Computers, eines Netzwerks oder auch eines mobilen Gerätes wie Smartphone oder Tablet beschreibt. Zu den nicht physischen Komponenten zählen Betriebssysteme, Anwendungen wie Textverarbeitung und Grafikprogramme, aber auch alle Daten, die mit einer Software erzeugt werden.

Software ist allerdings nutzlos ohne die dazugehörige Hardware, also den physischen Komponenten, auf denen Programme installiert, gespeichert und ausgeführt werden. Dazu gehören PCs, Notebooks, Server, Smartphones, Tablets etc. Der Nutzer von Software kann über die Programme und Anwendungen mit der Hardware interagieren und unterschiedliche Arten von Daten erzeugen. Dies geschieht über verschiedene Eingabegeräte wie Maus, Tastatur oder Touchscreen. Moderne Anwendungen verfügen im Gegensatz zu früher über eine benutzerfreundliche Bedienüberfläche (User Interface oder UI). Die Gestaltung dieser Oberflächen wird als UI Design oder UX Design bezeichnet (UX steht für User Experience) und ist ebenfalls ein nicht unbedeutender Teil der Softwareentwicklung. Denn je besser und intuitiver die User Experience, desto geringer ist auch der Aufwand für Einarbeitung und Schulungen.

Darüber hinaus gibt es noch Software, die nicht der Erzeugung von Daten, sondern allein der Steuerung von Hardware dient und fest in diese integriert bzw. eingebettet ist. Der entsprechende englische Begriff ist Embedded Software oder Embedded Systems. Diese Software ist praktisch in jedem Gerät enthalten, das mit mindestens einem Chip bestückt ist, beispielsweise in Waschmaschinen, Backöfen oder Bordcomputern in Fahrzeugen, in DVD-Spielern, Fernsehern, Navigationssystemen oder MP3-Spielern. Embedded Software sorgt dafür, dass die Geräte auf Tastendruck oder über andere Eingabemethoden der programmierten Logik folgen und die entsprechenden Funktionen ausführen.

Was ist Softwareentwicklung im allgemeinen Sinne?

Bei der Softwareentwicklung handelt es sich um eine Dienstleistung innerhalb der Informationstechnik (IT). Zuständig dafür sind Menschen, die ein Studium oder eine Ausbildung im Bereich Software Engineering absolviert haben, aber auch viele Autodidakten und Quereinsteigerinnen nach einer Fortbildung oder Umschulung mit dem Schwerpunkt Softwareentwicklung.

Diese Programmierer und Fachinformatikerinnen schreiben Software für die unterschiedlichsten Anwendungen, die entweder für den allgemeinen Bedarf (Textverarbeitung, Grafikprogramm, Tabellenkalkulation, Spiele, Apps für mobile Endgeräte) gedacht oder auch speziell auf einen einzigen oder nur wenige Kunden zugeschnitten sind (zum Beispiel eine Buchhaltungssoftware für kleine und mittelständische Unternehmen oder Steuersoftware für bestimmte Produktionsanlagen).

Softwareentwicklung umfasst aber nicht nur die reine Programmierung. Zu der Arbeit eines Entwicklers gehört auch die Erstellung einer Anforderungsanalyse, die Konzeption und Planung, die Implementation auf der Hardware sowie die Wartung und Behebung von eventuell später auftretenden Fehlern.

Kurzer historischer Abriss der Softwareentwicklung

Eine Pionierin der Softwareentwicklung war die britische Mathematikerin Ada Lovelace (1815-1852), und zwar in einer Zeit, als es noch keine Computer gab, diese also auch noch nicht als Voraussetzung für die Nutzung von Software galten. Sie arbeitete mit einer von dem ebenfalls britischen Mathematiker und Erfinder Charles Babbage entwickelten, mechanischen Rechenmaschine, der Analytical Engine. Lovelace übersetzte 1843 einen Fachartikel über die Maschine und fügte eigenständig Notizen hinzu, die den dreifachen Umfang des ursprünglichen Textes hatten. Dies war insofern eine bahnbrechende Erkenntnis, als dadurch aufgezeigt wurde, dass die Analytical Engine nicht nur Zahlen verarbeiten konnte. Zu ihren Lebzeiten wurde diese Tatsache nicht erkannt, aber heute gilt Lovelace zahlreichen Wissenschaftlern als erste Programmiererin der Welt. 1970 wurde die Programmiersprache ADA nach ihr benannt.

Der erste programmgesteuerte und frei programmierbare Computer im heutigen Sinne war der 1941 gebaute Z3 des deutschen Ingenieurs und Erfinders Konrad Zuse. Er arbeitete mit Hilfe von elektromechanischen Relais und auf Lochstreifen gespeicherten Programmen, die die Ausführung einer Befehlsabfolge ermöglichten. Seine Fähigkeiten beschränkten sich allerdings noch auf Funktionen wie die vier Grundrechenarten, die Verarbeitung von großen Zahlen, Quadratwurzelberechnungen und Matritzenrechnung. Auf diesen Grundlagen basiert bis heute jede Software bzw. Softwareentwicklung. Programme folgen mit ihrer Rechenleistung einer Logik von Wenn-Dann-Bedingungen, die sich unabhängig von ihrer Komplexität immer wieder auf das Binärsystem reduzieren lassen.

In den ersten Jahrzehnten der Computertechnik wurden Hard- und Software als Einheit angesehen. Die Software galt als Teil der Hardware und wurde bis 1958 als Programmcode bezeichnet. In den 1970er Jahren sorgte dann ein Beschluss der US-Regierung für eine Neuerung, nach dem der Konzern IBM seine Leistungen für Hardware und Software getrennt aufzulisten habe. Mit diesem Schritt wurde Software offiziell als eigenständiges Produkt eingestuft und von der Hardware abgegrenzt. In der Folge entstanden die ersten Unternehmen wie Microsoft in den USA oder SAP in Deutschland, die sich ausschließlich der Softwareentwicklung widmeten oder nur mit Software handelten. Heutzutage ist die Existenz solcher Firmen eine Selbstverständlichkeit.

Welche Arten von Software gibt es heute?

Die moderne Softwareentwicklung beschäftigt sich grundlegend mit drei verschiedenen Kategorien - der System-, der Programmierungs- sowie der Anwendungssoftware.

Systemsoftware

Systemsoftware ist der Unterbau oder auch das Fundament für alle anderen Anwendungen. Man spricht in diesem Zusammenhang von Betriebssystemen, die in der Regel bereits auf den Endgeräten der Hardwarehersteller vorinstalliert sind. Sie lassen sich konfigurieren, erledigen ihre wichtigsten Aufgaben jedoch in der Regel ohne Interaktion mit dem Nutzer im Hintergrund. Die bekanntesten Betriebssysteme für den Bereich PCs und Notebooks sind Microsoft Windows, Apple MacOS und Linux, für Smartphones und Tablets Android und Apple iOS.

Programmierungssoftware

Bei der Programmierungssoftware handelt es sich um Programme und Tools, die von Softwareentwicklern für die Erstellung, Pflege und Fehlerbehebung von Anwendungen und Applikationen benötigt werden. Das können einzelne Programmiersprachen sein, aber auch komplette integrierte Entwicklungsumgebungen (Integrated Development Environment - IDE), Datenbank- und Datenbankmanagementsysteme oder CASE-Tools.

Anwendungssoftware

Unter die Anwendungssoftware fallen die Programme, mit denen der normale Nutzer am häufigsten in Berührung kommt. Sie dienen der Ausführung definierter Aufgaben etwa bei der Büroarbeit, der Koordination von Aktivitäten in Beruf und Freizeit und erfüllen zahlreiche andere Funktionen. Zum Teil werden sie als einzelne Programme angeboten, zum Teil auch als Bundle wie die bekannte Bürosoftware Office von Microsoft.

Welche Phasen durchläuft die Softwareentwicklung?

Neben der reinen Programmierung fallen den Softwareentwicklern weitere Tätigkeiten zu, zum Beispiel das Management. Hierfür stehen verschiedene Modelle wie das Scrum-Modell oder das V-Modell zur Verfügung. Bei der sogenannten agilen Softwareentwicklung kommt vorrangig das Scrum-Modell zum Tragen, das drei Ebenen bzw. Rollen der Führungsverantwortung umfasst: den Product Owner, das Entwicklerteam sowie den Scrum Master.

Der Product Owner ist verantwortlich für das Sammeln und Ordnen der Anforderungen an eine Software nach Prioritäten sowie für die spezifischen Eigenschaften und den wirtschaftlichen Erfolg. Das Entwicklerteam kümmert sich um die konkrete Umsetzung des geplanten Produkts. Der Scrum Master schließlich achtet darauf, dass die zuvor definierten Regeln eingehalten werden. Insgesamt sollte ein interdisziplinäres Scrum-Team aus nicht mehr als zehn Personen bestehen.

V-Modell

Beim V-Modell werden die einzelnen Phasen der Softwareentwicklung in einem Diagramm V-förmig angeordnet und abgearbeitet. Die einzelnen Phasen werden im Folgenden kurz beschrieben.

  1. Die Systemanforderungsanalyse In dieser Phase werden die Anforderungen des jeweiligen Kunden festgestellt und die Systemvoraussetzungen analysiert. Die Fragestellung dabei ist: Was wünscht sich der Kunde von der Software und für welches System soll sie entwickelt werden? Anschließend werden die vorhandenen Möglichkeiten, die Bedingungen und eventuelle Beschränkungen bestimmt.

  2. Die Systemarchitektur Hier geht es darum, welche technischen Werkzeuge eingesetzt werden müssen, um das Projekt zu realisieren. Dazu zählen die passende Programmiersprache, die benötigten Technologien, Schemata für erforderliche Datenbanken und Klassen.

  3. Systementwurf Im Systementwurf wird herausgearbeitet, welche Eigenschaften und Fähigkeiten die Software bekommen soll und auf welche Weise diese aufeinander aufzubauen sind. Die im ersten Schritt festgestellten Anforderungen des Kunden werden dabei den Hard- und Softwaresystemen zugeteilt. Auf die Funktionsweisen der einzelnen Elemente muss in dieser Phase noch keine Rücksicht genommen werden.

  4. Softwarearchitektur Im vierten Schritt wird das Softwaredesign definiert. Dieser wichtige Teil umfasst die optische Gestaltung der Bedienoberfläche (User Interface) mit ihren Steuerungs- und Eingabemöglichkeiten. Mit Hilfe von Wireframes, wie sie auch im Webdesign verwendet werden, lässt sich die Softwarearchitektur dann grafisch darstellen.

  5. Softwareentwurf Im Softwareentwurf werden die bisher abstrakten Systeme der Software konkretisiert und miteinander in Relation gebracht. Danach kann die eigentliche Programmierung erfolgen.

5.1 Programmierung und Programmiersprache Die Programmierung bildet in der Regel den Löwenanteil bei der Softwareentwicklung. In dieser Phase werden an Hand verschiedener Parameter die Programmcodes erstellt. Zu diesen Parametern zählt unter anderem die Programmiersprache für den zu erstellenden Code. Ihre Wahl ist abhängig vom später genutzten System, den Eigenschaften des Projekts sowie den Kenntnissen und Kompetenzen der Softwareentwickler.

5.2 Entwicklungsumgebung Die Entwicklungsumgebung (Integrated Development Environment - IDE) ermöglicht das Schreiben und Kompilieren der Programmcodes in einem spezifischen Texteditor. Mit Kompilieren ist die Übersetzung des Quellcodes der Programmiersprache in eine für den Computer verständliche Form gemeint. Eventuelle Fehler lassen sich hier relativ simpel finden und beseitigen.

5.3 Library Eine Library oder Bibliothek enthält Sammlungen von vordefinierten Codes, die häufig verwendet werden und sich leicht an die individuellen Anforderungen anpassen lassen. Dadurch wird die Programmierung stark vereinfacht und die gesamte Bearbeitungszeit deutlich verkürzt.

5.4 Application Programming Interfaces (APIs) Bei APIs handelt es sich um Schnittstellen, die Kommunikationsmethoden zwischen den einzelnen Komponenten der Software und Interaktionsregeln etwa zwischen den Programmierern und einer Library festlegen. Sie erleichtern die Arbeit mit speziell zugeschnittenen Eigenschaften ebenfalls.

5.5 Software Development Kits (SDKs) SDKs sind Softwareentwicklungspakete, in denen die Entwicklungsumgebung, mehrere Bibliotheken, APIs und andere Komponenten zusammengefasst sind, so dass auf Einzellösungen verzichtet werden kann.

  1. Unit Tests Im Anschluss an die Programmierung erfolgt die Phase der Unit- oder Modultests. Hier werden die einzelnen Softwarekomponenten durch die Entwickler auf ihre Funktion geprüft. Es handelt sich dabei zwar um einen noch recht frühen Testlauf, der aber die Grundlage für die weiteren Phasen der Softwareentwicklung bildet.

  2. Integrationstests In der Phase der Integrationstests werden die singulären Programme zusammengeführt und in ihrer Gesamtheit geprüft. Auftretende Fehler und Mängel werden exakt dokumentiert, so dass die Fehlerquellen leicht aufgespürt und analysiert werden können.

  3. Systemintegration Wenn die Testläufe erfolgreich verlaufen sind, kann die Software an den Kunden ausgeliefert und in sein System integriert werden.

  4. Abnahme und Gebrauch durch den Kunden Mit der Systemintegration beim Kunden ist die Softwareentwicklung aber nicht abgeschlossen, im Gegenteil. Meist dauert diese Phase am längsten. Sobald der Kunde die Software in Gebrauch genommen hat, können zuvor nicht identifizierte Fehler entdeckt und behoben werden. Häufig wird an Hand der Erfahrungen im Alltagsgeschäft eine allgemeine Optimierung der Performance und der Funktionalität der Software erforderlich. Dies kann über längere Zeiträume hinweg in regelmäßigen Intervallen geschehen, um das Programm auf einem aktuellen Stand zu halten. Teilweise werden auch Anpassungen benötigt, wenn sich beim Kunden neue Anforderungen und Wünsche ergeben.

Die am häufigsten genutzten Programmiersprachen

Für die Softwareentwicklung stehen verschiedene Programmiersprachen zur Verfügung, die jeweils für verschiedene Zwecke eingesetzt werden. Die folgenden Abschnitte beschreiben kurz die wichtigsten Sprachen mit ihren Eigenschaften und Einsatzbereichen.

C/C++/C#

Die Programmiersprache C ist mit ihren Verwandten C++ und C# die wichtigste und gleichzeitig die komplizierteste. Mit ihr wurden zu großen Teilen Betriebssysteme wie Windows und Linux geschrieben. War sie ursprünglich für die Entwicklung von Systemsoftware vorgesehen, findet sie heute auch für viele andere Bereiche Anwendung.

Objective-C

Objective-C wird vor allem für die Programmierungsoberfläche Cocoa und für MacOS eingesetzt. Wie der Name nahelegt, benutzt diese Sprache die Syntax von C, verwendet aber zusätzliche, objektorientierte Elemente.

Java

Java diente früher hauptsächlich der Entwicklung von Web-Anwendungen, kommt aber heute auch bei Multimedia-Anwendungen und Computerspielen zum Einsatz.. Sie ist plattformunabhängig und kann auf fast allen Geräten genutzt werden. Zudem blockiert sie viele Fehler und Manipulationen, so dass sie als sehr sicher gilt.

Visual Basic

Visual Basic ist ein Produkt von Microsoft und kommt hauptsächlich bei der App-Entwicklung zum Tragen. Die Programmiersprache ist im Gegensatz zu anderen ereignisbasiert, und der Code ermöglicht Interaktionen der Nutzer. Zwar ist Visual Basic relativ leicht zu lernen, jedoch nicht besonders gut für eine fundamentale Softwareentwicklung geeignet.

Python

Python gilt unter Entwicklern als Allrounder und Alleskönner. Auf Grund ihrer klaren und gut verständlichen Syntax bietet sie sich hervorragend für einen ersten Einstieg in die Welt der Softwareentwicklung an. Diese Programmiersprache wird von vielen Systemen unterstützt, was auch ihre weite Verbreitung erklärt.

Ruby

Die große Popularität von Ruby beruht auf dem dazugehörigen Framework Ruby on Rails. Die Sprache verzichtet auf typische Befehle und Programmiervokabular, beinhaltet eine einfache Syntax und ist besonders nutzerfreundlich. Das drückt sich auch in der großen Community und in der Existenz sehr vieler Tutorials im Internet aus. Verwendet wird Ruby bzw. Ruby on Rails für die simple und schnelle Web-App-Entwicklung.

Swift

Die Programmiersprache Swift bedient die Welt von MacOS und Linux und eignet sich für Desktop-Software, Server und mobile Anwendungen. Sie ist Bestandteil des Programmierungskits X Code von Apple und enthält Elemente von C#, Objective-C, Python und Ruby, Softwareentwickler schätzen Swift, weil die Sprache viele übliche Programmierfehler eliminiert und wegen ihrer Ähnlichkeit mit C, ohne deren Ballast zu enthalten, was sie effizienter macht. Zudem ist sie schneller als Python.

Gegenwart und Zukunft der Softwareentwicklung

Seit einiger Zeit sind zwei Strömungen bei der Softwareentwicklung zu beobachten. Einerseits lernen immer mehr Menschen das Programmieren auf autodidaktischem Wege oder auch durch Tutorials auf Online-Plattformen, statt eine entsprechende Ausbildung oder ein Studium zu absolvieren. Die weltweite Vernetzung ermöglicht die Entstehung großer Communitys von Laien, Anfängern und Profis und verwischt die Grenzen zwischen diesen Gruppen. Andererseits ist festzustellen, dass die Qualität und die Standards der Softwareentwicklung eine stetige Steigerung erfahren. Hardwaresysteme werden immer komplexer, was auch die Anforderungen an die passende Software erhöht.

Die Softwareindustrie gehört weltweit zu den dynamischsten Branchen überhaupt. Schätzungen besagen, dass es rund um den Globus etwa 45 Millionen Softwareentwickler gibt - Tendenz steigend. Zudem stecken manche Arbeitsfelder wie künstliche Intelligenz, maschinelles Lernen, das Internet der Dinge und eine veränderte Mobilität durch autonome Fahrzeuge noch mehr oder weniger in den Kinderschuhen. Hier wird es in der näheren Zukunft noch zahlreiche Entwicklungen geben, die heute kaum richtig einzuschätzen sind.

Der Bedarf an Softwareentwicklern in der Industrie ist enorm. Unter den Fachkräften werden sie am zweithäufigsten gesucht, was für viele junge Menschen im Hinblick auf die Berufswahl durchaus verlockend ist, denn es winken hohe Gehälter, interessante Betätigungsfelder und krisensichere Arbeitsplätze.

Individuelle Softwareentwicklung

Durch den gegenwärtigen Stand der Technologien in der Softwareentwicklung lassen sich viele Lösungen sehr schnell realisieren. Zahlreiche Unternehmen sind aber vor allem daran interessiert, maßgeschneiderte Programme von individuell arbeitenden Agenturen zu erhalten, statt Programmcode von der Stange zu kaufen. Das gilt nicht nur für große Konzerne, sondern besonders häufig auch für kleine und mittelständische Unternehmen, die gerade in Deutschland mit ihren Produkten und Dienstleistungen spezifische Nischen besetzen, für die es keine Standard-Softwarelösungen gibt. Deshalb kommt der individuellen Softwareentwicklung ein großer Stellenwert zu.

Ein weiterer Vorteil ist, dass Invidualsoftware Unternehmen flexibler und unabhängiger macht. Es gibt genügend Beispiele dafür, dass ein Hersteller von Standardsoftware auf Grund bestimmter Umstände vom Markt verschwindet oder nach einigen Jahren seine Strategie ändert. Eine Umstellung sämtlicher Daten, Prozesse und Anwendungen auf ein anderes Produkt führt dann in der Regel zu sehr hohen Kosten und nicht selten auch zu Unterbrechungen der gewohnten Arbeitsabläufe.

Mit einer individuellen Softwareentwicklung durch kompetente Agenturen und Programmierer können solche Klippen relativ sicher umschifft werden. Auch der persönliche Kontakt zwischen Entwicklern und Kunden ist wesentlich enger, was langfristig zu einer vertrauensvolleren Kooperation führt.