Software Engineering - Past Paper - Wintersemester 2024/2025 - PDF

Document Details

CoolStrength

Uploaded by CoolStrength

Universität Osnabrück

2024

Universität Osnabrück

Elke Pulvermüller

Tags

software engineering configuration management software development computer science

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

Use Quizgecko on...
Browser
Browser