Softwareentwicklung

Softwareentwicklung ist die Konzeption und Programmierung aller Arten von Anwendungen fĂŒr den Computer und das Internet.
Teammitglieder einer Software Agentur besprechen die nÀchsten Schritte der Softwareentwicklung an ihrem Arbeitsplatz und zeigen auf einen Computerbildschirm.
© Jacob Lund

Softwareentwicklung Definition

Was ist Software?

Kategorisiert man die Bestandteile eines Computers anhand ihrer Beschaffenheit, so ergibt sich zu allererst eine Einteilung in Hardware und Software. GrundsÀtzlich sind Software und Hardware nicht autark, sondern arbeiten zusammen und hÀngen voneinander ab.

Die Hardware ist dabei die Gesamtheit der physischen Komponenten, welche die Software speichern und ausfĂŒhren. Sie besitzen sogenannte Schnittstellen (Ein- und AusgĂ€nge), Speicherungseinheiten (Chips, Festplatten), Prozessoren (zentrale Verarbeitungseinheit, CPU) und Steuerungselemente (Maus, Tastatur).

Die Software hingegen ist das Zusammenspiel aus Computerprogrammen und Verfahren, die bestimmte Aufgaben auf einem Computer ausfĂŒhren. Im Grunde handelt es sich dabei um geordnete Sequenzen von Instruktionen, die eine VerĂ€nderung innerhalb eines Computersystems hervorrufen. Diese erlauben dem Nutzer, mit dem Computer zu interagieren. Damit dies möglich ist, verfĂŒgt die meiste Software ĂŒber eine benutzerfreundliche BedienoberflĂ€che, das sogenannte User Interface. Die Gestaltung dieser OberflĂ€che nennt sich UI Design oder UX Design (User Experience).

Was ist Softwareentwicklung?

Die Softwareentwicklung ist eine Dienstleistung der Informationstechnik, kurz IT. Sie wird von einem Fachinformatiker, einem gelernten Softwareentwickler oder Programmierer durchgefĂŒhrt. FĂŒr diesen Beruf gibt es verschiedene WerdegĂ€nge. Softwareentwickler haben meist ein Studium, z. B. im Bereich Software Engineering oder eine Ausbildung in diesem Bereich absolviert oder sind als Quereinsteiger ĂŒber eine Umschulung oder Fortbildung zur Softwareentwicklung gekommen.

Jetzt als Podcast hören!

Zum Abspielen ist das Laden des externen Spotify-Players erforderlich. Dabei können personenbezogene Daten verarbeitet werden.

Individuelle Softwareentwicklung

Auch taucht der Begriff Softwareentwicklung in spezifischeren Zusammensetzungen wie Individuelle Softwareentwicklung oder Agile Softwareentwicklung auf. Dabei geht es vor allem um die Dienstleistung, die von einer Software Agentur angeboten wird, die Software fĂŒr KMU und andere Unternehmen herstellt. WĂ€hrend der heutige Stand der Technologie es ermöglicht, viele Softwarelösungen innerhalb kĂŒrzester Zeit zu entwickeln, sind gerade Unternehmen daran interessiert, dass es sich bei der Anwendung um keinen Code von der Stange, sondern um QualitĂ€t und individuelle Softwareentwicklung und auf sie zugeschnittenen Softwarelösungen handelt. Die Begriffe agile und individuelle Softwareentwicklung beschreiben jedoch nicht nur das Endprodukt, sondern auch die Organisation des Entwickler- oder Scrum Teams und dass hier ein großer Wert auf das Management gelegt wird.

Softwareentwickler

Oft wird auch Softwareprogrammierer als Synonym fĂŒr den Beruf des Softwareentwicklers verwendet. Softwareentwickler kĂŒmmern sich um noch viel mehr als nur die Softwareprogrammierung. Zu ihrer Arbeit zĂ€hlen auch das Zusammentragen der Anforderungen im Rahmen einer Anforderungsanalyse, die Konzeption, die Planung sowie die Inbetriebnahme und Wartung im Anschluss. Dieses Vorgehen nennt sich modellbasierte Softwareentwicklung, die beispielsweise nach Scrum, dem Wasserfallmodell oder dem V-Modell durchgefĂŒhrt werden kann. Auf diese soll spĂ€ter noch weiter eingegangen werden. ZunĂ€chst ist es sinnvoll, die verschiedenen Arten der Software zu unterscheiden.

