Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Softwaretechnik

... Agile Softwareentwicklung. Die Softwaretechnik umfasst den gesamten Prozess von der Identifizierung des Bedarfs bis hin zur Inbetriebnahme einer konkreten …

Inhalt6 Abschnitte
  1. 1. Grundidee und Bedeutung
  2. 2. Phasen und Teilgebiete
  3. 3. Steuerung, Qualität und Risiken
  4. 4. Anforderungen, Entwurf und Umsetzung
  5. 5. Prüfung, Einführung und Betrieb
  6. 6. Wartung und Entwicklungsmethoden

Grundidee und Bedeutung

Softwaretechnik, auch Softwaretechnologie oder Software-Engineering, beschäftigt sich mit der Herstellung und Entwicklung von Software, mit der Organisation und Modellierung der zugehörigen Datenstrukturen und mit dem Betrieb von Softwaresystemen. Nach Helmut Balzert ist sie die „zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen“.

Das Fachgebiet ist wichtig, weil komplexe Software mit hohem Aufwand erstellt und gewartet wird. Deshalb braucht man planvolle Vorgehensweisen, klare Zuständigkeiten, geeignete Werkzeuge und Prüfverfahren. Softwaretechnik umfasst nicht nur Programmierung, sondern den gesamten Weg von der Bedarfsermittlung bis zur Inbetriebnahme einer IT-Lösung, teilweise auch Betrieb, Wartung und Weiterentwicklung. Als Überblick über den „Stand der Technik“ wird unter anderem der Guide to the Software Engineering Body of Knowledge (SWEBOK) der IEEE Computer Society genannt.

Im allgemeinen Sprachgebrauch wird Softwaretechnik oft mit Softwareentwicklung gleichgesetzt. Im engeren Sinn bezeichnet Softwareentwicklung aber eher die konkreten Tätigkeiten innerhalb der Disziplin Softwaretechnik. In einem erweiterten Sinn gehören auch der Betrieb von Software sowie die dafür genutzte Informationstechnik, technische Geräte und Systemsoftware dazu.

Phasen und Teilgebiete

Softwareentwicklung wird häufig durch ein Vorgehensmodell strukturiert. Ein Vorgehensmodell ist ein Projektplan, der den Entwicklungsprozess in überschaubare Phasen gliedert. Die Phasen sind zeitlich und inhaltlich begrenzt, aber während des Entwicklungsprozesses eng miteinander verzahnt. In der Praxis gibt es sehr strukturierte Ansätze wie das Wasserfallmodell, Mischformen und flexible Verfahren wie agile Softwareentwicklung. Auch Top-Down- und Bottom-Up-Ansätze werden unterschieden.

Typische Kernprozesse sind Planung, Analyse, Entwurf, Programmierung sowie Validierung und Verifikation. Zur Planung gehören Anforderungserhebung, Lastenheft, Pflichtenheft, Aufwandsschätzung, zum Beispiel mit Function-Point-Verfahren oder COCOMO, und die Wahl des Vorgehensmodells. Zur Analyse gehören unter anderem Auswertung, Mock-up, Prozessanalyse, Systemanalyse, strukturierte Analyse und objektorientierte Analyse. Im Entwurf entstehen Softwarearchitektur, strukturiertes Design, objektorientiertes Design oder Modelle nach Fundamental Modeling Concepts. In der Programmierung werden etwa normierte, strukturierte, objektorientierte oder funktionale Programmierung eingesetzt. Validierung und Verifikation prüfen die Software durch Modul-, Integrations-, System- und Akzeptanztests.

Unterstützungsprozesse begleiten diese Kernprozesse. Dazu zählen Anforderungsmanagement, Projektmanagement, Qualitätsmanagement, Konfigurationsmanagement, Softwareeinführung und Dokumentation. Beim Konfigurationsmanagement geht es zum Beispiel um Versionsverwaltung, Änderungsmanagement, Releasemanagement und Application-Management. Dokumentation kann technische Dokumentation, Software-, System- und Betriebsdokumentation, Bedienungsanleitungen, Geschäftsprozesse und Verfahrensdokumentation umfassen. Nicht jedes Projekt durchläuft alle Teilschritte vollständig; aus Kosten- und Verwaltungsgründen werden Prozesse passend zur jeweiligen Anforderung ausgewählt.

