Domain-specific techniques are among the most promising approaches to software construction and reuse. The research objective of this proposal is to provide advanced infrastructure for software generators and components--the most common domain-specific implementation techniques.
Specifically, this proposal puts forward two concrete ideas, one in the area of (embedded) software generators and one in the area of component programming: -Designing a programming language with C++-like meta-programming support, but without the problems that have plagued C++ template meta-programming. -Implementing a component infrastructure for layered libraries of binary components. This infrastructure uses the technology of dynamic loading/linking in modern operating systems.
Developing such infrastructure is particularly valuable because it is the only domain-independent (and thus transferable) part of the intellectual effort of building a generator or component library. The education and outreach objectives of the proposal are to (1) develop a new course on component-based and generative software engineering; (2) enhance existing courses with the results of the proposed research; (3) author a textbook on software component technologies and generative programming; and (4) initiate efforts for social outreach and outreach to other scientific areas and software professionals.