|Thesis abstract: |
Model-Driven Engineering relies on collections of models, which are the primary artifacts for software development. To enable knowledge sharing and reuse, models need to be managed within repositories, which requires the ability of their effective and efficient search for retrieving artifacts that meet the user's need. The search approaches should go beyond simple keyword search, considering the structural and hierarchical nature of models. In this way, an MDE developer should be able not only to search models via keywords, but also to sketch the idea he has in mind in his favorite language and retrieve all models that contain a similar design. This thesis addresses the problem of designing search systems for repositories of models by examining two major categories: keyword-based and content-based search (also known as query-by-example). From these categories, one keyword-based approach, that employs classical information retrieval techniques, and two content-based approaches, that use representation of models as graphs, have been proposed and implemented. They are contrasted, with respect to the architecture of the system, the processing of models and queries, and the way in which metamodel knowledge can be exploited to improve search. A thorough experimental evaluation is conducted to examine what parameter configurations lead to better accuracy and to offer an insight in what queries are addressed best by each system.