Die zu entwickelnde Software kann Individualsoftware sein, also speziell für einen bestimmten Zweck erstellt werden, oder eine Kombination und Konfiguration von Standardsoftware. Projekte können durch externe Dienstleistungsunternehmen, gemeinsam mit ihnen oder als Eigenentwicklung durchgeführt werden.

Steuerung, Qualität und Risiken

Projektmanagement steuert den gesamten Entwicklungsprozess. Bei Projekten mit einem IT-Dienstleister gibt es oft sowohl auf Auftraggeber- als auch auf Auftragnehmerseite eigenes Projektmanagement. Zur Lösung von Konflikten kann darüber ein Lenkungsausschuss stehen, der aus dem Management beider Seiten zusammengesetzt ist. Größere Projekte haben meist mehr Projektmanagement-Aufwand; mittlere und kleinere Projekte werden häufiger nebenbei abgewickelt. Externe IT-Berater können die Beteiligten unterstützen.

Qualitätsmanagement ist ein Teilbereich des Projektmanagements. Es umfasst Qualitätsplanung, Qualitätssicherung und Qualitätslenkung. Qualitätsplanung bedeutet, relevante Qualitätskriterien und geeignete Methoden zu bestimmen. Qualitätssicherung bewertet regelmäßig und regelgerecht die Projektleistung, damit Qualitätsstandards eingehalten werden. Qualitätslenkung überwacht Projektergebnisse, prüft die Einhaltung von Standards und beseitigt Ursachen unzureichender Leistungen. Dabei müssen sowohl die Leistung des Projekts als auch die Qualität des Projektprodukts betrachtet werden.

Modernes Qualitätsmanagement und Produktmanagement betonen Kundenzufriedenheit, Prävention vor Überprüfung und Managementverantwortung. Qualitätsverbesserungsprogramme der Trägerorganisation, zum Beispiel nach TQM oder ISO 9000, können integriert werden. Wie im Projektmanagement allgemein besteht ein Zielkonflikt zwischen Qualität, Kosten und Zeit, das sogenannte magische Dreieck. In Softwareprojekten kann hoher Termindruck dazu führen, dass Qualität vernachlässigt wird.

Risikomanagement ist nötig, weil bei komplexen Informationssystemen „absolute“ Sicherheit oder Qualität wirtschaftlich nicht erreichbar ist. Risiken werden kategorisiert und priorisiert, damit ein angemessenes Maß an Systemsicherheit und -qualität erreicht wird. Risikomanagement sollte über den gesamten System-Lebenszyklus berücksichtigt werden: vom Konzept über Entwicklung, Programmierung, Implementierung und Konfiguration bis zum Betrieb und zur Stilllegung.

Anforderungen, Entwurf und Umsetzung

Die Anforderungserhebung dient der Projektvorbereitung und ist mit Systemanalyse verbunden. Dabei werden Anforderungen inhaltlich erfasst, zum Beispiel durch Befragung künftiger Anwender. Außerdem werden sachliche und technische Anforderungen sowie Randbedingungen untersucht, etwa Schnittstellen zu Drittsystemen oder gesetzliche Anforderungen. Ergebnis ist meist ein Fachkonzept, oft auch ein Lastenheft.

Ein Pflichtenheft enthält sämtliche Funktionen und Anforderungen an ein Programm. Es legt fest, welche Funktionen verlangt sind und was diese genau tun. Auf dieser Grundlage werden technische Entwurfsentscheidungen getroffen und die Systemarchitektur abgeleitet. Wenn ein Dienstleistungsunternehmen beauftragt wird, ist das Pflichtenheft die vertragliche Grundlage der vereinbarten Leistungen; Vollständigkeit und Richtigkeit sind deshalb besonders wichtig.

