Using modern mathematics as an FOSD modeling language

Modeling languages are a fundamental part of automated software development. MDD, for example, uses UML class diagrams and state machines as languages to define applications. In this paper, we explore how Feature Oriented Software Development (FOSD) uses modern mathematics as a modeling language to express the design and synthesis of programs in software product lines, but demands little mathematical sophistication from its users. Doing so has three practical benefits: (1) it offers a simple and principled mathematical description of how FOSD transforms, derives, and relates program artifacts, (2) it exposes previously unrecognized commuting relationships among tool chains, thereby providing new ways to debug tools, and (3) it reveals new ways to optimize software synthesis.

[1]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[2]  Martin Odersky,et al.  An Overview of the Scala Programming Language , 2004 .

[3]  Tom Mens,et al.  04101 Discussion - A Taxonomy of Model Transformations , 2004, Language Engineering for Model-Driven Software Development.

[4]  S. L. Gerhart,et al.  Toward a theory of test data selection , 1975, IEEE Transactions on Software Engineering.

[5]  Sarfraz Khurshid,et al.  Testing Software Product Lines Using Incremental Test Generation , 2008, 2008 19th International Symposium on Software Reliability Engineering (ISSRE).

[6]  Oscar Díaz,et al.  Generative metaprogramming , 2007, GPCE '07.

[7]  Sarfraz Khurshid,et al.  Constraint Prioritization for Efficient Analysis of Declarative Models , 2008, FM.

[8]  Kathi Fisler,et al.  Modular Verification of Open Features Using Three-Valued Model Checking , 2005, Automated Software Engineering.

[9]  Don S. Batory,et al.  Scaling step-wise refinement , 2004, IEEE Transactions on Software Engineering.

[10]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[11]  Kathi Fisler,et al.  Modular Verification of Open Features Through Three-Valued Model Checking � , 2003 .

[12]  Joseph A. Goguen,et al.  Principles of parameterized programming , 1989 .

[13]  Don S. Batory A Science of Software Design , 2004, AMAST.

[14]  David Notkin,et al.  Using role components in implement collaboration-based designs , 1996, OOPSLA '96.

[15]  Don Batory,et al.  On The Modularization of Theorems for Software Product Lines , 2007 .

[16]  Anneke Kleppe,et al.  MDA explained - the Model Driven Architecture: practice and promise , 2003, Addison Wesley object technology series.

[17]  Sudipto Guha,et al.  Approximation algorithms for directed Steiner problems , 1999, SODA '98.

[18]  Don S. Batory,et al.  Achieving extensibility through product-lines and domain-specific languages: a case study , 2000, TSEM.

[19]  Don S. Batory,et al.  From implementation to theory in product synthesis , 2007, POPL '07.

[20]  Ole Lehrmann Madsen,et al.  Virtual classes: a powerful mechanism in object-oriented programming , 1989, OOPSLA '89.

[21]  Dusko Pavlovic,et al.  Software Development by Refinement , 2002, 10th Anniversary Colloquium of UNU/IIST.

[22]  Benjamin C. Pierce,et al.  Basic category theory for computer scientists , 1991, Foundations of computing.

[23]  Hassan Gomaa Designing Software Product Lines with UML 2.0: From Use Cases to Pattern-Based Software Architectures , 2006, ICSR.

[24]  Patricia G. Selinger,et al.  Access path selection in a relational database management system , 1979, SIGMOD '79.

[25]  Rod M. Burstall,et al.  Computational category theory , 1988, Prentice Hall International Series in Computer Science.

[26]  Sarfraz Khurshid,et al.  A specification-based approach to testing software product lines , 2007, ESEC-FSE '07.

[27]  David M. Weiss,et al.  Software Product-Line Engineering: A Family-Based Software Development Process , 1999 .

[28]  Aniruddha S. Gokhale,et al.  Model-Driven Program Transformation of a Large Avionics Framework , 2004, GPCE.

[29]  Margus Veanes,et al.  Generating finite state machines from abstract state machines , 2002, ISSTA '02.

[30]  Sven Apel,et al.  Die Rolle von Features und Aspekten in der Softwareentwicklung (The Role of Features and Aspects in Software Development) , 2008, it Inf. Technol..

[31]  Tom Mens,et al.  A Taxonomy of Model Transformation , 2006, GRaMoT@GPCE.

[32]  Sven Apel,et al.  Program refactoring using functional aspects , 2008, GPCE '08.

[33]  Roberto Erick Lopez-Herrejon,et al.  A disciplined approach to aspect composition , 2006, PEPM '06.

[34]  Jay Earley,et al.  A formalism for translator interactions , 1970, CACM.

[35]  S. Guha,et al.  Approximation Algorithms for Directed Steiner Tree Problems , 1998 .

[36]  Simon L. Peyton Jones,et al.  Roadmap for enhanced languages and methods to aid verification , 2006, GPCE '06.

[37]  Joseph A. Goguen,et al.  A categorical manifesto , 1989, Mathematical Structures in Computer Science.

[38]  Davide Ancona,et al.  Polymorphic bytecode: compositional compilation for Java-like languages , 2005, POPL '05.

[39]  Davide Ancona,et al.  Jam---designing a Java extension with mixins , 2003, TOPL.

[40]  Debra J. Richardson,et al.  Structural specification-based testing: automated support and experimental evaluation , 1999, ESEC/FSE-7.

[41]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[42]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[43]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 2: Module Specifications and Constraints , 1990 .

[44]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[45]  Gary T. Leavens,et al.  A Simple and Practical Approach to Unit Testing: The JML and JUnit Way , 2002, ECOOP.

[46]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[47]  Mario Kolberg,et al.  Feature interaction: a critical review and considered forecast , 2003, Comput. Networks.

[48]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

[49]  Don S. Batory,et al.  On the modularity of feature interactions , 2008, GPCE '08.

[50]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[51]  T. Mens,et al.  A Taxonomy of Model Transformations , 2004 .

[52]  David Corfield,et al.  Review of F. William Lawvere and Stephen Schanuel, 'Conceptual Mathematics: A First Introduction to Categories' , 2002 .

[53]  Andrew W. Appel,et al.  Axiomatic bootstrapping: a guide for compiler hackers , 1994, TOPL.

[54]  Oscar Díaz,et al.  Feature Oriented Model Driven Development: A Case Study for Portlets , 2007, 29th International Conference on Software Engineering (ICSE'07).

[55]  Don S. Batory,et al.  The design and implementation of hierarchical software systems with reusable components , 1992, TSEM.

[56]  Ira D. Baxter,et al.  Design maintenance systems , 1991, CACM.

[57]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[58]  F. William Lawvere,et al.  Conceptual Mathematics: A First Introduction to Categories , 1997 .

[59]  Erik Ernst,et al.  Higher-Order Hierarchies , 2003, ECOOP.

[60]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[61]  Roberto Erick Lopez-Herrejon,et al.  Evaluating Support for Features in Advanced Modularization Technologies , 2005, ECOOP.

[62]  Manfred Broy,et al.  A formal model of services , 2007, TSEM.