300 likes | 317 Views
This thesis explores multi-paradigm design as a uniform and formal basis for defining common programming paradigms and analyzing application and solution domains.
E N D
Multi-Paradigm Design James O. Coplien Ph.D. Student, VUB 18 May 2000
Thesis statement • Building on basic primitives of classic category theory and human cognition—commonality and variation—multi-paradigm design provides a uniform and formal basis for the definition of common programming paradigms, and a common basis for analysis of the application and solution domains, and the translation between them.
Thesis Claims • Abstraction and Intentionality: First Principles of Abstraction • Meta-Design: Paradigm selection as a design activity • A formal, domain-based model for paradigm • Commonality Categories • Application Domain and Solution Domain Analyses • Multiple paradigms within a domain • Dependencies between domains: Limits to Modularity • Theory of Negative Variability: Generalizing cancellation • Regularization of Ad-Hoc Design Patterns
The Purpose of Design • To solve a problem • Design for change and all else follows • Partitioning the Work • Domains that follow business structure • Shaping modular structure • Choose a paradigm according to a basis • Attentiveness to Aesthetics • Solution domain analysis
Commonality and Variability Analysis • The basis of abstraction (classic model) • Families: commonalities and regularity in variabilities • Claim: Abstraction and Intentionality
Commonality Analysis • The essence of abstraction • Commonalities define families from family members • We allow partitioning criteria to arise from the abstractions, not vice versa! • Many axes of commonality: • Behavior • Data structure • Name • Code structure • We define these as commonality categories • Claims: Meta-design
Variability Analysis • Same dimensions as commonality • A commonality dimension + a variability dimension form a paradigm • Objects: common structure and behavior, variable structure and algorithm • Overloading: common semantics, variable interface and semantics • … • Claims: A basis for paradigm
The place of paradigm • A way of organizing things • We organize by abstracting • Abstracting focuses on what is common • We treat variations separately
A “Universal Paradigm” • Define a software family (by grouping according to commonalities) • Find the commonalities • Establish the parameters of variation
OO As a Special Case • Arrange by commonalities • Collect similar objects into classes • Organize classes together using inheritance • Establishes a base class interface • Establish parameters of variation • Each family member has its own internal data structure • Each family member may implement a behavior with a different algorithm
Domain Analysis • Traditional domain analysis: study of a subject area, the building of families • Frequently based on commonality and variability analysis • There are many domains: • Many application domains • Solution domain
A problem: Negative Variation • In OO, inheritance with cancellation • BUT: it is more general • Template specialization: cancels structure • Argument defaulting and overriding • Many design patterns • Negative variation formalises these exceptions
TextBuffer Transformational Analysis TextBuffer: Common Structure and Algorithm Parameters of Variability Default / Technique Meaning Domain Binding Output Type The formatting of text lines is sensi- tive to the output medium Database, RCS, TTY, UNIX file Run UNIX File Different buffer types support different character sets Character Set ASCII, EBCDIC, FIELDATA Compile ASCII Working Set Management Different applications need to cache dif- ferent amounts of memory Whole file, whole page, LRU fixed Compile Whole file Debugging Code Debug in-house only, but keep tests in source code Debug, production None Compile
TextBuffer Transformational Analysis TextBuffer: Common Structure and Algorithm Parameters of Variability Default / Technique Meaning Domain Binding Output Type Structure, Algorithm The formatting of text lines is sensi- tive to the output medium Database, RCS, TTY, UNIX file Run UNIX File Virtual Functions Different buffer types support different character sets Character Set Type ASCII, EBCDIC, FIELDATA Compile ASCII Templates Working Set Management Algorithm Different applications need to cache dif- ferent amounts of memory Whole file, whole page, LRU fixed Compile Whole file Inheritance Debugging Code Code Fragments Debug in-house only, but keep tests in source code Debug, production None #ifdef (from Negative variability Table) Compile
Text Buffer Dependency Graph Character Set: Type Output Type: Structure and Algorithm Text Buffer: Common Structure And Algorithm Debugging Code: Fine Algorithm Working Set Management: Algorithm
The File Domain Encryption: Character Set: Parametric Algorithm Output Media Debugging Record Type Code: Fine Structure and Algorithm Algorithm Buffer Type: Structure and Algorithm
The unified design • Claim: domain dependencies Encryption: Algorithm Output Media Character Set: Type Debugging Code: Algorithmic Frags Working Set Text Buffer management: Debugging Common Structure Algorithm Code: Fine Algorithm and Algorithm
Recap of Claims • Abstraction and Intentionality: The code is the design • Meta-Design: Doing objects honestly, or using other techniques when they apply • A formal, domain-based model for paradigm • Commonality Categories • Application Domain and Solution Domain Analyses • Multiple paradigms within a domain • Dependencies between domains: Limits to Modularity • Theory of Negative Variability: Generalizing cancellation • Regularization of Ad-Hoc Design Patterns
Thanks! • David J. Weiss • Theo D’Hondt • Martine Devos • Debbie Lafferty • Carine Lucas • Tim Budd • The Committee
Bijstelling: Symmetry and Patterns in Organizations James O. Coplien Ph.D. Student, VUB 25 April 2000
Aposition • Pattern theory can be used as a formal basis for organizational models based on social network theory. In particular, current role-based models can be extended to build on the hypothesis that human organizational structures follow the same symmetries and patterns of symmetry-breaking observed in other biological populations, a phenomenon that has deeper roots in more general laws of natural systems in the domains of crystallography, astrophysics, mathematics, subatomic particle physics, and other domains.
Two Architectures • The thesis is about architecture • Per Conway, architecture is about organization • Here we talk of software patterns… • … but there are organizational patterns, too [Kroeber]
A curious pattern • Patterns in anthropology… • Patterns in other natural sciences... • Software organizational patterns... • Patterns as symmetry breaking… • Alexander’s theory of patterns based on geometry… • …it’s all related
Aposition • Seek organizational formalisms based on symmetric relationships • Individials • Instrumental organizations • Establish common patterns • Tie to cultural invariants and breaking of those invariants in symmetric configurations • Seek drivers for symmetry-breaking
Building Blocks • Organizational Patterns [Coplien et al.] • Group theory and symmetry theory • Prior art in ethnography and social network theory and research • Diadic psychology (family therapy, distance relationships literature, etc.)