Research
Mert's main research area is Software Engineering, focussing specifically on Software Architectures, Model-driven Software Development, Model-based Software Testing, Software Design Methodologies (especially Design-by-Contract), Domain-specific Modeling Languages, Formal Verification, Empirical Software Engineering, Software Engineering Education.
Mert has completed many research studies on the above-mentioned topics, which can be accessed via here.
Current Researches:
Hybrid (Meta-)Modeling
Many meta-modeling tools (e.g., Eclipse based tools (Xtext, Sirius, GenMyModel), MPS, and Metaedit+) have been existing today for developing modeling languages by defining the languages' abstract and concrete syntaxes. However, none of the existing meta-modeling tools enable to develop hybrid languages that offer both textual and visual notation sets. The existing meta-modeling tools either enable the textual language developments only or just visual languages. So, a modeling language with a hybrid notation set may not be developed. That is, the languages developed therefore force stakeholders with different backgrounds to use the same modeling notation set that may not be familiar to them.
So, in this research, the goal is to develop a new meta-modeling platform through which hybrid modeling languages can be created. As the below figure shows, the new meta-modeling platform will enable to define an abstract syntax for a language that consists of the language concepts and their relationships and attach multiple concrete syntaxes (i.e., visual, textual, tabular symbols) that each suit the needs of a different type of stakeholders. By doing so, different types of stakeholders may work on their modeled data via the modeling notation set (i.e., concrete syntax) that is familiar to them. Any change made by any stakeholders on the model via their own notation sets will be synchronised with other stakeholders and the stakeholders view the changes on the model over their notation sets. The new meta-modeling platform will also enable to create versions of the models and manage those versions for different needs such as merging, comparing, editing, and deleting versions.
Model-based Testing of Web Applications
Many e-commerce companies have been existing today, which offer many web solutions to their customers who can perform their businesses over internet. However, given the agile software development that requires an early prototype development, many e-commerce companies omit several important steps of software engineering and aim to deploy the web applications on the customer domain as fast as possible. Therefore, customers/users are neglected, which never get involved in the development process and simply provide the requirements in informal texts. No any design, modeling, and testing are performed. The end result is that once the web applications are deployed, customers/users face with many challenges due to the functionalities that do not work as expected, missing functionalities, low quality properties (e.g., performance, usability, and security). This leads to the costly maintenance stages that require much more time than expected.
In this research, a model-based testing platform is aimed to be developed, whose goal is to automatically test any web applications with the test-cases that are automatically generated from the models specified by the customers and developers of the web applications. To this end,
As shown below in the figure, the research requires a tool chain to be developed.
Customer Modeling Editor: This tool enables the customers to create high-level models for (i) their functional requirements via a UML use-case notation and (ii) the non-functional requirements that describe their quality expectations via a notation set that resembles Volere template.
Developer Modeling Editor: This tool enables the web developers to model (i) the presentation of the user-interface views (i.e., the forms, links, labels, text-boxes, menus, and checkboxes that the web-pages include) and (ii) the navigation between different views (i.e., the inter-linked web-pages).
Model Analyser: This tool analyses the developer models to determine their consistencies and and completeness with regard to the customer requirements models.
AI-based User Behaviour Analysis Tool: This tool works on the stored data about the behaviours of the users who access the web application and analyses the data with the appropriate machine learning algorithms to determine the likelihood of any order of interactions and prioritise them.
Test-case Generator: This tool receives the customer and developer models and generate the possible test-cases with the path coverage. The possible test-cases will be filtered depending on the prioritisation list received from the AI-based user behaviour analysis tool.
Translator for Selenium Platform: This tools translates the test cases generated in the previous steps into the format that can be understood by the Selenium web automation tool.
Test Execution Tool on the Selenium Platform: This tool receives the translated Selenium code and executes them for the web-application code given by the developers on the Selenium platform. The test-case failure results are displayed to the users.
Model-based Development of MVC-based Web Applications
The Model-view-controller (MVC) software design pattern promotes separating software systems into the model, view, and controller elements. The views represent the user-interfaces, the models represent the system data, and the controllers handle the requests sent by the views and coordinate the interactions between views and models. While many software frameworks are available for the MVC-based software developments, no any attempt have been made on increasing the level of abstraction for the MVC developments and provide model-based approach. Indeed, none of the high-level software modeling languages support the MVC design pattern.
So, in this research, an MVC-based modeling language and its toolset are aimed to be developed, which enables to model MVC-based software architectures that can be easily analysed, implemented, and tested. MVCLang will offer a visual notation set for the visual modeling of model, view, and controller elements for any web-application. MVCLang will be supported with a toolset that offers a modeling editor (e.g., the one given in below figure), an analyser for detecting the issues about model consistencies, completeness, and correctness, a tester that can check the models against the requirements, and an implementer that can translate ASP.NET MVC code from the correctly analysed and tested MVC models.
Empirical Software Engineering
In empirical software engineering, the goal is to understand the practitioners working in different industries and their perspectives towards software modeling. To this end, many research questions can be answered, including
practitioners' perspectives towards software modeling languages
practitioners' perspectives towards UML
practitioners' perspectives towards software architecture modeling
practitioners' perspectives towards multiple-viewpoints modeling
the analysis of the existing software modeling languages/tools for the needs of practitioners
practitioners' challenges on software modeling
the potential collaborations between industry and academia on software modeling