• Keine Ergebnisse gefunden

Software Engineering

N/A
N/A
Protected

Academic year: 2022

Aktie "Software Engineering"

Copied!
32
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Martin Glinz Thomas Fritz


Software Engineering


Kapitel 20 


Software-Konfigurations-

management!

(2)

20.1 !Grundlagen!

20.2 !Identifikation und Verwaltung!

20.3 !Version, Konfiguration, Release!

20.4 !Änderungswesen!

20.5 !Problemmeldewesen!

!

!

!

(3)

Probleme!

Ändern Sie noch eben schnell...

Software ist scheinbar leicht änderbar!

Während der Entwicklung entstehen viele Artefakte in vielen Versionen!

Wird Software von mehreren Klienten eingesetzt, müssen Software- Produkte gebildet und unterhalten werden!

In der Pflege entstehen fortlaufend geänderte oder neue Artefakte!

Typische Probleme:!

●  Paralleles, unkoordiniertes Ändern durch mehrere Personen!

●  Verwendung nicht mehr aktueller Artefakte!

●  Undokumentierte Schnellreparaturen an in Betrieb befindlicher Software!

(4)

Probleme – 2!

Probleme wachsen überproportional mit der Anzahl der Komponenten!

Hohe Kosten!

Das Gegenmittel heißt Software-Konfigurationsmanagement!

(5)

Definitionen!

Software-Konfigurationsmanagement (software configuration management) – Die Gesamtheit aller Verfahren zum Aufbau, zur

Änderung und zur Überwachung von Konfigurationen eines Software- Systems!

Software-Konfiguration (software configuration) – Eine konsistente Menge logisch zusammengehöriger Software-Einheiten.!

Software-Einheit (software configuration item) – Der kleinste, im Rahmen des Konfigurationsmanagements als atomar behandelte Baustein einer Konfiguration.!

!

Als Ganzes identifiziert, registriert, freigegeben oder geändert!

Zum Beispiel Programm-Module und Dokumente!

(6)

Aufgaben des Software-Konfigurationsmanagements !

Software-Einheiten registrieren, verwalten und versionieren!

Bilden und verwalten von Konfigurationen und Releases!

Änderungsmanagement!

Management von Problemmeldungen!

❍  Software-Konfigurationsmanagements ist ein Teil des!

●  Software-Projektmanagements in Entwicklungsprojekten!

●  Software-Produktmanagements im Einsatz!

(7)

20.1 !Grundlagen!

20.2 !Identifikation und Verwaltung!

20.3 !Version, Konfiguration, Release!

20.4 !Änderungswesen!

20.5 !Problemmeldewesen!

!

!

!

(8)

Kennzeichnung von Software-Einheiten!

Software-Einheiten haben eine eindeutige Kennzeichnung!

Besteht aus einem Namen und einer Versionsnummer!

Kann weitere Informationen enthalten, zum Beispiel Name des Systems oder Teilsystems!

Die Identität einer Software-Einheit ist feststellbar, z.B. mit Prüfsummen oder Hash-Codes!

LOG 0027.03 Stückliste

Logistiksystem 0372538-1

(9)

Registrierung und Verwaltung!

Software-Einheiten müssen registriert und verwaltet werden !

Typisch hierarchisch strukturiert als Verzeichnisbäume!

Bevorzugt mit Hilfe eines Konfigurations-
 managementsystems verwaltet!

Pro Einheit mehrere Versionen möglich!

(10)

20.1 !Grundlagen!

20.2 !Identifikation und Verwaltung!

20.3 !Version, Konfiguration, Release!

20.4 !Änderungswesen!

20.5 !Problemmeldewesen!

!

!

!

(11)

Versionierung!

Einfachste Art der Versionierung: aufsteigende Versionsnummern!

Im allgemeinen Fall: Revisionen (aufsteigend) und Varianten (parallel)!

1 2 3 4 5 6

1.1 1.2 1.3

1.4-A

1.4

2.0-A

1.4-B 2.0-B

2.1 2.2 2.0

(12)

Konfiguration und Release!

Konfiguration (configuration) – Eine konsistente Menge logisch zusammengehöriger Software-Einheiten!

Basis für lauffähige Software!

●  Während der Entwicklung (Integrations- und Systemtest)!

●  Zum Zweck der Auslieferung !

Beantwortet u.a. folgende Fragen:!

●  Welche Software-Einheiten gehören dazu?!

●  Wie wird ein lauffähiges System generiert?!

Release – Eine zur Benutzung freigegebene Konfiguration!

Basis für die Auslieferung von Software an Kunden!

