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.

Current Projects:

A Variability Mechanisms Recommender – promotes representing similarities and variability in software behaviors and recommending on reuse strategies.

Semantic and Ontological Variability Analysis - promotes combining semantic and ontological considerations for compare software behaviors.

Previous Projects:

Application-based Domain Modeling - binds domain and application models into a general three layers framework and enables the definition of mutual constraints between these types of models.

Cross Product Line (PL) Mining - calls for utilizing the knowledge gained from developing and maintaining different PLs in the same domain in order to extract common and variability features and improve PL management.

​CoreReq - proposes an automated extractive method to generate core requirements from product requirements written in a natural language, based on a two dimensional ontological variability framework.