Evidence-based Software Engineering based on the publicly available data DerekM.Jones ISBN:978-1-8382913-0-3 Publisher: KnowledgeSoftware,Ltd Released: November8,2020 ThecontentofthisbookislicensedundertheCreativeCommonsAttribution-ShareAlike 4.0InternationalLicense(CCBY-SA4.0) Contents 1 Introduction 1 1.1 Whathasbeenlearned? . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Softwaremarkets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.1 Theprimaryactivitiesofsoftwareengineering . . . . . . . . . . 7 1.3 Historyofsoftwareengineeringresearch . . . . . . . . . . . . . . . . . . 8 1.3.1 Folklore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.2 Researchecosystems . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4 Overviewofcontents . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.4.1 WhyuseR? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.5 Terminology,conceptsandnotation . . . . . . . . . . . . . . . . . . . . 15 1.6 Furtherreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2 Humancognition 19 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.1 Modelinghumancognition . . . . . . . . . . . . . . . . . . . . . 21 2.1.2 Embodiedcognition . . . . . . . . . . . . . . . . . . . . . . . . 22 2.1.3 Perfectionisnotcost-effective . . . . . . . . . . . . . . . . . . . 23 2.2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.1 Built-inbehaviors. . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.2.2 Cognitiveeffort . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.2.3 Attention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.3 Visualprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.3.1 Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4 Memorysystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4.1 Shorttermmemory . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.4.2 Episodicmemory . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.4.3 Recognitionandrecall . . . . . . . . . . . . . . . . . . . . . . . 33 2.4.3.1 Serialorderinformation . . . . . . . . . . . . . . . . . 34 2.4.4 Forgetting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.5 Learningandexperience . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.5.1 Belief . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.5.2 Expertise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.5.3 Categoryknowledge . . . . . . . . . . . . . . . . . . . . . . . . 41 2.5.4 Categorizationconsistency . . . . . . . . . . . . . . . . . . . . . 43 2.6 Reasoning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.6.1 Deductivereasoning . . . . . . . . . . . . . . . . . . . . . . . . 45 2.6.2 Linearreasoning . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.6.3 Causalreasoning . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.7 Numberprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.7.1 Numericpreferences . . . . . . . . . . . . . . . . . . . . . . . . 49 2.7.2 Symbolicdistanceandproblemsizeeffect . . . . . . . . . . . . . 50 2.7.3 Estimatingeventlikelihood . . . . . . . . . . . . . . . . . . . . 51 2.8 High-levelfunctionality . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.8.1 Personality&intelligence . . . . . . . . . . . . . . . . . . . . . 52 2.8.2 Risktaking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.8.3 Decision-making . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.8.4 ExpectedutilityandProspecttheory . . . . . . . . . . . . . . . . 55 2.8.5 Overconfidence . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.8.6 Timediscounting . . . . . . . . . . . . . . . . . . . . . . . . . . 56 ii CONTENTS iii 2.8.7 Developerperformance . . . . . . . . . . . . . . . . . . . . . . . 56 2.8.8 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3 Cognitivecapitalism 61 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.2 Investmentdecisions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.2.1 Discountingfortime . . . . . . . . . . . . . . . . . . . . . . . . 63 3.2.2 Takingriskintoaccount . . . . . . . . . . . . . . . . . . . . . . 63 3.2.3 Incrementalinvestmentsandreturns . . . . . . . . . . . . . . . . 64 3.2.4 Investmentunderuncertainty . . . . . . . . . . . . . . . . . . . . 65 3.2.5 Realoptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.3 Capturingcognitiveoutput . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.3.1 Intellectualproperty . . . . . . . . . . . . . . . . . . . . . . . . 68 3.3.2 Bumblingthroughlife . . . . . . . . . . . . . . . . . . . . . . . 70 3.3.3 Expertise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.4 Groupdynamics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.4.1 Maximizinggeneratedsurplus . . . . . . . . . . . . . . . . . . . 73 3.4.2 Motivatingmembers . . . . . . . . . . . . . . . . . . . . . . . . 74 3.4.3 Socialstatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.4.4 Sociallearning . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.4.5 Grouplearningandforgetting . . . . . . . . . . . . . . . . . . . 76 3.4.6 Informationasymmetry. . . . . . . . . . . . . . . . . . . . . . . 77 3.4.7 Moralhazard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.4.8 Groupsurvival . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.4.9 Groupproblemsolving . . . . . . . . . . . . . . . . . . . . . . . 80 3.4.10 Cooperativecompetition . . . . . . . . . . . . . . . . . . . . . . 81 3.4.11 Softwarereuse . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.5 Companyeconomics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 3.5.1 Costaccounting. . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.5.2 Theshapeofmoney . . . . . . . . . . . . . . . . . . . . . . . . 83 3.5.3 Valuingsoftware . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.6 MaximizingROI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 3.6.1 Valuecreation. . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.6.2 Product/servicepricing . . . . . . . . . . . . . . . . . . . . . . . 85 3.6.3 Predictingsalesvolume . . . . . . . . . . . . . . . . . . . . . . 86 3.6.4 Managingcustomersasinvestments . . . . . . . . . . . . . . . . 88 3.6.5 Commons-basedpeer-production . . . . . . . . . . . . . . . . . 89 4 Ecosystems 91 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.1.1 Funding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.1.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.2 Evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.2.1 Diversity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.2.2 Lifespan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.2.3 Enteringamarket . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.3 Populationdynamics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.3.1 Growthprocesses . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.3.2 Estimatingpopulationsize . . . . . . . . . . . . . . . . . . . . . 103 4.3.2.1 Closedpopulations . . . . . . . . . . . . . . . . . . . 103 4.3.2.2 Openpopulations . . . . . . . . . . . . . . . . . . . . 104 4.4 Organizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 4.4.1 Customers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 4.4.2 Culture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.4.3 Softwarevendors . . . . . . . . . . . . . . . . . . . . . . . . . . 107 4.4.4 Careerpaths . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.5 ApplicationsandPlatforms . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.5.1 Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.5.2 Poundingthetreadmill . . . . . . . . . . . . . . . . . . . . . . . 110 4.5.3 Users’computers . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.6 Softwaredevelopment . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.6.1 Programminglanguages . . . . . . . . . . . . . . . . . . . . . . 112 iv CONTENTS 4.6.2 Librariesandpackages . . . . . . . . . . . . . . . . . . . . . . . 115 4.6.3 Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.6.4 Informationsources . . . . . . . . . . . . . . . . . . . . . . . . 118 5 Projects 119 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 5.1.1 Projectculture . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.1.2 Projectlifespan . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.2 Pitchingforprojects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.2.1 Contracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 5.3 Resourceestimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 5.3.1 Estimationmodels . . . . . . . . . . . . . . . . . . . . . . . . . 127 5.3.2 Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 5.3.3 Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 5.4 Pathstodelivery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 5.4.1 Developmentmethodologies . . . . . . . . . . . . . . . . . . . . 131 5.4.2 TheWaterfall/iterativeapproach . . . . . . . . . . . . . . . . . . 132 5.4.3 TheAgileapproach . . . . . . . . . . . . . . . . . . . . . . . . . 133 5.4.4 Managingprogress . . . . . . . . . . . . . . . . . . . . . . . . . 133 5.4.5 Discoveringfunctionalityneededforacceptance . . . . . . . . . 135 5.4.6 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 5.4.7 Supportingmultiplemarkets . . . . . . . . . . . . . . . . . . . . 138 5.4.8 Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 5.4.9 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 5.4.10 Acceptance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 5.4.11 Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 5.5 Developmentteams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 5.5.1 Newstaff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 5.5.2 Ongoingstaffing . . . . . . . . . . . . . . . . . . . . . . . . . . 143 5.6 Post-deliveryupdates . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 5.6.1 Databaseevolution . . . . . . . . . . . . . . . . . . . . . . . . . 145 6 Reliability 147 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 6.1.1 It’snotafault,it’safeature . . . . . . . . . . . . . . . . . . . . 149 6.1.2 Whydofaultexperiencesoccur? . . . . . . . . . . . . . . . . . . 150 6.1.3 Faultreportdata . . . . . . . . . . . . . . . . . . . . . . . . . . 151 6.1.4 Culturaloutlook . . . . . . . . . . . . . . . . . . . . . . . . . . 152 6.2 MaximizingROI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.3 Experiencingafault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 6.3.1 Inputprofile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.3.2 Propagationofmistakes . . . . . . . . . . . . . . . . . . . . . . 158 6.3.3 Remainingfaults: closedpopulations . . . . . . . . . . . . . . . 158 6.3.4 Remainingfaults: openpopulations . . . . . . . . . . . . . . . . 159 6.4 Whereisthemistake? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 6.4.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 6.4.2 Sourcecode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 6.4.3 Librariesandtools . . . . . . . . . . . . . . . . . . . . . . . . . 165 6.4.4 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 6.5 Non-softwarecausesofunreliability . . . . . . . . . . . . . . . . . . . . 166 6.5.1 Systemavailability . . . . . . . . . . . . . . . . . . . . . . . . . 167 6.6 Checkingforintendedbehavior. . . . . . . . . . . . . . . . . . . . . . . 168 6.6.1 Codereview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 6.6.2 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 6.6.2.1 Creatingtests . . . . . . . . . . . . . . . . . . . . . . 173 6.6.2.2 Betatesting . . . . . . . . . . . . . . . . . . . . . . . 174 6.6.2.3 Estimatingtesteffectiveness. . . . . . . . . . . . . . . 174 6.6.3 Costoftesting . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 7 Sourcecode 177 7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 7.1.1 Quantityofsource . . . . . . . . . . . . . . . . . . . . . . . . . 179 CONTENTS v 7.1.2 Experiments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 7.1.3 ExponentialorPowerlaw . . . . . . . . . . . . . . . . . . . . . 182 7.1.4 Folkloremetrics . . . . . . . . . . . . . . . . . . . . . . . . . . 182 7.2 Desirablecharacteristics . . . . . . . . . . . . . . . . . . . . . . . . . . 183 7.2.1 Theneedtoknow . . . . . . . . . . . . . . . . . . . . . . . . . . 184 7.2.2 Narrativestructures . . . . . . . . . . . . . . . . . . . . . . . . . 185 7.2.3 Explainingcode . . . . . . . . . . . . . . . . . . . . . . . . . . 186 7.2.4 Memoryformaterialread . . . . . . . . . . . . . . . . . . . . . 188 7.2.5 Integratinginformation . . . . . . . . . . . . . . . . . . . . . . . 190 7.2.6 Visualorganization . . . . . . . . . . . . . . . . . . . . . . . . . 192 7.2.7 Consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 7.2.8 Identifiernames. . . . . . . . . . . . . . . . . . . . . . . . . . . 194 7.2.9 Programminglanguages . . . . . . . . . . . . . . . . . . . . . . 197 7.2.10 Buildbureaucracy . . . . . . . . . . . . . . . . . . . . . . . . . 198 7.3 Patternsofuse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 7.3.1 Languagecharacteristics . . . . . . . . . . . . . . . . . . . . . . 201 7.3.2 Runtimecharacteristics . . . . . . . . . . . . . . . . . . . . . . . 202 7.3.3 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 7.3.4 Controlflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 7.3.5 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 7.3.6 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 7.3.6.1 Literalvalues . . . . . . . . . . . . . . . . . . . . . . 206 7.3.6.2 Useofvariables . . . . . . . . . . . . . . . . . . . . . 207 7.3.6.3 Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 7.3.7 Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 7.3.8 Unusedidentifiers . . . . . . . . . . . . . . . . . . . . . . . . . 209 7.3.9 Orderingofdefinitionswithinaggregatetypes. . . . . . . . . . . 209 7.4 Evolutionofsourcecode . . . . . . . . . . . . . . . . . . . . . . . . . . 210 7.4.1 Function/methodmodification . . . . . . . . . . . . . . . . . . . 211 8 Storiestoldbydata 213 8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 8.2 Findingpatternsindata . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 8.2.1 Initialdataexploration . . . . . . . . . . . . . . . . . . . . . . . 215 8.2.2 Guidingtheeyethroughdata . . . . . . . . . . . . . . . . . . . . 217 8.2.3 Smoothingdata . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 8.2.4 Denselypopulatedmeasurementpoints . . . . . . . . . . . . . . 219 8.2.5 Visualizingasinglecolumnofvalues . . . . . . . . . . . . . . . 221 8.2.6 Relationshipsbetweenitems . . . . . . . . . . . . . . . . . . . . 222 8.2.7 3-dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 8.3 Communicatingastory . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 8.3.1 Whatkindofstory?. . . . . . . . . . . . . . . . . . . . . . . . . 226 8.3.2 Technicalitiesshouldgounnoticed . . . . . . . . . . . . . . . . . 228 8.3.2.1 Peoplehavecolorvision . . . . . . . . . . . . . . . . . 228 8.3.2.2 Colorpaletteselection . . . . . . . . . . . . . . . . . . 228 8.3.2.3 Plotaxis: whatandhow . . . . . . . . . . . . . . . . . 229 8.3.3 Communicatingnumericvalues . . . . . . . . . . . . . . . . . . 230 8.3.4 Communicatingfittedmodels . . . . . . . . . . . . . . . . . . . 231 9 Probability 233 9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.1.1 Usefulrulesofthumb. . . . . . . . . . . . . . . . . . . . . . . . 235 9.1.2 Measurementscales . . . . . . . . . . . . . . . . . . . . . . . . 235 9.2 Probabilitydistributions. . . . . . . . . . . . . . . . . . . . . . . . . . . 236 9.2.1 Aretwosampledrawnfromthesamedistribution? . . . . . . . . 240 9.3 Fittingaprobabilitydistributiontoasample . . . . . . . . . . . . . . . . 242 9.3.1 Zero-truncatedandzero-inflateddistributions . . . . . . . . . . . 244 9.3.2 Mixturesofdistributions . . . . . . . . . . . . . . . . . . . . . . 245 9.3.3 Heavy/Fattails . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 9.4 Markovchains. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 9.4.1 AMarkovchainexample . . . . . . . . . . . . . . . . . . . . . . 248 9.5 Socialnetworkanalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 vi CONTENTS 9.6 Combinatorics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 9.6.1 Acombinatorialexample . . . . . . . . . . . . . . . . . . . . . . 250 9.6.2 Generatingfunctions . . . . . . . . . . . . . . . . . . . . . . . . 252 10 Statistics 253 10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 10.1.1 Statisticalinference . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.2 Samplesandpopulations . . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.2.1 Effect-size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 10.2.2 Samplingerror . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 10.2.3 Statisticalpower . . . . . . . . . . . . . . . . . . . . . . . . . . 257 10.3 Describingasample. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 10.3.1 Acentrallocation . . . . . . . . . . . . . . . . . . . . . . . . . . 260 10.3.2 Sensitivityofcentrallocationalgorithms . . . . . . . . . . . . . 261 10.3.3 Geometricmean . . . . . . . . . . . . . . . . . . . . . . . . . . 262 10.3.4 Harmonicmean . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 10.3.5 Contaminateddistributions . . . . . . . . . . . . . . . . . . . . . 263 10.3.6 Compositionaldata . . . . . . . . . . . . . . . . . . . . . . . . . 264 10.3.7 Meta-Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 10.4 Statisticalerror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 10.4.1 Hypothesistesting . . . . . . . . . . . . . . . . . . . . . . . . . 266 10.4.2 p-value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 10.4.3 Confidenceintervals . . . . . . . . . . . . . . . . . . . . . . . . 268 10.4.4 Thebootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 10.4.5 Permutationtests . . . . . . . . . . . . . . . . . . . . . . . . . . 270 10.5 Comparingsamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 10.5.1 Buildingregressionmodels. . . . . . . . . . . . . . . . . . . . . 271 10.5.2 Comparingsamplemeans . . . . . . . . . . . . . . . . . . . . . 272 10.5.3 Comparingstandarddeviation . . . . . . . . . . . . . . . . . . . 276 10.5.4 Correlation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 10.5.5 Contingencytables . . . . . . . . . . . . . . . . . . . . . . . . . 278 10.5.6 ANOVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 11 Regressionmodeling 281 11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 11.2 Linearregression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 11.2.1 Scatteredmeasurementvalues . . . . . . . . . . . . . . . . . . . 285 11.2.2 Discretemeasurementvalues . . . . . . . . . . . . . . . . . . . . 286 11.2.3 Uncertaintyonlyexistsintheresponsevariable . . . . . . . . . . 287 11.2.4 Modelingdatathatcurves . . . . . . . . . . . . . . . . . . . . . 289 11.2.5 Visualizingthegeneraltrend . . . . . . . . . . . . . . . . . . . . 292 11.2.6 InfluentialobservationsandOutliers . . . . . . . . . . . . . . . . 293 11.2.7 Diagnosingproblemsinaregressionmodel . . . . . . . . . . . . 294 11.2.8 Amodel’sgoodnessoffit . . . . . . . . . . . . . . . . . . . . . 296 11.2.9 Abruptchangesinasequenceofvalues . . . . . . . . . . . . . . 297 11.2.10Lowsignal-to-noiseratio . . . . . . . . . . . . . . . . . . . . . . 298 11.3 MovingbeyondthedefaultNormalerror . . . . . . . . . . . . . . . . . . 300 11.3.1 Countdata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 11.3.2 Continuousresponsevariablehavingalowerbound. . . . . . . . 302 11.3.3 Transformingtheresponsevariable . . . . . . . . . . . . . . . . 303 11.3.4 Binaryresponsevariable . . . . . . . . . . . . . . . . . . . . . . 304 11.3.5 Multinomialdata . . . . . . . . . . . . . . . . . . . . . . . . . . 305 11.3.6 Ratesandproportionsresponsevariables . . . . . . . . . . . . . 306 11.4 Multipleexplanatoryvariables . . . . . . . . . . . . . . . . . . . . . . . 307 11.4.1 Interactionbetweenvariables. . . . . . . . . . . . . . . . . . . . 310 11.4.2 Correlatedexplanatoryvariables . . . . . . . . . . . . . . . . . . 312 11.4.3 Penalizedregression . . . . . . . . . . . . . . . . . . . . . . . . 315 11.5 Non-linearregression . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 11.5.1 Powerlaws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 11.6 Mixed-effectsmodels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 11.7 GeneralisedAdditiveModels . . . . . . . . . . . . . . . . . . . . . . . . 323 11.8 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 CONTENTS vii 11.8.1 Advantagesofusinglm. . . . . . . . . . . . . . . . . . . . . . . 324 11.8.2 Verylargedatasets . . . . . . . . . . . . . . . . . . . . . . . . . 325 11.8.3 Alternativeresidualmetrics . . . . . . . . . . . . . . . . . . . . 325 11.8.4 Quantileregression . . . . . . . . . . . . . . . . . . . . . . . . . 325 11.9 Extremevaluestatistics . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 11.10Timeseries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 11.10.1Cleaningtimeseriesdata . . . . . . . . . . . . . . . . . . . . . . 327 11.10.2Modelingtimeseries . . . . . . . . . . . . . . . . . . . . . . . . 327 11.10.2.1 BuildinganARMAmodel . . . . . . . . . . . . . . . 329 11.10.3Non-constantvariance . . . . . . . . . . . . . . . . . . . . . . . 332 11.10.4Smoothingandfiltering . . . . . . . . . . . . . . . . . . . . . . 332 11.10.5Spectralanalysis . . . . . . . . . . . . . . . . . . . . . . . . . . 333 11.10.6Relationshipsbetweentimeseries . . . . . . . . . . . . . . . . . 333 11.10.7Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 11.11Survivalanalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 11.11.1Kindsofcensoring . . . . . . . . . . . . . . . . . . . . . . . . . 335 11.11.1.1 Inputdataformat . . . . . . . . . . . . . . . . . . . . 336 11.11.2Survivalcurve . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 11.11.3Regressionmodeling . . . . . . . . . . . . . . . . . . . . . . . . 338 11.11.3.1 Coxproportional-hazardsmodel . . . . . . . . . . . . 338 11.11.3.2 Timevaryingexplanatoryvariables . . . . . . . . . . . 340 11.11.4Competingrisks . . . . . . . . . . . . . . . . . . . . . . . . . . 343 11.11.5Multi-statemodels . . . . . . . . . . . . . . . . . . . . . . . . . 343 11.12Circularstatistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 11.12.1Circulardistributions . . . . . . . . . . . . . . . . . . . . . . . . 345 11.12.2Fittingaregressionmodel . . . . . . . . . . . . . . . . . . . . . 346 11.12.2.1 Linearresponsewithacircularexplanatoryvariable . . 346 11.13Compositionaldata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 12 Miscellaneoustechniques 349 12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 12.2 Machinelearning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 12.2.1 Decisiontrees . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 12.3 Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 12.3.1 Sequencemining . . . . . . . . . . . . . . . . . . . . . . . . . . 352 12.4 Orderingofitems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 12.4.1 Seriation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 12.4.2 Preferreditemordering . . . . . . . . . . . . . . . . . . . . . . . 354 12.4.3 Agreementbetweenraters . . . . . . . . . . . . . . . . . . . . . 355 12.5 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 13 Experiments 357 13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 13.1.1 Measurementuncertainty . . . . . . . . . . . . . . . . . . . . . . 358 13.2 Designofexperiments . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 13.2.1 Subjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 13.2.2 Thetask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 13.2.3 Whatisactuallybeingmeasured? . . . . . . . . . . . . . . . . . 362 13.2.4 Adaptinganongoingexperiment . . . . . . . . . . . . . . . . . . 363 13.2.5 Selectingexperimentaloptions . . . . . . . . . . . . . . . . . . . 363 13.2.6 Factorialdesigns . . . . . . . . . . . . . . . . . . . . . . . . . . 364 13.3 Benchmarking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 13.3.1 Followingtheherd . . . . . . . . . . . . . . . . . . . . . . . . . 367 13.3.2 Variabilityintoday’scomputingsystems . . . . . . . . . . . . . 367 13.3.2.1 Hardwarevariation . . . . . . . . . . . . . . . . . . . 368 13.3.2.2 Softwarevariation . . . . . . . . . . . . . . . . . . . . 371 13.3.3 Thecloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 13.3.4 Endusersystems . . . . . . . . . . . . . . . . . . . . . . . . . . 374 13.4 Surveys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 14 Datapreparation 377 viii CONTENTS 14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 14.1.1 Documentingcleaningoperations . . . . . . . . . . . . . . . . . 378 14.2 Outliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 14.3 Malformedfilecontents . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 14.4 Missingdata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 14.4.1 Handlingmissingvalues . . . . . . . . . . . . . . . . . . . . . . 382 14.4.2 NAhandlingbylibraryfunctions . . . . . . . . . . . . . . . . . . 383 14.5 Restructuringdata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 14.5.1 Reorganizingrows/columns . . . . . . . . . . . . . . . . . . . . 383 14.6 Miscellaneousissues . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 14.6.1 Applicationspecificcleaning . . . . . . . . . . . . . . . . . . . . 384 14.6.2 Differentname,samemeaning . . . . . . . . . . . . . . . . . . . 384 14.6.3 Multiplesourcesofsignals . . . . . . . . . . . . . . . . . . . . . 385 14.6.4 Duplicatedata . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 14.6.5 Defaultvalues . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 14.6.6 Resolutionlimitofmeasurements . . . . . . . . . . . . . . . . . 385 14.7 Detectingfabricateddata . . . . . . . . . . . . . . . . . . . . . . . . . . 386 15 OverviewofR 387 15.1 YourfirstRprogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 15.2 Languageoverview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 15.2.1 DifferencesbetweenRandwidelyusedlanguages . . . . . . . . 388 15.2.2 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 15.3 Operationsonvectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 15.3.1 Creatingavector/array/matrix . . . . . . . . . . . . . . . . . . . 390 15.3.2 Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 15.3.3 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 15.3.4 Dataframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 15.3.5 Symbolicforms . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 15.3.6 Factorsandlevels . . . . . . . . . . . . . . . . . . . . . . . . . . 393 15.4 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 15.4.1 Testingforequality . . . . . . . . . . . . . . . . . . . . . . . . . 395 15.4.2 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 15.5 TheRtype(mode)system . . . . . . . . . . . . . . . . . . . . . . . . . 396 15.5.1 Convertingthetype(mode)ofavalue . . . . . . . . . . . . . . . 396 15.6 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 15.7 Definingafunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 15.8 Commonlyusedfunctions . . . . . . . . . . . . . . . . . . . . . . . . . 397 15.9 Input/Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 15.9.1 Graphicaloutput . . . . . . . . . . . . . . . . . . . . . . . . . . 398 15.10Non-statisticalusesofR . . . . . . . . . . . . . . . . . . . . . . . . . . 399 15.11Verylargedatasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 CONTENTS ix Read me 1st This book discusses what is currently known about software engineering based on an analysisofallpubliclyavailablesoftwareengineeringdata. Thisaimisnotasambitious asitsoundsbecausethereisnotalotofdatapubliclyavailable. The analysis is like a join-the-dots puzzle, except that the 600+ dots are not numbered, someofthemareactuallyspecsofdust,andmanydotsarelikelytobemissing. Theway forwardistojointhedotstobuildanunderstandingoftheprocessesinvolvedinbuilding and maintaining software systems; work is also needed to replicate some of the dots to confirmthattheyarenotspecsofdust,andtodiscovermissingdots. Thedotsaresprinkledacrosschapterscoveringthemajorissuesinvolvedinbuildingand maintaining a software system; when dots could be applicable to multiple issues your author selected the issue he felt maximised the return on use. If data relating to a topic is not publicly available, that topic is not discussed. Adhering to this rule has led to a very patchy discussion, although it vividly highlights the almost non-existent evidence forcurrenttheoriesofsoftwaredevelopment. The intended audience is software developers and their managers. Some experience of buildingsoftwaresystemsisassumed. Thematerialisintwoparts,onecoveringsoftwareengineeringandthesecondintroduces analysistechniquesapplicabletotheanalysisofsoftwareengineeringdata. 1. Economicfactorsmotivatethecreationofsoftwaresystems,whichareaproductof human cognitive effort; these two factors underpin any analysis of software engi- neeringprocesses. Softwaredevelopmenthasprogressedintotheageoftheecosystemi successfully buildingasoftwaresystemisdependentonateamcapableofeffectivelyselecting thelibrariesandpackagesprovidingthealgorithmsthataregoodenoughtogetthe jobdone, writecodewhennecessary, andtointerfacetoamyriadofservicesand othersoftwaresystems, 2. Developersarecasualusersofstatisticsanddon’twanttospendtimelearninglots ofmathematics;theywanttousethetechniques,notimplementthem.Thematerial assumes the reader has some basic mathematical skills, e.g., knows a little about probability, permutations, and the idea of measurements containing some amount oferror. Itisassumedthatdevelopertimeisexpensiveandcomputertimeischeap. Where possible a single, general, analysis technique is described, and a single way of codingsomethinginRisconsistentlyused. R waschosenasthelanguage/ecosystem forstatisticalanalysisbecauseofits ex- tensive ecosystem; there are many books, covering a wide range of subject areas, andactiveonlineforumsdiscussingRusage. Allthecodeanddatacanbedownloadedat: github.com/Derek-Jones/ESEUR-code-data The caption of every figure includes a Github and Local link. Clicking the Github link willcauseyourbrowsertoloadtheGithubpagecontainingthefigure’sRcode(assuming an Internet connection is available). Clicking the Local link will point the browser at a localcopy, whichisassumedtobe in file:///home/ESEUR-code-data, anditisalso assumedthataSambaserverisrunningonthelocalmachine(toservicetherequest). The names of data files usually share the same sequence of initial characters as the pdf filenamesofthecorrespondingresearchpaperdownloadedfromtheInternet. If you know of some interesting software engineering data, please tell me where I can downloadacopy. iAlgorithmshavebecomecommodities,withgood-enoughimplementationsofcommonlyrequiredalgo- rithmsavailableinmanypackages.Theageofthealgorithm,whendeveloperswererequiredtoimplementmost ofthelowlevelalgorithmstheyneeded,islonggone.