(mit folien von christian kästner) - ps.informatik.uni...
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
TechnischeZusammenarbeit
EinführungindieSoftwaretechnik5
} WoliegenDateien?} GeänderteDateienperEmailzuschicken} ManuellesSynchronisierenbeiProjekttreffen} AlleDateienaufgemeinsamenNetzlaufwerk
} Werdarfwas?} ProDateiisteinEntwicklerverantwortlich,nurerdarfändern} Jederdarfallesändern
ProblemebeimSperren
EinführungindieSoftwaretechnik8
} TechnischeProbleme:} TechnischeSperrenvs.AnkündigungaufMailingliste} Vergessenzuentsperrentypisch
} UnnötigeSequentialisierungderArbeit:} GleichzeitigeÄnderungenanunterschiedlichenStellennichtmöglich
} FalschesGefühlvonSicherheit:} ZweiNutzerarbeitengetrenntaufdenDokumentenAundB.Waspassiert,wennAvonBabhängigist?AundBpassennichtmehrzusammen.DieNutzermüssendiesesProblemdiskutieren.
EigenschaftendesMischens
EinführungindieSoftwaretechnik14
} EinDokumentliegtinzweiVersionenvor.} ÜberlappendeÄnderungen:Konflikt
} Mischennichtimmerautomatisierbar} Werkzeug(diff)zeigtUnterschiedean} EinNutzerintegriertbeideVersionenmanuell(ggf.inAbsprache)
} InderPraxis:diemeistenÄnderungensindkonfliktfrei
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
Versionsverwaltung} VersionierungvonQuelltextdateien} Repository:ArchivalterQuelltextversionen
} ZeitstempelundBenutzerkennung} Tags:BenannteRevisionenz.B.Release_1_0} ÄnderungenalsDelta} Typisch:KommentarbeschreibtÄnderung
} JederzeitÄnderungennachvollziehen} AlteVersionenwiederherstellbar
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
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
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ührungindieSoftwaretechnik32
} VerteilteVersionsverwaltung} KeinzentralerServernötig} KopiedesgesamtenRepositorylokal
} LokaleFunktionalitätähnlichSVN(update,commit,branches,diff)
} Nicht-lineareEntwicklung:SpeziellerFokusaufverteiltesVerzweigenundMischen
} DatenabgleichzwischenRepositoriesmöglich
} HoheGeschwindigkeitbeicommit/diff/revert/…,daalleDatenlokal
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
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
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
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