Kapitel 9 Software Engineering Basiswissen Wirtschaftsinformatik 3 Auflage
Kapitel 9: Software Engineering Basiswissen Wirtschaftsinformatik 3. Auflage Peter Weber / Roland Gabriel / Thomas Lux Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 1
Inhalt 9. 1 Gegenstand & Ziele 9. 2 Gestaltungsprozess 9. 3 Ziele bei der Softwareentwicklung 9. 4 Programmiersprachen im Überblick 9. 5 Objektorientierte Softwareentwicklung 9. 6 Aufwandsschätzung 9. 7 Projektmanagement 9. 8 Beispiel zum CPM-Netzplan Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 2
9. 1 Gegenstand & Ziele Gestaltung bzw. Erstellung eines Softwaresystems. Entwicklung bzw. Programmierung eines Softwaresystems mit der Hilfe von Programmiersprachen. Beschaffung eines Softwaresystems bzw. Produktes am Softwaremarkt und seine Anpassung bzw. Integration in eine Unternehmung. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 3
9. 2 Gestaltungsprozess 3 Phasen bei der Gestaltung von Software (Lebenszyklus) t₀ = Entstehung der Idee t₁ + t₂ = Planungsphase t₃ = nach einer Positiven Entscheidung der Planungsphase beginnt die Entwicklung t₄ = Abschluss der Entwicklungsphase t₅ = Software wird im Betrieb eingesetzt und muss gepflegt und gewartet werden Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 4
9. 2 Gestaltungsprozess Software Engineering Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 5
9. 2 Gestaltungsprozess Vorgehensmodelle sind Abstraktionen zur Vorgehensbeschreibung im Software Engineering. Beispiele sind das Spiralmodell, das Phasenmodell, Extreme Programming und Scrum. Spiralmodell 1. Beschreibung der Rahmenbedingungen und Festlegung der Ziele. 2. Evaluierung der Lösungsalternativen und Entwicklung von Strategien zur Minderung bzw. Vermeidung von Risiken. 3. Das Zwischenprodukt wird umgesetzt und reflektiert. 4. Planung der nächsten Iteration. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 6
9. 2 Gestaltungsprozess Exkurs: Lasten- und Pflichtenheft Aufgaben und Fragen: Was ist der Zweck eines Lastenhefts/eines Pflichtenhefts? Welche Bestandteile hat ein Lastenheft/Pflichtenheft? Was sind die Unterschiede zwischen Lastenheft und Pflichtenheft? Welche Vorteile bietet die Erstellung eines Lastenhefts/Pflichtenhefts? Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 7
9. 2 Gestaltungsprozess Phasenmodell Phase 1: Detaillierte Planungen des Projektablaufs und Umfangs sowie eine Einschätzung des Nutzens und der Kosten der Software. Phase 2: Eine Anforderungsanalyse bei Neusystemen oder eine Schwachstellenanalyse bei bereits eingesetzten Systemen wird durchgeführt und ein Sollkonzept wird erstellt. Phase 3: Entwurf der späteren Systemarchitektur. Phase 4: Implementierung bzw. Programmierung. Phase 5: Übergabe und Freigabe des Softwaresystems und die Einführung im Einsatzbereich. Phase 6: Einsatzphase beginnt, wobei Fehler behoben werden und neue Anforderungen umgesetzt werden. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 8
9. 2 Gestaltungsprozess Phasenmodell [Balz 08, S. 51 ff. ] Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 9
9. 2 Gestaltungsprozess Agile Vorgehensmodelle Flexiblerer Projektablauf als bei den klassischen Ansätzen. Beginnen frühzeitig mit der Umsetzung und Entwicklung von prototypischen Ergebnissen. Prototypische Ergebnisse werden durch regelmäßige Test reflektiert und weiterentwickelt. Beispiel: Extreme Programming Flexibler Projektablauf mit regelmäßigen Projektänderungen und einem iterativ ausgestaltetem Ansatz. Bekannte Merkmale sind die ständige Kommunikation und Einbindung des Kunden, einfache Funktionalität und vordergründige Teamarbeit Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 10
9. 2 Gestaltungsprozess Scrum Framework [Sc. We 17] Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 11
9. 2 Gestaltung Einflussfaktoren Die Auswahl des Vorgehensmodells und der endgültige Ablauf des Projektes hängt von verschiedenen Faktoren ab: Die Komplexität der Problemstellung Bestimmt durch den Umfang der gegebenen Daten, der vorhanden Struktur und des relevanten Umfangs. Der Wissens- und Erfahrungsstand Beteiligte Personen einschließlich IT-Spezialisten, Softwareentwickler, Planer, Manager und Endbenutzer. Informationstechniken Programmiersprachen, Entwicklungssoftware, Hardware- und Betriebssystemplattformen Strategische (IT-) Ziele Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 12
9. 3 Ziele bei der Softwareentwicklung Wirtschaftlichkeit Das wichtigste Ziel bei der Softwareentwicklung aus Sicht des Managements. Der Ertrag soll gesteigert und die Kosten gesenkt werden. Performance Das Hauptziel der IT-Fachleute. Das System soll die fachlichen Anforderungen erfüllen und möglichst leistungsfähig sein (z. B. hinsichtlich der Verarbeitungsgeschwindigkeit und Robustheit). Arbeitsqualität Wichtig für die Endbenutzer des Systems. Vorteile der Software müssen für die Endbenutzer erkennbar und umsetzbar sein. Benutzerfreundlichkeit Der Ablauf der Software muss transparent und Datensicherheit und Datenschutz müssen gewährleistet sein. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 13
9. 4 Programmiersprachen Die Programmierung eines Programms erfolgt immer in einer Programmiersprachen werden aufgrund ihrer historischen Entwicklung in Generationen eingeteilt: 1. Generation: Maschinensprachen 2. Generation: Assemblersprachen 3. Generation: Höherer Programmiersprachen 4. Generation: 4 GL-Sprachen und alternative Programmiersprachen Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 14
9. 4 Programmiersprachen 1. Generation / 2. Generation Maschinensprachen und Assemblersprachen sind maschinenorientierte Sprachen. Ein Prozessor kann nur Maschinensprache verarbeiten. Maschinensprachen Alle Befehle und Operatoren sind binär (in 0 oder 1) codiert. Müssen sich an der jeweiligen Architektur des Prozessors orientieren. Sind unübersichtlich und fehleranfällig. Assemblersprachen Ermöglichten die Formulierung der Anweisungen in mnemotechnischen Abkürzungen. Der Assembler übersetzt die Anweisungen in Maschinensprache. Müssen sich auch an die Architektur des Prozessors anpassen. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 15
9. 4 Programmiersprachen: Assembler- und Maschinensprache Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 16
9. 4 Programmiersprachen Höhere Programmiersprachen sind maschinenunabhängige und problemorientierte Programmiersprachen, die abstrakte Anweisungen ausführen können. Die Übersetzung in eine Maschinensprache erfolgt durch einen Übersetzer wie z. B. einen Compiler. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 17
9. 4 Programmiersprachen 4 GL-Sprachen Ermöglichen das Programmieren mit weniger Programmcode und Programmierkenntnisse Die Datenbanksprache SQL (Structured Query Language) ist ein bekanntes Beispiel SQL kann sehr viel Programmcode durch eine einzelne Anweisung ersetzen Beispiel: SELECT Befehl (siehe Kapitel „Datenbanksysteme“) Alternative Programmiersprachen Spezialisiert auf bestimmte Anwendungsbereiche wie Künstliche Intelligenz (KI-Sprachen), Visuelle Sprachen, usw. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 18
9. 4 Programmiersprachen Programmierumgebungen IDEs (Integrated Development Environments) Bieten vielfältige Funktionen an, die dem Programmierer die Verwendung komplexer Programmiersprachen erleichtert. Fokus liegt auf der Programmiertätigkeit. CASE-Tools Eine Sammlung von Werkzeugen, die den gesamten Software-Entwicklungsprozess unterstützt. z. B. Tools zur Modellierung von Prozessen als Teil der Ist-Analyse. CASE-Tools werden in der Objektorientierten Software-Entwicklung verwendet. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 19
9. 4 Programmiersprachen Eclipse als Beispiel eines IDEs [Ecli 17] Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 20
9. 5 Objektorientierte Software-Entwicklung Basiert auf den Grundlagen der Objektorientierung Die Programmiersprachen werden stärker an menschliche Denkmuster angepasst, im Gegensatz zu den Programmiersprachen der 3. Generation. Das Objekt steht im Mittelpunkt der Objektorientierung und verfügt über Attribute, die den Zustand des Objektes beschreiben. Methoden ermöglichen es den Zustand des Objektes zu verändern oder Informationen zwischen dem Objekt und der Umwelt auszutauschen. Klassen definieren gleichartige Objekte zusammen und beschreiben die Attribute und Methoden des Objektes. Klassen werden in Klassendiagrammen dargestellt mit der UML (Unified Modeling Language) Notation. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 21
9. 5 Objektorientierte Software-Entwicklung Klassendiagramme Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 22
9. 5 Objektorientierte Softwareentwicklung Phasen Objektorientierte Analyse (OOA) Objektorientiertes Design (OOD) Entwurf der Systemkomponenten. Objektorientierte Implementierung (OOI) Planung des Projektes und Definition der Anforderungen. Implementierung des Systems. Der Entwicklungsprozess wird durch verschiedene Modelle der UML unterstützt. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 23
9. 5 Objektorientierte Software-Entwicklung Struktur und Verhaltensdiagramme Strukturdiagramme stellen die statischen Aspekte des Systems dar Verhaltensdiagramme stellen die dynamischen Aspekte dar Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 24
9. 6 Aufwandsschätzung Der Aufwand einer zu erbringenden Leistung wird meist in Geldeinheiten, Materialverbrauch oder Arbeitsstunden ausgedrückt. Bei einem IT-Entwicklungsprojekt wird der Aufwand in Mitarbeitermonaten gemessen, da die Ressource Mitarbeiter mit dem Kostenfaktor Zeit den meisten Aufwand darstellt. Aufwandsschätzungen versuchen den entstehenden Aufwand vorzeitig zu bewerten. Die Genauigkeit der Aufwandsschätzung wird durch Grundprobleme und Einflussfaktoren beeinträchtigt Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 25
9. 6 Aufwandsschätzung Grundprobleme Schätzgenauigkeit: Aufwandsschätzung beruht auf unsicheren Daten Schätzobjekt Schätzgenauigkeit hängt von den Informationen über das zu schätzende Objekt ab Genaue Informationen sind kostenaufwendig Aufwandschätzung findet in der Planungsphase statt (i. d. R. wenig Informationen) Dokumentation: Zu geringe Dokumentation erschwert die Nutzung von Erfahrungen Altdaten Mangelnde Vergleichsdaten können zur Fehlkalkulation bei der Aufwandsschätzung führen Einstellungen der Projektbeteiligten empfinden Aufwandsschätzungen oft als unwichtig Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 26
9. 6 Aufwandsschätzung Einflussfaktoren Kosten Quantität Faktoren bezüglich Größe, Umfang und Komplexität des Projektes. Qualität Alle Faktoren, die Entwicklung finanziell beeinflussen, z. B. Anzahl der Projektbeteiligten. Die Qualitätsmerkmale von Software. Zeit Die Projektdauer, die von der Mitarbeiter Anzahl abhängt. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 27
9. 6 Aufwandsschätzung Teufelsquadrat von Sneed Die vier Einflussfaktoren stehen in einer Wechselbeziehung zueinander und konkurrieren miteinander. Die Produktivität wird durch die Fläche des inneren Rechtecks dargestellt. Eine positive Veränderung einer der Einflussfaktoren würde sich negative auf einer der anderen Einflussfaktoren auswirken. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 28
9. 6 Aufwandsschätzung Methoden zur Aufwandsschätzung Analogiemethode Vergleiche mit ähnlichen Projekten, z. B hinsichtlich Anwendungsgebiet, Produktumfang und Programmiersprache. Relationsmethode Vergleiche mit den Werten vergangener Entwicklungen. Faktoren werden unterschiedlich gewichtet. Multiplikatormethode Softwaresystem wird in Teilprodukte und Kategorien untergegliedert. Aufwand der Teilprodukte werden aus alten Projekten abgeleitet und gewichtet. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 29
9. 6 Aufwandsschätzung Methoden zur Aufwandsschätzung Gewichtungsmethode Prozentsatzmethode Festgelegte Einflussfaktoren werden mit mathematischen Formeln bewertet. Aufgrund einer abgeschlossenen Phase des Software Engineering-Prozesses wird der Aufwand der weiteren Phasen geschätzt. Methode der parametrischen Gleichungen Ermittelt den Korrelationsfaktor zwischen den Einflussgrößen und dem Entwicklungsaufwand. Stellt eine Gleichung auf mit den Einflussgrößen, die höchste Korrelation nachweisen. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 30
9. 6 Aufwandsschätzung Verfahren zur Aufwandsschätzung COCOMO-Verfahren Mithilfe der Regressionsanalyse wird eine funktionale Relation zwischen der Systemgröße in LOC (Lines of Code) und dem Aufwand der Erstellung hergeleitet. Zielkonflikt zwischen dem Zeitpunkt der Schätzung (möglichst früh) und der Genauigkeit der Ergebnisse. Function-Point-Verfahren Annahme: Der Aufwand für die Erstellung von Software hängt maßgeblich vom Umfang und dem Schwierigkeitsgrad der Produktumsetzung ab. Aufwand wird hier also nicht aus der Systemgröße abgeleitet, sondern aus den Produktanforderungen, welche aus der Funktionalität des Systems aus Anwendersicht ermittelt werden. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 31
9. 6 Aufwandsschätzung Function Point-Verfahren Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 32
9. 7 Projektmanagement Projekt Eine einmalige, spezielle Aufgabe, die nicht Routine bzw. Standardarbeit einer Unternehmung darstellt. Hohe Komplexität und klares Ziel. Zeitlich durch Starttermin und Projektendtermin begrenzt. Festgelegtes Projektbudget und Überwachung durch Projekt-Controlling. Durchgeführt von einem Projektteam mit einer geeigneten Projektorganisation und einem Projektleiter. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 33
9. 7 Projektmanagement Netzplantechnik Critical Path Method (CPM) Eine Methode, die Aktivitäten eines Projektes und ihre logischen Abhängigkeiten in einem Strukturplan grafische darstellt. Kann mithilfe der Zeiten der einzelnen Aktivitäten den Pfad mit der höchsten Zeitdauer (der kritische Pfad) bestimmen. Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik 34
9. 8 Beispiel zum CPM-Netzplan Planungsschritt 1: Strukturplan Aktivitätentabelle Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik CPM-Netzplan 35
9. 8 Beispiel zum CPM-Netzplan Planungsschritt 2: Zeitplanung CPM-Netzplan (früheste Zeiten) Copyright 2018: Weber / Gabriel / Lux - Basiswissen Wirtschaftsinformatik CPM-Netzplan (späteste Zeiten) 36
- Slides: 36