Logo Wissenstransfer Gerhard at CichnaDotCom

>> Wissensdatenbank / Grundlagen der industriellen Softwaretechnik

Risiken und Herausforderungen der industriellen Softwaretechnik

Softwaretechnik

Der Begriff "Softwaretechnik" (engl.: "Software Engineering", beide Begriffe werden synonym verwendet) bezeichnet die strukturierte und methodische Planung, Erstellung und Weiterentwicklung von Softwaresystemen sowie deren Betrieb.

Eine differenziertere Definition von Softwaretechnik gibt Balzert an:
"Zielorientiere Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen. Zielorientiert bedeutet die Berücksichtigung z. B. von Kosten, Zeit, Qualität."

Kleinere Programme oder Apps für den Privatgebrauch oder für hoch spezialisierte Anwendungen in der Industrie werden zum Teil mit wenig Aufwand und von einer Person erstellt. An der Erstellung von komplexen industriellen Informationssystemen sind hingegen oft mehrere Dutzend bis hundert Personen über einen Zeitraum von mehreren Jahren beteiligt. Um solche Systeme zuverlässig zu erstellen und zu betreiben, muss Software Engineering betrieben werden. Das bedeutet, dass solche Systeme nicht einfach nach der "Intuition" des Projektleiters erstellt werden können, sondern dass hierfür Prinzipien, Methoden und Werkzeuge angewendet werden müssen. Andernfalls würden Softwareprojekte hoffnungslos im Chaos versinken.

Verglichen mit anderen Ingenieursdisziplinen ist das Software Engineering eine sehr junge Disziplin. Erst vor etwa 45 Jahren wurde mit der Erforschung von Methoden und Prinzipien begonnen, mit denen die sogenannte "Softwarekrise" überwunden werden sollte. Parallel dazu stieg - und steigt immer noch - die Komplexität von Softwaresystemen weiter an. Unterstützt von immer leistungsfähigerer Hardware, ausdrucksmächtigeren Programmiersprachen, der Vernetzung von Rechnersystemen, dem Ausbau von Übertragungskapazitäten, der Mobilisierung von Rechnersystemen und immer leistungsfähigeren Entwicklungswerkzeugen, sind neu erstellte Softwaresysteme sowohl leistungsfähiger als auch in ihrer Struktur komplexer.

Da Softwaresysteme immateriell sind, werden sie in ihrer Größe und Vielfalt nicht durch natürliche oder physikalische Gesetze begrenzt. Im Gegensatz zu anderen Disziplinen wie zum Beispiel Architektur oder Elektrotechnik gibt es nahezu keine natürlichen Beschränkungen wie Schwerkraft, Reibung oder Widerstand. Die Mächtigkeit von Softwaresystemen wird daher stark durch die Abstraktionsfähigkeit - also die Fähigkeit sich abstrakte, logische Strukturen zu erschließen - sowie die Kommunikationsfähigkeit der am Softwareprojekt beteiligten Personen begrenzt. Viele anerkannte Prinzipien und Methoden des Software Engineerings beruhen daher auf Erfahrungen und Erkenntnissen bei der Erstellung von komplexen IT-Systemen.

Ein Kernprinzip des Software Engineerings ist beispielsweise die Aufteilung des Softwareprojektes in verschiedene Aktivitäten und die Verteilung von Mitgliedern des Softwareteams auf verschiedene Rollen mit jeweils typischen eigenen Aktivitäten und Verantwortlichkeiten sowie Zielkonflikten zwischen den Rollen. Ein weiteres Kernprinzip ist der Einsatz von sogenannten "Patterns" (deutsch: Muster), also der Einsatz von organisatorischen und technischen Strukturen (Muster), die sich über mehrere Projekte hinweg bewährt haben.

Der aktuelle Stand der Forschung und Technik im Bereich des Software Engineering ist somit nur eine Momentaufnahme in einem sich kontinuierlich weiterentwickelnden Umfeld. Da ein Ende der technologischen Weiterentwicklungsmöglichkeiten nicht abzusehen ist, ist davon auszugehen, dass zukünftige technologische Entwicklungen weitere, heute nicht bekannte Methoden und Werkzeuge des Software Engineering hervorbringen. Daher beschäftigt sich die Software Engineering Forschung mit der Weiterentwicklung bestehender sowie mit der Entwicklung und Evaluierung neuer Methoden und Werkzeuge.