Softwaresystem

Ein Softwaresystem ist eine Verbindung von miteinander kommunizierenden Komponenten (Bausteinen) auf Softwarebasis, die das Zusammenwirken von Teilen eines Computersystems (eine Kombination aus Hardware und Software) ermöglichen.[4] Der Fokus liegt dabei auf dem Zusammenwirken von Softwareelementen. Die Hardware-Software-Schnittstelle (HSI) ist zwar wichtig, aber nicht unmittelbar Gegenstand eines Softwaresystems.
Ein Softwaresystem besteht aus einer Reihe von separaten Elementen wie Hauptprogrammen, Unterprogrammen (Module), Programmbibliotheken und Konfigurationsdateien. Diese dienen der Einrichtung von Programmen, die die Struktur des Systems ermöglichen. Außerdem gehören eine technische und eine Anwender-Dokumentation dazu, die erklären, wie das System aufgebaut ist und benutzt werden kann.[5]
Während ein Computerprogramm eine Vielzahl von Verarbeitungsanweisungen (Quellen- oder Objektcodes) beinhaltet, verfügt ein Softwaresystem über viele weitere Komponenten oder Artefakte. Dazu zählen auf der Entwicklungsseite beispielsweise die Spezifikationen, Softwarearchitektur oder Testergebnisse oder auf der Benutzer- oder Anwenderseite eine Dokumentation.[6][7] Alle Elemente oder Komponenten werden zu einem Gesamtsystem bzw. Softwareprodukt integriert.
Die Softwaresysteme werden entlang von Softwareentwicklungsprozessen und dem System Engineering entwickelt und hergestellt. Softwaresysteme unterliegen zudem einem Softwarelebenszyklus und können Teil eines IT-Systems sein. In diesem Kontext wird auch von der „Software Evolution“ gesprochen.[8][9]
Typische Beispiele für Softwaresysteme sind die Betriebssysteme, mit ihren jeweiligen monolithischen, mikro- oder hybridem Kernel. Zu den verteilten Softwaresystemen zählen beispielsweise Microservices oder andere Techniken einer serviceorientierten Architektur (SOA).
Begriffsbestimmung
[Bearbeiten | Quelltext bearbeiten]Der Begriff „Softwaresystem“ darf mit den gängigen Begriffen „Computerprogramm“ und „Software“ nicht gleichgesetzt werden. Der Begriff Computerprogramm bezieht sich allgemein auf einen Satz von Instruktionen, die eine bestimmte Aufgabe ausführen. Der Begriff Softwaresystem hingegen bezeichnet ein umfassenderes Konzept mit vielen weiteren Komponenten oder ein aus Software bestehendes Produkt.
Die Verwendung des Begriffs Softwaresystem wird im Zusammenhang mit Software Engineering genutzt bzw. auf dem Gebiet der Softwarearchitektur verwendet.
Der Software Engineering Body of Knowledge (SWEBOK) geht im Kapitel 2 Software Architecture[10] näher auf Softwaresysteme ein und definiert die Architektur (von Software) als „die Kunst und Wissenschaft des Konstruierens – in diesem Fall von softwareintensiven Systemen.“[11]
Betrachtungsweisen
[Bearbeiten | Quelltext bearbeiten]Aus Sicht des programmiertechnischen Aspektes besteht ein Softwaresystem aus dem Zusammenwirken von Hauptprogrammen und Unterprogrammen, aus deren Gemeinsamkeit sich ein Lösungsansatz für bestehende Probleme ergibt.
Betrachtet man jedoch das Softwaresystem aus dem Blickwinkel eines Entwurfes (Konzept), besteht dieses aus mehreren Modulen, die bei einer Teilung nach dem Trennungsprinzip entstehen.
Organisationen
[Bearbeiten | Quelltext bearbeiten]Das Max Planck Institute for Software Systems (SWS) beschäftigt sich mit dem Thema der Softwaresysteme.[12]
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Literatur
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Thakshila Imiya Mohottige, Artem Polyvyanyy, Colin Fidge, Rajkumar Buyya, Alistair Barros: Reengineering software systems into microservices: State-of-the-art and future directions. In: Information and Software Technology. Band 183, Juli 2025, S. 107732, doi:10.1016/j.infsof.2025.107732 (englisch, elsevier.com [abgerufen am 14. Oktober 2026]).
- ↑ Vincent Bushong, Amr S. Abdelfattah, Abdullah A. Maruf, Dipta Das, Austin Lehman, Eric Jaroszewski, Michael Coffey, Tomas Cerny, Karel Frajtak, Pavel Tisnovsky, Miroslav Bures: On Microservice Analysis and Architecture Evolution: A Systematic Mapping Study. In: Applied Sciences. Band 11, Nr. 17, 26. August 2021, ISSN 2076-3417, S. 7856, doi:10.3390/app11177856 (englisch, mdpi.com [abgerufen am 14. Oktober 2026]).
- ↑ Yamina Romani, Okba Tibermacine, Chouki Tibermacine: Towards Migrating Legacy Software Systems to Microservice-based Architectures: a Data-Centric Process for Microservice Identification. In: 2022 IEEE 19th International Conference on Software Architecture Companion (ICSA-C). März 2022, ISSN 2768-4288, S. 15–19, doi:10.1109/ICSA-C54293.2022.00010 (englisch, ieee.org [abgerufen am 15. Oktober 2026]).
- ↑ Clive Rosen: Guide to Software Systems Development: Connecting Novel Theory and Current Practice. Springer International Publishing, Cham 2020, ISBN 978-3-030-39729-6, doi:10.1007/978-3-030-39730-2 (englisch, springer.com [abgerufen am 14. Oktober 2026]).
- ↑ Manfred Broy, Marco Kuhrmann: Einführung in die Softwaretechnik (= Xpert.press). Springer Berlin Heidelberg, Berlin, Heidelberg 2021, ISBN 978-3-662-50262-4, doi:10.1007/978-3-662-50263-1 (springer.com [abgerufen am 14. Oktober 2026]).
- ↑ Tom Mens, Alexander Serebrenik, Anthony Cleve (Hrsg.): Evolving Software Systems. Springer Berlin Heidelberg, Berlin, Heidelberg 2014, ISBN 978-3-642-45397-7, doi:10.1007/978-3-642-45398-4 (englisch, springer.com [abgerufen am 14. Oktober 2026]).
- ↑ V.S. Alagar, K. Periyasamy: Specification of Software Systems (= Texts in Computer Science). Springer London, London 2011, ISBN 978-0-85729-276-6, doi:10.1007/978-0-85729-277-3 (englisch, springer.com [abgerufen am 14. Oktober 2026]).
- ↑ Gabriele Taentzer, Michael Goedicke, Barbara Paech, Kurt Schneider, Andy Schürr, Birgit Vogel-Heuser: The Nature of Software Evolution. In: Managed Software Evolution. Springer International Publishing, Cham 2019, ISBN 978-3-030-13498-3, S. 9–20, doi:10.1007/978-3-030-13499-0_2 (englisch, springer.com [abgerufen am 14. Oktober 2026]).
- ↑ Miryung Kim, Na Meng, Tianyi Zhang: Software Evolution. In: Handbook of Software Engineering. Springer International Publishing, Cham 2019, ISBN 978-3-030-00261-9, S. 223–284, doi:10.1007/978-3-030-00262-6_6 (englisch, springer.com [abgerufen am 14. Oktober 2026]).
- ↑ SWEBOK Guide V4.0
- ↑ Software Engineering Body of Knowledge (SWEBOK). In: IEEE Computer Society. IEEE, 17. April 2024, abgerufen am 14. Oktober 2026 (englisch).
- ↑ MPI SWS – Max Planck Institute for Software Systems. MPI, abgerufen am 14. Oktober 2026 (englisch).