Monatsarchiv für September 2008

Beitrag drucken Beitrag drucken

Paul Chautems

Wer profitiert wie von SCCM?

Nutzen für alle Beteiligte

  • SCCM senkt Kosten durch klare Strukturen und definierte, automatisierte, schlanke Verwaltungsabläufe.
  • SCCM befreit alle Betroffenen von manueller Verwaltungsarbeit.
  • SCCM beschleunigt die Softwareprojekte.
  • SCCM ermöglicht die Auskunft über den Status von korrigierten Fehlern und neuen Funktionen.
  • SCCM verkürzt die Time-to-Market für Änderungen und Verbesserungen.
  • SCCM automatisiert und vereinfacht den Informationsfluss zwischen allen Beteiligten.

Nutzen für Kunden und Benutzer

  • SCCM steigert die Qualität der Software und der Software-Lieferungen.
  • Mit SCCM verbessern und beschleunigen Sie den Service für Ihre Kunden.
  • Mit SCCM steigern Sie die Zufriedenheit Ihrer Benutzer und Kunden.

Nutzen für Management und Projektleitung

  • SCCM ist unerlässliche Voraussetzung, um die von CMMI, ITIL, SPICE und anderen (Governance-)Vorgaben und Konzepten gesetzten Ziele zu erreichen.
  • SCCM ist Voraussetzung für das Application Lifecycle Management (ALM).
  • SCCM liefert jederzeit aktuelle Reports und Kennzahlen über den aktuellen Projektstand.
  • SCCM ermöglicht dadurch IT-, Entwicklungs- und Projektleitern sowie Anwendungsverantwortlichen wirkungsvolle Planung und Kontrolle.

Nutzen für Entwickler

  • SCCM standardisiert, vereinfacht, verkürzt und automatisiert Verwaltungsabläufe und integriert diese nahtlos in die Entwicklung.
  • SCCM bringt mit einer geordneten Ablage Ordnung und Übersicht in die Software-Entwicklung.
  • SCCM steigert die Produktivität der Software-Entwicklung und -Wartung.
  • SCCM stellt sicher, dass bei Software-Änderungen die Software-Konfigurationen konsistent bleiben und dass keine unbeabsichtigten Nebenwirkungen auftreten.
  • SCCM informiert über Änderungen mit Auswirkungen auf andere Entwickler.

Beitrag drucken Beitrag drucken

Paul Chautems

Was ist SCCM?

Das Software Change and Configuration Management (SCCM) ist eine Spezialisierung des Konfigurations-Managements auf alle Aktivitäten im Bereich der Software-Entwicklung (engl. software engineering).

SCCM integriert Kernprozesse und unterstützende Prozesse. Es verwaltet Änderungsanforderungen (Change Requests[4]) ausAnforderungen[1] und Programmfehlern[2,3]. Es führt Buch über alle Zustände (Status, Änderungen) an Source-Code und Dokumenten, die während der Software-Entwicklung geändert werden. SCCM entspricht einer «Buchhaltung für Software».

Software-Verwaltung
Grosses Bild

Software Verwaltung

SCCM ist nicht nur eine lästige, jedoch unerlässliche (Neben-)Aufgabe der Entwickler, sondern SCCM-Prozesse begleiten alle am Lebenslauf der Software beteiligten Personen, das heisst: neben den Entwicklern auch Support-Leute, Projektleiter, Tester, Integratoren usw.

SCCM ist ein System von Regeln. Je besser diese Regeln in Form von Organisation, Technik, Administration, Werkzeugen und Automatismen implementiert sind, desto reibungsloser funktioniert diese Infrastruktur. Wir halten uns an das folgende Zitat:

«SCCM is first an attitude; second, a process; and only third, a set of tools.» [B. Weatherall, 1997]

SCCM ist eine Infrastruktur für die Software-Verwaltung. Je besser das SCCM-System alle Prozesse der Software-Entwicklung unterstützt, integriert und automatisiert, desto besser sind die Entwicklungsresultate.

SCCM erlaubt es, Änderungsanforderungen im Zeitverlauf und im Fertigungsgrad zu kontrollieren. Es liefert jederzeit aktuelle Reports und Kennzahlen über den aktuellen Projektstand und ermöglicht dadurch IT-, Entwicklungs- und Projektleitern sowie Anwendungsverantwortlichen wirkungsvolle Planung und Kontrolle.

SCCM garantiert durch Versionierung die Nachverfolgbarkeit aller Änderungen an Artefakten (Spezifikationen, Source-Code, Dokumentation) zu einem Änderungsauftrag. Jede Änderung an einem Auftrag wird protokolliert und historisiert.

SCCM erlaubt es, Konfigurationen (eine Menge von Änderungsanforderungen inkl. aller betroffenen Artefakte für einen neuen Release) und alle ihre Änderungen im Zeitverlauf zu kontrollieren. SCCM garantiert die Integrität und Nachverfolgbarkeit aller Konfigurationen und die Möglichkeit der Wiederherstellbarkeit einer älteren, lauffähigen Version.

SCCM hat mehrere Ziele

Beitrag drucken Beitrag drucken

Je kürzer die Integrationszyklen und je kleiner die Integrationseinheiten, desto effizienter. Fehler werden einfach und früh entdeckt und sind rasch behoben — vorausgesetzt, die Prozesse und Regeln sind definiert, weitgehend automatisiert, und sie werden eingehalten.

