ebook img

Aspect-Oriented Refactoring of Berkeley DB PDF

153 Pages·2007·1.24 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 Aspect-Oriented Refactoring of Berkeley DB

Otto-von-Guericke-Universität Magdeburg School of Computer Science Department of Technical and Business Information Systems Diplomarbeit Aspect-Oriented Refactoring of Berkeley DB Author: Christian Kästner February 7,2007 Advisors: Prof. Dr. rer. nat. habil. Gunter Saake UniversityofMagdeburg SchoolofComputer Science Department ofTechnical andBusiness Information Systems P.O.Box4120,D–39016 Magdeburg, Germany Prof. Don Batory TheUniversity ofTexasatAustin Department ofComputerSciences 2.124 TaylorHall,Austin,Texas78712, USA Kästner,Christian: Aspect-OrientedRefactoringofBerkeleyDB Diplomarbeit,Otto-von-Guericke-UniversitätMagdeburg,2007. CONTENTS I Contents Contents i ListofFigures v ListofTables vii ListofAbbreviations ix 1 Introduction 1 1.1 CaseStudy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 Scope andDelimitation . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.2 BerkeleyDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 StructureofthisThesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Background 7 2.1 ArchitectureofBerkeleyDB . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Feature-OrientedProgramming . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4 Aspect-OrientedProgramming . . . . . . . . . . . . . . . . . . . . . . . . 16 2.5 AspectJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.6 AHEAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3 Refactoring Berkeley DBwithAspectJ 25 3.1 Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2 IdentificationofFeatures . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3 TheRefactoring Process . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.3.1 Staticintroductions . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.3.2 Methodrefinements . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3.3 Homogeneousextensions . . . . . . . . . . . . . . . . . . . . . . . 38 3.3.4 Accessinglocalvariables . . . . . . . . . . . . . . . . . . . . . . . 39 3.3.5 VerifyingCorrectness . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.4 Refactored Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.4.1 Feature size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 II CONTENTS 3.4.2 Verylarge features . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.5 FeatureModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4 Expressiveness ofAspectJLanguage Constructs 53 4.1 AspectJLanguageConstructs . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.1.1 StaticIntroductions . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.1.2 Methodextensions . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.1.3 Callextensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.1.4 Conditionalextensions . . . . . . . . . . . . . . . . . . . . . . . . 54 4.1.5 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.1.6 Homogeneousextensions . . . . . . . . . . . . . . . . . . . . . . . 56 4.1.7 Otherlanguageconstructs . . . . . . . . . . . . . . . . . . . . . . 59 4.2 LanguageLimitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.2.1 StatementExtensionProblem . . . . . . . . . . . . . . . . . . . . 60 4.2.2 Parameter IntroductionandPassingProblem . . . . . . . . . . . . 61 4.2.3 ExceptionIntroductionProblem . . . . . . . . . . . . . . . . . . . 68 4.2.4 LocalVariablesAccessProblem . . . . . . . . . . . . . . . . . . . 69 4.2.5 AdviseObjectsProblem . . . . . . . . . . . . . . . . . . . . . . . 72 4.2.6 Scope Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5 The Feature OptionalityProblem 79 5.1 DerivativeFeature Approach . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.1.1 Semanticvs. ImplementationDependencies . . . . . . . . . . . . . 82 5.1.2 ImplementingDerivatives . . . . . . . . . . . . . . . . . . . . . . 83 5.1.3 Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.2 OptionalWeavingApproach . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 6 Feature Order 91 6.1 ObservationsonShared JoinPoints . . . . . . . . . . . . . . . . . . . . . . 92 6.2 ObservationsonAccidentalWeaving . . . . . . . . . . . . . . . . . . . . . 95 6.3 ObservationsonAspectExtensions . . . . . . . . . . . . . . . . . . . . . . 96 6.4 OtherProblemsofAspectJ’sWeaver . . . . . . . . . . . . . . . . . . . . . 97 6.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 7 Understandably andMaintainabilityofRefactored Features 99 7.1 AspectJSyntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.1.1 General Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 7.1.2 AdvancedPointcutsare HardtoUnderstand . . . . . . . . . . . . . 102 7.1.3 ComplexityandScale . . . . . . . . . . . . . . . . . . . . . . . . 104 7.2 CouplingofBase CodeandAspects . . . . . . . . . . . . . . . . . . . . . 106 7.3 FragilePointcuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.3.1 ProblemDefinition . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.3.2 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.3.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.4 ReadabilityoftheBase Code . . . . . . . . . . . . . . . . . . . . . . . . . 111 7.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 8 Related Work 113 9 Conclusion 117 9.1 FurtherWork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 9.2 ColoredIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 A The DimensionModel 125 Bibliography 129 IV LIST OF FIGURES V List of Figures 2.1 ArchitectureOverviewofBerkeleyDB. . . . . . . . . . . . . . . . . . . . 8 2.2 ExtractMethodRefactoringExample. . . . . . . . . . . . . . . . . . . . . 13 2.3 ExtractMethodRefactoring: EclipseDialog. . . . . . . . . . . . . . . . . 13 2.4 FeatureDiagramNotations. . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5 FeatureDiagramExample. . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.6 guidslGrammarExample. . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.7 AspectJAspectExample. . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.8 AHEADFeature Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.9 Composed AHEADFeature Module. . . . . . . . . . . . . . . . . . . . . . 23 3.1 StaticintroductionsusingAspectJ’s ITMDs. . . . . . . . . . . . . . . . . . 32 3.2 DifferentVersionsofRefactored Introductions. . . . . . . . . . . . . . . . 34 3.3 ExtractSimpleMethodRefinement Refactoring. . . . . . . . . . . . . . . . 35 3.4 ExtractCallRefinementRefactoring. . . . . . . . . . . . . . . . . . . . . . 36 3.5 ExtractInnerMethodRefinementRefactoring. . . . . . . . . . . . . . . . . 37 3.6 RequiredAccesstoaLocalVariable. . . . . . . . . . . . . . . . . . . . . . 39 3.7 HookMethodtoAccessandChangeLocalVariables. . . . . . . . . . . . . 40 3.8 FeatureDiagramofBerkeleyDB. . . . . . . . . . . . . . . . . . . . . . . 47 3.9 guidslGrammarofBerkeleyDB. . . . . . . . . . . . . . . . . . . . . . . . 48 3.10 LoggingSubsystemFeatureDiagram. . . . . . . . . . . . . . . . . . . . . 49 3.11 I/OSubsystemFeature Diagram. . . . . . . . . . . . . . . . . . . . . . . . 49 4.1 ComparisonofConditionalandUnconditionalCrosscuts. . . . . . . . . . . 55 4.2 HomogeneousCrosscutsfortheTriggerLatchExtension. . . . . . . . . . . 57 4.3 ExampleoftheParameterIntroductionandPassingProblem. . . . . . . . . 62 4.4 Passinga ParameterwithacflowPointcut. . . . . . . . . . . . . . . . . . . 63 4.5 PassingParameterswithaParameterObject. . . . . . . . . . . . . . . . . . 65 4.6 PassingParameterswithapotentialAspectJExtension. . . . . . . . . . . . 68 4.7 ExceptionIntroductionProblematcallPointcuts. . . . . . . . . . . . . . . 70 4.8 PreventingAccesstoMemberVariable. . . . . . . . . . . . . . . . . . . . 71 4.9 CaptureLocalVariablefromCaller’sParameter. . . . . . . . . . . . . . . . 71 4.10 AccesstoLocalVariableswitha context Keyword. . . . . . . . . . . . . . 72 4.11 DifferentApproachestoAdviseanObject. . . . . . . . . . . . . . . . . . . 74 5.1 FeatureOptionalityExample. . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.2 ResolvingFeatureInteractions . . . . . . . . . . . . . . . . . . . . . . . . 80 5.3 DerivativefortheExample. . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.4 ResolvedStatisticsSubsystemFeature Diagram. . . . . . . . . . . . . . . . 82 5.5 ScaleofDerivativeFeatures. . . . . . . . . . . . . . . . . . . . . . . . . . 85 5.6 AutomaticDerivativeSelectionusingaguidslGrammar. . . . . . . . . . . 87 5.7 OptionalAdviceExample. . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6.1 FeatureOrderExamplewith SJP. . . . . . . . . . . . . . . . . . . . . . . . 93 6.2 DaemonThreadsCreationandShutdownOrder. . . . . . . . . . . . . . . . 94 6.3 AspectRecursion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.4 ErrorPropagation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 7.1 SyntaxComparison. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7.2 PointcutComplexityDiagram. . . . . . . . . . . . . . . . . . . . . . . . . 105 7.3 FeatureSize vs. PointcutComplexity. . . . . . . . . . . . . . . . . . . . . 106 7.4 Aspect-awareExtractMethodRefactoring. . . . . . . . . . . . . . . . . . . 110 9.1 ColoredSource Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 9.2 ColoredIDEScreenshot. . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 A.1 QuantifiedInteractionbetweenDimensions. . . . . . . . . . . . . . . . . . 126 A.2 VariablesoftheDerivativeModel. . . . . . . . . . . . . . . . . . . . . . . 127 List of Tables 2.1 AspectJPointcutDesignatorsinAspectJ1.5. . . . . . . . . . . . . . . . . 20 3.1 UsedMetrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.2 FeatureSize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.3 FeatureDependencies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.1 HomogeneousDynamicExtensions. . . . . . . . . . . . . . . . . . . . . . 58 4.2 ExtensionsusedinRefactoringBerkeleyDB. . . . . . . . . . . . . . . . . 76 VIII

Description:
Christian Kästner. February 7 4 Expressiveness of AspectJ Language Constructs. 53 . 2.3 Extract Method Refactoring: Eclipse Dialog DB into features using Aspect-Oriented Programming (AOP) techniques and present the and Cytron (2002) refactored middleware to improve customizability.
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.