Arten von Software

  • Systemsoftware
    Grundlegend lassen sich drei Arten von Software unterscheiden. Die Systemsoftware legt auf einem Computer den Grundstein fĂŒr alle anderen Arten von Software. Sie wird vom Hersteller bereits mitgeliefert und lĂ€uft im Hintergrund, weshalb in der Regel keine Interaktion mit Benutzer stattfindet. Beispiele fĂŒr Systemsoftware sind Betriebssysteme wie MacOS, Windows oder Linux.
  • Programmierungssoftware
    Zur Programmierungssoftware zĂ€hlen Computerprogramme, die Entwickler fĂŒr die Programmierung, Pflege, Fehlerbehebung oder anderweitige UnterstĂŒtzung von Programmen und Applikationen benutzen. Dies können zum Beispiel sogenannte IDEs sein, integrierte Entwicklungsumgebungen wie Microsoft Visual Studio oder XCode, welche als Tool-Paket ebenfalls hĂ€ufig bereits mit dem Betriebssystem zusammen kommen.
  • Anwendungssoftware
    Die Anwendungssoftware ist das, womit die meisten Nutzer in BerĂŒhrung kommen. Darunter fallen Computerprogramme, die dem Endnutzer bei der AusfĂŒhrung bestimmter Aufgaben, AktivitĂ€ten und Funktionen helfen. Zum Teil wird diese in sogenannten Bundles vom Hersteller mitgeliefert oder kann separat heruntergeladen und installiert werden. Zur gĂ€ngigsten Anwendungssoftware zĂ€hlen zum Beispiel Programme zur Dokumenterstellung wie Word, zur Fotobearbeitung wie Photoshop oder zur Wiedergabe von Musik und Videos wie Media Player. In Abgrenzung zu Apps, ein Begriff, der hĂ€ufig als Synonym zu Software verwendet wird, sind Applications reine Anwendungssoftware fĂŒr den Endnutzer. Im allgemeinen Sprachgebrauch sind mit Apps, auch wenn sie im eigentlichen Wortsinn alle Arten von Anwendungssoftware umfassen, in den meisten FĂ€llen mobile Apps gemeint, die auf mobilen EndgerĂ€ten laufen. Software meint hingegen landlĂ€ufig Programme, die auf Desktop-PCs laufen.

Geschichte der Softwareentwicklung

Erste Software

Entgegen der Vorstellung, dass der Computer die Grundvoraussetzung fĂŒr Software sein muss, wurde die erste Software der Welt bereits ein Jahrhundert vor der Erfindung des Computers entwickelt. Im Jahre 1848 ĂŒbersetzte Ada Lovelace einen Artikel von Charles Babbage ĂŒber die “Analytical Engine” ins Englische und fĂŒgte ihre eigenen ErlĂ€uterungen an, die dreimal so lang waren und die Grundlage fĂŒr ein Computerprogramm bildeten, das neben Zahlen auch Musiknoten, Buchstaben und Bilder hĂ€tte verarbeiten können. Ada Lovelace und Charles Babbage waren somit die ersten Programmierer der Welt. 1970 wurde nach Ada Lovelace die Computersprache ADA benannt.

Erste programmgesteuerte Rechenmaschine: Der Computer

Die ersten in der Tat ausgefĂŒhrten Computerprogramme liefen auf dem ersten Computer Z3 von Konrad Zuse. Er entwickelte zunĂ€chst den Z1, welcher rein mechanisch funktionierte, und kam dann ĂŒber das Übergangsmodell Z2 zum Z3. Mithilfe von elektromechanischen Relais (von Elektromagneten betriebene Kontakte) liefen Programme auf Lochstreifen, die Abfolgen von Befehlen ausfĂŒhren konnten. Zu seinen Funktionen gehörten der Umgang mit großen Zahlen, die Grundrechenarten Addition, Subtraktion, Multiplikation und Division, Quadratwurzelrechnungen sowie Programme zur Matrizenrechnung.

Das Software-Prinzip

