Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Software Engineering I
Einführung Version Software Engineering I VE 01: Einführung
2
Software Engineering I
Agenda Vorlesung: Organisatorisches Persönliche Motivation Relevanz von Software Problem: Software-Krise Lösung: Software-Engineering Vorlesung: Ziele und Inhalte Version Software Engineering I VE 01: Einführung 2
3
Software Engineering I
Vorlesung SWE I Organisatorisches Version Software Engineering I VE 01: Einführung
4
Software Engineering I
Moduldetails SWE I Modulname Software Engineering I Modulnummer T2INF2003 ECTS Creditpoints 9 Dauer Semester Workload Präsenz (h) 96 h + 24h Workload Selbststudium (h) 174 h Qualifikationsziele und Kompetenzen Sachkompetenz: Die Studierenden kennen die Grundlagen des Softwareerstellungsprozesses. Sie können eine vorgegebene Problemstellung analysieren und rechnergestützt Lösungen entwerfen, umsetzen und Dokumentieren. Sie kennen die Methoden der jeweiligen Phasen und können sie anwenden. Sie können Lösungsvorschläge für ein gegebenes Problem konkurrierend bewerten und korrigierende Anpassungen vornehmen. Selbstkompetenz: Die Studierenden können sich mit Fachvertretern über Problemanalysen und Lösungsvorschläge, sowie über die Zusammenhänge der einzelnen Phasen austauschen. Sie können einfache Softwareprojekte autonom entwickeln oder bei komplexen Projekten effektiv in einem Team mitwirken. Sie können ihre Entwürfe und Lösungen präsentieren und begründen. In der Diskussion im Team können sie sich kritisch mit verschiedenen Sichtweisen auseinandersetzen und diese erläutern. Sozial-ethische Kompetenz: Sie bewerten die eingesetzten Technologien und schätzen ihre Folgen ab. Übergreifende Handlungskompetenz: Die Studierenden können sich selbsständig in Werkzeuge einarbeiten. Sie verbinden den Softwareentwicklungsprozess mit Techniken des Projektmanagement und beachten während des Projekts Zeit- und Kostenfaktoren. Lerneinheiten und Inhalte - Vorgehensmodelle - Phasen des SW-Engineering und deren Zusammenhänge - Analyse: Lastenheft - Spezifikation: Pflichtenheft, Anwendungsfälle - Methoden zur Repräsentation von Algorithmen, Datenmodellen, Funktionsweisen, Zustands- und Regelabhängigkeiten - Entwurf: SW-Architektur, Systementwurf, Schnittstellenentwurf, Klassendiagramme - Implementierung und Test - Codierrichtlinien und Codequalität, systematisches Testen, Testarten und Testdurchführung, Installation und Einführung - Betrieb und Wartung. Phasenspezifisch werden die verschiedenen Arten der Dokumenation behandelt.Phasenspezifisch werden die verschiedenen Arten der Dokumentation behandelt. Literatur - Helmut Balzert: Lehrbuch der Softwaretechnik: Basiskonzepte und Requirements Engineering, Spektrum akademischer Verlag, 2009 - Helmut Balzert: Lehrbuch der Softwaretechnik: Softwaremanagement, Spektrum akademischer Verlag, 2008 - Ian Sommerville: Software Engineering, Addison-Wesley Longman, 2010 - Peter Liggesmeyer: Software Qualität: Testen, Analysieren und Verifizieren von Software, Spektrum Akademischer Verlag, 2009 Labor Die einzelnen Inhalte der Lehrveranstaltung sollen anhand von einem Projekt vertieft werden. In den einzelnen Projektphasen soll auf den Einsatz von geeigneten Methoden, die Dokumentation sowie die Qualitätssicherung eingegangen werden. Geeignete Werkzeuge sollen zum Einsatz kommen. Bei den gruppenorientierten Laborübungen werden außerfachliche Qualifikationen geübt und (Teil) Ergebnisse präsentiert. Dieses Modul beinhaltet zusätzlich bis zu 24h begleitetes Selbststudium in Form von Übungsstunden, Laboren oder Projekten. Hierbei werden Übungsaufgaben und/oder vertiefende Aufgabenstellungen von den Studierenden bearbeitet. In SWE findet keine Prüfung statt, die an einen Termin gebunden ist. Die kleinen „Klausurteile" werden mit den Studenten vereinbart, ebenso wie die Abgabe der Projektaufgaben, die zwei Drittel der Note ausmachen (über die beiden Semester). Version Software Engineering I VE 01: Einführung
5
Praxisphase im Unternehmen
Projektarbeit SWE I 3.Semester (Sept.– Nov.): Vorlesung: Grundlagenvermittlung Projektarbeit: Analyse, Design, Prototyping, Präsentation (benotet) Praxisphase im Unternehmen Projektarbeit: Realisierung 4. Semester (März – Mai): Vorlesung: Klausurvorbereitung Projektarbeit: Realisierung und Qualitätssicherung, Präsentation (benotet) Klausur Die vorlesungsbegleitende Projektarbeit wird im 3.Semester in der Selbststudiumzeit und im 4.Semester auch in den Präsenzzeiten durchgeführt! Aktueller Vorlesungsplan, Themen für Ihre Projektarbeiten und andere Informationen hier: Organisation in Projektteams von 5-7 Leuten und Auswahl eines der ausgeschriebenen Projektthemen bis nächste Woche. Benennung eines Projektleiters. Vorgehensmodelle Phasen des SW-Engineerings und deren Zusammenhänge Hier soll ein kurzer Überblick gegeben werden, was die Inhalte von Software Engineering sind, sowie welche Phasen es gibt und wie sie zusammenhängen. Die verschiedenen Prozessmodelle sollten am Ende der Vorlesung behandelt werden, wenn die Studenten eine Vorstellung der Aktivitäten und Bedeutung der einzelnen Phasen gewonnen haben. Auch Agile Prozesse einbinden Version Software Engineering I VE 01: Einführung
6
Themen für Projektarbeit
„Vorlesungsunterlagen SWE I“ „Salome-TMF 3.x: Usability-Verbesserung“ „Salome 4.0: Neuentwicklung SDLC-Tool“ „MultiCastor 3.0 “ „Generic Assessment Tool 2.0“ Version Software Engineering I VE 01: Einführung
7
Persönliche Motivation
Sie werden nicht dafür bezahlt, - dass Sie einen Hochschulabschluss haben - dass Sie etwas wissen - dass Sie etwas tun - dass Sie irgendwelche Probleme lösen Sondern dafür dass Sie solche Probleme lösen, bei denen der Nutzen der Lösung höher ist als die Kosten der Lösung (am besten sogar viel höher!) dass Sie mit ihrer Arbeitskraft einen Mehrwert erschaffen. Also lernen Sie bitte: Probleme und ihre Wichtigkeit verstehen Probleme lösen Kosten und Nutzen von Technologien und Methoden abschätzen Ihre eigene Produktivität einzuschätzen Generierung von Mehrwert Version Software Engineering I VE 01: Einführung 7
8
Lösungsorientierung Software Engineering I VE 01: Einführung
VDE-Ingenieurstudie 2005 http: // Verabschiedung von co-dependenten Verhaltensweisen Eigeninitiative, Mangelerkennung. Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung 8
9
Software Engineering I
Vorlesung SWE I Ziele und Inhalte Version Software Engineering I VE 01: Einführung
10
Software Engineering I
Ziele der Vorlesung Vermittlung von Grundwissen in Software Engineering (Softwaretechnik) Das beinhaltet: Inhalt und Wichtigkeit der Softwaretechnik verstehen. Verstehen, was Requirements Engineering ist. Den Softwareentwicklungsprozess und unterschiedliche Vorgehensmodelle verstehen und beschreiben können. Die Phasen der Softwareentwicklung wie „Analyse“, „Entwurf“, „Implementierung“ und „Qualitätssicherung“ beherrschen. Wissen, was man unter Qualitätssicherung versteht und welche Verfahren hierzu existieren. Wissen, wie man Softwareprojekte leitet und durchführt. Den Zweck und den Inhalt unterschiedlicher Dokumentationsarten kennen. Version Software Engineering I VE 01: Einführung
11
Software Engineering I
Ziele der Vorlesung Kenntnisvermittlung über Methoden und Prozesse zur wirtschaftlichen Herstellung und Pflege großer Softwaresysteme in hoher Qualität. Auf dieser Grundlage sollen Sie dann in der Lage sein den Stellenwert von Software Engineering zu beurteilen erworbenes Wissen über Software-Entwicklung systematisch einzuordnen die Ursachen für Schwierigkeiten und Probleme in Software-Projekten zu erkennen als Software-Entwickler erfolgreich mit Anwendern und Managern zusammenzuarbeiten als Software-Architekt systematisch ein großes Softwaresystem zu entwerfen als Software-Projektleiter systematisch und zielgerichtet ein großes Softwareprojekt zu planen, initiieren und zu leiten Die Softwaretechnik (engl. software engineering) beschäftigt sich mit der Herstellung von Software, also der Entwicklung und dem Betrieb von Softwaresystemen und der Organisation und Modellierung der zugehörigen Datenstrukturen. Eine Definition von Helmut Balzert beschreibt das Gebiet als „Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen.“ (Lit.: Balzert, S.36) Grundbegriffe Lernziele – Die wichtigsten Begriffe der Softwaretechnik und ihre Zusammenhänge erklären können. – Prinzipien und Methoden der Softwaretechnik darstellen können – Wissen, was Qualitätsmerkmale sind und welche unterschiedlichen Qualitätsmerkmale es gibt. – Verstehen, was die wesentlichen Entwicklungsphasen in einen Softwareprojekt sind. Version Software Engineering I VE 01: Einführung 11
12
Gliederung des Vorlesungsstoffes
Verfahren Verfahrensmodelle Softwarezyklus Phasen im Detail Basiskonzepte Statische Dynamische Logische Projektmanagement Planung Risiko Qualität Projekt Werkzeuge Wie gehe ich vor bei der Software Entwicklung? Wie modelliere bzw. beschreibe ich Software? Wie führe ich ein Software Projekt? Wie können Werkzeuge unterstützen? SWE 1 Version Software Engineering I VE 01: Einführung
13
Aktivitäten des SW-Lebenszyklus
Was muss verbessert werden? Wie tun? Was tun? Analyse Design Codierung Test Einführung Wartung Wurde es richtig getan? Realisiere es! Wird benutzt… Problemmodell Lösungsmodell Ausführbare Lösung Davis1983 William S. Davis. System Analysis and Design. Addison-Wesley, Reading, MA, 1983. Problemraum Lösungsraum Version Software Engineering I VE 01: Einführung
14
Software Engineering I
Vorlesung SWE I Relevanz von Software Software-Krise Software Engineering Version Software Engineering I VE 01: Einführung
15
Gute Softwareentwicklung ist wichtig
Relevanz von Software Die Wirtschaft aller industrialisierten Länder hängt von Software ab. Immer mehr Systeme werden durch Software gesteuert. Ohne Software geht heute nichts mehr. Die Aufwendungen für Software repräsentieren einen enormen Faktor im Bruttosozialprodukt aller Länder. Software-Kosten dominieren die Kosten von informationstechnischen Systemen. Gute Softwareentwicklung ist wichtig Gute Softwareentwicklung ist wichtig Version Software Engineering I VE 01: Einführung 15
16
Problem: Software-Krise
Die Software-Krise bezeichnet ein in der Mitte der 1960er Jahre verstärkt auftretendes Phänomen: Erstmals überstiegen die Kosten für die Software die Kosten für die Hardware. In der Folge kam es zu den ersten großen gescheiterten Software-Projekten. Version Software Engineering I VE 01: Einführung 16
17
Problem: Software-Krise
Menge und Leistungsfähigkeit der Hardware wachsen dramatisch Informationsverarbeitung im großen Stil wird möglich Ad hoc Verfahren („Code and Fix“), Kunsthandwerk sowie primitive Programmiersprachen in der Software-Entwicklung versagen bei großen Systemen. Die Software-Krise geht im Kern auf das Problem zurück, dass selbst einfache Programme derart komplex aufgebaut sein können, dass sie mathematisch schwer beschreibbar und aufgrund der hohen Zahl von Permutationen (der Vielzahl von internen Software-Zuständen) nicht vollständig testbar sind. Die „Software-Krise“ ist da Version Software Engineering I VE 01: Einführung
18
Symptome der Software-Krise
Softwareprojekte überschreiten geplante Zeit- und Budgetgrenzen. Softwareprojekte werden vorzeitig abgebrochen. Softwareprodukte beinhalten nicht die gewünschte Funktionalität. Softwareprodukte sind fehlerbehaftet. Version Software Engineering I VE 01: Einführung
19
Lösung: Software Engineering
„Software Engineering“ als Antwort auf die „Software-Krise“ formuliert 1968 auf einer NATO-Konferenz in Garmisch-Partenkirchen „Software Engineering: Die Anwendung eines systematischen, disziplinierten und quantifizierbaren Ansatzes auf die Entwicklung, den Betrieb und die Wartung von Software, das heißt, die Anwendung der Prinzipien des Ingenieurwesens auf Software.“ (IEEE ) Im deutschen Sprachraum auch „Softwaretechnik“ genannt. Version Software Engineering I VE 01: Einführung
20
Definition Software Engineering
Zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden, Konzepten, Notationen und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Software-Systemen zur Steigerung der Produktivität, Verbesserung der Qualität und Erleichterung der Führbarkeit von Software-Projekten. [siehe Balzert, Lehrbuch der Softwaretechnik] Version Software Engineering I VE 01: Einführung
21
Einordnung in die Informatik
Der Begriff Informatik leitet sich von dem Begriff Information her. Er entstand in den 60er Jahren. Informatik ist die Wissenschaft von der maschinellen Informationsverarbeitung. Die englische Bezeichnung für Informatik ist Computer Science, also die Wissenschaft, die sich mit Rechnern beschäftigt. Wenn auch die beiden Begriffe verschiedene Blickrichtungen andeuten, bezeichnen sie dennoch das Gleiche. Die Spannweite der Disziplin Informatik ist sehr breit, und demzufolge ist das Gebiet in mehrere Teilgebiete untergliedert. Die Theoretische Informatik beschäftigt sich mit den abstrakten mathematischen und logischen Grundlagen aller Teilgebiete der Informatik. Theorie und Praxis sind in der Informatik enger verwoben, als in vielen anderen Disziplinen, theoretische Erkenntnisse sind schneller und direkter einsetzbar. Durch die theoretischen Arbeiten auf dem Gebiet der formalen Sprachen und der Automatentheorie zum Beispiel hat man das Gebiet des Compilerbaus heute sehr gut im Griff. In Anlehnung an die theoretischen Erkenntnisse sind praktische Werkzeuge entstanden. Diese sind selbst wieder Programme, mit denen ein großer Teil des Compilerbaus automatisiert werden kann. Bevor eine solche Theorie existierte, musste man mit einem Aufwand von ca. 25 Bearbeiter-Jahren (Anzahl der Bearbeiter * Arbeitszeit = 25) für die Konstruktion eines einfachen Compilers rechnen, heute erledigen Studenten eine vergleichbare Aufgabe im Rahmen eines Praktikums. Neben den Beiträgen, die die Theoretische Informatik zur Entwicklung des Gebietes leistet, ist die Kenntnis der theoretischen Strukturen eine wichtige Schulung für jeden, der komplexe Systeme entwirft. Gut durchdachte, theoretisch abgesicherte Entwürfe erweisen sich auch für hochkomplexe Software als sicher und erweiterbar. Software-Systeme, die im Hauruck-Verfahren entstehen, stoßen immer bald an die Grenze, ab der sie nicht mehr weiterentwickelbar sind. Die Entwicklung von Software sollte sich an der Ökonomie der Theoriebildung in der Mathematik orientieren: möglichst wenige Annahmen, möglichst keine Ausnahmen. Die Technische Informatik beschäftigt sich vorwiegend mit der Konstruktion von Rechnern, Speicherchips, schnellen Prozessoren oder Parallelprozessoren, aber auch mit dem Aufbau von Peripheriegeräten wie Festplatten, Druckern und Bildschirmen. Die Grenzen zwischen der Technischen Informatik und der Elektrotechnik sind fließend. An einigen Universitäten gibt es den Studiengang Datentechnik, der gerade diesen Grenzbereich zwischen Elektrotechnik und Informatik zum Gegenstand hat. Man kann vereinfachend sagen, dass die Technische Informatik für die Bereitstellung der Gerätschaften, der so genannten Hardware, zuständig ist, welche die Grundlage jeder maschinellen Informationsverarbeitung darstellt. Naturgemäß muss die Technische Informatik aber auch die beabsichtigten Anwendungsgebiete der Hardware im Auge haben. Insbesondere muss sie die Anforderungen der Programme berücksichtigen, die durch diese Hardware ausgeführt werden sollen. Es ist ein Unterschied, ob ein Rechner extrem viele Daten in begrenzter Zeit verarbeiten soll, wie etwa bei der Wettervorhersage oder bei der Steuerung einer Raumfähre, oder ob er im kommerziellen oder im häuslichen Bereich eingesetzt wird, wo es mehr auf die Unterstützung intuitiver Benutzerführung, die Präsentation von Grafiken, Text oder Sound ankommt. Die Praktische Informatik beschäftigt sich im weitesten Sinne mit den Programmen, die einen Rechner steuern. Im Gegensatz zur Hardware sind solche Programme leicht veränderbar, man spricht daher auch von Software. Es ist ein weiter Schritt von den recht primitiven Operationen, die die Hardware eines Rechners ausführen kann, bis zu den Anwendungsprogrammen, wie etwa Textverarbeitungssystemen, Spielen und Grafiksystemen, mit denen ein Anwender umgeht. Die Brücke zwischen der Hardware und der Anwendungssoftware zu schlagen, ist die Aufgabe der Praktischen Informatik. Ein klassisches Gebiet der Praktischen Informatik ist der Compilerbau. Ein Compiler übersetzt Programme, die in einer technisch-intuitiven Notation, einer so genannten Programmiersprache, formuliert sind, in die stark von den technischen Besonderheiten der Maschine geprägte Notation der Maschinensprache. Es gibt viele populäre Programmiersprachen, darunter BASIC, Cobol, Fortran, Pascal, C, C++, C#, Java, Perl, LISP, ML und PROLOG. Programme, die in solchen Hochsprachen formuliert sind, können nach der Übersetzung durch einen Compiler auf den verschiedensten Maschinen ausgeführt werden oder, wie es im Informatik-Slang heißt, laufen. Ein Maschinenspracheprogramm läuft dagegen immer nur auf dem Maschinentyp, für den es geschrieben wurde. Java hat eine Zwischenlösung wieder populär gemacht. Dabei erzeugt der Compiler einen so genannten Bytecode für eine virtuelle (gedachte) Maschine. Diese Maschine kann dann von den verschiedensten konkreten Rechnern interpretiert werden Die Angewandte Informatik beschäftigt sich mit dem Einsatz von Rechnern in den verschiedensten Bereichen unseres Lebens. Da in den letzten Jahren die Hardware eines Rechners für jeden erschwinglich geworden ist, gibt es auch keinen Bereich mehr, der der Computeranwendung verschlossen ist. Einerseits gilt es, spezialisierte Programme für bestimmte Aufgaben zu erstellen, andererseits müssen Programme und Konzepte entworfen werden, die in vielfältigen Umgebungen einsetzbar sein sollen. Beispiele für solche universell einsetzbaren Systeme sind etwa Textverarbeitungssysteme oder Tabellenkalkulationssysteme (engl. spread sheet). Auch die Angewandte Informatik ist nicht isoliert von den anderen Gebieten denkbar. Es gilt schließlich, sowohl neue Möglichkeiten der Hardware als auch im Zusammenspiel von Theoretischer und Praktischer Informatik entstandene Werkzeuge einer sinnvollen Anwendung zuzuführen. Als Beispiel mögen die Organizer, Palmtops und Tablet-PCs dienen, die im Wesentlichen aus einem Flüssigkristall-Bildschirm bestehen, den man mit einem Griffel handschriftlich beschreiben kann. Die Angewandte Informatik muss die Einsatzmöglichkeiten solcher Geräte, etwa in der mobilen Lagerhaltung, auf der Baustelle oder als vielseitiger, „intelligenter“ Terminkalender, entwickeln. Die Hardware wurde von der Technischen Informatik konstruiert, die Softwaregrundlagen, etwa zur Handschrifterkennung, von der Praktischen Informatik aufgrund der Ergebnisse der Theoretischen Informatik gewonnen. Wenn man im deutschsprachigen Raum auch diese Einteilung der Informatik vornimmt, so ist es klar, dass die einzelnen Gebiete nicht isoliert und ihre jeweiligen Grenzen nicht wohldefiniert sind. Die Technische Informatik überlappt sich stark mit der Praktischen Informatik, jene wieder mit der Theoretischen Informatik. Auch die Grenzen zwischen der Praktischen und der Angewandten Informatik sind fließend. Gleichgültig in welchem Bereich man später einmal arbeiten möchte, muss man auch die wichtigsten Methoden der Nachbargebiete kennen lernen, um die Möglichkeiten seines Gebietes entfalten und entwickeln zu lernen, aber auch um die Grenzen abschätzen zu können. Neben der in diese vier Bereiche eingeteilten Informatik haben viele Anwendungsgebiete ihre eigenen Informatik-Ableger eingerichtet. So spricht man zum Beispiel von der Medizinischen Informatik, der Wirtschaftsinformatik, der Medieninformatik, der Bio-Informatik, der Linguistischen Informatik, der Juristischen Informatik oder der Chemie-Informatik. Für einige dieser Bereiche gibt es an Fachhochschulen und Universitäten bereits Studiengänge. Insbesondere geht es darum, fundierte Kenntnisse über das angestrebte Anwendungsgebiet mit grundlegenden Kenntnissen informatischer Methoden zu verbinden. Softwaretechnik (Software Engineering) bezeichnet die ingenieurmäßige Vorgehensweise bei der Software-/Systementwicklung. Der Begriff wird sowohl für das wissenschaftliche Themengebiet der Entwicklung entsprechender Prinzipien, Vorgehensmodelle, Verfahren, Methoden und Werkzeuge verwendet als auch für ihre konkrete Nutzung in der Praxis. Geprägt wurde der Begriff 1968 von Professor Bauer auf einer Nato-Konferenz in Garmisch, die sich mit der sogenannten Softwarekrise beschäftigte. Die Krise bestand darin, dass zwar für damalige Verhältnisse sehr leistungsfähige Computerhardware und dies mit sinkenden Kosten zur Verfügung stand, auf der anderen Seite aber große Probleme bei insbesondere komplexeren Softwaresystemen zu verzeichnen waren: Die Entwicklung dauerte insgesamt zu lange und war zu teuer sowie die Qualität der entwickelten Software unbefriedigend, so dass sie schwer zu warten war. Insgesamt explodierten die Kosten sowohl für die Systementwicklung als auch für die Software-Wartung. Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung 21
22
SWE -Übersicht Software Engineering I VE 01: Einführung
Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung
23
Arten von Software Individualsoftware: Einzelanfertigung gemäß Kundenauftrag (von klein bis sehr groß). Standardsoftware: Serienprodukt; sie kann anwendungs- oder produktorientiert sein, unterliegt meist inkrementeller Weiterentwicklung. Der Begriff „Produktsoftware“ wird of auch für Standardsoftware gebraucht . Individualsoftware kann auch Anpassung einer Standardsoftware sein (z.B. SAP) Produktorientiert = Embedded Software für ein bestimmtes Produkt. Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung 23
24
Stand-Alone Anwendungen
Vielfalt von Software Stand-Alone Anwendungen Applikationen, welche auf einem lokalen Computer ausgeführt werden (z.B. auf einem PC). Sie beinhalten alle notwendigen Funktionalitäten und benötigen keine Verbindung zu einem Netzwerk. Interaktive, transaktionsbasierte Anwendungen Applikationen, die auf einem entfernten Computer ausgeführt werden und auf die von lokalen PCs oder Terminals über ein Netzwerk zugegriffen wird. Das beinhaltet Web-Anwendungen wie z.B. eCommerce, Bankensoftware, …. Ian Sommerville Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung 24
25
Stapelverarbeitungssysteme
Vielfalt von Software Stapelverarbeitungssysteme Geschäftsanwendungen, welche große Mengen an Eingabedaten verarbeiten können. Unterhaltungssysteme Systeme, welche primär dem persönlichen Gebrauch und zu Unterhaltungszwecken dienen. Modellierungs- und Simulationssysteme Systeme für wissenschaftliche Zwecke, z.B. um komplexe naturwissenschaftliche Prozesse oder Systeme nachzubilden. Ian Sommerville Bei einem Stapelverarbeitungssystem kann die Software verwendet werden, um Gruppierungen und Verknüpfungen zwischen Identitäten in einer oder mehreren Dateien zu erkennen und zu melden. Die Ergebnisse lassen sich zur visuellen Analyse in das von der jeweiligen Organisation verwendete Programm einspeisen. Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung 25
26
Datenermittlungssysteme
Vielfalt von Software Datenermittlungssysteme Systeme, welche mit Hilfe von Sensoren Daten aus ihrer Umgebung sammeln und diese Daten an andere Systeme zur Weiterverarbeitung weiterleiten. Systeme aus Systemen Systeme, die aus einer Anzahl anderer Softwaresysteme zusammengestellt wurden. Eingebettete Softwaresysteme Hierbei handelt es sich um Softwaresysteme zum Steuern und Kontrollieren von Hardwaregeräten. Diese eingebetteten Systeme (embedded systems) sind zahlenmäßig die meist verbreiteten Softwaresysteme. Hierzu gehört alles von der Haussteuerung bis zur Eieruhr. Ian Sommerville Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung 26
27
Die zu verwendenden Methoden und Werkzeuge hängen ab von:
Vielfalt von Software Zusammenfassung Es gibt viele verschiedene Arten von Softwaresystemen und es gibt keine universelle Entwicklungsmethode für alle diese Arten. Die zu verwendenden Methoden und Werkzeuge hängen ab von: der Art der zu entwickelnden Anwendung, den Kundenanforderungen und dem fachlichen Hintergrund des Entwicklungsteams. Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung
28
Charakteristika von Software
SW ist immateriell, man kann sie nicht „anfassen“ oder „sehen“ SW ist leicht änderbar SW altert Technischer Kontext ändert sich (Betriebssystem-/Datenbankversion) Anwendungskontext ändert sich (neue Prozesse müssen integriert/unterstützt werden) SW ist schwer zu "vermessen" Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung
29
Software-Krise aktuell
Die Software-Krise kann auch heute nicht als beendet betrachtet werden. Die Komplexität der Software-Systeme steigt weiter und damit die Probleme, auch wenn es in der Modernisierung und Strukturierung des Software-Entwicklungsprozesses große Fortschritte gab. Software Engineering ist im Mittel schwieriger als das Engineering klassischer Systeme und Produkte Beständiger Verbesserungsprozess nötig! Trotz Software Engineering gibt es nach wie vor ... ... Termin- und Kostenüberschreitungen ... ganz oder teilweise gescheiterte Projekte ... zu wenig konsequent gelebtes Software Engineering Was wurde trotzdem erreicht ? Wir schaffen heute Software einer Größe und Komplexität, die vor 20 Jahren weit jenseits des Machbaren lag Viele Routineprobleme werden heute gut beherrscht Version Software Engineering I VE 01: Einführung Version Software Engineering I VE 1: Einführung 29
30
Software Engineering I
Abgrenzung Software Engineering != Programmieren Sondern Problemlösung Problem bzw. Anforderungen analysieren Lösung erarbeiten System entwickeln Angewendete Techniken Modellierung Wissensbeschaffung Entscheidungsfindung Version Software Engineering I VE 01: Einführung
31
Software Engineering I
Begriffsdefinitonen Version Software Engineering I VE 01: Einführung
32
Begriffsdefinition: Engineering
Systematisches Herangehen Genaue Problemdefinition Wiederholende Muster erkennen Techniken entwickeln, um Klassen von Problemen zu lösen Bestehende Lösungen wiederverwenden Definieren von formalen Modellen zur Förderung von Automatisierung Anwendung von Standard-Werkzeugen Version Software Engineering I VE 01: Einführung
33
Begriffsdefinition: Prinzipien
Prinzipien sind Grundsätze, die man seinem Handeln zugrunde legt. Sie sind allgemeingültig, abstrakt und bilden eine theoretische Grundlage. Sie enthalten keine Aussage darüber, wie das Prinzip erreicht werden kann. Prinzipien der Softwaretechnik: Abstraktion Konkretisierung Perspektivenbildung Strukturierung Bindung (Kohäsion) und Kopplung Hierarchisierung Modularisierung Standardisierung Kapselung Lokalität Prinzip der Abstraktion: Verallgemeinerung Erfassen des Wesentlichen Ergebnis: Modell der realen Welt Klassenbildend, Kompexbildend Prinzip der Strukturierung: Zerlegung in wechselseitig abhängige Komponenten Basis für arbeitsteiliges Vorgehen Erhöhung der Verständlichkeit Verbesserung der Wartbarkeit Erleichterung der Einarbeitung Unterstü tzung von Wiederverwendung Prinzip der Hierarchisierung: Spezialfall der Strukturierung Rangordnung, Über-/Unterordnung Basiert auf Baumstrukturen Festlegung anhand von Bedeutungen, Eigenschaften oder Zusammenhängen Prinzip der Modularisierung: Aufteilung in (austauschbare) Bausteine Festgelegte Schnittstellen (information hiding) Modul ist kontextunabhängig Vorteile: Höhere Änderungsfreundlichkeit Bessere Wartbarkeit Bessere Strukturierung Bessere Überprüfbarkeit Prinzip der Standardisierung: Vereinheitlichung des Entwicklungsprozesses Einhalten überbetrieblicher Standards Einhalten betrieblicher Richtlinien Einhalten interner Standards Bessere Akzeptanz am Markt Einheitliche Gestaltung der Dokumentation / des Codes Nutzbarkeit externer Komponenten Erleichterung der Einarbeitung und Wartung Version Software Engineering I VE 01: Einführung 33
34
Begriffsdefinition: Methoden
Methoden sind planmäßige, begründete Vorgehensweisen zur Erreichung von festgelegten Zielen. Zu Methoden gehören eine Notation, systematische Handlungsanweisungen und Regeln zur Überprüfung der Ergebnisse. Anwendung von Prinzipien Nicht auf Intuition basierend Lehrbar Einfach und leicht zu verstehen Top-Down Bottom-up Version Software Engineering I VE 01: Einführung 34
35
Begriffsdefinition: Werkzeuge
Werkzeuge (Tools) dienen der automatisierten Unterstützung von Methoden und Notationen zur Steigerung von Effektivität und Effizienz. Charakteristika Erzwingen der Einhaltung von Methoden, Standards, Notationen Erhöhung der Produktivität Beispiel Editor, Interpreter, Compiler, Debugger CASE-Werkzeuge (Computer Aided Software Engineering) Testsysteme Verfahren = Verfahren sind ausführbare Vorschriften oder Anweisungen zum gezielten Einsatz von Methoden Standard = Zur Vorschrift erhobene Verfahren (auch Richtlinie, Norm) Notation = stellt Informationen durch Symbole dar (textuell – grafisch / informal – formal) Version Software Engineering I VE 01: Einführung 35
36
Teilaspekte des Software Engineerings
Entwicklungsmethodik zur Modellierung und Dokumentation zur Anforderungserfassung und -analyse zum Systementwurf zur Implementierung ( Programmiermethoden) Projektmanagement zur wirtschaftlichen und koordinierten Bearbeitung der Arbeitspakete Qualitätssicherung zur Herstellung und Überwachung einer hinreichenden Produktqualität Version Software Engineering I VE 01: Einführung
37
Software Engineering I
Testfragen Version Software Engineering I VE 01: Einführung
38
Software Engineering I
Fragen und Übungen Warum ist Software so schwer zu entwickeln? Man kann Software nicht „anfassen“ und nicht „sehen“. Softwaresysteme werden immer komplexer. Man muss zunehmend mit Einschränkungen aus „Altlasten“ umgehen. Software kann nur schwer geändert werden. Ian Sommerville Version Software Engineering I VE 01: Einführung 38
39
Software Engineering I
Fragen und Übungen Welchen Aussagen stimmen Sie zu? Software beeinflusst unser tägliches Leben. Softwaretechnik beinhaltet Theorien und Methoden zur Entwicklung von Software. Die Informationsflut und Komplexität bei der Softwareerstellung überfordert eine einzelne Person. Die Entwicklung der Software ist wesentlich aufwändiger als deren Wartung. Ian Sommerville Version Software Engineering I VE 01: Einführung 39
40
Software Engineering I
Fragen und Übungen Welchen Aussagen stimmen Sie zu? Ein Softwareprodukt besteht nur aus dem Programmcode. Softwaretechnik befasst sich nur mit der Herstellung von Software. Ein Vorgehensmodell ist die vereinfachte Beschreibung eines Softwareentwicklungsprozesses. Die Wartung von Software ist teurer als die Erstellung von Software. Neue Anforderungen erhöhen die Fehlerzahl von großen Softwaresystemen. Version Software Engineering I VE 01: Einführung 40
41
Vielen Dank für Ihre Aufmerksamkeit Fragen ?
Version Software Engineering I VE 01: Einführung
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.