1 / 34

Modular Analysis of Formal Design Models

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.

hang
Télécharger la présentation

Modular Analysis of Formal Design Models

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modular Analysis of Formal Design Models Yuanfang Cai Kevin Sullivan

  2. 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

  3. 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

  4. 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”?

  5. 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]

  6. Design Structure Matrix (DSM) Input Circular Shift • Design Variables • Dependences • Design Rule • Proto-Modules • Reorder Alphabetizing Output Master Control

  7. Design Structure Matrix (DSM) (B) Information Hiding Design (A) Sequential Design

  8. 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

  9. 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

  10. 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;

  11. 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…}

  12. 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

  13. 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

  14. 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

  15. 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

  16. KWIC Regenerated Sequential Design Information Hiding Design

  17. Design Impact Analysis (A) Sequential Design (B) Information Hiding Design

  18. Scalability Issue • Constraint Solving • Explicit Solution Enumeration • Intolerable Performance

  19. 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;

  20. 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)

  21. 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)

  22. 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

  23. KWIC Decomposed Information Hiding (20 ACN Variables) Sequential Design (18 ACN Variables)

  24. 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

  25. Result Integration--- 2. DSM Generation Pair-wise Dependence Relation

  26. Generalizability--- WineryLocator

  27. Generalizability--- WineryLocator [Lopes05] (1) Missing Transitive Dependences (2) Ambiguities (3) Potential Problems in Quantitative Analysis

  28. Generalizability--- HyperCast 6 Main Functions No Crosscutting 5 “Crosscutting” Functions

  29. Generalizability--- HyperCast [SGSC05] • Missing Transitive Dependences • Potential Problems in Quantitative Analysis

  30. In Summary • Evolvability and Modularity Analysis From Formal Models • Reasonable Performance • Confirm or Reveal Errors in Previous Work • Architectural Slicing

  31. 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]

  32. 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]

  33. 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

  34. Questions?

More Related