2014,Nov22,CCF-ADL软件微过程的挖掘和分析--DigitalArcheology周明辉zhmh@pku.edu.cn~zhmh软件研究所北京大学背景动机:理解软件是怎么开发的目标:提高软件生产效率和软件质量流水线过程:需求-〉设计-〉实现构件化组装方法:产品线工程高级语言开发工具……已有许多方法,存在一些问题过程,描述开发遵循的步骤程序员会根据自我经验(隐式知识)进行调适过程是模版,需要根据特定场景实现和定制实验,度量因素影响能够处理的因素较少,但软件开发的影响因素繁多且复杂交织实验获得的结果难以应用到不同的场景企业环境下的受控实验非常昂贵LinusLaw:足够多双眼睛,错误将无处遁形OpenSSL出现重大安全漏洞Chrome成功于快速发布Firefox学习Chrome,然而严重影响错误处理效率和用户体验项目的成功经验难以复制软件微过程及其优势什么是微过程?个体或项目在完成基本开发任务时,所采用的可重复的活动模式(例如解决缺陷,合并代码,沟通需求,指导新手等)--repeatableactivitypattern好处?反映人们的实际开发行为,•能捕捉隐式知识•能包含所有的上下文变化性不需要昂贵实验,•使用操作数据(operationaldata)在细粒度度量软件开发路线图:发现和利用微过程分析:项目个例构建大规模操作数据池深度研究广度研究分析:项目宇宙TriageDomainsTriageCodereuseTriageMinghuiZhouandAudrisMockus.MiningMicro-practicesfromOperationalData.FSE2014VisionsandChallengesTrack.WhatisOperationalData?Digitaltracesproducedintheregularcourseofworkorplay(i.e.,datageneratedormanagedbyoperationalsupporttools)NocarefullydesignedmeasurementsystemDifferentfromtraditionaldatascienceDataScienceandOperationalDataDatascience:ThestudyofthegeneralizableextractionofknowledgefromdataGoal:Lawsofextractingknowledgefromdata?WhatpropertiesofdatamakeitDataScience?•scienceextractsknowledgefromexperimentdataOperationalData(OD):datageneratedormanagedbyoperationalsupporttoolsnocarefullydesignedmeasurementsystemAudrisMockus:Engineering“BigData”Solutions.ICSE’2014Experimentaldata,实验数据例如,气温度量天气预报中所说的气温,指在野外空气流通、不受太阳直射下测得的空气温度•一般在地面1.5米高度百叶箱内测定•中国用摄氏温标(℃摄氏度)•一般一天观测4次,分别为02、08、14、20四个时次标准的度量设计•标准温度计,标准部署,固定气象站,标准时间点观测Operationaldata(OD),操作数据利用移动手机度量气温没有上下文:室内/室外/汽车里/是否开空调并非所有位置、所有时间都被覆盖需要发现DataLaw,例如,温度是如何影响传感器的?如何识别室内/室外等?SoftwareToolsthatGenerateODVersioncontrolsystems(VCS)SCCS,CVS,ClearCase,SVN,Bazaar,Mercurial,GitIssuetrackingandcustomerrelationshipmanagementBugzilla,JIRA,ClearQuest,SiebelCodeediting(Eclipse),communication(Twitter),documentation(StackOverow),...ExampleOD:VersionControlDatadate:2014-10-1601:25:30,developerid:minghui,branch:master,Comment:\Fixbug3987-infiniteloopifn=0ExampleOD:issuetrackingdataGNOMEissuetracking总之,软件操作数据(OD)记录着开发的数字轨迹每一次代码提交、每一个缺陷报告、每一个邮件等,都被保存在软件支持工具中,•例如,问题追踪系统,版本控制系统记录了软件开发过程和代码的演变、以及开发者个体及其交互的行为理解过去预测未来推荐最佳实践软件操作数据软件操作数据-规模Gnome有70多万个缺陷数据每天有上百个新缺陷被提出Apache有60多万封邮件每天有1千多封新邮件产生Mozilla有2亿多条代码提交每天有2万多条新的代码提交Github.com拥有超过1.2千万的项目SourceForge.net和GoogleCode分别有超过30万项目Internet上所有开源项目的数据总量估计在300T构建大规模数据池RetrievedatafromInternetThevarioustypesofrepositories•Cvs/svn/git/hgforVCS;jira/bugzillaforITStheprojectadministrator’spolicies•banningtheIPaddressesthatdothedataretrievalthenetworkbandwidththehugeamountofchanges,issuesinaproject•GitHubhasmorethan12millionrepositoriesStandardizedataItisalotofworktoextracttherawdatafromtheoperationalsupporttoolsandtostandardizeintoformatsconvenientforanalysis人们的尝试FOSSMole,Sonar,…我们的尝试:收集,规整化和开源数据可视化项目基本信息和基础量度DELLR910(4U),16-coresX7550,64GbRAM,500G*12SASDELLMD3200,12*2TBSASDELLMD3600,12*4TBSASDELLR710*4,E5506(2.13G)*2,64GbRAM,2TSAS(+8T)DELLR720XD,8-coresXeonE5-2670(2.6G)*2,384GbRAM,2*300G+10*3T数据层次Level1:•normalizeddataLevel0:rawdataLevel2-n:•standardizeddata数据驱动的软件工程:现状基于数据研究效率和质量(预测、推荐、支持决策)数据分析方法(提高效率)数据中心FOSSmole,Sonar学术界•Empiricalsoftwareengineering•Miningsoftwarerepositories•CMU,UIUC,UBC,Queens,…产业界•微软:Softwareanalytics•IBM:AnalyticsandOptimize•华为,西门子,…路线图:发现和利用微过程分析:项目个例构建大规模操作数据池深度研究广度研究分析:项目宇宙TriageDomainsTriageCodereuseTriage从一个特定问题开始:什么是缺陷分类(BUGTRIAGE)的微过程?Mozilla和Gnome的triage微过程方法对Mozilla和Gnome做深度分析从Bugzilla数据来度量issueworkflow初始发现DeveloperteamsareoverwhelmedbythemassiveinflowoflowqualityissuesManymorenon-developersthandevelopers50K/yearIncomingReportsBugTriageDeveloperrejectconfirmincomplete,duplicate,etc.Mozilla和Gnome的triage微过程•Triage任务:filter,complete,assign•挖掘微过程的方法•Datavsinterviews•Officialworkflowvsobservedtransitions•Unusualtimetrends•微过程的例子•Pickrecentissues,pickissuesonspecifictopic•CorrectOSversion,Product,otherfields•DeveloperopensissueasNEW(notUNCONFIRMED)•Auto-closemassivenumberofissues•Correctnessofavalueisconfirmedbyasubsequentactivity使用发现的微过程度量triage0.00%20.00%40.00%60.00%80.00%100.00%RejectConfirmSeverityPriorityVersionOSProductGnomeTriagerGnomeDeveloperMozillaTriagerMozillaDeveloperAccuracyofIssuesbyTriageTaskandRoleUnderstandingtheimpactoftriageinopensourcesoftwareprojects.ImpactofTriage:aStudyofMozillaandGnome–JialiangXie,etcal.ESEM’2013•Measureaccuracyoftriagetasks–Non-developersareslightlylessaccurateat•Confirmingissues•AssigningproductsPRODUCTASSIGNMENTRECOMMENDER既然non-developer经常将issue分配到错误的product,因此,ProductAssignmentRecommenderModeltheaccuracyofproductassignmentPredicttheaccuracyofproductassignmentforthenewissuePlacetheissueintoqueuesaccordingtoitsaccuracyModelPredictPlaceintoqueuesRecommendedqueueforfixingRecommendedqueueforre-consideringassignmentPastactivitiesinITSNewissue……Recommendingissueswithhighaccuracyproductassignmenttodevelopers.ProductAssignmentRecommender–JialiangXie,etcal.ICSE’2014ApproachModeltheaccuracyofproductassignmentBuildlinearregressionmodelBut,no