Developing software is currently a more repetitive task than many developers believe. The trick is to see software development not as the realization of system technology, but as the integration of people’s knowledge. Reuse must focus on the value of important decisions instead of treating source code as the main business asset. The result is a development process that is derived from business issues and close to the people involved, instead of driven by technology constraints. I am currently working on my Phd research on a multi domain specification method. The idea is to develop a method to specify a system in terms of multiple domain models (or DSLs). It includes the specification of domain models, making other models with domain models, and integrate those. Integration includes composition, transformation, and correspondence between specifications.
In my daily work, I fulfill several roles: consultant for architecture issues, teaching architecture, requirements, and domain modeling, and be a personal coach for architects. Besides that, I am helping organizations with developing and maintaining software systems in a faster, more predictable way, by automating development activities. This can be approached bottom-up, starting with the developer, and top-down from the business goals and architecture, and from the development process.