ebook img

Evidence-based Software Engineering PDF

454 Pages·2020·21.726 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Evidence-based Software Engineering

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.

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.