(mit folien von christian kästner) - ps.informatik.uni...

Post on 15-Aug-2019

214 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

EinführungindieSoftwaretechnikKonfigurationsmanagement

KlausOstermann(mitFolienvonChristianKästner)

1 EinführungindieSoftwaretechnik

Agenda

EinführungindieSoftwaretechnik2

}  VerteiltesArbeiten}  Versionskontrolle

}  Konzepte}  CVS/SVN}  Git

}  FehlerverwaltungmitTicket-Systemen

Softwarekonfigurationsmanagement

EinführungindieSoftwaretechnik3

}  ÜbergreifendeDisziplin

}  DefinitionenundProzesse}  VersionierungundKonfliktbehandlung}  PlanungvonVarianten}  DokumentierenvonFehlernundderenBehebung}  Änderungsmanagement}  Releaseplanung}  AutomatisiertesKompilieren/Ausliefern/Testen}  Zugriffskontrolle

Fokus

Fokus

KooperationaufgleicherDatei

EinführungindieSoftwaretechnik4

TechnischeZusammenarbeit

EinführungindieSoftwaretechnik5

}  WoliegenDateien?}  GeänderteDateienperEmailzuschicken}  ManuellesSynchronisierenbeiProjekttreffen}  AlleDateienaufgemeinsamenNetzlaufwerk

}  Werdarfwas?}  ProDateiisteinEntwicklerverantwortlich,nurerdarfändern}  Jederdarfallesändern

Änderungskonflikte

EinführungindieSoftwaretechnik6aus„VersionControlwithSubversion“

KonfliktvermeidungdurchSperren

EinführungindieSoftwaretechnik7

ProblemebeimSperren

EinführungindieSoftwaretechnik8

}  TechnischeProbleme:}  TechnischeSperrenvs.AnkündigungaufMailingliste}  Vergessenzuentsperrentypisch

}  UnnötigeSequentialisierungderArbeit:}  GleichzeitigeÄnderungenanunterschiedlichenStellennichtmöglich

}  FalschesGefühlvonSicherheit:}  ZweiNutzerarbeitengetrenntaufdenDokumentenAundB.Waspassiert,wennAvonBabhängigist?AundBpassennichtmehrzusammen.DieNutzermüssendiesesProblemdiskutieren.

KonfliktlösungdurchMischen(Teil1)

EinführungindieSoftwaretechnik9

KonfliktlösungdurchMischen(Teil2)

EinführungindieSoftwaretechnik10

Beispiel

EinführungindieSoftwaretechnik11

Beispiel

EinführungindieSoftwaretechnik12

Beispiel

EinführungindieSoftwaretechnik13 SystemkannnichtautomatischdieReihenfolgeentscheiden

EigenschaftendesMischens

EinführungindieSoftwaretechnik14

}  EinDokumentliegtinzweiVersionenvor.}  ÜberlappendeÄnderungen:Konflikt

}  Mischennichtimmerautomatisierbar}  Werkzeug(diff)zeigtUnterschiedean}  EinNutzerintegriertbeideVersionenmanuell(ggf.inAbsprache)

}  InderPraxis:diemeistenÄnderungensindkonfliktfrei

VerwaltenvonProjekten

EinführungindieSoftwaretechnik15

RevisionenundVarianten}  RevisionenersetzenfrühereRevisionen(Zeitlich)}  VariantenkoexistierenmitanderenVarianten(Inhaltlich)}  VersionalsOberbegriff

V1.0 V2.0 V3.0V1.1

Basissystem(Windows)

ErweiterungfürKundeA

ErweiterungfürKundeB

Linux-Variante

Server-Variante

X X X X

X X

X X

X X X

X

CodeundNicht-CodeDateien

EinführungindieSoftwaretechnik17

}  JavaCode}  Dokumentation}  Modelle}  Build-Scripte:Ant/Makefile}  Lizenzen}  Grammatiken}  KompilierteDateien}  HTML,JavaScript,CSS

}  BeiBinärdateienistKonfliktbehandlungschwieriger

RevisionenvonProjekten

EinführungindieSoftwaretechnik18

Versionsverwaltung}  VersionierungvonQuelltextdateien}  Repository:ArchivalterQuelltextversionen

}  ZeitstempelundBenutzerkennung}  Tags:BenannteRevisionenz.B.Release_1_0}  ÄnderungenalsDelta}  Typisch:KommentarbeschreibtÄnderung

}  JederzeitÄnderungennachvollziehen}  AlteVersionenwiederherstellbar

RevisionHistory

EinführungindieSoftwaretechnik20

AusEclipseQuelltext:org.eclipse.jdt.ui

Release

EinführungindieSoftwaretechnik21

}  ReleaseidentifiziertveröffentlichteProduktversion

}  TypischesMuster:}  Hauptreleasenummer:SignifikanteÄnderungen}  Nebenreleasenummer:Funktionserweiterungen}  Revisionsnummer:Fehlerbehebungen}  Buildnummer:weitereDetails

}  Release0.xfürBeta-Releases(vorab)}  Release-VersionenoftunabhängigvonRevisionsnummern

}  TagsmarkierenReleases