Davon lassen sich die Grundsteine ableiten, auf denen auch heute noch jede Software basiert: Programme vollziehen Rechenleistungen, folgen einer Logik nach konditionalen Wenn-Dann-Bedingungen und lassen sich, egal, wie komplex sie sind, immer auf das BinÀrsystem nach dem Entweder-Oder-Prinzip herunterbrechen, welches Softwareentwickler beherrschen.

Phasen der Softwareentwicklung

Gemeinhin wird Softwareentwicklung als bedeutungsgleich fĂŒr Programmierung angesehen. Auch wenn die Programmierung einen großen Teil der Entwicklung von Software ausmacht, enthĂ€lt sie aber darĂŒber hinaus noch andere TĂ€tigkeiten, wie beispielsweise das Management. Das sogenannte Scrum Modell, welches vor allem in der agilen Softwareentwicklung zum Einsatz kommt, legt drei Rollen fest:

  • Product Owner: Sammelt und ordnet die Anforderungen nach PrioritĂ€t
  • Scrum Master: Ist fĂŒr das Management zustĂ€ndig und vermittelt zwischen den einzelnen Parteien
  • Team: Die Softwareentwickler und andere Rollen in einer Agentur

Eine weitere Möglichkeit, die entweder alternativ oder zusÀtzlich in der Softwareentwicklung zum Einsatz kommen kann, ist das sogenannte V-Modell. Dabei sind die verschiedenen Teilschritte wie ein V angeordnet.

  1. Systemanforderungsanalyse
    Im Rahmen einer Anforderungsanalyse werden die Anforderungen der Kunden erhoben und mit den Systemvoraussetzungen in Verbindung gebracht: Dabei ist von Interesse, was sich Kunden vom Programm wĂŒnschen und fĂŒr welches System es entwickelt wird. Daraufhin wird festgelegt, welche Möglichkeiten, Bedingungen und etwaige EinschrĂ€nkungen sich daraus ergeben.
  2. System-Architektur
    Bei der Architektur im Zusammenhang mit der Softwareentwicklung geht es um die Zusammensetzung der technischen Tools, die eingesetzt werden mĂŒssen, um das Projekt umzusetzen. Dies können die Technologien, die Programmiersprache sowie verschiedene Schemata fĂŒr Klassen und Datenbanken sein.
  3. System-Entwurf
    Mithilfe eines System-Entwurfs wird erarbeitet, welche Eigenschaften die zu entwickelnde Software enthalten soll und wie diese aufeinander aufgebaut werden. Dabei werden die zuvor festgelegten Anforderungen in Soft- und Hardware-Systeme aufgeteilt. Die Funktionsweisen der verschiedenen Elemente sind hier noch nicht entscheidend, diese kommen erst bei der Systemspezifikation ins Spiel.
  4. Software-Architektur
    Ein nicht zu unterschÀtzender Teil der Softwareentwicklung sind der Software-Entwurf und das Softwaredesign. Dieses beschÀftigt sich mit der optischen Gestaltung und der Frage, wie OberflÀche, also das User Interface, mit den entsprechenden Steuerungs- und Eingabeelementen aussehen soll. Dabei helfen sogenannte Wireframes, auch bekannt aus dem Bereich des Webdesign, in denen der Aufbau der Software grafisch dargestellt wird.
  5. Software-Entwurf
    Beim Software-Entwurf werden die abstrakten Software-Systeme erkannt, beschrieben und miteinander in Beziehung gesetzt. Anschließend folgt die eigentliche Programmierung.
  6. Programmierung
    Die Softwareprogrammierung macht meist den grĂ¶ĂŸten Anteil an der Entwicklung von Software aus und meint die Erstellung des Programmcodes mithilfe verschiedener Parameter.
  7. Programmiersprache
    Einer davon ist die Programmiersprache, mit der der Code verfasst wird. Die Wahl der passenden Programmiersprache ist dabei abhÀngig vom System bzw. dem GerÀt, dem Projekt und den Programmierkenntnissen sowie -kompetenzen der beteiligten Entwickler.
  8. Entwicklungsumgebung
    Mithilfe einer Entwicklungsumgebung, kurz IDE von Integrated Development Environment, lĂ€sst sich der Code in einem erweiterten Texteditor schreiben und kompilieren (dabei wird der Quellcode einer Programmiersprache fĂŒr den Computer ĂŒbersetzt) und es lassen sich Fehler von Programmen finden und beheben.
  9. Library
    In einer Library sind eine Reihe vordefinierter Codes gesammelt, welche als Referenz fĂŒr den manuellen Code verwendet werden. Diese sind meist Teil eines Entwicklungsframeworks, welches wie eine Schablone immer wieder verwendete Codes zur VerfĂŒgung stellt, fĂŒr die dann die entsprechenden Anpassungen vorgenommen werden können. Auf diese Weise wird die Programmierung vereinfacht und die Bearbeitungszeit signifikant verkĂŒrzt.
  10. APIs
    Sogenannte APIs sind Programmierungsschnittstellen, die die Methoden zur Kommunikation zwischen einzelnen Softwarekomponenten oder Regeln zur Interaktion zwischen den Entwicklern und beispielsweise einer Library festlegen. So kann unter anderem der Zugang zum Front-End-Code hergestellt werden.

