Automated Auditing of Design Principle Adherence ABSTRACT

  • 格式:pdf
  • 大小:28.42 KB
  • 文档页数:2

AutomatedAuditingofDesignPrincipleAdherenceJoelJonesDepartmentofComputerScienceUniversityofAlabamaTuscaloosa,AlabamaUSA35487-0290jones@cs.ua.eduRandySmithDepartmentofComputerScienceUniversityofAlabamaTuscaloosa,AlabamaUSA35487-0290

rsmith@cs.ua.edu

ABSTRACTSoftwaredesignpatternsandrefactoringbrowsersareusefultoolsindevelopinghigh-qualitysoftware.Object-OrientedOracle(OOO)isatoolthatcombinespatternsandrefactoringandextendsthemwiththeabilitytorecognizewhenthesource-basedoesn’tadheretosoftwaredesignprinciples.OOOreliesonsophisticatedcom-pileranalysesandasetofheuristicstorecognizecharacteristicsofthecodewhereadesignprincipleisapplicable,butisnotbeingused.WepresentanexamplewheretheOOOcanrecognizenon-complianceofdesignrulesandtheanalysesandheuristicsthatareusedtodotherecognition.Wealsodiscussotherpatternswherethisapproachappliesandresultsfromaprototype.

1.BACKGROUNDANDOBJECTIVESWritinghigh-qualitysoftwareisadifficultendeavor.Designpat-terns[2]areawayofincreasingtheabilityofsoftwareteamstocommunicateandforexperienceddesignerstopassontheirex-pertise.JustasanapprenticeprogrammerimmediatelyrecognizesfromglancingattheheaderofaCforloopwhattheloopisdoing,theexperienceddeveloperrecognizesthataclassnameendingin“Factory”islikelyaninstantiationofoneofthe“GangofFour”factorypatterns.Acommonwayprogrammersgainexpertiseisthroughanapprenticeship.Thisistime-consumingandassumestheexistenceofamasterprogrammer.Anautomatedsystemthatworksattheabstractionlevelofpatternswouldbeusefulinaidingjuniorprogrammersinbecomingmasterprogrammers.Toolssuchastherefactoringbrowserembeddedinthedevelopmentenviron-mentarealsoastepintherightdirection.Wearedevelopingatoolthatdoesautomatedauditingofcode’sadherencetodesignpatternsofobject-orienteddesign—anObject-OrientedOracle(OOO).OurtoolistobedeliveredasaplugintotheEclipse(www.eclipse.org)integrateddevelopmentenvironment.TheroleoftheOOOistosuggestchangestotheexistingcodetobringitintolinewithestab-lisheddesignprinciples.

2.EXAMPLEInthefollowingsections,weuseanexamplebaseduponacom-monprobleminimplementingimmutableobjectsinJava.Anim-

Permissiontomakedigitalorhardcopiesofallorpartofthisworkforpersonalorclassroomuseisgrantedwithoutfeeprovidedthatcopiesarenotmadeordistributedforprofitorcommercialadvantageandthatcopiesbearthisnoticeandthefullcitationonthefirstpage.Tocopyotherwise,torepublish,topostonserversortoredistributetolists,requirespriorspecificpermissionand/orafee.ACMSE’04Huntsville,AlabamaUSACopyright2004ACMX-XXXXX-XX-X/XX/XX...$5.00.

mutableobjectisonewhoseexternallyvisiblevaluedoesnotchangeonceitisconstructed.Acommonpropertyofimmutableobjectsisthattwodifferentimmutableobjectswiththesamefieldvaluesshouldcompareasequal.InJava,theequals(Object)methodinjava.lang.Objectisoverriddenintheimplementationoftheimmutableobject.However,thereisanadditionalconstraintonobjectsthatoverridetheequalsmethod.Suchobjectsmustover-ridethehashCode()method,particularlyiftheyaregoingtobeplacedintoaHashtable.Further,thehashCode()methodmustreturnthesamevaluefortwoobjectsthatequalsdeterminesareequal.OurarchitectureislikethatoftheSmalltalkrefactoringbrowser,whichincorporatesanalysisandtransformationcomponents[5].WeenhancetheSmalltalkrefactoringbrowserarchitecturewithheuris-ticstodeterminethelikelihoodofapatternbeingapplicableandanunobtrusivehintingmechanismthatnotifiestheuserofpossiblede-signpatternapplicability.TakingthehashCodeexamplefromabove,thefollowingvis-iblestepswouldbeperformedinanOOOenhancedrefactoringbrowser:

1.InformuserofapplicabilityofhashCodepattern2.UserdirectsbrowsertoinsertstubforhashCode3.UsercompletesbodyofhashCodeandcompiles4.Thebrowserremovesproblemindication.Tosupportthesevisibletasks,agreatdealofbehind-the-scenesworkoccurs.Themostdifficultisfindingtheapplicabilityofapar-ticularpattern.Unlikerefactoringbrowsers,oursystemdoesnotstartwithauseractiontodoarefactoringandtheselectionofcodetodotherefactoringon.OOOusesheuristicsbaseduponanalysistechniques,suchasdata-flowanalysis.Multipleheuristicsmaybeusedwhensearchingforapplicablepatternsandascoringmecha-nismusedtodeterminewhethertoprompttheuser.Thegoalistoavoidannoyingtheuserwithtoomanyinapplicablenotifications.

3.COMPILERANALYSESThebedrockofourworkistheuseofanalysesthatweredevel-opedinthecompilercommunity.Ananalysisisasummarizationofsomediscoveredpropertyoftheinputsourcecode.Mostanal-ysesareproceduralinscope.Theterminter-proceduralanalysisisusedtodescribeanalyseswhosedomainistheentireprogram.Weusetwointer-proceduralanalysesextensively—points-toandcall-graph.Thepoints-toanalysisisparticularlysuitedtoobject-orientedprogramming.Apoints-toanalysisofaprogramdeter-minesforeachpointerexpressionandpointervariableinthepro-gramwhatclassthepointerrefersto.Aconservativeestimateis