Eine Software wächst wie ein Baum Jahrring um Jahrring, Ast um Ast, Zweig um Zweig, Blatt um Blatt. Der Baum ist mit dem Wachsen bereits integriert, Zweige zusammenführen muss er nicht. Bei der Software müssen wir nach dem «Wachsen» erst noch integrieren und zusammenführen (merge). Dabei gilt: Je öfter, desto besser. Das ist eine praktische Erfahrung, über die Einigkeit besteht, unabhängig von Techniken und Projektgrössen.

Ein Skaleneffekt — sprich Einsparungen durch Bündelung mehrerer Änderungen und Erweiterungen zu einem grossen Integrationsvorhaben — tritt nicht ein. Das Gegenteil ist der Fall: Je grösser das Integrations- oder Mergepaket und je grösser die Zeitabstände, desto grösser der Gesamtaufwand. Wer’s auch nur ein einziges Mal gemacht hat, kennt die Gründe.

Integration enthält immer das Risiko zur Destabilisation des integrierten Systems: Das Integrieren fördert immer wieder Probleme zu Tage. Je kleiner die Integrationseinheit, desto leichter treten sie zu Tage und desto einfacher sind sie zu beheben. Nach jedem Integrationsschritt werden Tests gefahren — möglichst vollautomatisch. So weiss man für jeden Schritt, ob er erfolgreich war oder nicht. Tritt ein Fehler auf, ist er bei einer kleinen Integration unter den wenigen Änderungen rascher gefunden als bei einer Massenintegration, weil der potenzielle Fehlerraum viel kleiner ist: wenig betroffener Code, wenig Module, wenig Schnittstellen, ein oder nur wenige Entwickler. Diese sind noch voll in der Materie drin, haben den Code präsent, erinnern sich an Details und finden die Fehler rascher, als wenn sie erst Wochen oder gar Monate später nochmals in die Fehlersuche und den Code einsteigen müssen.

«Integrate and merge as often as possible» heisst im Extremfall «Continuous Integration», also fortlaufende Integration, die von den Exponenten des Extreme Programming, namentlich Kent Beck, propagiert wird. Wie eng man die Zeitintervalle und wie feingranular man die Integrationsheinheiten wählt, hängt von der Art und Grösse des Projekts ab. Unbestritten ist, dass kleine Zyklen und Einheiten vorteilhafter als grössere sind, die Praxis zeigt dies ganz deutlich.

Das bedeutet nun keinesfalls «sich durchwursteln». Ganz im Gegenteil. Integration — ob in kleinen oder grossen Schritten — funktioniert nur, wenn ein paar Voraussetzungen gegeben sind:

  • Die Abläufe und Regeln sind klar definiert und werden von allen befolgt.
  • Es gibt ein Stufenkonzept, das festhält, was auf welcher Stufe zu tun ist, und unter welchen Bedingungen ein Modul auf die nächste Stufe vorrücken darf, und wer dieses Vorrücken («promote») auslösen darf.
  • Es ist möglichst viel automatisiert, besonders die Builds und das Testen.

Wer fortlaufend integriert, arbeitet diszipliniert und methodisch, und er setzt Werkzeuge ein, die ihm erlauben, möglichst viel zu automatisieren. Ohne effiziente Werkzeuge funktioniert die fortlaufende Integration nicht.

Kleine Integrationsschritte wandeln die Integration und das Zusammenführen von einer lästigen, ermüdenden und schier endlosen Tortur zu einem eleganten Instrument für Fortschrittskontrolle und Qualitätssicherung. Genau diese Erfahrung findet sich auch in der anschaulichen, lesenswerten und praxisnahen Darstellung der Continuous Integration von Martin Fowler.

Weitere Beiträge in der Best-Practices-Reihe:

(9): Kennzahlen – Grundlage für Prozessverbesserungen
(8): Plan your environment carefully
(7): Structure for distributed development
(6): Baselines — die sichere Basis
(5): Change-Pakete bilden
(4): Merge and Integrate as often as possible
(3): Wiederherstellbarkeit
(2): Private Arbeitsbereiche
(1): Forget One-Size-Fits-All SCM / Design Scaleable Best Practices

Beitrag drucken Beitrag drucken

SCCM ist nicht nur aktuell für Unternehmen, die eigene, firmenspezifische Software entwickeln. Auch mit der Einführung von Standard-Software, wie zum Beispiel SAP, muss diesem Thema die nötige Aufmerksamkeit gewidmet werden.

Der Autor des Artikels Configuration Management für SAP Customizing? im beteo Blog fordert: «Konsistentes Ändern und Verteilen von Customizing Changes braucht ein striktes Configuration Management». Seine Frage «Wer aber macht schon Configuration Management für SAP Customizing?» weist darauf hin, dass dieses Bewusstsein noch nicht überall vorhanden ist.

SCCM verwaltet auch Schnittstellen (API’s) und hilft, Probleme beim Austausch von Daten zwischen Applikationen zu verhindern.
Beispiel: In vielen Unternehmen wird für die Aufbereitung eines unternehmensweit einheitlichen Druck-Outputs ein spezielles Software-Paket eingesetzt, welches die nötigen API’s zur Verfügung stellt. Alle Applikationen, auch SAP-Systeme, müssen in der Folge die Druck-Daten an diese Applikation liefern. Änderungen in einem API haben direkten Einfluss auf alle Liefer-Systeme. Eine mangelhafte Software-Verwaltung führt unweigerlich zu Inkonsistenzen und Problemen. Ein integriertes SCCM hilft, diese Probleme zu vermeiden und kann im besten Fall die von der API-Änderung betroffenen Programme automatisch avisieren.

Den ganzen Beitrag lesen »