Softwareentwicklung
Softwareentwicklung ist die Konzeption und Programmierung aller Arten von Anwendungen für den Computer und das Internet.
- 1. Softwareentwicklung Definition
- 2. Individuelle Softwareentwicklung
- 3. Softwareentwickler
- 4. Arten von Software
- 5. Geschichte der Softwareentwicklung
- 6. Phasen der Softwareentwicklung
- 7. Softwareentwicklung Programmierungs-Standards
- 8. Softwareentwicklung: Heutiger Stand und Zukunft
- 9. Softwareentwicklung Berlin bei TenMedia
Jetzt als Podcast hören!
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.
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
- Programmierungssoftware
- Anwendungssoftware
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.
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.
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.
- Systemanforderungsanalyse
- System-Architektur
- System-Entwurf
- Software-Architektur
- Software-Entwurf
- Programmierung
- Programmiersprache
- Entwicklungsumgebung
- Library
- APIs
- SDKs
- Unit-Tests
- Integrations-Tests
- System-Integration
- Abnahme und Nutzung
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.
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.
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.
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.
Beim Software-Entwurf werden die abstrakten Software-Systeme erkannt, beschrieben und miteinander in Beziehung gesetzt. Anschließend folgt die eigentliche Programmierung.
Die Softwareprogrammierung macht meist den größten Anteil an der Entwicklung von Software aus und meint die Erstellung des Programmcodes mithilfe verschiedener Parameter.
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.
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.
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.
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.
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.
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.
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.
Ist die Programmierung abgeschlossen, wird die Software schließlich an die Kunden ausgeliefert und mithilfe einer Installation final ins System integriert.
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.