530 likes | 695 Vues
This dissertation presents a comprehensive framework for formal design modeling and automated analysis, emphasizing the importance of modularity in design. It addresses the challenges arising from design changes, offering tools and strategies for rational decision-making and architectural adaptability. By incorporating concepts such as Baldwin and Clark's theory, Parnas's information-hiding modularity, and Design Structure Matrix (DSM) techniques, the work sets the stage for future research in evolvability analysis and design impact assessments. This framework aims to enhance existing practices in software design and development.
E N D
Modularity in Design:Formal Modeling & Automated Analysis Yuanfang Cai
Motivation A Real Story Designers Need to Reason • Consequences of a Change • Options to Accommodate a Change • Refactor or not • Architecture Adaptability Prevailing Design Representations are not Adequate
Goals • Ultimate Goal • Rational value-oriented decision-making • Tool support • The Goal of this Dissertation • Formal analyzable design modeling framework • Prototype tool: Simon
Thesis • Formal account of the key concepts of informal modularity • Baldwin and Clark's theory • Parnas's information hiding modularity • Automatic derivation of design coupling structures • Design Structure Matrix • Other coupling Analysis • Evolvability analyses such as design impact analysis. • General model of modularity in design is general. • Traditional object-oriented modularity • Newer aspect-oriented modularity
Outline • Traditional Design Representations • Emerging New Approach • Formal Models and Analysis Tool • Model Decomposition • Model Extension • Evaluation Summary • Future Work
(B) (A) • Not Well Suited to Model • Environment condition • Implicit design decisions • Not Designed for • Design structure reasoning • Evolvability analysis • Quantitative analysis Choose which? “information hiding”? “memory size”, “input size”?
Outline • Traditional Design Representations • Emerging New Approach • Formal Models and Analysis Tool • Model Decomposition • Model Extension • Evaluation Summary • Future Work
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 • Extension 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
DSM Limitations • 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 • Very hard to build
Outline • Traditional Design Representations • Emerging New Approach • Formal Models and Analysis Tool [CS05] • Model Decomposition • Model Extension • Evaluation Summary • Future Work
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 • 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 Dependence • 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 Simon Augmented Constraint Network User Input A Cluster Modeling Analysis
KWIC Regenerated Sequential Design Information Hiding Design
Design Impact Analysis (A) Sequential Design (B) Information Hiding Design
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]
Scalability Issue • Constraint Solving • Explicit Solution Enumeration
Outline • Traditional Design Representations • Emerging New Approach • Formal Models and Analysis Tool • Model Decomposition [CS06] • Model Extension • Evaluation Summary • Future Work
Model Decomposition (1) Construct CNF Graph (2) Cut Edges According to Dominance Relation (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
Sequential Design KWIC Decomposed Information Hiding
L0 C0 L2 L3 C1 Output 1: 2: 3: 4: 5: Result Integration 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 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
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]
Expressiveness Issue • Role Assignment • A decision brings a Set • Design Pattern • A Decision Brings a SubSpace • Crosscutting Decisions • Prevailing notification policy • Haneemann and Kiczales’s Analysis • Object Oriented vs. Aspect Oriented
Outline • Traditional Design Representations • Emerging New Approach • Formal Models and Analysis Tool • Model Decomposition • Model Extension • Evaluation Summary • Future Work
Model Extension 2: set subject_role(*elements):(v1{point, line}, v2{point, line, screen}, other); 3: set policy_observing(orig, other): (v1{color}, v2{color, position}, other); … 8: subspace d_paradigm: (OO, AO); 9: d_paradigm_OO[ 10: scalar adt_observer:(orig, other); … 14: ˜subject_role = orig => adt_subject = orig && ˜policy_observing = orig; ]; 16: d_paradigm_AO[ 17: scalar abstract_protocol_interface:(orig, other); … 22: ˜concrete_protocol = orig => abstract_prototcol_interface = orig && ˜subject_role = orig && ˜observer_role = orig && policy_update = orig;]; (1) Set-Valued Variable (2) SubSpace-Valued Variable (3) Crosscutting Constraints impl : observer role • subject = orig)(adt observer = orig ^ ( policy :policy_observing • policy = orig))
Automatically Generated ACN 1: scalar point_elements:(orig,other); 2: scalar line_elements:(orig,other); … 11: screen_elements != orig || (adt_observer = orig && policy_update = orig); 12: adt_subject = orig => d_mapping = orig && adt_observer = orig && policy_notify = push; Designate Design Alternative
Automatically Generated ACN 1: scalar point_elements:(orig,other); 2: scalar line_elements:(orig,other); … 13: abstract_protocol_impl = orig => abstract_protocol_interface = orig && d_mapping = orig && policy_notify = push; Designate Design Alternative
Generalizability--- Galileo • A Real Situation: How to Refactor the Error Handling Part? • Verified Decision Error Handling Option 3 Error Handling Option 4
Related Work • Product Line Engineering • Sinnema, Deelstra, Nijhuis, and Bosch [SDNB04] • Lane [L90] • Feature Oriented Programming • Batory and O’Malley [BO92,BSR03] • Czarnecki et al. and Eisenecker [EC00] • Design Structure and Business Strategy • Woodard06a
Evaluation Summary Thesis: • Formal account of the key concepts of informal modularity • Baldwin and Clark's theory • Parnas's information hiding modularity • Automatic derivation of design coupling structures • Design Structure Matrix • Other coupling Analysis • Evolvability analyses such as design impact analysis. • General model of modularity in design is general. • Traditional object-oriented modularity • Newer aspect-oriented modularity
Evaluation Summary Evaluation 1 • Formal account of the key concepts of informal modularity • Baldwin and Clark's theory • Parnas's information hiding modularity • Formalized Framework (Chapter 7) • Formalized Theories within the Settings
Evaluation Summary Evaluation 2 2. Automatic derivation of design coupling structures 3. Evolvability analyses such as design impact analysis. 4. General model of modularity in design is general. • Modeling Existing Designs • Two Canonical Designs • Three Real Designs • Analyze Well-known Problems • Compare the Results • Confirm Previous Results or Reveal Errors
Future Work • Improve Language Notation • Direct SAT Solver • Empirical Study • Integrate Design with: • Code: Combine with recovered design • Specification: Specification provides an environment • Testing: Testability, Unit Testing • Value: A Real Story