Software Engineering
Inhaltsverzeichnis
Software Engineering, oder im Deutschen Softwaretechnik, beschäftigt sich mit der Herstellung, Entwicklung und dem Betrieb von Software, zum einen durch die Organisation und Modellierung der für die Umsetzung der Software notwendigen Datenstrukturen und zum anderen durch die Durchführung des Entwicklungsprozesses in mehreren Phasen. Neben der Softwareentwicklung selbst stehen dabei auch das Prozessmanagement und die Teamorganisation im Vordergrund.
Seit den 1960er Jahren sind dazu verschiedene Modelle entworfen worden, die unter anderem die Qualität der Software bewerten und Vorgaben bzw. Richtlinien in der Softwareentwicklung und auch hinsichtlich bestimmter Praktiken in der Zusammenarbeit des Teams untereinander und mit Auftraggebern vorgeben.
Während diese Praktiken zu Beginn recht starr und auf lange Entwicklungszyklen ausgelegt waren, hat sich insbesondere in den 2000er Jahren die agile Softwareentwicklung etabliert, die den wachsenden Bedarf an Software, die immer kleiner werdenden Teams und die rasante Entwicklung von Anforderungen und Markt berücksichtigt.
Welche Arten von Software Engineering gibt es?
Software Engineering kann je nach Literatur in verschiedene Subkategorien eingeteilt werden. Auf der einen Seite wird eine Einteilung in die Softwareentwicklung selbst und das Prozessmanagement vorgenommen.
Zur Softwareentwicklung zählen dabei die verschiedenen Phasen des Lebenszyklus der Software: Hin von der Analyse der Anforderungen, über das Design und die Umsetzung bis zu Einsatz, Test und Wartung. Diese werden als Software Requirements Engineering, Software Design, Software Construction, Software Testing und Software Maintenance bezeichnet. Unter Software Quality versteht man zusätzlich die Bewertung der Software nach verschiedenen Kriterien, beispielsweise hinsichtlich Wartbarkeit oder Nutzerfreundlichkeit.
Auf der anderen Seite steht das Prozessmanagement unter den Namen Software Engineering Management oder Software Engineering Economics, das vor allem die Planung und ökonomische Umsetzung der Software in den Vordergrund stellt. Daneben gibt es noch weitere Praktiken, die sich zum Teil auf sehr spezifische Schritte der Entwicklung oder des Betriebs, wie die Einbindung in das Unternehmen oder die Konfiguration der Software, beziehen.
Neben dieser Unterteilung kann Software Engineering auch anhand der Art der Software, die entwickelt wird, unterschieden werden. So gibt es beispielsweise Games Engineering, das sich vor allem mit Videospielen beschäftigt, IT-Management und -Beratung, bei dem insbesondere Kommunikationssysteme für Unternehmen entwickelt werden und Systems Engineering, das den Fokus auf eingebettete Systeme, die im Hintergrund arbeiten, legt.
Software Engineering in der Praxis
Software Engineering wird in verschiedenen Branchen eingesetzt. Insbesondere in Unternehmen, die Dienstleistungen mit direktem Kundenkontakt anbieten - beispielsweise Versandhandel oder Vergleichsportale -, haben sich die agilen Techniken etabliert. So wird Software in diesen und auch in vielen weiteren Unternehmen häufig iterativ entwickelt.
Das bedeutet, dass die Unternehmen in kurzen Zyklen neue Anforderungen und Kundenwünsche analysieren und besprechen und anschließend in kleinen Arbeitspaketen umsetzen. Anstatt dem Nutzer nach mehreren Monaten ein fertiges Produkt zu präsentieren, werden bereits Teilergebnisse vorgestellt und besprochen, sodass Anpassungen jederzeit möglich sind und die Software Schritt für Schritt entwickelt wird.
So kann während des Entwicklungsprozesses die Analyse der Anforderungen und der Qualität jederzeit durchgeführt werden und die Software wird fortwährend verbessert.
Artikel im Bereich Software Engineering
- Einführung in Software Engineering
- Definition und Ziele
- Geschichte und Entwicklung
- Bedeutung und Herausforderungen
- Software-Entwicklungsprozesse
- Wasserfallmodell
- V-Modell
- Agile Methoden (z.B. Scrum, Kanban)
- DevOps
- Anforderungsanalyse
- Erhebung und Dokumentation von Anforderungen
- Funktionale und nicht-funktionale Anforderungen
- Anforderungsspezifikationen
- Anforderungsmanagement
- Software-Design
- Architekturentwurf
- Design Patterns
- Modulares Design
- UML-Diagramme
- Software-Implementierung
- Programmierprinzipien und -techniken
- Code-Qualität und -Standards
- Versionskontrolle (z.B. Git)
- Software-Testing
- Arten des Testens (Unit-Tests, Integrationstests, Systemtests, Akzeptanztests)
- Testautomatisierung
- Teststrategien und -methoden
- Wartung und Weiterentwicklung
- Fehlerbehebung und Debugging
- Refactoring
- Umgang mit Legacy-Systemen
- Projektmanagement im Software Engineering
- Projektplanung und -überwachung
- Risikomanagement
- Teamarbeit und Kommunikation
- Qualitätssicherung und -management
- Qualitätssicherungsmaßnahmen
- Software-Metriken und -Kennzahlen
- Code-Reviews und Audits
- Werkzeuge und Technologien
- Integrierte Entwicklungsumgebungen (IDEs)
- Build- und CI/CD-Systeme
- Kollaborations- und Kommunikationstools
- Aktuelle Trends und Zukunftsperspektiven
- Künstliche Intelligenz und maschinelles Lernen in der Softwareentwicklung
- Cloud-Computing und Microservices
- Internet der Dinge (IoT) und eingebettete Systeme