Genau wie bei der Webentwicklung gibt es einige Programmiersprachen, Entwicklungsumgebungen, Librarys und Frameworks, die speziell fĂŒr die Softwareentwicklung und teilweise sogar auf die Art der Software ausgelegt sind und die Programmierarbeit durch zugeschnittene Features zusĂ€tzlich erleichtern.

  • SDKs
    Eine Alternative stellen SDKs dar: Software Development Kits sind Pakete, welche bereits die IDE, mehrere Librarys, APIs, einen Compiler und weitere Komponenten enthĂ€lt. Beispiele dafĂŒr sind Android Studio, XCide oder Windows .NET SDK.
  • Unit-Tests
    Beim Unit-Test oder auch Modultest genannt, werden die einzelnen Module, also die Komponenten der Software durch den Softwareentwickler getestet. Dies ist eine noch sehr frĂŒhe Testphase, die aber das Fundament fĂŒr alle weiteren Schritte bildet.
  • Integrations-Tests
    Im Rahmen eines Integrations-Tests werden die einzelnen Programme oder Programmeinheiten zusammengefĂŒhrt und in ihrer Gesamtheit zusammenhĂ€ngend getestet. Da die gefundenen Fehler genau dokumentiert werden, können die Fehlerquellen leicht gefunden und analysiert werden.
  • System-Integration
    Ist die Programmierung abgeschlossen, wird die Software schließlich an die Kunden ausgeliefert und mithilfe einer Installation final ins System integriert.
  • Abnahme und Nutzung
    Diese Phase der Softwareentwicklung ist meist die lĂ€ngste. Die Softwarelösung wird fĂŒr den Kunden zum Gebrauch freigegeben. Fehler, die in frĂŒheren Testphasen nicht entdeckt wurden, können hier identifiziert werden. Im Anschluss erfolgt eine Wartung durch den Programmierer, die eine Fehlerbehebung und eine generelle Optimierung der FunktionalitĂ€t und Performanz beinhaltet. Dieser Vorgang wird meistens ĂŒber einen lĂ€ngeren Zeitraum in regelmĂ€ĂŸigen AbstĂ€nden durchgefĂŒhrt, um die Software aktuell und funktionsfĂ€hig zu halten. Manchmal wird auch eine generelle Optimierung gewĂŒnscht, wenn sich neue Anforderungen ergeben.

Softwareentwicklung Programmierungs-Standards

Die wichtigsten Programmiersprachen

C

Die wichtigste, aber wohl auch schwerste Programmiersprache ist C mit ihren Erweiterungen C++ und C#. Viele Betriebssysteme sind grĂ¶ĂŸtenteils in C verfasst, wie zum Beispiel Linux und Windows. UrsprĂŒnglich war C fĂŒr die Systementwicklung vorgesehen, wird heute aber auch in vielen anderen Bereichen eingesetzt.

Python

Python ist der Alleskönner unter den Programmiersprachen. Sie zeichnet sich durch eine klare und leicht verstĂ€ndliche Syntax aus und stellt deshalb einen guten Einstieg in die Softwareentwicklung dar. DarĂŒber hinaus ist sie weit verbreitet und wird von einer Vielzahl an Systemen unterstĂŒtzt.

