Friday, January 22, 2010

The Objects and Arrows of Computational Design

Citation: Don Batory, Maider Azanza, Joao Saraiva. The Objects and Arrows of Computational Design, Keynote at 11th international conference on Model Driven Engineering Languages and Systems, October 2008. Lecture Notes In Computer Science; Vol. 5301.
Link: ACM Portal

Summary

The future of program design and development lies in automation. In Computational Design (CD), both program design ("what are the steps to create a program that meets a specification?") and program synthesis ("executing the necessary steps to produce the program") are computations.

In this paper, mathematics of category theory is used to provide an informal basis for CD, Model Driven Engineering (MDE) and Software Product Lines (SPL).

Category Theory: In category theory, an object is a domain of points. Recursion is fundamental: a point itself can be an object. An arrow is a map or function or morphism between objects. Arrows are composable, and their composition is associative. A tuple can be an object, hence arrows can map multiple objects to produce multiple objects.

MDE and Categories: In MDE, a metamodel may be an object with model instances its points. Recursion on metamodels is seen in MDE (e.g. OMG MOF three-level architecture). An arrow is a mapping relationship between models, a transformation is an implementation of an arrow expressed in an MDE transformation language, and a tool is any other implementation (Java etc.). In MDE it is common to map multiple models as inputs and produce multiple models as output, which is elegantly expressed by category theory using tuples.

SPL and Categories: An SPL is a set of similar programs. Programs are constructed from features, which are increments in program functionality. SPLs define relationships between its programs using arrows, where arrows represent features. By composing arrows (features), the programs of an SPL are created. A program's design is an expression (i.e. a composition of arrows). From a modeling perspective, all program artifacts in SPL approach are created by extending simpler artifacts, recursively.

Definitions

Computational Design: a paradigm of software engineering where both program design and synthesis are computations.
Model Driven Engineering: Defines high level models of an application, and transforms these models into low level artifacts, such as executables.
Software Product Line: A software product line is a set of similar programs. Programs are constructed from features, which are increments in program functionality.
Category Theory: A theory of mathematical structures and their relationships.

Thursday, January 21, 2010

Semantic Memory

Citation: Quillian, M. Semantic Memory, in M. Minsky (ed.), Semantic Information Processing, pp 227-270, MIT Press, 1968.
Link: Book @ MIT Press Book @ ACM Portal

Summary

The central question is: what constitutes a reasonable view of how semantic information is organized within a person's memory? In other words, how can meanings or words be stored so that human-like use of these meanings is possible? This text proposes a model for such a memory structure, and explains its use in memory dependent tasks: 1) to compare and contrast meanings of two familiar English language words, 2) processing of English text to 'understand' it.