Fachbereich 4: Informatik Build management for a software chrestomathy Bachelorarbeit zur Erlangung des Grades eines Bachelor of Science im Studiengang Informatik vorgelegt von Thomas Bernau Erstgutachter: Ralf Lammel¨ Institut fur¨ Informatik Zweitgutachter: Andrei Varanovich Institut fur¨ Informatik Koblenz, im Juli 2013 Erklarung¨ Ich versichere, dass ich die vorliegende Arbeit selbstandig¨ verfasst und keine an- deren als die angegebenen Quellen und Hilfsmittel benutzt habe. Ja Nein Mit der Einstellung der Arbeit in die Bibliothek bin ich einver- standen. Der Veroffentlichung¨ dieser Arbeit im Internet stimme ich zu. ................................................................................. (Ort, Datum) (Unterschrift) Abstract In the context of this thesis a build management effort for the 101companies chrestomathy is bootstrapped. An analysis of the initial situation, its valuation and as a result the defi- nition of requirements for build management from a requirements engineering perspective lay the foundation for a study of related work. A systematic discussion of improvements to build related qualities of chrestomathies and build management tools in the context of build systems and continuous integration enables the choice of tools and the design of a solution. The solution is then implemented and briefly discussed. Zusammenfassung Im Rahmen dieser Arbeit wird ein Ansatz fur¨ Build Management fur¨ die Chrestomathie 101companies erarbeitet. Eine Analyse der ausgehenden Situation, ihre Bewertung und als Resultat die Definition von Anforderungen zum Build Management aus der Sicht des An- forderungsmanagement schaffen die Grundlage fur¨ eine Untersuchung themenbezogener Arbeiten. Eine systematische Diskussion zur Verbesserung von Build-bezogenen Eigen- schaften von Chrestomathien und Build Management Tools im Zusammenhang mit Build Systemen und kontinuierlicher Integration ermoglicht¨ die Wahl von Werkzeugen und den Entwurf einer Losung.¨ Diese Losung¨ wird anschließend umgesetzt und kurz diskutiert. Contents 1 Introduction 8 1.1 Motivation . .8 1.2 Build Management . .8 1.2.1 Build Process . .8 1.2.2 Managing Builds . .8 1.2.3 Revision Control . .9 1.2.4 Build Systems . .9 1.2.5 Continuous Integration . .9 1.3 Chrestomathies . 10 1.3.1 Definition . 10 1.3.2 Properties . 10 1.3.3 101companies . 10 1.4 Goal . 10 2 Requirement Engineering 11 2.1 Scope . 11 2.2 Stakeholders . 12 2.2.1 Users . 12 Definition . 12 Concern . 12 Relevance . 12 2.2.2 Contributors . 13 Definition . 13 Concern . 13 Relevance . 13 2.2.3 Researchers . 13 Definition . 13 Concern . 13 Relevance . 13 2.2.4 Technologists . 14 Definition . 14 Concern . 14 Relevance . 14 2.3 Requirements . 14 2.3.1 Build Automation . 14 Definition . 14 Explanation . 14 Discussion . 14 4 CONTENTS 5 2.3.2 Test Automation . 15 Definition . 15 Explanation . 15 Discussion . 15 2.3.3 Neutral Build . 15 Definition . 15 Explanation . 15 Discussion . 16 2.3.4 Test Coverage . 16 Definition . 16 Explanation . 16 Discussion . 16 2.3.5 Notification Automation . 16 Definition . 16 Explanation . 16 Discussion . 16 2.3.6 Dependency Management . 16 Definition . 16 Explanation . 17 Discussion . 17 2.3.7 Limited Heterogeneity . 17 Definition . 17 Explanation . 17 Discussion . 17 2.3.8 Comprehensibility . 17 Definition . 17 Explanation . 17 Discussion . 18 2.3.9 Comparability . 18 Definition . 18 Explanation . 18 Discussion . 18 2.3.10 Discoverability . 18 Definition . 18 Explanation . 18 Discussion . 19 2.3.11 Usability . 19 Definition . 19 Explanation . 19 Discussion . 19 2.3.12 Maintainability . 19 Definition . 19 Explanation . 19 Discussion . 20 2.3.13 System Independence . 20 Definition . 20 Explanation . 20 Discussion . 20 2.3.14 Portability . 20 CONTENTS 6 Definition . 20 Explanation . 20 Discussion . 20 2.3.15 Scalability . 21 Definition . 21 Explanation . 21 Discussion . 21 2.3.16 Extensibility . 21 Definition . 21 Explanation . 21 Discussion . 21 2.4 Synopsis . 22 3 Related Work 23 3.1 101companies . 23 3.2 Homogenization . 23 3.2.1 General . 23 3.2.2 Java . 24 3.3 Build systems . 24 3.3.1 Scope and Relevance . 24 3.3.2 General . 24 Build Maintenance Effort . 24 Build Code Analysis . ..