Software Engineering - Past Paper - Wintersemester 2024/2025 - PDF
Document Details
Uploaded by CoolStrength
Universität Osnabrück
2024
Universität Osnabrück
Elke Pulvermüller
Tags
Summary
This document is a lecture slide set for a Software Engineering course, outlining lessons on configuration management for software projects during the 2024/2025 Winter semester at the University of Osnabrück. The content covers topics such as motivation and fundamentals, various software models, and a detailed examination of configuration management techniques.
Full Transcript
Foliensatz Nr. 5 Software Engineering Prof. Elke Pulvermüller Universität Osnabrück...
Foliensatz Nr. 5 Software Engineering Prof. Elke Pulvermüller Universität Osnabrück Fachbereich Mathematik / Informatik / Physik – Institut für Informatik Arbeitsgruppe Software Engineering [email protected] Sprechstunde: n.V. Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 1 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement Inhalt 1 Software-Krise und Software Engineering 2 GrundlageSoftware Engineering 3 Qualität 4 Projektmanagement 5 Konfigurationsmanagement 6 Software-Modelle 7 Software-Entwicklungsphasen, -prozesse, -vorgehensmodell 8 Weiterführendes Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 2 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement Inhalt 5.1 Motivation und Begriffe 5.2 Aufgaben und Verfahren 5.3 Konfigurationselemente 5.4 KM Plan 5.5 Projektstruktur 5.6 Verwaltung der Konfigurationselemente 5.7 Release-Management 5.8 Werkzeuge zur Versionskontrolle 5.9 Automatisierung des Build-Prozesses Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 3 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.1 Motivation und Begriffe Voraussetzung schaffen und Projekte planen PM Softwareentwicklungsumgebung und kontrollieren (SEU) bereitstellen Plan- Ist- Plan- Ist- Plan- Ist- SEU SEU SEU daten daten daten daten daten daten Rechte QS- SE Produktstruktur Anforderungen planen Produkt Produkt vorgeben QS- entwickeln Ergebnis Produkte / Produkte Rechte prüfen QS- Konfigurations- verwalten Anforderung struktur QS Produkt KM SEU: Software-Entwicklungsumgebung PM: Projektmanagement QS: Qualitätssicherung KM: Software-/Konfigurationsmanagement SE: Software-Entwicklung (beinhaltet auch Wartung und Evolution) angelehnt an [Wolfgang Zuser et. al., Software Engineering mit UML und dem Unified Process, Addison Wesley 2004] Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 4 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.1 Motivation und Begriffe Probleme Komponenten, Dokumente, (Zwischen-)Ergebnisse Projektteam-Mitglied (z. B. Entwicklerin) Integration der falschen Komponenten Bereits entwickelte Komponenten werden übersehen (z. B. Projektziel Programmteile, Testdaten) Vorversionen werden unvollständig archiviert Modifikationen werden versehentlich überschrieben Stand 15.09.24 Fehler durch mangelhafte Übersicht Stand 01.09.24 über die Teile und ihre Zusammensetzung Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 5 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.1 Motivation und Begriffe Grundidee: Richtlinien, Vorschriften und Werkzeuge zur sicheren Verwaltung und zum kontrollierten Zugriff auf alle Projektergebnisse im Team Konfigurationsmanagement (KM) Software Configuration KM Management (SCM) aus [Gunther Popp: Konfigurationsmanagement mit Subversion, Maven und Redmine, dpunkt, 2013] Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 6 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.1 Motivation und Begriffe Reichweiten von KM-Prozessen unternehmensweiter KM-Prozess projektbezogener KM-Prozess Verschiedene Standards legen Grundzüge des KM fest IEEE Standard 828 – Configuration Management in Systems and Software Engineering ISO 10007-2020-10 – Qualitätsmanagement – Leitfaden für Konfigurationsmanagement AF-SCM-375-1 (US Department of Defense) MIL-STD-498 (US Department of Defense) Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 7 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.2 Aufgaben und Verfahren Versionskontrolle (Identifizierung, Archivierung, Schutz/Zugriffsregeln, Bereitstellung, kontrollierte Löschung von Einheiten, Versionen und Varianten) Konfigurationskontrolle (Sicherstellung der Konsistenz, Dokumentation der Abhängigkeiten, Nachvollziehbarkeit und exakte Reproduzierbarkeit) Build-Automatisierung (Erzeugung ausührbarer Programme) mit Prüfsummenunterstützung Änderungskontrolle (Verwaltung und Prüfung von Änderungen) Koordination der Teamarbeit (zentrale Koordination mittels gemeinsamer Referenzumgebung und Konflikterkennung / -vermeidung) Ableitung und Bereitstellung von Metriken Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 8 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.3 Konfigurationselemente Schritt 1: Identifikation der Konfigurationselemente Quelltext Schnittstellenverträge Anforderungsdokumente (z.B. Use Cases) Architektur- und Designdokumente Konfigurationsmanagement-Handbuch Testspezifikationen und Testdaten Build-Skripte Meta- und Konfigurationsdaten Benutzerdokumentation Installationsanleitung, Release-Notes Werkzeuge (z.B. Compiler, Entwicklungsumgebungen) Bibliotheken Generierte Artefakte (zB. HTML-Dokumente, kompilierte Quelltexte) Protokolle von Meetings Binäre Auslieferungsdateien Projektpläne Liste offener Punkte, Risikolisten usw. Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 9 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.4 KM Plan Schritt 2: Erstellung eines KM-Plans Einleitung (Ziele, Begriffe, Beschreibung der Konfigurationselemente) Management (Verantwortlichkeiten für die KM-Aktivitäten) Aktivitäten (KM-Aufgaben und Verfahren) Zeitplanung (zeitliche Abfolge der KM-Aktivitäten) Ressourcen (Werkzeuge, Personal) Pflege (Änderungsplanung des Plans) Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 10 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.5 Projektstruktur Schritt 3: Festlegung einer Projektstruktur Hierarchie der Verzeichnisse im Projekt Projektstruktur Systemstruktur/Architektur (Conway’s Law 1968) Keine Konfigurationselemente (temporärer Charakter) Einfluss der Projektorganisation: Gliederung in Teilprojekte Unabhängigkeit der Teilprojekte Architektur ist dem organisatorischen Rahmen unterworfen Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 11 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.5 Projektstruktur Einfluss der SW Architektur: Detaillierung der Projektstruktur auf Basis der Softwarearchitektur ggf. Hilfsordner zur Gruppierung aller Konfigurationselemente, die für die Implementierung relevant sind Technische Einflussfaktoren (z. B. Verzeichnisse, die das KM- Werkzeug vorschreibt) Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 12 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Repository, SW-Bibliothek „spezialisierte“ Datenbank Versions- nummer - Verfügbarkeit - Integrität - Zugriffkontrolle - Änderungsverfolgung und Wiederherstellung (Versionshistorie) - Effizienz bei großen Datenmengen Abbildung ins Repository (ohne temporäre Ordner) Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 13 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Zeit Versionshistorie Variantenfamilie V1 V2 V3 V2a V3a V2b V3b X1 X2 Ersetzt durch (Versionenbildung) Y1 Y2 Modifiziert nach (Variantenbildung) Konfiguration A Konfiguration B = Konfigurationsvariante Nr. 1 = Konfigurationsvariante Nr. 2 Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 14 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Deltamechanismus Reduktion des Speicherbedarfs Version Erste Version 1 Komplette Datei Deltas Komplette Datei 6 Aktuelle Version Rückwärtsdelta Vorwärtsdelta Konfigurationselement: Textdatei, Binärdatei … Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 15 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Check-in / Check-out Bildung von Versionen Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 16 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Check-in / Check-out Kontrolle paralleler Änderungen 0) Vermeidung durch Planung und Abstimmung Check-out Lock Unlock Check-in 1) Lock-Modify-Unlock: - Kontrolle zum Check-out / Lock-Zeitpunkt - Sperrmechanismus: Keine parallele Veränderung 2) Copy-Modify-Merge - Kontrolle zum Check-in / Unlock-Zeitpunkt - Konfliktauflösungsmechanismus: (Werkzeugunterstütztes) Merge Werkzeuge können teils beides pro Konfigurationselement (z. B. Subversion) Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 17 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Tag: Tag: Tag: Baseline: Projektstart Iteration #1 Iteration #2 Release 1.0 Datei1 1 2 3 4 Datei2 1 2 3 4 5 Datei3 1 2 3 4 5 6 7 Tag: Markierung und Bezeichner für die gültigen Versionen aller Konfigurationselemente im Repository zu einem bestimmten Zeitpunkt Baseline: stabile Konfiguration, Bezugspunkt für die weitere Entwicklung Release: Baseline mit dem Zweck der Auslieferung an den Kunden (lauffähig) Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 18 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Erstellung von (Tags,) Baselines und Releases: Branch Patterns 1) Linearer Entwicklungspfad mit Code-Freeze Abschluss von Änderungen Tag setzen Aktualisierung des Repositories Code-Freeze aufheben Setzen eines Tags Streng kontrollierte Änderungen: Fehlerkorrekturen ja Funktionserweiterungen nein Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 19 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Erstellung von (Tags,) Baselines und Releases: Branch Patterns 2) Verzweigte / Parallele Entwicklungspfade (mit Branches) Branch zur Release-Erstellung (Ablauf wie beim Code-Freeze) Änderungen und Bug- Fixes zusammenführen gemeinsame Versionen 3) Echte Parallelentwicklung: kein Zusammenführen (Pflege und Weiterentwicklung mehrerer Releases) Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 20 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 21 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.6 Verwaltung der Konfigurationselemente Kooperation von Entwicklern mit verteilten Workflows zentralisierter Workflow Integration Manager Workflow Dictator and Lieutenants Workflow [vgl. https://git-scm.com/doc] Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 22 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.7 Release-Management Release x.y.z Hauptrelease Wartungsrelease Patch Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 23 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.7 Release-Management Release- Beschreibung (Kern des Release-Plans) „Jetzt“ Grafische Übersicht des Release-Plans Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 24 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.8 Werkzeuge zur Versionskontrolle 1960er CTSS (Compatible Time-Sharing System) und Multics 1970er RCS (Revision Control System) 1980er SCCS (Source Code Control System) 1990er CVS (Concurrent Versions System), v.a. im Open-Source Bereich, erstmals verteilt, mehrere Entwickler 2004 Subversion (http://subversion.apache.org/) Ziel: Beseitigung von Schwächen in CVS - Versionierung von Dateien und auch Verzeichnissen - Atomarer Check-in (Transaktionen) - Versionierte Metadaten (Properties) für Elemente im Repository - Effiziente Deltabildung (auch für Binärdateien) - Entwicklung in C und mit der Apache Portable Runtime APR Bibliothek Plattformunabhängigkeit, für viele Betriebssysteme verfügbar - GUI Zusätze, Integration in Entwicklungsumgebungen, z.B. Subclipse http://subclipse.tigris.org - Client-Server-Architektur 2005 GIT Ziel: Geschwindigkeit, Effizienz, Flexibilität Ca. zeitgleich weitere, weniger bekannte (z. B. Mercurial, Bazaar) Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 25 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.8 Werkzeuge zur Versionskontrolle: GIT Besonderheiten des Versionskontrollsystems GIT GIT = engl. Blödmann seit 2005 entwickelt von Linus Torvalds effizientes, platzsparendes, verteiltes Versionskontrollsystem Speicherung von Versionen in Snapshots, nicht in Deltas staging – area: nur Änderungen an Dateien, die vorher in die staging – area gelegt wurden, werden gespeichert trunk (master), branches, tags, releases und zugehörige Kommandos sind direkt im System eingebettet und müssen nicht durch die Verzeichnisstruktur manuell abgebildet werden jeder Client hält vollständige, gepackte Datenquelle – größere Ausfallsicherheit ein commit ist immer nur lokal und muss mit push auf den Server übertragen werden ein zentraler Server ist nicht unbedingt notwendig 2008: GitHub = Hosting-Plattform mit GIT als Backend + soziale Netzwerkfunktionen + Issue-Tracking + Pull-Requests (2018: von Microsoft gekauft) https://git-scm.com Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 26 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.9 Automatisierung des Build-Prozesses Alle Tätigkeiten, die man bereits zweimal manuell durchgeführt hat, sollten automatisiert werden. [Clark, M.: Pragmatic Project Automation, How to Build, Deploy and Monitor Java Applications, The Pragmatic Starter Kit – Volume III, Pragmatic Bookshelf, 2004] Projektautomatisierung: Automatisierung der Schritte zur Erstellung eines Produkts. Hilfsmittel: Build-Prozess Nutzen: Produktivität Wiederholbarkeit Reproduzierbarkeit Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 27 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.9 Automatisierung des Build-Prozesses Schritte: Varianten: Entwickler-Build Integrations-Build Produktions-Build Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 28 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.9 Automatisierung des Build-Prozesses Umsetzung – Werkzeuge zur Automatisierung: Entwicklungsumgebungen genügen nicht Skripte zur Beschreibung der Schritte (imperativ vs. deklarativ) Spezielle Build Tools/Interpreter (z. B. make, ant, Maven, Gradle) Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 29 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.9 Automatisierung des Build-Prozesses: Werkzeuge Werkzeug zur Entwicklung von getrennten Modulen und deren Kombination bzw. zur Automatisierung des Build-Prozesses Ausgangsziel: Zusammenhänge zwischen verschiedenen Quellcodedateien erkennen und die benötigten neu übersetzen Automatisierungsaufgaben: - Effizientes Neuübersetzen aller Quellen z. B. in C: Neuübersetzung der C-Datei, falls sich die inkludierte Header-Datei ändert - Archiverstellung - Erzeugen von Dokumentationen - Aufräumarbeiten … Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 30 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.9 Automatisierung des Build-Prozesses: Werkzeuge 1960er Make 1980er Varianten zu Make: pmake (portable make), gmake (GNU) 1990er Ergänzung zu Make: autoconf, automake, imake fur Automatisierung und Anpassung an verschiedene Plattformen (Konfiguration, Makefile-Generation) 2000 Ant (Apache) für Java-Projekte, Build-Beschreibung im XML-Format 2004 Maven (Apache) 2006 Ivy, Ergänzung zu Ant (Apache, Subprojekt zu Ant) für ergänzende Abhängigkeits- und Versionsverwaltung 2007 Gradle mit Groovy-basierter DSL (Domain-Specific-Language) zur Build Beschreibung Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 31 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.9 Automatisierung des Build-Prozesses: make Werkzeug Make – der Klassiker Zum Vergleich ein Ziel mit Java: Beispiel für makefile: Test.class : Test.java Target/Ziel, hier: Pseudoziel javac Test.java Strophe (Stanza, Rule) (es soll nichts erzeugt clean: werden) Tausch des Compilers (z. B. cpp) rm *.o Hier auch: Default Target Besser: Einsatz von Variablen rm SampleSystem Definition: CC = /user/bin/gcc Target (Ziel) Nutzung: $(CC) –c F1.cc all: Main.o F1.o F2.o F11.o F12.o g++ -o SampleSystem Main.o F1.o F2.o F11.o F12.o Main.o: Main.cc Main.h F1.h F2.h F11.h F12.h g++ -c Main.cc Target (Ziel) Abhängigkeiten F1.o: F1.cc F1.h F11.h F12.h (Dependants): Quelle g++ -c F1.cc Aktion/Befehl zur Tabulatorzeichen! Erstellung des Ziels Befehl wird nur ausgeführt, wenn eine Quelle (Dependant) neuer ist als das Ziel! Topologisch sortierte Liste der Dateiabhängigkeiten Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 32 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.9 Automatisierung des Build-Prozesses: Ant Werkzeug zur Automatisierung des Build-Prozesses Entstehung im Open-Source-Projekt Tomcat (zunächst nur projektintern): “Another Neat Tool” 2000: erste öffentliche, frei verfügbar Version 1.1 (http://ant.apache.org) Verwendung: v.a. für Java-Entwicklungsprojekten Aber: Keine Einschränkung auf eine bestimmte Progr.sprache oder Technologie Besonderheit von Ant: Plattformunabhängigkeit Ant-Implementierung in Java (Java Bibliotheken), Skript-Sprache in XML Offene Architektur: Erweiterbarkeit um eigene Befehle mittels Java-API Prof. Dr. E. Pulvermüller, Universität Osnabrück Folie 33 Software Engineering – Wintersemester 2024/2025 5 Konfigurationsmanagement 5.9 Automatisierung des Build-Prozesses: Ant Ein Projekt pro Ant- Pro Projekt ein Default-Target Alle relative Skript (Wurzelelement) und evtl. weitere Targets Pfadangaben starten in Verzeichnis basedir Property setzen Property als Zugriff auf den Wert spezielle der Property Task (außerhalb