Java1.6.0_15EclipsePlatformSDT3.5.2.M20100211-1343

Branches(Verzweigen)

EinführungindieSoftwaretechnik22

}  KopiedesQuelltext}  Wirdgetrenntversioniert}  Kannwiederzusammengefügtwerden(merge)

}  TypischesVorgehen}  HauptbranchfürWartungoderHauptentwicklung}  NeuerBranchfürexperimentelleFunktionalität,wirdzusammengefügtwennerfolgreich

}  NeuerBranchfürWartungsaufgaben}  TeilsneuerBranchfürVarianten

Branches–Beispiel

VariantenundRevisionen

[Staples&Hill,APSEC’04]

Variantenmanagement

EinführungindieSoftwaretechnik25

}  VariantenerstellungdurchBranchesskaliertnicht}  SpezielleMechanismenoderWerkzeugebenötigt}  Komplexitätmussgeplantwerden

}  VieleLösungen}  Konfigurationsdateien}  Präprozessor}  Build-System}  SpezielleSprachen}  …

}  ->Softwareproduktlinien

AnalogAbhängigkeitenvonMerkmalenoderKunden

Versionsverwaltungssysteme

EinführungindieSoftwaretechnik26

}  SystemefürSperrenundMischenverfügbar}  LokaleVersionsverwaltung

}  LokaleArchivierung(meisteinzelner)Dateien}  Beispielsysteme:SCCSundRCS

}  ZentraleVersionsverwaltung}  RevisionenliegenaufzentralemServer}  ClientserfragenUpdates,sendenÄnderungen}  Beispielsysteme:CVS,SVN,Perforce,VisualSourceSafe

}  VerteilteSysteme}  VerteilteRepositories(mitallenbekanntenRevisionen)diesynchronisiertwerdenkönnen

}  Beispielsysteme:Git,Mercurial,ClearCase

CVS/SVN

EinführungindieSoftwaretechnik27

CVSundSVN

EinführungindieSoftwaretechnik28

}  ZentraleVersionsverwaltungssysteme}  CVSseit1990,SVNalsinoffiziellerNachfolgerseit2004

}  EinzentralesRepository}  BenutzererstellenlokaleKopie}  ÄnderungderlokalenKopie,AbgleichmitRepository}  Update–CommitZyklen

}  UnterstütztBranchesundTags

}  ZentraleRechteverwaltung

TaentzerEinführungindieSoftwaretechnik29

TypischerArbeitszyklus}  Einmalig:Projektlokalanlegen

}  svncheckout

}  ArbeitskopieaufdenneuestenStandbringen:}  svnupdate

}  ÄnderungenanderOrdner-strukturdurchführen:}  svnadd}  svndelete}  svncopy}  svnmove

}  Änderungenprüfen:}  svnstatus}  svndiff

}  Änderungenzurücknehmen(optional):}  svnrevert

}  Konflikteauflösen:}  svnupdate}  svnresolved

}  ÄnderungenindasRepositoryeinlesen:}  svncommit

CVSvs.SVN

CVS SVN

EinführungindieSoftwaretechnik30

}  RevisionsnummerproDatei

}  Textdateien(Binärdateienmögl.)

}  Weiterverbreitet

}  RevisionsnummerfürganzesProjekt

}  AtomareCommits:alleDateienoderkeine

}  DateienundVerzeichnisse}  Umbenennungen}  Metadatenmöglichundversioniert

Git

EinführungindieSoftwaretechnik31

Git

EinführungindieSoftwaretechnik32

}  VerteilteVersionsverwaltung}  KeinzentralerServernötig}  KopiedesgesamtenRepositorylokal

}  LokaleFunktionalitätähnlichSVN(update,commit,branches,diff)

}  Nicht-lineareEntwicklung:SpeziellerFokusaufverteiltesVerzweigenundMischen

}  DatenabgleichzwischenRepositoriesmöglich

}  HoheGeschwindigkeitbeicommit/diff/revert/…,daalleDatenlokal

Übersicht

EinführungindieSoftwaretechnik33

clone,push,pull checkout/update

commit

VerteilteRevisionen

EinführungindieSoftwaretechnik34

}  Revisionennichtglobalkoordiniert/sortiert}  RevisionenundBranchesglobaleindeutigdurchHashIDs

}  z.B.52a0ff44aba8599f43a5d821c421af316cb7305

}  CloneneinesRepositoriesjederzeitmöglich}  MerktsichUrsprung(wichtigfürUpdatesundMerging)}  NormaleCheckout/CommitOperationen}  CommitsmöglichohneursprünglichesRepositoryzuändern

}  FetchundPull-OperationenholenUpdatesausentferntenRepositories(auchmehreren!)

}  Push-OperationkopiertlokaleÄnderungzuentferntemRepository(wennRechtevorhanden)

