Was ist Software Engineering? - Universität Basel | Informatik

Werbung
Software Engineering mit Übungen
Franz-Josef Elmer, Universität Basel, HS 2016
Software Engineering
2
Organisation
–
–
Ort: Kleiner Hörsaal 120, Bernoullianum 32
Ablauf:
16:15
Vorlesung
17:00
17:15
Pause
Übung
18:45
–
Hausaufgaben:
●
●
●
–
–
Vorlesungspräsentation der nächsten Vorlesung lesen und
durcharbeiten.
Andere Texte lesen und durcharbeiten.
Arbeiten am Softwareprojekt Data Repository.
Betreuer: Silvan Heller, Fabio Hirt
Prüfung: Schriftlich, 16:15-17:15, 20.12.
Kreditpunkte: 6 Punkte
●
●
Mitmachen in den Übungen und im Softwareprojekt
Schriftliche Prüfung
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
3
Was ist Software Engineering?
–
Zielorientierte Bereitstellung und systematische Verwendung von
Prinzipien, Methoden und Werkzeugen für die arbeitsteilige,
ingenieurmäßige Entwicklung und Anwendung von
umfangreichen Softwaresystemen.
(Balzert, Lehrbuch der Software-Technik, 1998 (S.36), 2009 (S.17)
–
The application of a systematic, disciplined, quantifiable approach
to the development, operation, and maintenance of software; that
is, the application of engineering to software.
(Encyclopedia of Software Engineering, Vol. 2, 1994, p. 1177)
–
A discipline whose aim is the production of quality software,
delivered on time, within budget, and satisfying users' needs.
(Stephen R. Schach, Software Engineering, 1993)
–
Software engineering is the study and application of engineering
to the design, development, and maintenance of software..
(Wikipedia, September 2012)
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
4
Was ist Software?
–
Die Gesamtheit von Softwarekomponenten (Programme,
Dokumentationen usw.), die als Ganzes entwickelt, vertrieben,
angewendet und gewartet werden.
(R. Dumke, Software Engineering, 2000, S.3)
–
Mögliche Bestandteile von Software:
●
●
●
●
●
●
Computer Programm(e)
Konfigurationsdaten
Installationsprogramm(e)
Benutzerhandbuch
Handbuch für Systemadministratoren
API (Application Programming Interface) Dokumentation
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
5
Software Engineering vs Programmieren
Analysieren
Spezifizieren
Dokumentieren
Entwerfen
Programmieren
= Implementieren
Programmieren
Testen
Konfigurieren
Installieren
Instandhalten
Planen
Verwalten
Kommunizieren
Software Engineering wenn
– Auftraggeber ≠ Programmierer ≠ Benutzer
– grosse, komplexe Software
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
6
Softwareentwicklung:
Kunst oder Wissenschaft?
–
Softwareentwickler: Ingenieur oder Handwerker?
–
Software ist anders als Produkte wie Auto oder Hochhaus:
●
●
–
Beruht nicht auf physikalische Prinzipien deshalb
– schwieriger sich die Software vorzustellen
– kann nicht berechnet werden wie z.B. die Statik einer Brücke
– es ist schwierig ihre Korrektheit zu überprüfen
– kann Software leicht geändert werden
– kann Software vermessen werden (Qualitätskontrolle?)
Besteht aus einer riesigen Zahl von Einzelteilen (Codezeilen) deshalb
– tausende Weg führen nach Rom
– welcher ist der beste, billigste, schnellste?
Zur Softwareentwicklung braucht es:
●
Methoden, Werkzeuge und vor allem
Erfahrung
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
7
Softwareentwicklung als Prozess
–
Beginnt mit der Idee ein Problem oder Aufgabe mittels Computer
und Software zu lösen.
–
Endet nicht mit der Auslieferung der Software.
–
Software Engineering ist der Versuch diesen Prozess
systematisch anzugehen.
–
Am Prozess beteiligte Personen:
●
●
●
●
●
●
●
(Potentielle) Benutzer der Software
Auftraggeber
Projektleiter
Softwareentwickler
GUI Designer
Tester
Systemadministrator
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
8
Aspekte des Softwareentwicklungsprozess
–
Analyse:
Was genau soll die Software können?
–
Entwurf:
Wie soll die Software arbeiten?
–
Implementierung:
Ausführbaren Code erzeugen
–
Test:
Unit Tests, Benutzertests, Integrationstests, Systemtests
–
Inbetriebnahme:
Installation, Konfiguration, Schulung, organisatorische Umstellung
–
Wartung:
Fehlerbeseitigung, Software ändern und erweitern
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
9
Teilgebiete des Software Engineering
–
Requirements Engineering
–
Architektur und Entwurf (Design)
–
Implementierung
–
Qualitätsmanagement (QA = Quality Assurance)
–
Konfigurationsmanagement
–
Dokumentation
–
Projektmanagement
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
10
Requirements Engineering
–
Requirements: Anforderungen an die Software
●
–
Spezifikationen
●
–
Was soll die Software leisten?
Wie soll die Software technisch funktionieren?
Aufgabe des Requirement Engineers
●
●
●
●
Ermittlung der Anforderungen
Analyse der Anforderungen
Anforderungen dokumentieren
Spezifikationen schreiben
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
11
Architektur und Design
–
Strukturierung der Software
●
●
–
Architektur
●
●
–
●
Strukturen im Kleinen
Entwurf hängt vom Typ der Programmiersprache (z.B. objektorientiert
versus funktional) ab
Unified Modeling Language (UML)
●
–
Big Picture
Physische und logische Zerlegung des Softwaresystems in
Teilsysteme. (z.B. Client-Server Architektur)
Design
●
–
Zerlegung in Teilbereiche
Koppelung der Teilbereiche
grafische Beschreibungssprache welche verschiedene (Teil)Ansichten
auf Architektur und Design erlaubt.
Best Practice
●
●
Prinzipien zur Strukturierung von Software
Architektur und Design Patterns
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
12
Implementierung
–
Umsetzung der Spezifikation in ausführbaren Code nach den
Architektur- und Designvorgaben = Programmieren
–
Programmiersprache
●
●
–
Technologien
●
●
–
Typ (z.B. prozedural versus funktional)
Version (z.B. Java 6 versus Java 8)
Frameworks. Beispiel: JDBC (Java Database Connectivity)
Bibiliotheken (Libraries). Beispiel: Hibernate
Refactoring: Verbesserung des Codes ohne die Funktionalität
der Software zu ändern.
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
13
Qualitätsmanagement
–
Reviews
●
●
●
●
–
Testing
●
●
●
●
●
●
●
–
Requirements
Architektur und Design
Code
Dokumentation
Unit Tests
GUI Tests
System Tests
Akzeptanz Tests
Integrations Tests
Manuelle Tests
Automatische Tests
Metriken
●
Statistische Daten über den Code. Beispiel: LOC (Lines of Code)
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
14
Konfiguration Management
–
Source Code Management
●
–
Build Management
●
–
Erzeugung der lauffähigen Software
Deployment
●
●
●
–
Versionsverwaltung der Software
Auslieferung
Installation
Konfiguration
Change Management
●
Handhabung von Bugs und Änderungswünschen (Change Requests)
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Software Engineering
15
Dokumentation
–
–
–
–
–
–
–
–
–
–
Anforderungen (Pflichtenheft)
Spezifikationen (Lastenheft)
Architektur und Design
Code inklusive Kommentare
API (Application Programming Interface)
Testfälle
Benutzerhandbücher
Administratorhandbuch
Tutorials
Videos, Webcasts und Webinars
Universität Basel, HS 2016
© Franz-Josef Elmer 2016
Herunterladen