Im Systemdesign oder in der technischen Konzeption legt ein Systemanalytiker oder -designer, bei kleinen Projekten auch der Programmierer, anhand des Pflichtenhefts die Programmarchitektur fest. Wenn Standardsoftware genutzt wird, wird ihre Einbindung oder Anpassung spezifiziert. Bei neuer Software werden Datenmodell, Funktionen, Algorithmen oder Objekt- und Klassenstruktur entworfen. Wenn vorhandene Software angepasst werden muss, werden nötige Änderungen und Erweiterungen festgelegt. Das Ergebnis wird auch DV-Konzept genannt.

In der Implementierung wird die konzipierte Anwendung technisch realisiert. Dazu werden Softwareprodukte konfiguriert, vorhandene Software angepasst oder Programme und Programmteile neu erstellt. Neue Software entsteht meist durch Programmierung: Funktionen, Objekte, Klassen und ähnliche Bestandteile werden in einer Programmiersprache mithilfe einer integrierten Entwicklungsumgebung codiert.

Prüfung, Einführung und Betrieb

Im Softwaretest wird die Software technisch und inhaltlich geprüft. Technisch bedeutet: Es wird kontrolliert, ob das DV-Konzept korrekt umgesetzt wurde und ob Programmfehler vorliegen. Inhaltlich bedeutet: Es wird geprüft, ob die Software das Pflichtenheft vollständig erfüllt und für den vorgesehenen Zweck geeignet ist. Der Systemtest ist Aufgabe des Auftragnehmers; der Verfahrenstest erfolgt meist zusammen mit den Endanwendern des Auftraggebers.

In der Softwareentwicklung gilt es als normal, dass Programme Fehler enthalten. Manchmal müssen sogar ganze Teile neu umgesetzt werden. Weil Änderungen an komplexen Anwendungen andere Funktionen beeinflussen können, sogenannte Nebeneffekte, sollte nach der Fehlerbeseitigung ein erneuter vollständiger Test des Gesamtsystems erfolgen. Bis zur endgültigen Freigabe sind meist mehrere Test- und Fehlerbeseitigungszyklen nötig; das nennt man iteratives Vorgehen.

Bei der Softwareeinführung wird die fertige Software zusammen mit eventuell nötiger Standardsoftware, Hardware und weiteren Bestandteilen installiert und betriebsbereit gemacht. Oft gibt es getrennte Produktiv-, Test-, Schulungs- und Entwicklungsinstallationen. Je nach Plattform erfolgt die Installation auf Servern, Arbeitsplatzrechnern oder beidem. Bei Datenbankanwendungen kann Datenbank-Tuning nötig sein; in manchen Fällen werden Daten aus älteren Anwendungen migriert. Bei größeren Projekten beginnt man häufig mit einem Testsystem oder wenigen Pilot-Anwendern. Die spätere Ausweitung auf weitere Standorte heißt Rollout.

Zur Einführung gehört auch Unterstützung durch Schulung oder Einweisung von Endanwendern, Power-Usern und Administratoren. Bei vielen Benutzern werden häufig Multiplikatoren geschult, also Anwender, die später weitere Anwender schulen. Dieses Verfahren heißt Train the Trainers. Zunehmend erfolgt Anwenderschulung auch über das Internet mit Trainingsanwendungen.

Wartung und Entwicklungsmethoden

Nach der Inbetriebnahme ist eine kontinuierliche Weiterbetreuung üblich. Dazu gehören Unterstützung der Anwender, zum Beispiel per Hotline, und bei Bedarf Erweiterungen der Software. Bei externer Softwareerstellung werden solche Leistungen häufig in einem Support-Vertrag geregelt.

