When and how to develop domain-specific languages
Software maintenance and evolution: a roadmap