Rheinisch Westfälische Technische Hochschule Aachen Lehrstuhl
Transcrição
Rheinisch Westfälische Technische Hochschule Aachen Lehrstuhl
Rheinisch Westfälische Technische Hochschule Aachen Lehrstuhl für Software Engineering Seminararbeit Release Management von Websystemen Minh Tran Matrikel-Nr.: 836326 Aufgabenstellung: Prof. Dr. rer. nat. B. Kraft Betreuer: Claas Pinkernell Aachen, den 15. Dezember 2011 iii Kurzfassung Release Management wird in der Software Entwicklung immer populärer. Die genaue Planung von Release- und Deoploymentprozessen kann Entwicklern und Unternehmen viel Zeit und Geld einsparen. In Dieser Arbeit wurden Anforderungen an Release Management Systemen erörtert und einige Release Management Systeme evaluiert. Anschließend wurden die evaluierten Systeme auf die Anforderungen des Energie Navigators getestet. Viele dieser Systeme sind jedoch nur auf Spezielle Projekt Infrastrukturen ausgerichtet und nicht Konfigurabel. Dadurch ist es schwierig in ein bestehendes Projekt solch eine Infrasturktur aufzusetzen. Abstract Release management is becomeing increasingly popular in software development. The exact planning of release and deployment processes can save much time and money to software engineers and companies. In this thesis I discussed release management system requirements and tested some release management systems. Subsequently the evaluated systems were tested towards requiremnts of the Energie Navigator project. Many of these systems focus on special kinds of infrastructure and are not configurable. This makes it difficult to set up these systems to existing projects and infrastructures. v Inhaltsverzeichnis 1 Einleitung 1 2 Release Management 2.1 Der Release Management Prozess . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Release Management Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 4 3 Anforderungen eines Release Management Systems 3.1 Versionsverwaltung (R1) . . . . . . . . . . . . . . 3.2 Branching und parallele Entwicklung (R2) . . . . 3.3 Aglie Methoden (R3) . . . . . . . . . . . . . . . . 3.4 Release einzelner Komponenten (R4) . . . . . . . 3.5 Release zurück ziehen (R5) . . . . . . . . . . . . 3.6 Management multipler Instanzen (R6) . . . . . . . . . . . . 7 . 7 . 8 . 8 . 9 . 9 . 10 . . . . . . . . . . . . 11 11 11 12 13 14 14 5 Release Management Systeme im Energie Navigator Projekt 5.1 Der Energie Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Anforderungen des Energie Navigators an ein Release Management System 5.3 Der Energie Navigator und Release Management Systeme . . . . . . . . . . 17 17 19 20 6 Zusammenfassung und Ausblick 21 Literaturverzeichnis 23 4 Technologien 4.1 Serena Release Manager . . . . . . . 4.2 Aldon Deployment Manager . . . . . 4.3 BMC Application Management Suite 4.4 Smart Bear AutomatedBuildStudio . 4.5 Software Deployment Tools . . . . . 4.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii 1 Einleitung Die Planung von Software-Projekten und Releases kann für die Kosten und Qualität der Ausgelieferten Software ausschlaggebend sein. Viele Unternehmen verlieren wegen nicht ausreichender Planung viel Geld und können ihre Produkte nicht rechtzeitig ausliefern. Ein wichtiger Teil der Projekt-Planung widmet sich deshalb auch der Ausführung und Umsetzung von Software Releases. [Kri94] Der Software Release Prozess wird bei modernen Projekten immer komplexer und bereitet Software-Unternehmen immer häufigere und größere Probleme. Unter anderem besteht Software nicht mehr aus nur einer Komponente, sondern aus mehr und mehr kleineren Unter-Komponenten, die zusammen die Software ergeben. Bei einem Release müssen alle diese Unter-Komponenten und ihre Abhängigkeiten in der richtigen Version in das System eingebaut werden, was bei steigender Anzahl der Komponenten immer mühseliger wird. [HW03] Nachdem die Software gebaut wurde, muss sie dem Benutzer bereitgestellt werden. Dies kann über CD-Roms, DVDs oder aber auch über das Internet geschehen. [Bal]. Einige moderne Werkzeuge unterstützen Entwickler bei dieser Aufgabe. Release Management Systeme. Diese Systeme übernehmen immer wiederkehrende Aufgaben, wie das Zusammenstellen der Software, auflösen der Komponenten und Abhängigkeiten und das Bereitstellen (Deployment) der Software. Im Rahmen meiner Seminararbeit wurden Anforderungen an Release Management Systemen gesammelt, Systeme recherchiert und gegen diese Anforderungen evaluiert. Im zweiten Teil der Arbeit habe ich diese Werkzeuge gegen die Anforderungen des Energie NavigatorProjekts gestellt. Der Energie Navigator (ENA) ist ein Werkzeug, das im Gebäude Management automatisiert Sensor-Daten erfasst, aufbereitet und analysiert. Diese Analysen werden durch vorher definierte Regeln und Metriken durchgeführt. Der Energie Navigator ist eine Rich-Client Applikation, die ihre Berechnungen jedoch auf einem Bereitgestellten Web-Server ausführt. Alle Daten werden auf diesem Server gespeichert [FKP+ 10]. Diese Arbeit ist wie folgt gegliedert: in Kapitel 2 wird der Release Management Prozess und Release Management Systeme definiert und erörtert, warum es überhaupt sinnvoll ist Release Management anzuwenden. Das dritte Kapitel beschreibt dann die Anforderungen die einem Release Management System gestellt werden und die Vor-/Nachteile solcher Systeme. Kapitel vier wird darauf aufbauend einige bestehende Systeme miteinander Vergleichen und Evaluieren. Wohingegen das fünfte Kapitel diese Systeme gegen den ENA-Kontext stellt und evaluiert welche sich für unser Projekt eigenen und welche nicht. Zum Schluss wird im sechsten Kapitel diese Arbeit abschließend zusammengefasst und einen Ausblick auf weitere Arbeiten gegeben. 1 2 Release Management In diesem Kapitel werden Grundbegriffe erklärt und eine kurze Einführung in das Release Management und die dazugehörenden Prozesse gegeben. Viele Software-Unternehmen verwenden bereits einige Komponenten des Release Managements ohne zu wissen was Release Management überhaupt ist und wie Prozesse eingeordnet werden. 2.1 Der Release Management Prozess Viele Software-Unternehmen entwickeln ihre Software den Release Prozess ausführlich zu planen. Was für Abhängigkeiten hat die Software? Wie wird sie an den Kunden gebracht? Wie werden Updates und Bugfixes an die Nutzer verteilt? Solche Probleme sind jedoch nicht trivial und können Unternehmen viel Geld und Zeit kosten. Release Management befasst sich mit genau diesen Fragen und versucht das Auftreten solcher Probleme zu vermeiden. Jedoch ist Release Management ein Prozess, der nicht erst am ende der Entwicklungsphase eintritt, sondern bereits am Anfang der Projektplanung eine Rolle spielt. Software release management [...] is the process through which software is ” made available to and obtained by its users.“ [HHHW97] Diese Definition von van der Hoek bescheibt das Ziel von Release Management: Software für Benutzer zugänglich zu machen. Um dieses Ziel zu erreichen werden zunächst einige Teilprozesse benötigt. Abbildung 2.1 zeigt, wie die Planung eines Releases nach der Information Technology Infrastructure Library (ITLI ) aussehen sollte und in welchem Entwicklungsstadium die einzelnen Teilprozesse betrachtet werden sollten. Der Release Management Prozess zieht sich durch alle Phasen eines Software-Projektes, von der Planung bis zum tatsächlichen Release. Ein Release frühzeitig zu planen ist vor allem wichtig, um den Anforderungen des Kunden zu entsprechen, die im nächsten Release auf ein spezielles Feature angewiesen sind oder auf Grund von Fehlern im Programm nicht weiter arbeiten können. Durch vorherige Planung können Software-Entwickler Anforderungen und Fehler am Programmcode identifizieren und priorisieren, um diese bis zum Release abgeschlossen und getestet zu haben. Diese Releaseplanung kann auch Feature-Freezes, das Sperren neuer Features, um Fehler in bereits vorhandenen Funktionen zu beheben und ausführlich zu testen, beinhalten. Dadurch kann die Code Qualität vor einem Release deutlich gesteigert werden und die Software somit stabiler gemacht werden. [WRGM08]. Sollten alle Tests erfolgreich durchgelaufen sein beginnt das Deployment. Deployment Management ist der letzte Teilprozess des Release Managements und beschreibt den Release Prozess selber. Es wird beschrieben wie das Produkt an den Kunden geliefert wird oder auf welchen Servern die Applikation deployed werden soll. In einigen Fällen muss das Zielsystem vor und/oder nach der Installation des Produktes konfiguriert werden. Auch das Produkt muss nach der Installation an das Zielsystem angepasst werden. Deployment 3 Management befasst sich mit vielen Problemen die beim Deployen auftreten können. Das Release könnte trotz erfolgreicher Testphase scheitern, da viele neue Faktoren durch die Zielsysteme hinzu kommen, die nicht alle in die Tests einbegriffen werden können. Des weiteren kann es erwünscht sein, dass das alte System bei einem Release nicht überschrieben wird, sondern die neue Version auf einem neuen Server deployed wird. Jedoch kann auch der gegenteilige Fall eintreten, dass ein oder mehrere laufende Systeme aktualisiert werden sollen. In diesem Fall kann es jedoch sein, dass sich das genutzte Datenbank-Schema ändert. Um möglichen Datenverlust zu vermeiden müssen die alten Datenbankeinträge in das neue Datenbank-Schema migriert werden. 2.2 Release Management Systeme Um den Release Prozess zu verwalten und konfigurieren sind in den letzten Jahren einige Release Management Werkzeuge entwickelt worden. Einige dieser Werkzeuge unterstützen den gesamten Release Management Prozess (Release Management System), wobei andere nur das Projekt Deployment verwalten (Deployment Management System). Erstere erleichtern die Release-Planung indem sie visuelle Benutzeroberflächen bieten um MeilensteinPläne zu erstellen und Bugfix- und Feature-Requests zu verarbeiten. Des weiteren bieten sie Tool-Unterstützung für Nightly Build- oder Continuous Integration (CI )-Systeme. Diese Verfahren erstellen jede Nacht (Nightly Build) oder nach einem Commit in die Versionsverwaltung (CI) eine Instanz des aktuellen Stands der Software und führen Tests durch. Somit können Entwickler des Systems feststellen, ob ihre Änderungen funktionieren und ob gegebenenfalls weitere Module von den Änderungen negativ betroffen sind. Das Software Deployment wird dadurch vereinfacht, dass die Systeme sowohl direkte als auch transitive Projekt-Abhängigkeiten verwalten und Deployment Server konfigurieren. Projekt-Abhängigkeiten liegen oftmals in vielen Versionen zu Verfügung. Das Deployment Management System ist in der Lage die richtigen Versionen aus vordefinierten Repositories herunter zu laden und zu verwalten. Somit können verschiedene Versionen der Abhängig- Release Management Projekt Planung • Release Politik • Release Planung Entwicklung • Entwicklung • Soft- und Hardware • Weitere Release Planung Tests • Release Konfiguration • Qualitäts-Review • Akzeptanz Tests • Verifizierung Deployment • Release Ausführung • Implementierung Verifizieren • Installation Abbildung 2.1: Verschiedene Prozesse im Release Management [WRGM08] 4 keiten schnell und einfach ausgetauscht werden. [HHHW97, HW03] Web-Projekte liegen oft nicht nur auf einem Server, sondern sind auf mehreren Servern verteilt, somit ist es mühselig alle Server manuell zu aktualisieren. Viele Deployment Management Systeme können dem Entwickler diese Aufgabe abnehmen und mehrere oder alle Server aktualisieren. Auch wenn bei der Einführung solcher Systeme ein großer Mehraufwand entsteht, können sie den Release Prozess sowohl für Entwickler als auch für Kunden vereinfachen. ReleaseZyklen können durch richtiges Management der Prozesse verkürzt und einfacher geplant werden. Anforderungen des Kunden können in Meilensteinpläne aufgenommen werden und somit vereinfacht geplant werden, welche Anforderungen beim nächsten Release erfüllt sein sollten und wann das Release ausgeführt wird. Außerdem werden Build- und DeploymentInformationen gespeichert und können von Entwicklern abgerufen und automatisiert werden. 5 3 Anforderungen eines Release Management Systems Ein Release Management System einzuführen erfordert Zeit und Planung. Verschiedene Release Managemen Systeme unterstützen verschiedene Werkzeuge und sind auf verschiedene Infrastrukturen angepasst. Jedoch gibt es allgemeine Anforderungen die solch ein System erfüllen sollte. Im folgenden Kapitel werden einige Anforderungen definiert, auf die Release Management Systeme evaluiert werden. 3.1 Versionsverwaltung (R1) Viele Moderne Software-Projekte benutzen bereits Versionsverwaltungs Software, wie Subversion(SVN ) [sub11] oder Concurrent Versions System(CVS ) [cvs11] um ihre CodeArtefakte abzuspeichern. Solche Systeme ermöglichen es Artefakte einfach und schnell mit dem ganzen Entwicklerteam zu teilen und die Software somit für alle Entwickler auf dem gleichen stand zu halten. Ein weiterer Vorteil der Versionsverwaltung ist, dass Entwickler die Möglichkeit haben auf ältere Stände der Software zuzugreifen, Änderungen einzusehen und sie gegebenenfalls wieder rückgängig zu machen. Ebenso ist es möglich das Projekt auf mehreren Zweigen (Branches) zu entwickeln. [Pil04, Ves03] Abbildung 3.1 zeigt wie zum Beispiel die Entwickler des Energie Navigators branchen. Nach dem 1.0 Release wurde eine Kopie des gesamten Projekts auf einem anderem Branch erstellt, um die 1.0 Version dort zu pflegen und Fehler zu beheben. Entwickler, die einen Bug beheben möchten erstellen aus dem aktuellen Stand (Revision) des 1.0 Maintenance Branches eine erneute Kopie des Projektes und beheben dort den Fehler. Danach kann der der Entwickler seine Änderungen von seinem Bugfix Branch aus in die beiden anderen Branches übernehmen (mergen). So müssen Entwickler Fehler nicht auf allen Branches wiederholt bearbeiten, sondern können über die Merge-Funktion der Versionsverwaltung Fehler auf mehrere Branches beheben. Bugfix 1 Branch Bugfix 2 Branch Merge Merge 1.0 Maintenance Branch 1.0 Release Merge Merge Trunk (Development Branch) Abbildung 3.1: Das Branching im Energie Navigator 7 Diese Systeme können über Scripte oder dafür entwickelte Clients angesprochen und bedient werden, jedoch sollte ein Release Management System mit solchen Versionsveraltunssystemen interagieren können. Vor den Release muss der Code auf den aktuellen Stand gebracht werden und nach dem Realease Änderungen im Konfigurations-Dateien, wie zum Beispiel die Versionsnummer, wieder in die Versionsverwaltung eingespielt werden (Commit). Auch das erstellen von Branches nach einem Release sollte das von einem Release Management System automatisch gelöst werden. Release Management Systeme sollten Versionsverwaltungssysteme wie SVN oder CVS unterstützen. 3.2 Branching und parallele Entwicklung (R2) Wie im vorherigen Abschnitt erwähnt ist es wünschenswert nach einem Release einen Bugfix Branch für die Software zu erstellen, damit instabile Features im Trunk nicht in Bugfix-Releases auftauchen. Branches werden aber auch bei Produktlinien eingesetzt, bei denen das anfängliche Projekt zwar das gleiche ist, die Unterschiede später jedoch immer größer werden. Viele Software-Anbieter bieten zum Beispiel Test-Versionen ihrer Software an. Diese Testversionen weisen meist weniger Funktionen auf, sind auf wenige Tage beschränkt oder beinhalten Werbung. Sowohl die Test-Version als auch die käufliche Version müssen gepflegt und weiter entwickelt werden. Damit die Entwickler den gleichen Bugfix nicht in beiden Versionen der Software wiederholen müssen, kann man Änderungen durch Patches auf den jeweils anderen Entwicklungszweig übertragen. [Pil04] Umso weiter die Entwicklung nach einem Release voran geht, desto größer werden aber die Unterschiede im Code zwischen Trunk und Branch. Nach einiger Zeit wird es nicht mehr möglich sein, Bugfixes ohne weiteres vom Branch in den Trunk zu mergen und Entwickler müssen diese Bugfixes in beiden Programm Versionen getrennt durchführen. Einige Werkzeuge ermöglichen es Unterschiede zwischen den Branches anzuzeigen und gegebenenfalls Änderungen herüber zu kopieren. Release Management Systeme sollten also Produktlinien und Branch-Releases durchführen und Branches erstellen und zusammenführen können. Dabei sollen diese auch die Versionierung dieser Releases übernehmen können. 3.3 Aglie Methoden (R3) Eines der Modernen Softwareentwicklungsansätze sind Agile Methoden. Jeder Entwickler ist für das gesamte System zuständig und kann gegebenenfalls an jeder stelle des Programms arbeiten, wenn ein Entwickler ausfällt oder seine Änderungen andere Module des Systems beeinträchtigen. Eine weitere Besonderheit der Agilen Entwicklung ist, dass das Programm zu jederzeit (aus der Versionsverwaltung heraus) upgedatetd und compiliert werden kann. [CLC03] Diese Eigenschaft ist besonders für Nightly Builds und CI interessant. Diese Methoden verhindern zwar nicht, dass fehlerhafter Code in der Versionsverwaltung auftaucht wird, jedoch werden die Entwickler direkt gewarnt sobald dies geschieht und haben die Möglichkeit aus den Build-Reports zu sehen wo der fehlerhafte Code auftaucht und wie er verursacht wurde. Ein solches System kann die Software Qualität steigern, jedoch ist es ein zusätzlicher Aufwand eine solche Infrastruktur bereitzustellen. 8 CI und Nightly Build Reports sollten automatisch per e-Mail oder Instant Messenger an die Entwickler geschickt werden. Diese Reports beinhalten sowohl Build-Logs, als auch Test-Reports und gegebenenfalls Code-Coverage (inwiefern gibt es Tests für den Code) und Code-Qualität. Builds werden auf extra dafür angelegten Maschinen durchgeführt. Diese Maschinen sollten von Release Management Systemen verwaltet, CI und Nightly Builds automatisch angestoßen, getestet und die Reports automatisch verschickt werden. [DMG07] Dazu können bestehende Frameworks wie Hudson [hud11] oder Jenkins [jen11] verwendet werden. Da CI und Nighly Builds keine richtigen Releases sind, die Software wird nicht dem Kunden, sondern den Entwicklern bereitgestellt, der Programmcode dennoch kompiliert und versioniert wird, soll das Release Management System diese Builds verwalten können. 3.4 Release einzelner Komponenten (R4) Software besteht nicht immer aus nur einer einzigen Komponente, stattdessen ist es so, dass Software aus immer mehr und mehr Komponenten zusammen gesetzt wird. Bei einem Release möchte man jedoch nicht immer alle Software Pakete neu herausgeben, sondern lediglich einzelne Teil-Komponenten ersetzen. Bei Web-Applikationen mit Rich-Client soll es zum Beispiel möglich sein, nur den neuen Client zu releasen, wenn sich an dem WebServer nichts geändert hat. Jedoch kann auch der umgekehrte Fall erwünscht sein, nur die Server-Applikation zu ändern, so dass die Client-Benutzer nichts davon mitbekommen. Ebenso soll es jedoch auch möglich sein alle Komponenten zusammen zu releasen. Ein Release Management System sollte erkennen, welche Komponenten oder Abhängigkeiten sich geändert haben, um nur diese zu releasen. Dieses Vorgehen kann den Release Prozess bei großen Projekten stark verkürzen, jedoch sollte der Entwickler die Möglichkeit haben, diese automatische Erkennung abzustellen und Komponenten releases zu erzwingen. Bei manuellen Komponenten Releases kann es jedoch zu Versionskonflikten kommen, da eine neue Client Version herausgekommen ist, der Server diese aber nicht unterstützt. Dadurch, dass Komponenten einzeln released werden können, können Release Zyklen weiter verkürzt werden und wichtige Sicherheitsupdates schnell an die Kunden verteilt werden. Bei kritischen Client Fehlern kann nur der Client neu released werden und umgekehrt. [HHHW97, HW03] Release Management Systeme sollten es den Entwicklern ermöglichen den Releaseaufwand zu minimieren, und somit gegebenenfalls auch die kleinsten Komponenten eines Systems voneinander getrennt zu Releasen. 3.5 Release zurück ziehen (R5) Auch bei bester Qualitätssicherung kann es passieren, dass ein fehlerhaftes Release herausgebracht wird. In solchen Fällen soll das Release Management System in der Lage sein alle oder nur einzelne Komponenten releases wieder zurück zu ziehen (Rollback ) und dem Kunden die alte Version wieder vorzulegen. Dieser Schritt ist notwendig, falls die Fehler nicht direkt behoben werden können, die Kunden jedoch erwarten, dass das System funktioniert. Dadurch wird verhindert, dass das System durch ein fehlerhaftes Release für mehrere Tage ausfällt. Um eine solche Infrastruktur zu schaffen wird meist eine VersionsDatenbank verwendet. Das System erkennt anhand der abgespeicherten Versionen, welche 9 die letzte funktionierende Version war und spielt diese, als neue Version, wieder ein. Rollbacks sollen keine Dauerlösung sein, sondern dem Kunden ein System bieten, auf dem sie Arbeiten können und den Entwicklern mehr Zeit bringen, Fehler zu beheben. [HW03] Ein Release Management System sollte in der Lage sein ein Release Rollback auszuführen. 3.6 Management multipler Instanzen (R6) Viele Web-Applikationen werden nicht nur auf einer einzigen Server Instanz gehostet, vielmehr gibt es für jeden Kunden eine Server-Instanz auf der für diesen Kunden eingerichtete Applikationen und Webservices laufen. Nach einem Release müssen einige dieser Maschinen auf die neue Version aktualisiert werden. Diese Maschinen werden meist von einer Host Maschine verwaltet. Diese Host Maschine enthält eine Datenbank auf der alle Server gelistet und den Kunden zugeordnet sind. Auf Bertriebssystemebene ermöglichen es Virtuelle Maschinen mehrere dieser Server-Instanzen auf einem einzigen Physikalischen Server zu hosten. Dieses System bietet die Möglichkeit diese Virtuelle Maschinen schnell und automatisiert auszutauschen und somit die Downtime bei einem Systemfehler zu reduzieren. Außerdem können bei Bedarf automatisch neue Maschinen hochgefahren und konfiguriert werden. Einige Systeme können von bereits existierenden Maschinen Klone erstellen, die als Backup aktueller Server oder als Template für neue Maschinen dienen. Des weiteren ist es möglich, dass das entwickelte System nicht auf einer einzigen Maschine läuft, sondern Komponenten auf physikalischen, virtuellen und cloud Instanzen verteilt wird und Daten zwischen den Instanzen transferiert werden. Das System wird dann auf einem Rechner erstellt und dann auf die verschiedenen Maschinen verteilt. Solche Fälle sollte ein Release Management System bearbeiten können, in der Lage sein die verschiedenen Maschinen zu verwalten und auf diesen zu deployen. Hierbei sollte es Windows, Linux oder Unix basierte Systeme unterstützen. 10 4 Technologien Im folgenden Kapitel werden einige Release Management Systeme auf die im vorigen Kapitel definierten Anforderungen evaluiert. 4.1 Serena Release Manager Serena Release Manager ist ein Release Management Werkzeugpaket, das den ganzen Release Management Prozess von der Projekt-Planung bis hin zum Deployment unterstützt. Es bietet das Werkzeug Release Control um Workflow Diagramme und Release Kalender zu erstellen, die aus dem Internet heraus abrufbar sind. So kann jeder Entwickler des Projekts einsehen wie weit das Projekt vom nächsten Release oder Meilenstein entfernt ist und seine Arbeit genau planen. Ebenso ist es somit möglich abzuschätzen, ob das Projekt der Zeit der Planung voraus oder zu spät ist. Zusätzlich enthält es auch Release Automation, ein Werkzeug, das das Software Deployment für Entwickler stark vereinfachen und somit Zeit sparen soll. Dieses Werkzeug unterstützt automatische Releases auf verschiedenen physikalischen, virtuellen und cloud Instanzen und soll Zeit und Kosten, die Entwickler benötigen ihre Software zu releasen, um bis zu 75% verringern. [ser11] Das Tool testet die erzeugte Software vor einem Release und verwaltet die Versionierung der einzelner Komponenten zentral um Versionskonflikte schnell und einfach zu beheben. Sollte dennoch fehlerhafter Code released werden bietet Serena Release Automation ein echtzeit Monitoring des Build Prozesses an und ist in der Lage direkt ein Versions Rollback zu starten. Das dritte Werkzeug des Werkzeugpaketes ist Serena Release Vault. Dieses Werkzeug hilft den Entwicklern des Software Systems die Compilierbarkeit des Projektes zu gewährleisten, indem es die Software automatisiert deployed, testet Reports erstellt. Entwickler können über die Reports und Change-Logs einsehen, welche Änderungen am Programmcode zu Fehlern führte. Entwickler können in Rollen und Zuständigkeiten unterteilt werden und funktionierender Code kann für Entwickler gesperrt werden. Somit wird garantiert, dass funktionierender Code nicht mehr verändert wird. Serena Release Vault ist sowohl für Windows als auch für Linux und Unix Maschinen geeignet und unterstützt out-of-the-Box Releases für andere Systeme. Jedoch unterstützt Serena Release Manager kaum Dritt-Anwender Werkzeuge und erfordert, dass Benutzer die Versionsverwaltung und andere Werkzeuge von Serena anwenden, um die Serena Infrastruktur vollständig zu nutzen. So müssen noch Serena PVCS Version Manager und Serena Service Manager vorhanden sein. 4.2 Aldon Deployment Manager Ein weiteres Werkzeug zur automatisierten Auslieferung von Software-Systemen ist der Aldon Deployment Manager. Dieses Werkzeug unterstützt vor allem den Deployment-Prozess 11 und kann Software automatisch auf Java Runtime Environment(JRE ) unterstützende Maschinen ausliefern. Dabei versioniert es die ausgelieferten Pakete selbstständig und generiert Log-Dateien, die den Vorgang Protokollieren. Voraussetzung dafür ist jedoch, dass die Code-Artefakte der Software auf einem Server mit dem von Aldon bereitgestellten Versionsverwaltungsystem, Aldon Lifecycle Manager, bereit liegen. Über diesen greift der Deployment Manager auf den Code zu, der dann compiliert und versioniert wird. Der Aldon Lifecycle Manager unterstützt des weiteren Workflow Management Prozesse und erlaubt es rollenbasiert auf Programmcode zu zugreifen. Alle Änderungen im Programmcode werden dokumentiert und können in Enwicklungs-, Test- oder Produktivstadien eingestuft werden. Diese Infrastruktur ermöglicht es bereits funktionierenden und validierten Code für Entwickler zu sperren und fehlerhafte Änderungen zu vermeiden. Der Aldon Deployment Manager unterscheidet beim Compilieren eines Projekts drei Stufen: Integrations-, Test und Produktiv Builds. Integrationbuilds werden gebaut um die Funktionalität einzelner Programm Komponenten zu testen und werden in der Regel direkt nach dem Commit eines Code-Stücks durchgeführt (CI Vorgehensweise). Die Tests Builds, die etwas länger dauern testen darauf die Funktionalität zwischen den Software Komponenten und Klassen, um zu gewährleisten, dass die Programm Komponenten auch gemeinsam funktionieren. (Nightly Build). Waren beide vorangehenden Tests positiv, kann nun ein Produktiv System gebaut werden, das in der Regel wiederum getestet wird, um mögliche Fehler beim Kompilieren auszuschließen. Dieses Produktiv System wird anschließend als Release herausgegeben und auf einem oder mehreren Produktiv Systemen deployed. [ald11] Beim Deployment ist Aldon Deployment Manager in der Lage die Software auf mehreren physikalischen oder virtuellen Rechnern zu verteilen. Dabei spielt es keine Rolle, ob es ein Windows, Linux oder Unix System ist. Der Benutzer kann den gesamten automatisierten Prozess überwachen und ist zu jeder Zeit in der Lage, diesen Prozess anzuhalten oder abzubrechen und bei Fehlern und Problemen ein Systemrollback durchzuführen. 4.3 BMC Application Management Suite Das BMC Application Management Suite ist ein Werkzeug Paket, das aus zehn unabhängigen Werkzeugen besteht: • Application Automation ist ein Tool, das Software Konfigurationen und Änderungen automatisiert, managed und kontrolliert. • Middleware Automation unterstützt das Management und die Kontrolle von Diensten und Anwendungen. • Application Problem Solution dokumentiert Software Probleme in Form von Tickets und Hilft bei der Reproduktion von auftretenden Bugs. • Release Process Management Unterstützt Entwickler bei der Planung, Modellierung und Echtzeit-Verfolgung des Release-Prozesses. • End-User Experience Management ist ein Feedback-Tool, um Benutzer-Daten und Software-Performance in Echtzeit zu Überwachen. • Orchestration hilft bei der Überwachung und beim Management von oft wiederholten Prozessen, Entwicklern und Technologien. 12 • CMDB liefert detaillierte und zeitnahe Daten über Mitarbeiter, Prozesse und Technologien. • Discovery Entdeckt und managed automatisch die genutzte IT-Infrastruktur von verteilten- oder Großrechner Systeme. • Dashboards and Analytics ist ein Werkzeug, dass die IT Performance analysiert und kritische Prozesse über eine einfache Benutzeroberfläche darstellt. • Service Level Management unterstützt den kontinuierlichen Verbesserungsprozess und definiert und überwacht Service Levels. Diese Werkzeuge werden alle von BMC vermarktet und unterstützen den gesamten Release Management Prozess. Jedoch ist es schwierig im Werkzeugpaket einzelne Werkzeuge auszutauschen, da sie alle aufeinander aufbauen. Werden für einige dieser Tools bereits andere Lösungen verwendet ist es nicht ohne weiteres möglich diese anstelle der von BMC mit gelieferten Werkzeuge anzuwenden. [BMC11] 4.4 Smart Bear AutomatedBuildStudio Das Smart Bear Automated Build Studio ist ein automatisches Build und Release Management System für .NET, Java und Windows Systeme. Es unterstützt Entwickler indem es automatisiert CI Builds und Reports erstellt und diese per e-Mail oder Instant Messenger (MSN oder ICQ) verschickt. Diese Builds können entweder zu einer vordefinierten Zeit oder durch Events angestoßen und automatisch getestet werden. Sowohl Build- als auch Testlogs werden auf der Reporting Übersicht angezeigt und analysiert. Die Konfiguration der Builds geschieht über ein mitgeliefertes visuelles Interface oder direkt in Microsofts Visual Studio.[Sma11b] Smart Bear Automated Build Studio ermöglicht es Benutzern Makros zu erstellen, die den Build Prozess anstoßen und Tests ausführen. Diese Makros können auf einer visuellen Benutzeroberfläche erstellt werden und sowohl automatisiert oder manuell von der Maschine oder per Remote-Interface gestartet werden. Es ist möglich diese Makros konfigurabel zu halten, um verschiedene Versionen des Projekts zu releasen und somit Redundanz zu vermeiden. Somit können für CI und tatsächliche Releases die gleichen Makros benutzt werden, denen jedoch unterschiedliche Parameter übergeben werden. Das Automated Build Studio unterstützt eine Vielzahl an Compilern, Build Tools, Versionsverwaltungen und anderen Werkzeugen. Somit kann es sowohl mit den Compilern, die in Microsofts Visual Studio mitgeliefert werden also auch mit Java oder Borland Delphi Compilern umgehen. Versionsverwaltungen wie SVN, CVS oder Serena Dimensions CM werden ebenso wie die Build Tools Apache Ant und Mircosoft MSBuild nativ unterstützt. [sma11a] Smart Bear Automated Build Studio ist ein sehr flexibles und gut Konfigurierbares Release Management Tool, das viele oft bereits genutzte Entwicklungswerkzeuge unterstützt und mit anderen Release Management Werkzeugen kombiniert werden kann. Es liefert eine eigene Makro-Sprache mit, mit der Prozesse einfach konfiguriert und automatisiert werden können. Jedoch unterstützt es in der aktuellen Version nur Windows Systeme und keine Linux oder Unix Maschinen. 13 4.5 Software Deployment Tools Software Deployment Tools unterstützen Software-Entwickler speziell im Deployment Prozess und bei der Auslieferung beim Endbenutzer. Diese Software kann genutzt werden wenn große Teile des Release Managements bereits von anderen Werkzeugen unterstützt werden. Häufig genutzte Deployment Management Werkzeuge sind: • Installshield ist ein speziell für Windows Applikationen ausgelegtes Werkzeug, dass aus Programmcode Windows Installations Dateien erstellt (.msi Dateien). Das Tool erstellt die für Windows Benutzer typischen Installer und vereinfacht so das Installieren der Applikation für den Endbenutzer. Entwickler können auch Patches und Updates über das Installshield ausliefern und verschiedene Versionen der Applikation erstellen lassen (Testversion, Premiumversion etc.) [ins11] • Ant Build Scripts Ant Scripts werden in der Regel von Entwicklern geschrieben um den Build Prozess einer Software zu automatisieren. Ant wird durch XML Scripte gesteuert, die den Java Compiler oder System-Programme aufrufen können. Diese Scripts sind jedoch sehr schwierig zu warten und sehr fehleranfällig, da sie von Hand geschrieben werden müssen und bei großen Projekten sehr lang werden können. [ant11] 4.6 Zusammenfassung Viele Release Managemant Systeme unterstützen den Release Management Prozess stark und entsprechen vielen allgemeinen Anforderungen (siehe Tabelle 4.1).Dadurch, dass das Release einzelner Komponenten eines der größten Motivationen ist, Release Management zu betreiben und solche Software zu nutzen, sind alle evaluierten Release Management Systeme dazu in der Lage. Agile Mehtoden werden in Software Unternehmen immer weiter verbreitet und werden auch von allen getesteten Werkzeugen unterstützt. Auch die Verwendung einer Versionsverwaltung ist in Software Projekten üblich, jedoch gibt es dafür viele verschiedene Lösungen. Einige der getesteten Systeme nur die Versionsverwaltungssoftware aus dem eigenen Haus und lassen Open Source Lösungen und Lösungen anderer Unternehmen außen vor, was Benutzer dieser Systeme dazu zwingt die Versionsverwaltungen der jeweiligen Unternehmen zu verwenden. Die Verwaltung multipler Instanzen Serena Release Manager Aldon Deployment Manager BMC Application Manager Suite Smart Bear Automated Build Studio Installshield Apache Ant R1 X X R2 X X R3 X X R4 X X R5 X X R6 X 7 Preis Auf Anfrage ($125,000) Auf Anfrage X X X X X 7 Auf Anfrage X X X X X X Auf Anfrage ($349) X X X (X) 7 (X) X X 7 7 7 7 Professional: 1,789 e Open Source Tabelle 4.1: SRMs 14 auf sowohl physikalischen als auch virtuellen und cloud Maschinen ist in der Informations Technologie noch jung und wird noch nicht von vielen Systemen Unterstützt. Jedoch ist dies vorallem im Deplyment Management ein wichtiger Punkt, der Entwicklern viel Zeit einsparen kann. Dadurch dass Release Management Systeme noch nicht sehr populär sind, ist der Preis solcher Systeme sehr hoch und Open-Source Lösungen sind noch nicht gegeben. Obwohl viele Anforderungen erfüllt sind, ist es, vor allem in großen Unternehmen, schwierig ein Release Management System einzuführen, da viele Unternehmen bereits andere Software benutzen, die zwar Teile des Release Management Prozesses unterstützen, jedoch nicht alle. Da diese Unternehmen jedoch nicht ihre vollständige Infrastruktur an das Release Management System anpassen wollen, müssen geeignete Systeme für die Infrastruktur gefunden werden. 15 5 Release Management Systeme im Energie Navigator Projekt In diesem Kapitel wird die Infrastruktur des Energie Navigator Projekts beschrieben und die vorgestellten Release Management Systeme entgegen der Anforderungen des Energie Navigators evaluiert. Dazu wird erst einmal eine Einleitung die die Projekt Domäne gegeben und danach darauf basierend Anforderungen definiert und evaluiert. 5.1 Der Energie Navigator Viele moderne Gebäude enthalten mehr und mehr Sensoren. Diese Sensoren sammeln und messen Daten, die den Energieverbrauch dieser Gebäude widerspiegeln und analysieren können. Diese Sensordaten müssen bevor sie ausgewertet werden können, erst einmal aufbereitet und mögliche Fehlmessungen korrigiert werden. Der Energie Navigator ist ein Werkzeug dass diese Sensordaten, wie in Abbildung 5.1 dargestellt, automatisiert oder manuell importiert, aufbereitet und analysiert. Gebäude-Manager können über den ENAClient Anlagen, Regeln, Funktionen und Metriken spezifizieren, die das Gebäude und optional Data Import Building Preprocessing automatic manual filter standard. types scale normalization outlier detection counter interpolation equidist. timesteps User Expert Reporting rule based userdefined reporting pattern based expert comments visualisation Specification rules Analysis carpet plots line plots scatter plots performance charts functions characteristics metrics time routines facility architecture data export ticket system DBS Abbildung 5.1: Die Module des Energie Navigators [FKP+ 10] 17 Abbildung 5.2: Regel-Definition und Visualisierung im Energie Navigator Projekt dessen Soll-Stände beschreiben und die importierten Sensordaten entgegen dieser berechnen und analysieren lassen.[FKP+ 10] Ausgewertete Sensoren und Berechnungen können anschließend exportiert und über so genannte Carpet- oder Line-Plots visualisiert werden [FPPR10]. Jedoch hilft der Energie Navigator nicht nur beim auswerten und messen von Sensorwerten, sondern hilft Energieexperten auch bei der Gebäude Planung, Errichtung und Optimierung [FLP+ 11]. Der Projektschwerpunkt des Energie Navigators liegt in der Rich-Client Applikation, über die sich Sensoren importieren und visualisieren lassen. Abbildung 5.1 zeig einen Screenshot dieser Applikation mit in Carpet-Plots visualisierten Sensordaten. Diese Sensordaten werden von der Client-Applikation von einem von Energie Navigator bereitgestellten Webserver heruntergeladen und können Weltweit von autorisierten Personen abgerufen werden. Ebenso lassen sich Graphen, Sensordaten und Energieausweise auf bestimmten Webseiten anzeigen und Gebäudeoptimierungs Maßnahmen diskutieren. [FKP+ 10] Das Software-Projekt ist bereits in der Version 1.0.2 für registrierte Kunden verfügbar. Nach dem 1.0 Release wurde das Projekt in der Versionsverwaltung in einen weiterEntwicklungszweig (Trunk ) für neue Funktionen und einem Bugfix-Zweig (maintainanceBranch) geteilt. Die Releases wurden bisher über selbst geschriebene Linux Bashscripts herausgebracht, die jedoch schwer zu warten und auf einem aktuellen Stand zu halten sind. Um Release Zyklen zu verkürzen und Bugfixes schneller herauszugeben ist es gewünscht den Release Prozess zu definieren und ein Release Management System einzuführen. 18 5.2 Anforderungen des Energie Navigators an ein Release Management System Der Energie Navigator ist bereits in einer späten Phase des Projekts und nutzt bereits einige Werkzeuge, die einige Teile des Release Managements bedecken. Viele Release Management Systeme setzen voraus, dass andere Tools, wie Versionsverwaltung, genutzt werden. Um möglichen overhead bei einem Umstieg solcher Tools zu vermeiden, wird vorausgesetzt, dass das verwendete Release Management System die bereits genutzten Werkzeuge unterstützt. Diese Voraussetzungen sind: • Java Kompatibel (E1 ): Da der Energie Navigator ist eine Java Applikation ist, sollte das verwendete Release Management System mit dem Java Compiler kompatibel sein. • Komponenten einzelnd Releasen (E2 ): Da der Energie Navigator aus einer Client-Applikation und mehreren Webservices besteht und sich bei einem Release nicht alle Komponenten verändern müssen sollten einzelne Komponenten Release werden und in das laufende System eingebettet werden können. Das Release Management System sollte diese Funktion unterstützten. • SVN Versionsverwaltung (E3 ): Der Energie Navigator Programmcode wird seit beginn der Entwicklung mit über die Versionsverwaltung SVN versioniert und deswegen bereits bei den Entwicklern etabliert. Deswegen sollte das verwendete Release Management System mit dem SVN-Repository arbeiten können. • Bashscripts und Ant-Targtets (E4 ): Das bisherige Build-System des Energie Nativators besteht aus Bash- und Ant-Scripten. Da es einen großen Aufwand bedeuten würde diese umzuschreiben sollte das Release Management System diese Scritps ausführen können. • Glassfish SJSAS Deployment (E5 ): Die Energie Navigator Webservices werden auf einem Glassfish Webserver gehostet. Weil die bisherige Infrastruktur weiterhin genutzt werden soll, soll das verwendete Release Management Systen auch auf Glassfish Servern deployen können. • PostgresSQL Datenbank (E6 ): Die Energie Navigator Daten werden in einer PostgreSQL Datenbank gespeichert. Diese sollte im Idealfall von dem Release Mangement System unterstützt werden. Vorallem Datenbanktransformationen sind ohne Werkzeugunterstützung sehr mühselig. • Deployment Virtueller Maschinen (E6 ): Neue Instanzen des Energie Navigators werden über Virtuelle Maschinen verteilt. Dazu sollte das System über vordefinierte Templates diese Instanzen erzeugen und starten können. • Linux System (E7 ): Energie Navigator wird auf Linux Maschinen Entwickelt und getestet, auch wenn die ENA-Clients sowohl für Windows als auch Linux Maschinen verfügbar ist, ist die Server Infrastruktur an Linux Systeme gebunden. Hier ist es wichtig dass das verwendete Release Management System auf Linux Systemen compilieren und deployen kann. Auf die Anforderungen (E1-E7) werden die im vorigen Kapitel vorgestellten Release und Deployment Mangement Systeme nun getestet und analysiert welche davon sich für ENA eignen. 19 Serena Release Manager Aldon Deployment Manager BMC Application Manager Suite Smart Bear AutomatedBuildStudio Installshield Apache Ant E1 X X X X X X E2 X X X X X X E3 7 X 7 X 7 X E4 X 7 X X 7 X E5 (X) 7 X (X) 7 (X) E6 7 X X 7 7 7 E7 X X 7 7 7 X Tabelle 5.1: Release Management Systeme im Vergleich zu den ENA Anforderungen 5.3 Der Energie Navigator und Release Management Systeme Da der Energie Navigator im Projekt bereits weiter fortgeschritten ist, ist es schwierig ein Werkzeug zu finden, das alle Anforderungen erfüllt. Tabelle 5.1 zeigt, dass keines der Vorgestellten Release Management Systeme diese Anforderungen erfüllt. Nun kann erwägt werden ob es sich lohnt die ENA-Infrastruktur auf für eines der beinahe passenden Systeme anzupassen. Smart Bear Automated Build Studio unterstützt viele Kern Anforderungen des Energie Navigators, ist jedoch speziell für Windows Systeme ausgelegt. Für den Energie Navigator werden zwar sowohl Linux als auch Windows Clients erstellt, jedoch hat der ENA-Webserver einige Abhängigkeiten auf Applikationen, die an Linux Systeme gebunden sind. So ist es nicht möglich den Webserver auf ein Windowssystem umzuziehen. Aus diesem Grunde scheiden Smart Bear Automated Build Studio, BMC Application Manager Suite und Installshield als Release Management System für das Energie Navigator Projekt aus. Serena Release Mangager und Aldon Deployment Manager wären Lösungen, die viele Anforderungen unterstützen. Jedoch verlangen beide Werkzeuge, dass viele andere Werkzeuge aus deren Unternehmen genutzt werden, die im Energie Navigator bereits anders gelöst werden. Beide unterstützen zum Beispiel keine SVN Versionsverwaltung und erfordern, dass Serena PVCS Version Manager bzw. Aldon Lifecycle Manager für das gesamte Projekt benutzt wird. Die Umstellung auf andere Versionsverwaltungssoftware wäre zwar kein großer Aufwand, jedoch ist die Versionsverwaltung SVN bereits bei den Entwicklern etabliert. Ant wird bereits im Energie Navigator als Deployment Management Werkzeug eingesetzt. Jedoch sind die Deployscripts sehr lang und schwierig zu warten. Außerdem ist es nicht in der Lage auf Remote-Maschinen zu deployen und unterstützt nur den Build Prozess. Andere Release Management Werkzeuge werden somit benötigt. 20 6 Zusammenfassung und Ausblick In den ersten Kapiteln wurden zunächst Grundlagen das Release Managements und von Release Management Systemen erklärt und wichtige damit zusammenhängende Begriffe eingeführt. Danach wurden die Anforderungen, die einem Release Management System gestellt werden zusammengetragen und erörtert. Vier Release Management Systeme und zwei Deployment Management Systeme wurden anschließend vorgestellt und auf die zusammengetragenen Anforderungen evaluiert. Danach wurde eine Einführung in das Energie Navigator Projekt gegeben und spezielle Anforderungen dieses Projektes an ein Release Management System vorgestellt. Die zuvor vorgestellten Systeme wurden auf die Anforderungen des Energie Navigators getestet und erörtert ob eines dieser Systeme für das Projekt passt. Release Management wird für Unternehmen immer wichtiger. Ein Release Management System einzuführen ist jedoch keine Aufgabe, die ohne gründliche Überlegung und Planung erledigt werden kann. Die Projekt Infrastruktur an ein Release Management System anzupassen ist oftmals nicht gewollt, jedoch ist es auch sehr schwierig das richtige System für die bereits eingesetzte Infrastruktur zu finden. Wie am Beispiel des Energie Navigators kommen viele Probleme bereits auf, bevor ein solches System überhaupt einführt wurde. Viele Release Management Systeme sind an feste Infrastrukturen gebunden und unterstützen oft nicht die bereits genutzten Werkzeuge, zur Versionsverwaltung oder Release Planung. Unternehmen müssen nun einschätzen ob es sich lohnt die teureren Lizenzen für solche Systeme zu kaufen, oder selber eine Software Lösung schreiben, die zwar die eigene Infrastruktur unterstützt, jedoch auch selbst gewartet werden muss. Dadurch, dass nur wenige Unternehmen bewusst Release Management betreiben, ist die Nachfrage nach Werkzeugunterstützung sehr gering. Dadurch steigt der Preis solcher Systeme und es werden kaum Open Source Lösungen angeboten. Die in dieser Arbeit evaluierten Produkte waren ausschließlich Expertenwerkzeuge, die viel Geld kosten. Dadurch, dass das Thema in den letzten Jahren jedoch populärer geworden ist könnte sich der Markt in den nächsten Jahren dahin verändern, solche Produkte zu standardisieren. Ein weiterer Nachteil aktueller Release Management Systeme ist die Fehlende Konfigurierbarkeit mit anderen Systemen. Viele der getesteten Produkte waren auf wenige Werkzeuge beschränkt. Auch hier könnten Open Source Lösungen wie SVN oder ANT für andere Teile des Release Managements unterstützt werden. 21 Literaturverzeichnis [ald11] Aldon Deployment Manager: http://www.aldon.com/prod/adm/ov/. Internet, November 2011 [ant11] Apache Ant: http://ant.apache.org/. Internet, December 2011 [Bal] Ballintijn, Gerco: [BMC11] BMC Application Management Suite: http://www.bmc.com/products/ product-listing/application-management-suite.html. Internet, November 2011 [CLC03] Cohen, David ; Lindvall, Mikael ; Costa, Patricia: Agile Software Development / Data and Analysis Center for Software. 775 Daedalian Dr. Rome, New York 13441-4909, Januar 2003. – State-of-the-Art Report [cvs11] Concurrent Versions System: http://savannah.nongnu.org/projects/ cvs. Internet, December 2011 [DMG07] Duvall, Paul M. ; Matyas, Steve ; Glover, Andrew: Continuous Integration: Improving Software Quality and Reducing Risk. 1. Addison-Wesley Professional, 2007 http://www.worldcat.org/isbn/0321336380. – ISBN 0321336380 [FKP+ 10] Fisch, N. M. ; Kurpick, T. ; Pinkernell, C. ; Plesser, S. ; Rumpe, B.: The Energy Navigator - A Web based Platform for functional Quality Mangement in Buildings, 2010 [FLP+ 11] Fisch, N. M. ; Look, M. ; Plesser, S. ; Pinkernell, C. ; Rumpe, B.: Der Energie-Navigator - Performance-Controlling für Gebäude und Anlagen. In: Fachzeitschrift für Technische Gebäudeausrüstung 04/2011 (2011), March, 36-41. http://www.se-rwth.de/publications/NMF.ML.SP.CP.BR.TAB.Der Energie-Navigator.pdf [FPPR10] Fisch, N. M. ; Plesser, S. ; Pinkernell, C. ; Rumpe, B.: Software für die energieoptimierte Betriebsführung von Gebäuden. In: BINE Informationsdienst Projektinfo 14/10 (2010), October, 1-4. http://www.se-rwth.de/publications/NMF.ML.SP.CP.BR.TAB.Der Energie-Navigator.pdf. – ISSN 0937–8367 [HHHW97] Hoek, André van d. ; Hall, Richard ; Heimbigner, Dennis ; Wolf, Alexander: Software release management. Version: 1997. http://dx.doi.org/10.1007/3-540-63531-9 13. In: Jazayeri, Mehdi (Hrsg.) ; Schauer, Helmut (Hrsg.): Software Engineering ESEC/FSE’97 Bd. 1301. Springer Berlin / Heidelberg, 1997. – ISBN 978–3–540–63531–4, 159175. – 10.1007/3-540-63531-9 13 [hud11] Hudson Continuous Integration: http://hudson-ci.org/. Internet, December 2011 23 [HW03] Hoek, André van d. ; Wolf, Alexander L.: Software release management for component-based software. In: Software: Practice and Experience 33 (2003), Nr. 1, 77–98. http://dx.doi.org/10.1002/spe.496. – DOI 10.1002/spe.496. – ISSN 1097–024X [ins11] InstallShield: www.installshield.com/. Internet, December 2011 [jen11] Jenkins Continuous Integration: http://jenkins-ci.org/. Internet, December 2011 [Kri94] Krishnan, Mayuram S.: Software release management: a business perspective. In: Proceedings of the 1994 conference of the Centre for Advanced Studies on Collaborative research, IBM Press, 1994 (CASCON ’94), 36– [Pil04] Pilato, Michael: Version Control With Subversion. Sebastopol, CA, USA : O’Reilly & Associates, Inc., 2004. – ISBN 0596004486 [ser11] Serena Release Automation: http://www.serena.com/products/release -automation/index.html. Internet, November 2011 [sma11a] Smart Bear Automated Build Studio Support: http://smartbear.com/support/viewarticle/9304/. Internet, December 2011 [Sma11b] Smart Bear Automated Build Studio: http://smartbear.com/products/ development-tools/build-management/. Internet, November 2011 [sub11] Apache Subversion: http://subversion.apache.org/. Internet, December 2011 [Ves03] Vesperman, Jennifer: Essential CVS. O’Reilly Media, Inc., 2003. – ISBN 0596004591 [WRGM08] Wegmann, A. ; Regev, G. ; Garret, G.-A. ; Marechal, F.: Specifying Services for ITIL Service Management. In: Service-Oriented Computing: Consequences for Engineering Requirements, 2008. SOCCER ’08. International Workshop on, 2008, S. 8 –14 24