Java

Java ist eine Programmiersprache, die ursprĂŒnglich fĂŒr Web-Anwendungen entwickelt wurde. Mittlerweile wird sie aber auch fĂŒr die Erstellung von Spielen und Multimedia-Anwendungen verwendet. Sie kann auf nahezu allen GerĂ€ten geschrieben werden, da sie plattformunabhĂ€ngig ist. Außerdem gilt sie als sehr sicher, da sie verschiedene Manipulationen und Fehler blockiert.

Ruby

Ruby ist eine der wenigen Programmiersprachen, die erst durch ihr gleichnamiges Framework Ruby on Rails so populĂ€r geworden ist. Um sie zu verwenden, werden weder typisches Programmiervokabular noch -befehle benötigt. Ihre Syntax ist simpel gehalten und gilt als sehr benutzerfreundlich. Um Ruby hat sich bereits eine große Community gebildet und es existieren viele Online-Tutorials. Das Framework Ruby on Rails ist bekannt fĂŒr die schnelle und einfache Entwicklung von Web-Apps.

Visual Basic

Visual Basic wurde von Microsoft entwickelt und wird vor allem in der App-Entwicklung eingesetzt. Im Gegensatz zu anderen Sprachen ist es ereignisbasiert: Der Code reagiert auf Nutzer-Interaktionen. Visual Basic gilt als einfach zu lernen, ist aber nicht unbedingt fĂŒr die fundamentale Programmierung geeignet.

Objective-C

Objective-C ist die primĂ€re Sprache der ProgrammierungsoberflĂ€che Cocoa und fĂŒr MacOS ausgelegt. Im Prinzip benutzt Objective-C, wie der Name bereits vermuten lĂ€sst, die C-Syntax mit zusĂ€tzlichen objektorientierten Elementen.

Swift

Swift ist die Sprache der Wahl fĂŒr die Programmierung von Mac- und Linux-basierten Desktop-Programmen, mobilen Anwendungen und Servern. Sie enthĂ€lt Elemente von Objective-C, Ruby, Python, C# und vielen mehr und ist bereits in XCode, dem Programmierungskit von Apple, enthalten. Swift eliminiert ganze Klassen von ĂŒblichen Programmierfehlern und ist durch die Ähnlichkeit zu C unter Entwicklern populĂ€r geworden. ZusĂ€tzlich gilt sie durch das Weglassen des Ballasts als effizienter als C und schneller als Python.

Softwareentwicklung: Heutiger Stand und Zukunft

Insgesamt zeichnet sich in den letzten Jahren ein Trend der Deprofessionalisierung ab: Immer mehr Menschen lernen nicht mehr durch ein Studium oder eine Ausbildung, sondern autodidaktisch oder durch verschiedene Online-Tutorials programmieren. Durch die globale Vernetzung, einer Vielzahl an Plattformen und andere Vernetzungsmöglichkeiten entstehen große Communitys von Laien und professionellen Programmierern, wobei die Grenzen immer mehr verschwimmen.

Gleichzeitig ist aber auch eine Steigerung des Standards und der QualitĂ€t in der Softwareentwicklung festzustellen: Systeme werden immer hochwertiger und komplexer, wodurch auch die Anforderungen an Softwaresysteme steigen. Dies geht einher mit einer gesellschaftlich bedingten Schnelllebigkeit, in der sich die BedĂŒrfnisse stetig Ă€ndern, was eine höhere Nachfrage nach Full-Stack-Entwicklern statt Spezialisten fĂŒr eine einzelne Nische nach sich zieht.

In Zukunft wird von Entwicklern Kollaboration und Teamgeist viel gefragter sein als Qualifikation. Gerade in schnelllebigen Zeiten können kurzfristige Entwicklungen entscheidend sein und wer seine Ideen gut zur Sprache bringen kann, Kontakte knĂŒpft und sich mit anderen zusammentut, kommt schneller voran als jemand, der “nur” gute Ideen hat und diese fĂŒr sich behĂ€lt.

