Building Agile Documentation with the Intentional Generative Pattern Mechanism (IGPM), in an Oral Examination Held on February 19, 2010
Total Page:16
File Type:pdf, Size:1020Kb
BUILDING AGILE DOCUMENTATION WITH THE INTENTIONAL GENERATIVE PATTERN MECHANISM (IGPM) A Thesis Submitted to the Faculty of Graduate Studies and Research In Partial Fulfilment of the Requirements for the Degree of Doctor of Philosophy in Electronic Systems Engineering University of Regina by Nawapunth Manusitthipol Regina, Saskatchewan March, 2010 Copyright 2010: N. Manusitthipol Library and Archives Bibliotheque et Canada Archives Canada Published Heritage Direction du 1*1 Branch Patrimoine de I'edition 395 Wellington Street 395, rue Wellington Ottawa ON K1A 0N4 Ottawa ON K1A 0N4 Canada Canada NOTICE: AVIS: The author has granted a non L'auteur a accord exclusive license allowing Library and permettant a la B Archives Canada to reproduce, Canada de repro* publish, archive, preserve, conserve, sauvegarder, con communicate to the public by partelecommunic telecommunication or on the Internet, distribuer et vend loan, distrbute and sell theses monde, a des fins worldwide, for commercial or non support microforn commercial purposes, in microform, autres formats. paper, electronic and/or any other formats. The author retains copyright L'auteur conserve ownership and moral rights in this et des droits mor; thesis. Neither the thesis nor la these ni des e> substantial extracts from it may be ne doivent etre irr printed or otherwise reproduced reproduits sans s without the author's permission. UNIVERSITY OF REGINA FACULTY OF GRADUATE STUDIES AND RESEARCH SUPERVISORY AND EXAMINING COMMITTEE Nawapunth Manusitthipol, candidate for the degree of Doctor of Philosophy in Electronic Systems Engineering, has presented a thesis titled, Building Agile Documentation With the Intentional Generative Pattern Mechanism (IGPM), in an oral examination held on February 19, 2010. The following committee members have found the thesis acceptable in form and content, and that the candidate demonstrated satisfactory knowledge of the subject material. External Examiner: Dr. Pierre Bourque, £cole de technologie sup6rieure Supervisor: Dr. Luigi Benedicenti, Software Systems Engineering Committee Member: Dr. Cory Butz, Department of Computer Science Committee Member: Dr. Raman Paranjape, Electronic Systems Engineering Committee Member: Professor Kenneth Runtz, Electronic Systems Engineering Chair of Defense: Dr. A. Hayford, Department of Sociology and Social Studies ABSTRACT Changes are inevitable in software development, especially considering today's fast- paced and ever-changing business demands. This research investigates the problem and proposes a method called the intentional generative pattern mechanism (IGPM) to improve the responsiveness to change or software process agility. Normally, agile processes and/or approaches are used to improve process agility. One of the suggestions made by these processes is to reduce the amount of the documentation created during the development. Producing less documents should enable cheap modifications to software since there is no need for the synchronization between code and documents. However, many researchers argue that the lack of adequate documentation limits the use of agile processes only to small projects. The above arguments and other similar concerns in the literature indicate that agile processes may not be the ideal solution to achieve true agility. This research revisits the problem by investigating the source of the problem - the sources of changes. The result is a set of characteristics necessary to a truly agile process. A number of existing techniques are found to be possible realizations of those characteristics, except for one - documenting software easily and thoroughly or Agile Documentation. Further review confirms that there is no existing documentation technique suitable for i Agile Documentation. A method for software documentation, the Intentional Generative Pattern Mechanism (IGPM), is proposed as a technique for Agile Documentation. In the IGPM, a pattern is created to capture developer intention. The pattern encapsulates software development actions and a label, which describes the intention for performing those actions. More complex intentions and an entire software are naturally documented by a group of connected patterns or a pattern network. Patterns are executable. When executed, a pattern performs its encapsulated actions. An execution of a pattern network generally results in the development of a software by generating the code. This code generation allows easier synchronization between the documents and the code. A programming language, called the pattern language, is created to implement the IGPM. Experiments using the language show that it is possible to document thoroughly with less effort. This proves that the IGPM is a promising choice for Agile Documentation and a truly agile process can be created. ii ACKNOWLEDGEMENTS 1 wish to express my sincere appreciation to Dr. Luigi Benedicenti for his guidance and advice throughout this research and in the writing of this thesis. I would also like to thank my internal committee: Dr. Raman Paranjape, Dr. Cory Butz and Prof. Ken Runtz who spent time reading this thesis and provided valuable comments. Most importantly, this thesis would not have been possible without a TRLabs Telecommunication Research Graduate Scholarships. iii POST-DEFENCE ACKNOWLEDGEMENTS I would like to express my thanks to Dr. Pierre Bourque from the Ecole de technologie superieure as my external examiner and Dr. Alison Hayford from the Department of Sociology and Social Studies as the chair of the defence. iv DEDICATION Indescribable appreciations to mama, papa and sis for your love, guidance and support. A special thank to Lek for your help, patience and companionship. v TABLE OF CONTENTS ABSTRACT I ACKNOWLEDGEMENTS Ill POST-DEFENCE ACKNOWLEDGEMENTS IV DEDICATION V LIST OF TABLES XI LIST OF FIGURES XII LIST OF APPENDICES XIII LIST OF ABBREVIATIONS XIV CHAPTER 1 INTRODUCTION 1 1.1 Motivation 1 1.2 Objectives 4 1.3 Original Contributions 5 1.4 Document Overview 6 CHAPTER 2 BACKGROUND 8 2.1 Software Development Process (SDP) 8 2.1.1 Process as a Framework of Activities 10 2.1.2 Activities and Practises 11 2.1.3 What Exactly is a Software Development Process? 12 2.2 Purposes of the Software Development Process 13 2.2.1 Developing Software 13 2.2.2 Insuring Quality 14 2.2.3 Increasing the Odds of Success 16 2.2.4 Additional Comments 26 2.3 Software Process Adoptability 26 2.3.1 Project and Organization Size 27 2.3.2 Experience 27 2.3.3 Technical and Legacy System Constraints 28 vi 2.3.4 Business Environment 28 2.3.5 Requirements 28 2.3.6 People 28 2.3.7 Quality and Reliability Constraints 30 2.3.8 Project Resources 31 2.3.9 Process Infrastructures 31 2.3.10 Culture 32 2.3.11 Additional Comments on Software Process Adoptability 32 2.4 Software Process Agility 33 2.4.1 Definition 33 2.4.2 History 33 2.4.3 How is Process Agility Useful to Software Development? 34 2.4.4 Why is Agility Important? 34 2.4.5 Achieving Agility - The Agile Approaches 35 2.4.6 Additional Comments on Process Agility 36 2.5 Conclusions 36 CHAPTER 3 EXISTING SOFTWARE DEVELOPMENT PROCESSES 37 3.1 Introduction 37 3.2 Traditional Software Development 37 3.2.1 Common Characteristics of the Traditional Software Development 38 3.2.2 Traditional Software Development Processes 43 3.3 Agile Software Development 55 3.3.1 Common Characteristics of Agile Development 56 3.3.2 Agile Software Development Processes 58 3.4 Problems of Agile Processes 78 3.4.1 Minimalism 78 3.4.2 Lack of Adoptability 81 3.4.3 Lack of Practicality 81 3.4.4 Failure to Work 82 3.5 Conclusions 84 CHAPTER 4 SEARCHING FOR THE TRULY AGILE PROCESS 85 4.1 The Sources of Changes 85 4.1.1 Business-Condition Changes 88 vii 4.1.2 Changes in Business Needs 88 4.1.3 Requirement Changes 89 4.1.4 Technological Changes 90 4.1.5 Management and Organizational Changes 91 4.1.6 High-Level-Solution and Architectural Changes 92 4.1.7 Implementation Changes 92 4.1.8 Test-Result Changes 93 4.2 Dealing with Changes 94 4.2.1 Prevention 96 4.2.2 Elimination 97 4.2.3 Reduction 98 4.2.4 Treatment 99 4.2.5 Toleration 100 4.2.6 Redirection 101 4.3 A Truly Agile Process 101 4.3.1 Risk-Based Upfront Effort 102 4.3.2 Risk Management 104 4.3.3 Accepting and Managing Changes 105 4.3.4 Effective Communication 108 4.3.5 Customer Relationship 109 4.3.6 Management Style 110 4.3.7 Summary and Additional Comments 110 4.4 The Unsolved Problem - Agile Documentation Ill 4.5 Conclusions 113 CHAPTER 5 THE INTENTIONAL GENERATIVE PATTERN MECHANISM (IGPM) 114 5.1 Agile Documentation 114 5.1.1 Roles and Types of Documentation in Software Development 114 5.1.2 Documentation for Agile Processes 116 5.1.3 Possible Solutions 117 5.2 Candidates for Agile Documentation 119 5.2.1 Domain-Specific Languages (DSLs) 119 5.2.2 Model-Driven Developments (MDDs) 120 5.2.3 Language Manipulators 121 5.2.4 Additional Comments 122 viii 5.3 Realizing Agile Documentation 122 5.3.1 Natural Documentation 123 5.3.2 Code Generation 126 5.3.3 Graphical Representation 129 5.3.4 Summary and Additional Comments 129 5.4 The Intentional Generative Pattern Mechanism (IGPM) 129 5.4.1 The Core Concepts 130 5.4.2 A Pattern 133 5.4.3 Advantages of the IGPM 135 5.4.4 An Example Pattern 137 5.4.5 The IGPM for Agile Documentation 139 5.5 Conclusions 139 CHAPTER 6 IMPLEMENTATION THE PATTERN PROGRAMMING PARADIGM 140 6.1 Pattern Programming Paradigm 140 6.1.1 Artifact Properties 141 6.1.2 Delayed Computation 142 6.1.3 Computation Priority 142 6.1.4 Conflict Detection 143 6.1.5 Intention Tracking 143 6.1.6 Text Manipulation