Research
Software is a crucial component in many products and often it is market by its own. Therefore, effectiveness and efficiency in software development is of major importance, especially with the increasing challenges of new emerging technologies. Arguably, a prominent approach to accomplishing effectiveness and efficiency is to promote reuse of various outcomes generated through software development activities.
As the variability of information and software systems has increased, the need for an engineering discipline concerned with building reusable assets (such as specification sets, patterns and components) on one hand and representing and managing knowledge in specific domains on the other hand has become important. This discipline, called domain engineering, supports the notion of a domain, defined as a set of applications that use a set of common concepts for describing requirements, problems and capabilities. The purpose of domain engineering is to identify, model, construct, catalog, and disseminate a set of software artifacts that can be applied to existing and future software in a particular application domain. As such, it can support the effective and efficient management and development of software assets. Hence, it is important to introduce this discipline among software engineering practitioners and researchers. As an evolutionary approach, domain engineering relates to many different areas, such as conceptualization, ontologies and ontology deployment, metadata and metamodeling, knowledge base integration, reuse, patterns, model driven approaches, and reference modeling.