Software Engineering: Grundlagen, Krise und Entwicklung
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 10,48 KB
Die Bedeutung des Software Engineering
Der Begriff Software Engineering wurde Ende der 1960er Jahre aufgrund der sogenannten Software-Krise eingeführt. Diese Krise war eine Folge der Einführung der dritten Hardware-Generation, bei der die Hardware aufhörte, ein Hindernis für die Entwicklung der Informationstechnologie darzustellen. Reduzierte Kosten und verbesserte Qualität der Hardware führten jedoch zu Problemen bei der erzeugten Software. Die Krise war gekennzeichnet durch:
- Unklare Projektplanung und Kostenschätzung.
- Schlechte Softwarequalität.
- Schwierigkeiten bei der Wartung von Programmen mit unstrukturiertem Design.
Es bestand die Notwendigkeit, wirksame und kostengünstige Software zu entwickeln und zu warten, die eine Reihe von Eigenschaften wie Zuverlässigkeit, einfache Wartung und Nutzung sowie Effizienz aufweist.
1 Was ist Software Engineering?
Software Engineering ist ein Bereich der Informatik, der Methoden und Techniken zur Entwicklung und Wartung hochwertiger Software bereitstellt, die Probleme aller Art lösen kann. Heute gilt Software Engineering als eine neue Ära des Ingenieurwesens. Der Beruf des Software Engineers etabliert sich international und genießt hohes soziales Prestige in der Wirtschaft.
Das Software Engineering befasst sich mit verschiedenen Bereichen der Informationstechnologie und Informatik, wie dem Bau von Compilern, Betriebssystemen und der Entwicklung von Intranet/Internet. Es deckt alle Phasen des Lebenszyklus von IT-Systemen ab und findet Anwendung in Bereichen wie:
- Wirtschaft und Banken
- Wissenschaft und Medizin
- Produktion und Logistik
- Flugsicherung und Meteorologie
- Rechtswesen und World Wide Web (Internet, Intranet, Extranet)
2 Methode, Technik und Werkzeuge
Methode
Eine Methode ist eine Reihe von aufeinanderfolgenden Schritten, die zu einem Ziel führen. Das Ziel eines professionellen Ansatzes ist es, Entscheidungen zu treffen und einer Theorie zu folgen, die es erlaubt, Probleme in Zukunft auf die gleiche Weise zu verallgemeinern und zu lösen. Man muss die für das Problem am besten geeignete Methode wählen – den Weg, der zum Ziel führt.
Technik
Technik ist das Know-how oder Verfahren, um ein gewünschtes Ergebnis zu erzielen. Sie erfordert intellektuelle Geschicklichkeit und den Gebrauch von Werkzeugen. Techniken werden von Generation zu Generation weitergegeben. Sie entstehen in der Vorstellung und werden dann empirisch in die Praxis umgesetzt. Im Gegensatz dazu entsteht die Technologie auf wissenschaftliche, reflektierende Weise und mithilfe der Technik (aus historischer Sicht).
Werkzeug (Tool)
Ein Werkzeug ist ein Modul oder Sub-Modul zur Durchführung spezieller, miteinander verbundener Aufgaben. Für eine Anwendung können mehrere Tools zur Verfügung stehen. Zum Beispiel ist die Rechtschreibprüfung selbst ein Instrument in einer Anwendung zum Schreiben von Dokumenten, aber nicht die Anwendung selbst.
CASE-Tools (Computer Aided Software Engineering)
CASE-Tools (Computer Aided Software Engineering) sind EDV-Anwendungen, die entwickelt wurden, um die Produktivität in der Softwareentwicklung zu steigern, indem sie deren Kosten in Form von Zeit und Geld senken. Diese Werkzeuge unterstützen den Lebenszyklus der Softwareentwicklung bei Aufgaben wie:
- Prozess- und Design-Erstellung eines Projekts
- Kalkulation und Kostenschätzung
- Automatisierte Code-Generierung basierend auf dem Design
- Automatische Erfassung, Dokumentation und Fehlererkennung
Ziele von CASE-Tools
- Verbesserung der Produktivität bei der Softwareentwicklung und -wartung.
- Steigerung der Qualität der Software.
- Reduzierung von Zeit und Kosten für die Entwicklung und Wartung von Computersystemen.
- Verbesserung der Projektplanung.
- Unterstützung bei der Anforderungserfassung und Lösungsfindung.
- Automatisierung von Softwareentwicklung, Dokumentation, Code-Generierung, Tests und Fehlererkennung.
- Förderung von Software-Wiederverwendung, Portabilität und Standardisierung der Dokumentation.
- Globales Management der Phasen der Softwareentwicklung mit einem einzigen Werkzeug.
- Erleichterung der Anwendung von Methoden des Software Engineering.
Klassifizierung von CASE-Tools
Die Klassifizierung erfolgt unter Berücksichtigung folgender Parameter:
- Unterstützte Plattformen.
- Abgedeckte Phasen des Systementwicklungs-Lebenszyklus.
- Architektur der produzierten Anwendungen.
- Funktionalität.
Zyklus-Klassifizierung basierend auf den Phasen des Entwicklungsprozesses:
- Upper-CASE (U-CASE): Tools, die bei der Planung, Bedarfsanalyse und Entwicklungsstrategie helfen, unter anderem mithilfe von UML-Diagrammen.
- Middle-CASE (M-CASE): Tools zur Automatisierung von Aufgaben in der Analyse und im Anwendungsdesign.
- Lower-CASE (L-CASE): Tools, die halbautomatische Codegenerierung erstellen, die Fehlererkennung, das Debugging und das Testen von Programmen unterstützen. Sie automatisieren auch die Dokumentation der Anwendung. Hierzu zählen auch Werkzeuge für die schnelle Anwendungsentwicklung (RAD).
Geschichte des Software Engineering
Der Begriff Software Engineering wurde erstmals im Oktober 1968 von Fritz Bauer auf der von der NATO Science Committee gesponserten Softwareentwicklungskonferenz in Garmisch, Deutschland, verwendet. Nach Davis Alan kann Software Engineering definiert werden als:
„Der intelligente Einsatz von bewährten Prinzipien, Techniken, Sprachen und Werkzeugen für die Erstellung und Wartung von Software, die den Bedürfnissen der Nutzer entspricht, innerhalb angemessener Kosten.“
Der Begriff wurde Ende der sechziger Jahre erstmals verwendet, um einen Wissensbereich auszudrücken, der entwickelt wurde, um die Probleme der damaligen Software zu lösen.
1 Die Software-Krise
Das aktuelle Umfeld für die Entwicklung von Softwaresystemen leidet unter chronischen Problemen, die als „Software-Krise“ bezeichnet wurden:
- Signifikante Verzögerungen in der Planung.
- Geringe Produktivität.
- Erhöhte Wartungskosten.
- Anforderungen, die schnell veraltet sind.
- Niedrige Qualität und Zuverlässigkeit.
Eine Krise wird definiert als „ein Wendepunkt im Verlauf von etwas, eine entscheidende Zeit, Phase oder ein kritisches Ereignis.“ Für die Software war dies jedoch kein einzelner Wendepunkt, sondern eine langsame, chronische Entwicklung, die seit vielen Jahren besteht. Dieses chronische Problem in der Softwareentwicklung wurde durch einen Mangel an Formalismus, Methodik und unterstützenden Tools verursacht.
2 Ziele des Software Engineering
Die Hauptziele des Software Engineering sind:
- Verbesserung der Qualität der Herstellungsprozesse und Steigerung der Softwarequalität der Produkte.
- Steigerung der Produktivität und Zufriedenheit der Ingenieure in dieser Disziplin.
3 Mythen in der Softwareentwicklung
Mythen der Entwickler
- Programm läuft = Ende der Arbeit.
- Qualität = Das Programm läuft ohne Fehler.
- Delivery Service: Das Programm läuft.
Management-Mythen
- Die bloße Verwendung von Standards löst alle Probleme.
- Die bloße Nutzung von Werkzeugen löst alle Probleme.
- Schlechte Planung kann durch die Erhöhung der Programmiererzahl kompensiert werden.
Mythen der Kunden
- Allgemeine Geschäftsbedingungen legen die Ziele als eine allgemeine Erklärung fest.
- Die Software ist flexibel genug, um alle Änderungen aufzunehmen.
Fokus des Computer Engineering
Das Computer Engineering wendet die Grundlagen der Informatik, Elektronik und des Software Engineering auf die Entwicklung integrierter Datenverarbeitungs- und Kommunikationssysteme an, die in der Lage sind, Informationen automatisch zu verarbeiten. Die Computertechnik basiert auf elektronischen Technologien, die es Computern ermöglichen, mit physischen Systemen zu interagieren:
- Entwicklung von Kommunikations- und Steuerschnittstellen zwischen dem Computer und verschiedenen mechanischen und elektrischen Geräten.
- Datenerfassungssysteme, virtuelle Instrumentierung, Robotersteuerung, Beleuchtung usw.
Aktuelle Entwicklung und objektorientierte Technologie
Eine der dringendsten aktuellen Herausforderungen der Softwareindustrie ist es, zuverlässige Systeme und höhere Qualität mit weniger Zeitaufwand und Kosten zu erstellen, um zunehmend komplexere Probleme zu lösen. Es ist notwendig, fortgeschrittenes Software Engineering anzuwenden, um die Belastung in verschiedenen Phasen des Lebenszyklus zu lindern.
Die objektorientierte Technologie (OOT) hat sich als ein ausgezeichnetes Werkzeug zur Lösung komplexer Probleme erwiesen. Sie bietet Vorteile wie Interoperabilität, Modularität, Flexibilität und hohe Wiederverwendbarkeit. Wiederverwendung führt zu schnelleren Entwicklungszyklen und einer besseren Programmqualität.
Objektorientierte Techniken in Kombination mit anderen Tools wie CASE (Computer Aided Software Engineering), visueller Programmierung, Code-Generatoren, datenbankbasierten Methoden, Klassenbibliotheken zur Maximierung der Wiederverwendung und Client-Server-Technologie können den erforderlichen Entwicklungssprung ermöglichen.
Dieses Kapitel beschreibt die wichtigsten Faktoren, die die Softwarequalität bestimmen, und stellt die grundlegenden Prinzipien und Konzepte vor, auf denen das Software Engineering basiert, um qualitativ hochwertige und zuverlässige Software zu gewährleisten. Software Engineering ist die Disziplin oder das Gebiet der Informatik, das Methoden und Techniken zur Entwicklung und Wartung von Qualitätssoftware bereitstellt. Dieses Gebiet befasst sich mit einer Vielzahl von Bereichen der Informatik und Informationstechnologie, wie z. B. dem Bau von Compilern, Betriebssystemen oder der Entwicklung von Intranet/Internet, den Phasen des Lebenszyklus von Informationssystemen und deren Anwendung in Bereichen wie Wirtschaft, Wissenschaft, Medizin, Logistik, Banken, Flugsicherung, Meteorologie, Recht und Internet/Intranet.