Beim Support wird zwischen First-level-Support und Second-level-Support unterschieden. Der First-level-Support, auch Helpdesk genannt, ist die erste Anlaufstelle für Unterstützungsfragen und nimmt Problemmeldungen entgegen. Schwerwiegende Probleme leitet er an den Second-level-Support weiter, bei Standardsoftware zum Beispiel an den Produkthersteller.

Softwarepflege bezeichnet die laufende Anpassung an veränderte Anforderungen oder Umgebungsbedingungen, etwa an neue Versionen verwendeter Standardsoftware. Größere Änderungen werden in eigenen Wartungsprojekten bearbeitet, kleinere Anpassungen oft als Wartungsaufgaben mit einfacheren Prozessregeln. Das Management nachträglicher Änderungen in einem laufenden System heißt Veränderungsmanagement. Während früher eine strikte Trennung zwischen Softwareentwicklung und Wartung angenommen wurde, verschwindet diese Grenze zunehmend; allgemein wird noch von Software-Evolution gesprochen.

Für die Entwicklung selbst haben sich verschiedene Methoden und Verfahren herausgebildet. Früh wurde erkannt, dass Software nicht ideal mit klassischen Ingenieurtechniken entwickelt werden kann, weil sie eigene Herausforderungen mitbringt. Daher werden rationale, strukturierte und systematische Vorgehensmodelle genutzt. Ältere Verfahren wie das Wasserfallmodell wurden größtenteils abgelöst. Je nach Anwendungsfall, etwa hardwarenahe Programme, Anwendungsprogramme, Webseiten und Webservices oder Software für mobile Geräte, kommen unterschiedliche Methoden und Konzepte zum Einsatz; auch Programmiersprache und weitere Konventionen spielen eine Rolle.

Weiterlesen

Software Software ist ein Programm oder eine Menge von Programmen, die dazu dienen, einen Computer zu betreiben. · Software sind Programme sowie die zugehörige … Datenstruktur In der Informatik und Softwaretechnik ist eine Datenstruktur ein Objekt, welches zur Speicherung und Organisation von Daten dient. Es handelt sich um eine … Informationstechnik Informationstechnik (kurz IT) steht für die Technik zur Elektronischen Datenverarbeitung (EDV) und der hierzu verwendeten Hard- und Software-Infrastruktur. Softwareentwickler Ein Softwareentwickler (englisch software developer) ist eine Person, die an der Erstellung und Weiterentwicklung einer Software mitwirkt. Vorgehensmodell zur Softwareentwicklung Die agile Softwareentwicklung hingegen beschäftigt sich mit Methoden, die den Entwickler kreativ arbeiten und Verwaltungsaspekte zurücktreten lassen. Je … Agile Softwareentwicklung Agile Softwareentwicklung zeichnet sich durch selbstorganisierende Teams sowie eine iterative und inkrementelle Vorgehensweise aus. Agile Ansätze können sich … Hardware Unterteilung · Ausgabegeräte (Drucker, Bildschirm, Beamer, Lautsprecher …) · Eingabegeräte (Tastatur, Maus, Joystick …) · Einlesegeräte (Mikrofone, … Netzwerk Als Netze oder Netzwerke (englisch net oder englisch network) werden interdisziplinär Systeme bezeichnet, deren zugrundeliegende Struktur sich mathematisch … Wasserfallmodell Ein Wasserfallmodell ist ein lineares (nicht iteratives) Vorgehensmodell, das insbesondere für die Softwareentwicklung verwendet wird und das in … Anforderung (Informatik) Im Verlauf der Anforderungsanalyse werden auch Geschäftsprozesse und Geschäftsobjekte modelliert, die zur Formulierung von Anforderungen herangezogen werden … Auswertung (Informatik) Auswertung (engl. evaluation als Beschreibung, Analyse und Bewertung) bezeichnet in der Informatik den Vorgang, der einem Ausdruck (eventuell in einem … Objektorientierte Analyse und Design In der Analyse geht es darum, die Anforderungen zu erfassen und zu beschreiben, die das zu entwickelnde Softwaresystem erfüllen soll. In dieser Phase werden …