●  Bildung von Software-Produkten!

●  Periodische Lieferungen von Nachträgen und Verbesserungen!

(13)

Klassische Versionierung von Konfigurationen!

Alle Software-Einheiten sind individuell versioniert!

Konfigurationen / Releases werden aus ausgewählten Software- Einheiten in bestimmten Versionen gebildet!

Konfiguration/Release
 wird ebenfalls versioniert!

Software-Einheit Versionen

01 02 03 04 05 06

...

Stückliste Verwendungs- nachweis Teil

Losgröße ...

1.0 1.1 2.0 2.1 2.2

Releases

(14)

Vereinfachte Versionierung von Konfigurationen !

Keine individuelle Versionierung von Software-Einheiten!

Nur Konfigurationen werden versioniert!

Konfigurationen typisch als Verzeichnisbäume strukturiert!

Revision n! Revision n+1! Revision n+2!

von n zu n+1!

von n+1 zu n+2!

Änderungen!

(15)

Zentral vs. verteilt!

Zentrales Konfigurationsmanagement!

●  ein physisch zentralisiertes Repository als Referenz!

●  Benutzer checken einzelne Dateien aus, bearbeiten diese und checken die neue Version wieder ein!

●  Neue Konfigurationen nur im zentralen Repository gebildet!

Verteiltes Konfigurationsmanagement!

●  n ko-existierende Repositories!

●  Benutzer erzeugt Klon eines vollständigen Repositories zwecks Bearbeitung!

●  Kann darauf individuell arbeiten und neue Konfigurationen bilden!

●  Verfahren zum Wiedervereinigen bearbeiteter Repositories nötig!

●  Typisch ist ein Repository als Referenz gekennzeichnet!

(16)

20.1 !Grundlagen!

20.2 !Identifikation und Verwaltung!

20.3 !Version, Konfiguration, Release!

20.4 !Änderungswesen!

20.5 !Problemmeldewesen!

!

!

!

(17)

Problem 1: zeitlich überlappende Änderungen!

Erstellt lokale Kopie der Klasse DemoCode.java aus Codebasis!

Modifiziert Methode blop!

Fügt Methode plup hinzu!

Überschreibt DemoCode.java in Codebasis mit geänderter Klasse!

Erstellt lokale Kopie der Klasse DemoCode.java aus Codebasis!

Überschreibt DemoCode.java in Codebasis mit geänderter Klasse!

Zeit!

Anna! Bert!

Testet modifizierte Klasse!

Testet modifizierte Klasse!

Annas Änderungen sind verloren – und niemand merkt es sofort!

(18)

Separate Umgebungen als Basis!

Getrennte Umgebungen für!

●  Entwicklung (Arbeitsumgebung)!

●  Verwaltung (Referenzumgebung, repository)!

●  Test (Testumgebung)!

●  Operativen Einsatz (Produktionsumgebung(en))!!

Freie Änderungen nur lokal in Arbeitsumgebungen!

Reglementiertes Änderungsprozedere in der Referenzumgebung!

●  „Pessimistisch“ durch Sperren!

●  „Optimistisch“ durch Mischen (z.B. CVS, SVN)!

●  „Kontrolliert optimistisch“ durch Einpflegen (z.B. Git/Github)!

Änderungen in Produktionsumgebungen nur durch Installation neuer Releases!

(19)

Umgebungen und ihr Zusammenhang!

Arbeits-!

umgebungen fertig

Kopie zur!

Änderung

Lieferung!

(Release)

Produktions-!

umgebung(en) Referenz-!

umgebung

Test-!

umgebung zur Prüfung geprüft

(20)

Änderungsmanagement durch Sperren!

Sperrt Klasse DemoCode.java in RU!

Modifiziert und testet Methode blop!

Fügt Methode plup hinzu und testet!

Übergibt DemoCode.java an RU!

Zeit!

✔✔

Kopiert die Klasse in ihre AU!

RU publiziert neue Version von

DemoCode.java und gibt Sperre frei!

Sperrt Klasse DemoCode.java in RU!

Kopiert die Klasse in seine AU!

Übergibt DemoCode.java an RU!

RU publiziert neue Version von

DemoCode.java und gibt Sperre frei!

Wartet!

AU: Arbeitsumgebung
 RU: Referenzumgebung!

Sperre gesetzt!

Anna! Bert!

(21)

Änderungsmanagement durch Mischen!

Modifiziert und testet Methode blop!

Fügt Methode plup hinzu und testet!

Übergibt DemoCode.java an RU!

Zeit!

Anna! Bert!

Kopiert die Klasse DemoCode.java aus der RU in ihre AU!

