6. Granularität der Wiederverwendung, Stabilität und Abstraktion in der
Softwareentwicklung und Softwarenutzung
Arbeitsteilung und Abstraktion von den Interna, wie ein Ergebnis bei anderen Entwicklern
zustande kommt, sind die Grundpfeiler der Erfolge und Produktivitätszuwächse in der
Informationstechnik. Gegenüber den Benutzern etwa, muß ein Programmierer
nur das Verhalten, aber nicht das Innenleben eines Programmes rechtfertigen.
Gegenüber Kollegen, die im Projekt mitarbeiten, muß er über Datenstrukturen und
Programmierschnittstellen Rechenschaft ablegen. Die Situation von Programmierern und
Anwendern kann auf andere Datenproduzenten und -konsumenten z. B. in der
Forschung übertragen werden und soll deshalb hier mit Bezug auf CVS skizziert
werden.
Die Benutzer eines Programmes wollen eine möglichst fehlerfreie, getestete
Version haben. Für sie ist das Programm nur Mittel zum Zweck, bzw. muß im
Verbund mit anderen Programmen robust sein. Sie werden sich nur für sogenannte
Releases10
- Für den Benutzer ausgezeichnete Versionen.
|
der Binärversion
und deren
Patches11
- Korrekturen am Bestehenden, die keine neuen Merkmale und damit Fehlerquellen beinhalten
sollen, sondern vorhandenes nur reparieren.
|
interessieren, die etwa in Monats oder Jahresabständen herauskommen. Sie benutzen
und zitieren das Programm nur als
ganzes und referenzieren keine Quelldateien, aus
denen das Programm zusammengesetzt wurde.
Anders die Entwickler: Für sie besteht das Programm aus einer Hierarchie von
Zugriffsebenen. Der Quelltext kann in mehreren Unterverzeichnisstrukturen
organisiert sein, Unterprogramme in mehrfach verwendbare Module, diese in Dateien,
diese in Schnittstelle und Implementation, lokale und globale Programmteile,
etc. Um Codeteile zum Bau unterschiedlicher Programme zu verwenden ist es
sinnvoll, alle diese Dateien einzeln in einem CVS-Archiv zu verwalten und in den
unterschiedlichen Kontexten verschiedener Programme oder Programmversionen zu
nutzen.12
Änderungen am Programm werden teils lokal in einer Quelldatei vorgenommen, z. T.
kann aber auch eine logische Änderung mehrere Stellen betreffen, wenn etwa die
Programmierschnittstelle für ein Modul geändert werden muß. Im allgemeinen ist ein
Programm besser wartbar, je weniger Dateien für eine logische Änderung modifiziert werden
müssen.13
- Darum ist es wichtig, in einer frühen Phase der Softwareentwicklung bereits eine saubere und
leicht erweiterbare Softwarearchitektur zu haben.
|
Allerdings versionieren Entwickler auch nicht immer ganz sauber: Typischerweise werden
zwischen zwei Testläufen gleich mehrere logische Änderungen vorgenommen, oder es wird
erst nach einer gewissen Zeit (z. B. jede Woche) die Gesamtheit der in der Zeit
vorgenommenen Änderungen eingecheckt. Je seltener CVS benutzt wird, desto
schlechter kann man später im allgemeinen anhand des Archivs feststellen,
weshalb
eine bestimmte Änderung