Beispiel

EinführungindieSoftwaretechnik35

Linux

Linux

Kernel-Entwickler

clone/pull

checkout/update

commitpush

Linux

NeuerEntwickler

clone checkout

commit

edit

edit

pull&merge

Repositoriesinmustache.js

EinführungindieSoftwaretechnik36

mustache.jsProjekt

BeispielRevisionshistorie

EinführungindieSoftwaretechnik37

ZentraleRepositoriesweiterhinmöglich

EinführungindieSoftwaretechnik38

©ScottChaconBuch“ProGit”

“SocialCoding”mitGithubu.ae.

EinführungindieSoftwaretechnik39

Ticket-Systeme

EinführungindieSoftwaretechnik40

WieverwaltetmanFehlermeldungen?

EinführungindieSoftwaretechnik41

}  Sofortbearbeiten}  Email-/Text-/Zettelsammlung}  KommentareimQuelltext}  Wiki

}  TypischeFragen:}  Organisation?}  Weristverantwortlich?}  Hatsichjemanddarumgekümmert?}  Istesnochaktuell?}  WelcheModulesindbesondersfehleranfällig?

Ticket-Systeme

EinführungindieSoftwaretechnik42

}  SpeichernFehlermeldunginzentralerDatenbank}  Meta-Informationen}  InOpen-Source-Projektentypischerweiseöffentlich

}  FehlerkönnenGruppen/Listen/Personenzugeordnetwerden

}  Prioritätensetzen}  Fortschrittwirdprotokolliert}  AlleÄnderungennachvollziehbar

BugzillafürEclipse

EinführungindieSoftwaretechnik43

Beispiel

EinführungindieSoftwaretechnik44

Vorgehen(grob)

EinführungindieSoftwaretechnik45

}  Fehlermeldungkommtan}  AufnehmenalsTicket(Status:new,Prioritätsetzen)}  PrüfenobderFehlerwirklichauftritt(Status:confirmed)}  ProjektmanagerweistTicketpassendemEntwicklerzu(Status:assigned)

}  Entwicklerstelltggf.RückfragenodergibtdasTicketweiter

}  EntwicklerentferntFehlerundschließtdasTicket(Status:closed,Resolution:Fixed/Duplicate/Invalid/Won’tFix)

}  Ggf.releaseneueVersion,InformationanKunden

NichtnurFehlerverwaltung(IssueTracking)

EinführungindieSoftwaretechnik46

}  OffeneAufgaben}  Ideen}  Kundenwünsche}  Help-Desk-Anrufe}  AutomatischeTicketgenerierungvonAlarmsystemen

}  JeweilsmitMöglichkeitzur}  Diskussion}  Priorisieren}  ProtokollierungvonZuständigkeitenundFortschritt

Ticket-SystemealsKontrollwerkzeug

EinführungindieSoftwaretechnik47

}  ErzwingvordefinierteVorgehensprozesse(Workflows)}  AlleÄnderungenwerdenprotokolliert

}  z.B.werhatwanndiePrioritätgeändert

}  ErlaubtdiverseStatistiken}  Bearbeitungsdauerund–Qualität}  WelcheModulesindbesondersFehleranfällig

}  ggf.hilfreichbeiUrsachenforschung

}  SammelnvonhäufigenFragen(FAQs)}  NachvollziehbarkeitfürKunden

IDEIntegration:EclipseMylyn

EinführungindieSoftwaretechnik48

}  ZeigtTicketsdirektinEclipsean}  IntegrationmitVersionsverwaltung}  AutomatischeKontextverwaltung

Software

EinführungindieSoftwaretechnik49

Server?

EinführungindieSoftwaretechnik50

}  VielekostenloseAngebotefür(Open-Source)Projekte}  sourceforge.net}  assembla.com}  github.com}  code.google.com}  …

}  Web-Oberfläche}  OftmitBug-Tracker}  AufsetzeneineseigenenServersgutdokumentiert

sieheauchhttp://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities

Clients?

EinführungindieSoftwaretechnik51

}  Kommandozeilenwerkzeuge}  GraphischeBenutzeroberflächen,z.B.

}  TortoiseCVS/SVN/Git}  gitk,giggle}  rapidsvn

}  IntegrationinIDEs,z.B.}  NativeCVSUnterstützunginEclipse}  SubversionPluginfürSVN}  EGitPluginfürGit

}  WebfrontendsfürLesezugriff

Ticket-Systeme

EinführungindieSoftwaretechnik52

}  Bugzilla}  Trac}  SAPCRM

}  LassensichmitVersionsverwaltungssystemenkombinieren

}  InSourceForce,Assembla,Github,etc.mitangeboten

Zusammenfassung

EinführungindieSoftwaretechnik53

}  RevisionenundVarianten}  VerzweigungundBehandelnvonKonflikten}  VerteilteVersionsverwaltung

}  FehlerverwaltungmitTicket-Systemen

top related