RU publiziert neue Version von

DemoCode.java! Übergibt DemoCode.java an RU!

RU publiziert neue Version von DemoCode.java!

AU: Arbeitsumgebung
 RU: Referenzumgebung!

Kopiert die Klasse DemoCode.java

aus der RU in seine AU!

RU kennt Modifikation der Klasse durch Anna und weist Übergabe ab!

Mischt (gerne mit Werkzeughilfe) Annas Version von DemoCode.java mit seinen eigenen Änderungen!

Übergibt DemoCode.java erneut an RU!

(22)

Mischen vs. Sperren!

Optimistisch: Mischen (merging)!

●  Ermöglicht paralleles Arbeiten, erleichtert Zusammenarbeit!

●  Potenziell unsicher!

●  Nur möglich bei Artefakten mit mischbaren Änderungen (z.B. Code)!

●  Kommunikation zwischen Beteiligten erforderlich!

●  Einfügen in Referenzumgebung durch Änderungsprogrammierer!

❍  Pessimistisch: Sperren (locking)!

●  Behindert paralleles Arbeiten!

●  Sicher!

●  Einfügen in Referenzumgebung durch Verwalter der Referenz- umgebung!

●  Für jeden Artefakttyp anwendbar!

(23)

Änderungsmanagement durch Einpflegen!

Kombiniert die Vorteile von optimistischem und pessimistischem Änderungsmanagement:!

●  Voll paralleles Arbeiten!

●  Mischen parallel durchgeführter Änderungen!

●  Änderungsprogrammierer fügt nicht selbst in Referenzumgebung ein, sondern stellt Übernahme-Antrag (pull request)!

●  Produktverantwortlicher übernimmt „gute“ Änderungsanträge durch Mischen der Änderungen in die aktuelle Version der

Referenzumgebung; weist „schlechte“ Änderungsanträge ab!

Produktverantwortlicher behält volle Kontrolle über Änderungen!

(24)

Änderungsmanagement durch Einpflegen – 2!

Führt Änderungen durch und testet!

Beantragt Übernahme ihrer Änderungen in die RU!

Zeit! Änderungs-

programmiererin!

Produkt-

verantwortlicher!

Erzeugt in ihrer AU einen Klon der RU!

Negativ: Produktverantwortlicher weist Antrag ab, ggf. mit Gründen bzw. Auflagen!

AU: Arbeitsumgebung
 RU: Referenzumgebung!

Produktverantwortlicher prüft Antrag und entscheidet!

Positiv: Produktverantwortlicher übernimmt Änderungen durch Mischen in die RU; publiziert neue Version in RU!

(25)

Problem 2: Änderung freigegebener Artefakte!

Ist ein Artefakt freigegeben, zum Beispiel!

●  ein Code-Modul, welcher Bestandteil eines Release ist!

●  eine vom Auftraggeber formell gebilligte Version der Anforderungs- spezifikation!

!so darf es nicht mehr unkontrolliert geändert werden!

Interne Freigaben werden mit Basislinien organisiert!

Basislinie (baseline) – Eine freigegebene, nur kontrolliert änderbare Konfiguration von Artefakten.!

Die Änderung von Bestandteilen einer Basisline erfolgt nach einem strikt geregelten Änderungsprozess!

Notfallreparaturen müssen so rasch wie möglich durch ordentliche Änderungen ersetzt werden !

(26)

Änderungsprozess für freigegebene Artefakte!

Änderungswunsch


!

Änderungsantrag!

Auswirkungsanalyse


!

Entscheidung


!

Implementierung


!

Bilden einer neuen Basislinie
 oder eines neuen Release!

Beispiel: Kunde will eine Anforderung ändern!

Formular auszufüllen!

Machbar? Auswirkung auf vorhandene Artefakte? Auswirkung auf Kosten und Termine?!

❍  Durch Change Control Board (besetzt mit Vertretern von Auftraggeber- und

Auftragnehmerseite)!

Auftrag an Projektmitarbeiter; ggf.

Änderung von Kosten- und Terminplan!

Formeller Abschluss der Änderung!

abgelehnt!

(27)

20.1 !Grundlagen!

20.2 !Identifikation und Verwaltung!

20.3 !Version, Konfiguration, Release!

20.4 !Änderungswesen!

20.5 !Problemmeldewesen!

!

!

!

(28)

Das Problemmeldungswesen!

Systematische Behandlung von Kundenproblemen!

Kundenprobleme sind u.a.!

●  Fehler!

●  Anpassungsbedarf / -wünsche!

●  Erweiterungsbedarf / -wünsche!

