340 likes | 355 Views
Modular Analysis of Formal Design Models. Yuanfang Cai. Kevin Sullivan. Problem Analysis. A Real Story. Change Impact Change Options Refactor or not …. Reasoning. Economic-Oriented Properties. Design Structure. Current Design Representations are not Designed for this Purpose.
E N D
Modular Analysis of Formal Design Models Yuanfang Cai Kevin Sullivan
Problem Analysis A Real Story • Change Impact • Change Options • Refactor or not • … Reasoning Economic-Oriented Properties Design Structure Current Design Representations are not Designed for this Purpose
Modularity in Design: Formal Modeling and Automated Analysis • Value-oriented Decision-Making: Theory and Tool • Analyzable Design Modeling Framework • Traditional Design Representations • Emerging New Approach • Formal Models and Analysis Tool (CS05) • Scalability Issue of Formal Techniques
Traditional Design Representations (A) (B) • Environment condition? • Implicit design decisions? • Design structure reasoning? • Evolvability analysis? • Quantitative analysis? Choose which? “information hiding”? “memory size”, “input size”?
Emerging New Approach • “Design Rule: the Power of Modularity” [Baldwin 00] • Design Rules • Modeling: Design Structure Matrix (DSM) [Steward81,Eppinger91] • Economic Analysis: Net Option Value (NOV) • “The Structure and Value of Modularity” [SWC01]
Design Structure Matrix (DSM) Input Circular Shift • Design Variables • Dependences • Design Rule • Proto-Modules • Reorder Alphabetizing Output Master Control
Design Structure Matrix (DSM) (B) Information Hiding Design (A) Sequential Design
New Approach Summary • General • Object-Oriented (OO), Aspect-Oriented (AO) [SGSC05] • Generalized Information Hiding Interface • Represent Software Coupling Structure • Constantine, Stevens, Brooks…. • Call Graph, Reflexion Model [Murphy 95], Lattix • Make Information Hiding Criterion Precise • Design Rules are Invariant to Environment Change • Analyze Software Quantitatively • Connections to Existing Methods around DSMs
DSM Limitations • Very hard to build • Can’t represent possible choices • Input Condition? • Core Size? • Design Impact Analysis? • What if x changes from x1 to x2? • How many ways? • Ambiguous • What is “dependence?” • a b c • c d e
Constraint Network • Variables • Design Dimensions • Values • Possible Choices • Constraints • Relations Among Decisions input_ds:{core4,disk,core0,other}; envr_input_size:{small,medium,large}; input_ds = disk => envr_input_size = large;
Augmented Constraint Network (ACN) • Constraint Network • Dominance Relation • Design Rules • Environment • Clustering (input_impl, input_ADT) (input_impl, input_format) Environment: {envr_input_format, envr_core,…} Design Rules: {input_ADT, circ_ADT…}
1. Constraint Network DesignSpace matrix{ client:{dense, sparse}; ds:{list_ds, array_ds, other_ds}; alg:{array_alg, list_alg, other_alg}; ds = array_ds => client = dense; ds = list_ds => client = sparse; alg = array_alg => ds = array_ds; alg = list_alg => ds = list_ds; } 2. Dominance Relation {(ds, client), (alg, client)} 3. Clustering Environment Cluster: {client} Design Cluster: {ds, alg} Analyzable Models • Analyses • Design Change Impacts • Precise DSM Analyses • Design Automaton • Change Dynamics • Design Space • Design Evolution
ds = list_ds S5 S4 S3 S6 S2 Design Automaton • Design Impact Analysis client = sparse client = dense ds = array_ds alg = array_alg client = sparse ds = list_ds alg = list_alg S1 alg = other_alg client = dense ds = array_ds alg = other_alg client = sparse ds = other_ds client = sparse alg = other_alg client = sparse ds = other_ds alg = other_alg client = dense ds = other_ds alg = other_alg client = sparse ds = list_ds alg = other_alg • 1. Non-deterministic; • 2. Minimal Perturbation; • 3. Respect Dominance Relation
S6 S4 S3 S5 S2 Design Automaton • Precise Definition of Pair-wise Dependence – DSM Derivation client = sparse client = dense ds = array_ds alg = array_alg client = sparse ds = list_ds alg = list_alg S1 alg = other_alg client = dense ds = array_ds alg = other_alg client = sparse ds = other_ds client = sparse client = sparse ds = other_ds alg = other_alg client = dense ds = other_ds alg = other_alg client = sparse ds = list_ds alg = other_alg x x x x
Pair-wise Dependence Cluster Set Design Automaton Derive Dominance Relation Constraint Network Derive Our Tool: Simon Augmented Constraint Network (ACN) User Input A Cluster Modeling Analysis
KWIC Regenerated Sequential Design Information Hiding Design
Design Impact Analysis (A) Sequential Design (B) Information Hiding Design
Scalability Issue • Constraint Solving • Explicit Solution Enumeration • Intolerable Performance
Model Decomposition (1) Construct CNF Graph (2) Cut Edges According to the Dominance Relation of the ACN (3) Create Condensation Graph (4) Compose Sub-ACN 1: linestorage_impl = orig => linestorage_ADT = orig && linestorage_ds = core4; 2: linestorage_ds = core4 => envr_input_size = medium || envr_input_size = small; 3: linestorage_ds = core0 => envr_input_size = small && envr_core_size = large; 4: linestorage_ds = disk => envr_input_size = large; 5: circ_ds = copy => envr_input_size = small || envr_core_size = large; 6: circ_impl = orig => circ_ADT = orig && circ_ds = index && linestorage_ADT = orig;
Construct CNF Graph (¬linestorage impl = orig linestorage ADT = orig) (¬linestorage impl = orig linestorage ds = core4) (¬linestorage ds = core4 envr input size = medium || envr input size = small) (¬linestorage ds = core0 envr input size = small) (¬linestorage ds = core0 envr core size = large) (¬linestorage ds = disk envr input size = large) (¬circ ds = copy envr input size = small envr core size = large) (¬circ impl = orig circ ADT = orig) (¬circ impl = orig circ ds = index) (¬circ impl = orig linestorage ADT = orig)
envr_input_size envr_core_size circ_ds linestorage_ds circ_impl linestorage_impl linestorage_ADT circ_ADT Construct CNF Graph (1) Construct CNF Graph (2) Cut Edges According to Dominance Relation (¬circ_ds = copy envr_input_size = small envr_core_size = large) (¬linestorage_ds = core0 envr input size = small)
envr_input_size envr_core_size linestorage_ADT circ_ADT linestorage_ds linestorage_impl circ_ds circ_impl Construct Condensation Graph envr_input_size envr_core_size linestorage_ADT circ_ADT circ_ds, circ_impl envr_input_size envr_core_size linestorage_ADT linestorage_ds linestorage_impl Line Storage Function CircularShift Function
KWIC Decomposed Information Hiding (20 ACN Variables) Sequential Design (18 ACN Variables)
L0 C0 L2 L3 C1 Output 1: 2: 3: 4: 5: Result Integration---1. Design Impact Analysis 1: envr_input_size = large 2: envr_core_size = small 3: linestorage_ADT = orig 4: linestorage_ds = other 5: linestorage_impl = other 6: circ_ADT = orig 7: circ_ds = core4 8: circ_impl = orig envr_input_size = large 1: 2: 3: 4: 5: Design Impact Analysis Input 1: Original Design 1: 2: 3: 4: 5: 1: envr_input_size = medium 2: envr_core_size = small 3: linestorage_ADT = orig 4: linestorage_ds = core4 5: linestorage_impl = orig 6: circ_ADT = orig 7: circ_ds = index 8: circ_impl = orig envr_input_size = large 1: 2: 3: 6: 7: 8: 1: envr_input_size = large 2: envr_core_size = small 3: linestorage_ADT = orig 4: linestorage_ds = disk 5: linestorage_impl = other 6: circ_ADT = orig 7: circ_ds = core4 8: circ_impl = orig 1: 2: 3: 6: 7: 8: Input 2: A Change envr_input_size = large envr_input_size = large
Result Integration--- 2. DSM Generation Pair-wise Dependence Relation
Generalizability--- WineryLocator [Lopes05] (1) Missing Transitive Dependences (2) Ambiguities (3) Potential Problems in Quantitative Analysis
Generalizability--- HyperCast 6 Main Functions No Crosscutting 5 “Crosscutting” Functions
Generalizability--- HyperCast [SGSC05] • Missing Transitive Dependences • Potential Problems in Quantitative Analysis
In Summary • Evolvability and Modularity Analysis From Formal Models • Reasonable Performance • Confirm or Reveal Errors in Previous Work • Architectural Slicing
Related Work • Constraint Network Decomposition • Choueiry and Noubir [CN98] • Dechter and Peal [DP89] • Freuder and Hubbe [FH93] • Bottom-up Clustering • Hutchens and Basili [HB95] • Schwanke [S91] • Mancoridis [MMRC98]
Related Work • Alloy • Jackson [J06] • DSM • MacCormack, Rusnak, and Baldwin [MRB05] • Lattix—A Commercial Tool • Sangal, Jordan, Sinha, and Jackson [SJSJ05] • Traditional Design Impact Analysis • Robert Arnold and Shawn Bohner [AB96]
Future Work • Improve Language Notation • Direct SAT Solver • Empirical Study • Integrate Design with: • Code: Combine with recovered design • Specification: Specification provides an environment • Value: A Real Story