The Poplar project
Programming Language Support for Component Integration
This is a research project of the Honiden laboratory at the National Institute of Informatics in Tokyo, Japan.
Modern software is composed from components; this is sometimes called component based
software engineering. Components can be developed in-house, obtained from external vendors,
or can be supplied with the programming language being used. However, composing such
components in modern languages such as Java and C# is still a tedious and error-prone task. It
becomes especially challenging when those components, and their interfaces in particular, evolve
continuously and out of sync with each other.
In this project, Poplar, we investigate ways of creating support for dynamic integration of
components at the programming language level. By adding state and protocol information to the
type system - similar to the static analysis technique known as typestate checking - we obtain
information that is used to generate and regenerate the code that integrates components
automatically.
Internship opportunities
We have an early prototype, which is implemented as an extension to the Java language, but there is still much work to be done, and there are openings for contributions in many different areas. The ideal candidate has knowledge and/or interest in areas such as static analysis, code generation, software engineering and programming languages. There are openings for both theoretical work, such as formalising operational semantics, and practical work, such as improving the implementation and the basic design. Knowledge of the Scala language is beneficial but not necessary.The following papers would be good sources of background information for this project:
- J. Aldrich, J. Sunshine, D. Saini, and Z. Sparks. Typestate-oriented Programming. In Onward! (OOPSLA 2009)
- R. DeLine and M. Fähndrich. Typestates for Objects. In proceedings of ECOOP 2004.
- C. Haack, B. Howard, A. Stoughton and J.B. Wells. Fully Automatic Adaptation of Software Components based on Semantic Specifications. In proceedings of AMAST 2002.
- R.E. Strom and S. Yemini. Typestate: A Programming Language Concept for Enhancing Software Reliability. IEEE Trans Softw Eng., 12(1):157-171, 1986.
For further information, please contact Johan Nyström-Persson at johan@nii.ac.jp.