How to Efficiently Collaborate in Model Versioning
Total Page:16
File Type:pdf, Size:1020Kb
How to Efficiently Collaborate in Model Versioning A Guideline to Reduce and Resolve Conflicts DIPLOMARBEIT zur Erlangung des akademischen Grades Magistra der Sozial- und Wirtschaftswissenschaften (Mag. rer. soc. oec.) im Rahmen des Studiums Wirtschaftsinformatik eingereicht von Melanie Kapellner Matrikelnummer 0106958 an der Fakultät für Informatik der Technischen Universität Wien Betreuung Betreuung: O.Univ.-Prof. Dipl.-Ing. Mag. Dr. Gerti Kappel Mitwirkung: Dipl.-Ing. Dr. Martina Seidl Mag. Petra Brosch Wien, 30. August 2010 (Unterschrift Verfasserin) (Unterschrift Betreuung) Technische Universität Wien A-1040 Wien Karlsplatz 13 Tel. +43-1-58801-0 www.tuwien.ac.at Danksagung Besonderer Dank gilt meiner Mutter, die mich in jeder Lebenslage unterstützt, und einer beson- deren Freundin, die mich gerade in dieser Lebenslage sehr unterstützt hat, und ohne die diese Diplomarbeit nicht möglich gewesen wäre. Vielen Dank auch an meine Betreuerinnen für die intensive und ausdauernde Betreuung, außerdem an meinen Vater, Marion, Matthias, Jody, und an alle, die in irgendeiner Weise zur Entstehung dieser Arbeit beigetragen haben. i Abstract The advances in software development lead to ever increasing complexity of software systems. Therewith rises the demand for technologies and techniques to shield the developers from that system complexity. For decades researchers and practioners have created abstractions to that end. Early programming languages shielded the programmers from the complexity of pro- gramming with machine code. Continuously, new programming languages and environments emerged and still emerge. At the moment, model-driven development, the next abstraction level, is on the rise, leveraging models to central artefacts of software development. Nowadays, software is developed in teams. Models provide the advantage to be additionally used as an inter-expert language, hence facilitating communication. Consequently, a model is often edited by multiple persons. Version control provides collaborative support on a techni- cal level by enabling concurrent work. In version control, mechanisms are refined to improve software development in teams. Current versioning tools, however, mainly provide support for code-centric software engineering. Versioning of models still faces major challenges. Models may not be as easily divided into parts and partitioned for several developers to work on as source code is. Due to parallel development, the versioning of models is especially prone to conflicts. The resolution of conflict situations is a precarious and preferably collaborative process. Progress in model-driven development research seems to be restricted to the technical level, while social aspects like human behaviour and cooperation are often neglected. This is surpris- ing, since software developers spend more than 60% of their time with collaborative activities, including meetings and other communication, coordination of tasks, and collaboratively execut- ing these tasks. Well working collaboration in a team leads to an overall better outcome. It is therefore important to actively shape collaboration to gain the huge potential benefits achieved through efficient teamwork. This thesis provides a general survey on possibilities to improve the model-driven develop- ment process in regard to collaborative aspects. We therefore analyse means and methods of collaboration in theory and practice, both in software engineering and various other fields. We highlight the importance of attaching a greater value to collaboration in research and in practice. Since collaboration is especially finical in conflict situations, we provide a specific example for enhanced collaboration in conflict resolution in model versioning. ii Kurzfassung Die technologischen Fortschritte in der Softwareentwicklung erlauben die Erstellung immer größerer und komplexerer Softwaresysteme, die wiederum nur durch geeignete Abstraktion- smechanismen zu bewältigen sind. Daher suchen Forscher und Anwender seit Jahrzehnten nach neuen Technologien und Techniken, um den Entwickler von dieser Komplexität abzuschir- men. Die modell getriebene Softwareentwicklung (model-driven software development) stellt die nächste Ebene der Abstraktion dar. Hierbei werden Modelle zu zentralen Artefakten der Softwareentwicklung. Software wird heutzutage meist in Teams entwickelt. Modelle selbst fördern die Zusam- menarbeit, da sie zusätzlich als gemeinsame Sprache zwischen verschiedenen Experten dienen. Durch die gemeinsame Entwicklung von Modellen durch mehrere Personen müssen diese der Versionskontrolle unterzogen werden. Die Mechanismen der Versionierung, welche die gle- ichzeitige Arbeit erst ermöglicht, sind stetiger Weiterentwicklung unterworfen. Obwohl diese Techniken für die code-zentrierte Softwareentwicklung sehr gute Unterstützung bieten, hält die Versionierung in der modell getriebenen Softwareentwicklung noch einige Herausforderungen bereit. Die Lösung von Konflikten, die durch gleichzeitige Bearbeitung von Modellen entstehen, ist ein besonders heikler Prozess, wobei jedoch die besten Ergebnisse durch die gemeinsame Problemlösung erzielt werden. Die Fortschritte in der modell getriebenen Softwareentwicklung scheinen reduziert auf tech- nische Aspekte, während soziale Faktoren, also jene Faktoren, die von Menschen abhängen, weitgehend vernachlässigt werden. Diese Tatsache ist überraschend, verbringen doch Softwa- reentwickler mindestens 60% ihrer Zeit mit kollaborativen Aktivitäten wie Kommunikation, Koordination, und die gemeinsame Ausführung von Aufgaben. Gut funktionierende Zusam- menarbeit in einem Team führt in jeder Hinsicht zu einem besseren Ergebnis. Die potentiell sehr hohen Gewinne durch effiziente Kollaboration ergeben sich nur aus der aktiven Gestaltung der Zusammenarbeit. In dieser Diplomarbeit präsentieren wir Möglichkeiten, die Prozesse in der modell getriebe- nen Softwareentwicklung durch die Förderung der Kollaboration zu verbessern. Bestehende Mittel und Methoden der Zusammenarbeit in Theorie und Praxis werden hierfür analysiert, sowohl in der Softwareentwicklung als auch in anderen Bereichen. Wir zeigen die Notwendigkeit auf, der Kollaboration in Forschung und Praxis einen höheren Stellenwert beizumessen. Für den besonders heiklen Prozess der Konfliktlösung in der Modellversionierung präsentieren wir ein spezifisches Anwendungsbeispiel für verbesserte Kollaboration, welche zu höherer Qualität in der Software und effizienteren Entwicklungsprozessen führt. iii Contents 1 Introduction 1 1.1 Incentive . 1 1.2 Problem Definition . 3 1.3 Research Objectives . 3 1.4 Structure of this Thesis . 4 2 Background 5 2.1 Models in Development . 5 2.2 Version Control . 10 2.3 Challenges in Model Versioning . 19 3 Collaboration 22 3.1 Impact of Collaboration . 22 3.2 Communication . 26 3.3 Methods of Collaboration . 29 3.4 Time of Collaboration . 30 3.5 Collaboration in Model-Driven Development . 31 4 Analysing and Comparing Existing Systems and Ideas 32 4.1 Tools for Communication only . 32 4.2 Cooperative Drawing and Writing . 38 4.3 Frameworks for Collaboration . 43 4.4 Drawing Models . 47 4.5 Collaborative Software Engineering . 51 4.6 Games . 60 4.7 Summary . 65 5 The Big Picture on Communication 67 5.1 Criteria . 67 5.2 Integration of Features . 68 5.3 Choosing the Way of Communication . 69 5.4 Combining the Features . 78 5.5 Designing the GUI . 79 iv 5.6 Accessing Features . 80 5.7 The Team . 81 5.8 Global Software Development . 85 6 Building Collaboration into a Work Environment 86 6.1 How to Support Collaboration . 86 6.2 Adaptable Model Versioning . 92 6.3 Summary . 98 7 The Collaborative Conflict Resolver 99 7.1 The Features . 99 7.2 The User Interface . 101 7.3 The Conflict Resolution Process . 106 7.4 Example of Use . 106 7.5 The Modified CCR for Discussion . 110 8 Conclusion 114 Mnemonics 117 Bibliography 118 v CHAPTER 1 Introduction First, we want our readers to know what motivated this thesis, and what is to be expected. The first chapter therefore contains the incentive, problem definition, research objectives, and last, the structure of the thesis. 1.1 Incentive As software engineering (SE) advances, coming along with increasing requirements on soft- ware, the systems in development get larger and more complex, consisting of a large number of components [37]. The growing complexity makes high level representations of the system to develop inevitable [35]. Despite the significant advances in code-centric software engineering concerning programming languages and IDEs, the development of these complex systems still requires herculean effort, and can overwhelm the available implementation abstractions [48]. A solution can be found in model-driven engineering (MDE), where models replace code as the primary software artefacts, and are used throughout the whole SE life-cycle [37, 84, 84, 115]. Models provide abstractions above those available at the code level. Complex systems are described at multiple levels of abstraction, forming a wide variety of perspectives, and thereby aiming to shield the developers from the complexities [48]. MDE aims to provide support for modelling structural and functional aspects, next to system attributes [48]. By introducing a separation of concerns through different types of models, MDE makes software engineering activities more systematic [115]. The MDE approach, aiming to raise the level of abstraction, already gained foothold in in- dustrial practice, facilitated by the Object Management Group (OMG)1. Technologies to support model-driven engineering