Best Practices and Lessons Learned Bill Williams What is Componentization Software Project Public Interface Neat Idea Deconstruction of Dyninst 2 Software Project Neat Idea What is Componentization ID: 627360
Download Presentation The PPT/PDF document "Deconstruction of Dyninst" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Deconstruction of Dyninst:Best Practices and Lessons Learned
Bill WilliamsSlide2
What is Componentization?
Software Project
Public Interface
Neat Idea
Deconstruction of Dyninst
2Slide3
Software Project
Neat Idea
What is Componentization?
Public Interface
Component
Public Interface
Component
Deconstruction of Dyninst
3Slide4
Why Components?Expose existing functionality
Build new tools easily
Orthogonality
Testability
Improved code qualityDeconstruction of Dyninst
4Slide5
Dyninst and the Components
AST
Binary
Process
Stackwalker
API
Patch
API
Symtab
API
DataFlow
API
Instruction
API
Parse
API
Code
Gen
ProcControl
API
Binary
= Existing Component
= New Component
= Proposed
DyninstAPISlide6
ParseAPI: Defining the component
Block
Edge
Function
Cached
register
liveness
info
Instrumentability
InstPoints
Dyninst
CFG model
Deconstruction of Dyninst
6Slide7
ParseAPI: Defining the component
Block
Edge
Function
Cached
register
liveness
info
Instrumentability
InstPoints
Dyninst
extensions
ParseAPI
CFG model
Deconstruction of Dyninst
7Slide8
PatchAPI: Refine your assumptions
Deconstruction of Dyninst
8Slide9
SymtabAPI: Creating good abstractions
…hiding messy internals
Great interface…
Deconstruction of Dyninst
9
ELF
PE
XCOFFSlide10
InstructionAPI: Adding missing features
Old: Control flow and not much else
Deconstruction of Dyninst
10Slide11
InstructionAPI: Adding missing features
New: control
flow and
data flow
Deconstruction of Dyninst
11Slide12
ProcControlAPI: Build one to throw away
Too many features,
and I don’t need all of them!
Deconstruction of Dyninst
12Slide13
ProcControlAPI: Build one to throw away
Ah, something
that just does
what I need!
Deconstruction of Dyninst
13Slide14
Stackwalker: When customers attack
Dyninst
requirements
STAT requirements
Deconstruction of Dyninst
14Slide15
DataflowAPI: Cool isn’t enough
Customers: the difference between a module
and a component
Deconstruction of Dyninst
15Slide16
What we’ve learnedInternal and external users driving interface
design
Test
new interfaces
Change code incrementallyKeep your project’s details where they belong
Deconstruction of Dyninst16Slide17
Componentization TradeoffsStability vs. improvementInternal requirements vs. external requirements
Development time
vs. scope
Structured vs. organicEarly feedback vs. interface stability
Deconstruction of Dyninst
17