Automatically Solving Simultaneous Type Equations for Type Difference Transformations That Redesign Code
This paper introduces a generalization of programming data types called Context Qualified Types (or CQ Typesfor short). CQ Types are a superset of programming language data types. They incorporate design features or contexts that fall outside of the programming data type domain (e.g., a planned program scope). CQ Types are functionally related to other CQ Types (and eventually to conventional data types) such that a differencing operation defined on two related types will produce a program transformation that will convert a computational instance (i.e., code) of the first type into a computational instance of the second type. Large grain abstract relationships between design contexts may be expressed as simultaneous type equations. Solving these equations, given some starting code instances, produces transformations that redesign the code from one design context (e.g., a payload context) to a different design context (e.g., a “hole” within a design framework from a reusable library).
KeywordsType differencing Context qualified types CQ Types Design frameworks Design features Functionally related types Transformations Domain driven instantiation Simultaneous type equations
Unable to display preview. Download preview PDF.
- 1.Biggerstaff, T.J.: A perspective of generative reuse. Annals of Software Engineering, 169–226 (1998)Google Scholar
- 3.Biggerstaff, T.J.: Automated partitioning of a computation for parallel or other high capability architecture. Patent no. 8,060,857, United States Patent and Trademark Office (2011)Google Scholar
- 4.Biggerstaff, T.J.: Non-localized constraints for automated program generation. Patent no. 8,225,277, United States Patent and Trademark Office (2012)Google Scholar
- 5.Biggerstaff, T.J.: Synthetic partitioning for imposing implementation design patterns onto logical architectures of computations. Patent no. 8,327,321, United States Patent and Trademark Office (2012)Google Scholar
- 6.Biggerstaff, T.J.: Reuse: Right Idea, Wrong Representation? Invited paper. In: DReMeR 2013 – International Workshop on Designing Reusable Components and Measuring Reusability, Pisa, Italy (2013)Google Scholar
- 7.Biggerstaff, T.J.: Automated Synchronization of Design Features in Disparate Code Components Using Type Differencing. Patent no. 8,713,515, United States Patent and Trademark Office (2014)Google Scholar
- 8.Cardelli, L., Wegner, P.: On Understanding Types, Data Abstractions, and Polymorphism. ACM Computing Surveys 17(4) (1985)Google Scholar
- 9.Cardelli, L.: Type Systems. In: CRC Handbook of Computer Science and Engineering, 2nd edn., ch. 97 (2004)Google Scholar
- 10.Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns. Addison-Wesley (1995)Google Scholar
- 11.Liskov, B., Wing, J.: A Behavioral Notion of Subtyping. ACM Transactions on Programming Languages and Systems (1994)Google Scholar
- 12.Liskov, B., Wing, J.: A Behavioral Subtyping Using Invariants and Constraints. Carnegie Mellon Report CMU-CS-99-156 (1999)Google Scholar
- 13.Mattson, T. G., Sanders, B. A., Massingill, B. L.: Patterns for Parallel Programming. Addison Wesley (2008)Google Scholar