Die Globalisierung hat Auswirkungen auf nahezu alle gesellschaftlichen Bereiche und ist fĂŒr die Softwareentwicklung von besonderer Wichtigkeit. Softwaresysteme, die global gedacht sind und neben einer Vielzahl an Systemvoraussetzungen, GerĂ€ten und Internetverbindungen auch andere Kulturen und Sprachen mit einbeziehen, sind zukunftstrĂ€chtiger als solche, die sich nur in ihrem eigenen Kultur- und Dunstkreis aufhalten.

Die zukĂŒnftige Arbeitswelt ist global, ortsunabhĂ€ngig, digital vernetzt und grenzenlos. Nicht nur ein Studium, sondern auch die Arbeit kann aus der Ferne erledigt werden. Besonders im Bereich der Softwareentwicklung ist Fernarbeit das große Thema der Zukunft: Prognosen zufolge werden im Jahre 2020 etwa 50% der Stellen Remote Jobs sein. Dies bedeutet, dass sich Arbeitskollegen möglicherweise nie persönlich sehen und von ĂŒberall auf der Welt sein können.

So schnell, wie es technische Innovationen gibt, wird sich auch entsprechend die Nachfrage nach FĂ€higkeiten wandeln: 60% der zukĂŒnftigen Berufe erfordern FĂ€higkeiten, die nur 20% der derzeitigen ArbeitskrĂ€fte haben. Das bedeutet, dass ArbeitskrĂ€fte flexibel und anpassbar sein mĂŒssen. Da LebenslĂ€ufe nur noch selten linear verlaufen, ist eine Offenheit fĂŒr alternative Karrierewege gefragt.

Es ist geradezu paradox: Es ist die Softwareentwicklung selbst, die viele Auswirkungen auf den Arbeitsmarkt vornimmt und somit ihr eigenes TĂ€tigkeitsfeld fĂŒr die Zukunft formt. Roboter und kĂŒnstliche Intelligenzen, welche von Softwareentwicklern programmiert werden, sind ein Grund, warum in diesem, aber auch vielen anderen Berufsfeldern mehr kreative Köpfe und GrĂŒnder mit Risikobereitschaft gefragt sind als ArbeitskrĂ€fte, die einfach nur ArbeitsauftrĂ€ge von anderen ausfĂŒhren. Unternehmergeist wird immer gefragter und entwickelt sich sogar immer mehr zum Standard – schließlich können Roboter genauso gut bzw. noch prĂ€ziser routinierte ArbeitsauftrĂ€ge ausfĂŒhren. Der Mensch ist ihnen (zumindest derzeit noch) in nur einem Punkt voraus: Innovation.

Softwareentwicklung Berlin bei TenMedia

TenMedia ist eine Digitalgentur im Herzen Berlins. Seit 2011 sind wir auf die Softwareentwicklung und die Webentwicklung spezialisiert und entwickeln neben modernen Websites auch umfangreiche Apps, Anwendungssoftware und bieten verschiedenste Software fĂŒr KMU und andere Unternehmen. Bei uns wird QualitĂ€t großgeschrieben: Im Rahmen unserer individuellen Softwareentwicklung fertigen wir Softwarelösungen zugeschnitten auf die WĂŒnsche unserer Kunden an, zu denen Einzelpersonen, Start-ups, Vereine und kleine und mittelstĂ€ndische Unternehmen (KMU) gehören.

Ob Softwareentwicklung in Berlin oder bundesweit: Wir ĂŒbernehmen die Entwicklungsarbeit fĂŒr einzelne Projekte oder werden zum langfristigen IT-Partner. Unsere StĂ€rken liegen unter anderem in Bereichen wie Digitalisierung, New Work und Automatisierung. Zu den Zielen der von uns entwickelten Anwendungen gehören neben den ganz persönlichen Zielsetzungen unserer Kunden die Optimierung der Außenwirkung und der internen Unternehmensprozesse. Unsere Softwarelösungen sollen internen Kommunikationswege und ArbeitsablĂ€ufe verbessern und zu einer langfristigen Effizienzsteigerung und Arbeitserleichterung beitragen.

Nach Fertigstellung der individuellen Software bleiben wir weiterhin Ansprechpartner, sind rund um die Uhr erreichbar und bieten flexibel Mitarbeiterschulungen und andere Leistungen im Rahmen von New Work an.