●  Verbesserungsideen!

è reine Fehlerverfolgung (bug tracking) greift zu kurz!!

Grundlage: organisiertes Problemmeldungswesen!

●  Problemmeldungsformular!

●  Geordneter Bearbeitungsablauf (Problemmeldeprozess)!

(29)

Problemmeldung – 1!

Problemmeldung! Nr.!

Verfasser!

Betrifft!

!Produkt!

!Leistung!

!anderes!

Verwendete Hardware!

Betriebssystem!

Problem ist!

! ! ! !ja !nein!

reproduzierbar ! ! ! umgehbar! ! ! ❑! Problem betrifft!

!Programme!

!Unterlagen!

!Leistungen!

Antwort erwartet bis!

Name!

Firma!

Adresse!

Datum!

Telefon / Fax / E-mail!

Problembeschreibung ! !Problembeschreibung in Beilage!

(30)

Zwischenbescheid an Kunde!

Verantwortlicher Sachbearbeiter!

Problemmeldung – 2!

Problembeschreibung ! !Problembeschreibung in Beilage ! !!

Zu treffende Maßnahmen!

!

Klassifizierung der!

Maßnahmen!

Fehlerbehebung!! Anpassung !❑!

Erweiterung !! Beratung/Info !! Schulung !!

!

Problem erledigt und Kunde informiert!

Name! Datum! Visum!

(erforderlich, wenn Meldung nicht bis zum vom!

Kunden erwarteten Termin erledigt werden kann) Datum! Visum!

Name! Datum! Visum!

(31)

Der Problemmeldeprozess!

●  Eingegangene Problemmeldung registrieren!

●  Problem analysieren und priorisieren!

●  Entscheidung: jetzt bearbeiten / später aufnehmen /nicht bearbeiten!

!

●  Problem zur Behebung zuweisen

●  Problem beheben!

●  Gegebenenfalls neues Release 
 bilden und ausliefern!

●  Problemmeldung abschließen
 und archivieren!

●  Problemmelder erhält Statusinformationen oder kann sie abfragen!

!

● 

in Problemliste aufnehmen !

● 

in der Releaseplanung Problemliste abarbeiten!

(32)

Literatur!

!

!

S. Chacon (2009) Pro Git. Online at http://http://git-scm.com/book!

R. Conradi, B. Westfechtel (1998). Version Models for Software Configuration Management. ACM Computing Surveys 30(2):232–282.!

K. Frühauf, J. Ludewig, H. Sandmayr (1999). Software-Projektmanagement und -Qualitätssicherung.

Dritte, überarbeitete Auflage. Zürich: vdf.!

J. Loeliger, M. McCullough (2012). Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development, 2nd edition. Sebastopol, Ca.: O’Reilly.!

C.M. Pilato, B. Collins-Sussman, B.W. Fitzpatrick (2008). Version Control with Subversion, 2nd edition.

Sebastopol, Ca.: O’Reilly. (auch erhältlich als online Buch: http://http://svnbook.red-bean.com)!

A. Zeller, J. Krinke (2004). Open-Source-Programmierwerkzeuge. 2. Auflage. Heidelberg: dpunkt.!

!

Referenzen

ÄHNLICHE DOKUMENTE

Rhodiunisalze werden durch Formaldehyd in alkalischer Lösung reduziert; so gewinnt man ein sehr fein verteiltes Metall, das Rhodium- schwarz, das sehr deutliche

Rhodiunisalze werden durch Formaldehyd in alkalischer Lösung reduziert; so gewinnt man ein sehr fein verteiltes Metall, das Rhodium- schwarz, das sehr deutliche

~til" genannt wird und einen gewaltigen Einfluß auf die Architektur aller Länder ausgeübt hat. Die Folge davon ist tür das Land ~elbst, daß es wohl eine

Matare ist einen eigenen Weg gegangen, der keinerlei Nachfolge zuläßt, denn nur ein eigenes Erlebnis und das starke Gefühl für den lebendigen Charakter des Tieres ermöglichen es,

Змясціце паперу паверхняй для друку ўніз, пакуль яна не дакранецца да задняга боку касеты для паперы.. Загрузите бумагу стороной для печати вниз таким

IV tekstile - "Kodu, kus räägitakse poliitikast" - on iseloomulik "lähedase" temaatika suhteliselt keskmise "lä- hedusastmega" käsitlus, teema ja

[r]

Mochten sie persönlich auch noch der alten Heimat eine warme Treue bewahren, wie das meist, nicht immer der Fall war: ihre Kraft und ihre Familie war doch dem baltischen Lande