Our lab is not only about research: we do a lot of development using Java, Python, Javascript, Haskell and other languages in combination with advanced libraries and frameworks. This development experience was very helpful during my job interviews, and employers were impressed by the projects we develop here in the lab.
Krzysztof Czarnecki: Software Reuse and Evolution with Generative Techniques
Prof. Czarnecki presented a full-day tutorial entitled Software Reuse and Evolution with Generative Techniques at the 22nd International Conference on Automated Software Engineering, Nov 05, 2007, Atlanta, Georgia, USA.
Abstract:
Evolution and reuse are key challenges in software development. Evolution is challenging because it usually requires developers to manually modify the program code and a change to a single requirement may easily require multiple changes in different parts of the code. Software reuse is challenging because previous software solutions, even if matching nearly all the requirements for a new application, are still notoriously hard to adapt to the new context. Generative software development aims at addressing these challenges by providing system specifications expressed in one or more textual or graphical domain-specific languages (DSLs). The specifications allow developers to state the desired changes at the right level of abstraction and then propagate these changes to code automatically.
The first part of the tutorial will focus on basic concepts and techniques underlying generative software development, including product line engineering, feature modeling, and DSLs. The second part of the tutorial will provide an in-depth treatment of selected techniques. It will include an overview of tools and notations for feature modeling, a discussion of how features can be mapped to structural and behavioral models, and a presentation of how DSLs can be developed based on object-oriented frameworks and how round-trip engineering can be achieved in such a setting in order to keep domain-specific models and code in sync.
The discussion of the concepts and techniques will be based on practical examples from a variety of domains including enterprise and embedded software.