Home Research Research Statement

Research Statement


Research Experience

I have engaged in research for almost 10 years. Early in my undergraduate studies I got involved in a project on the detection and removal of code smells using refactoring. For this project, I was the principal developer for the first prototype of JDeodorant, an Eclipse plug-in to automatically identify refactoring opportunities and apply these refactorings on Java projects. From then on, the tool has been developed by groups from the University of Macedonia, Greece and Concordia University in Montreal. I was one of the developers for the features for the detection of “Move Method” and “Extract Class” refactoring opportunities. For the latter, I applied clustering techniques for the identification of refactoring opportunities and it later became the topic of Master’s thesis. The tool has already received recognition and gained popularity among researchers and practitioners alike, most notably by Simula Research Laboratory, Delft University of Technology, Google and the Government of British Columbia. My work on this project produced 4 publications between 2007 and 2012. These publications have been cited more than 110 times according to Google Scholar.

During my studies for my Master’s, I also worked on supporting collaboration in software development. More specifically, I worked on the WikiDev project, where I analyzed software repositories to enhance collaboration by correlating code elements with communication artifacts through clustering. Moreover, I also studied various ways to visualize such data using 2D visualizations or 3D representations in virtual worlds. My work in this project resulted in 4 publications between 2009 and 2010, which have been cited more than 30 times.

For my PhD research, I mostly worked on the problem of web service evolution. My research had two goals. First, I developed WSDarwin, a set of tools to support service evolution on the client side both for WS-* (SOAP) and REST services. WSDarwin is implemented as an Eclipse plug-in for WS-* services and as a web application for REST services. It enables developers to (a) automatically generate service interface specifications, (b) compare interfaces to identify differences between versions or map different services, (c) adapt client applications to changed services. The second goal of my research was to support the decision-making process when considering evolving a service-oriented system. I took into account both economic and technical parameters of the problem, as well as the effect of the interactions between clients and providers in the evolution problem. I employed Game Theory to model the problem and the interactions between the involved parties. My work in this area has resulted in 10 publications, since 2011, cited more than 50 times.

Currently, as a postdoctoral fellow at York University, I work on self-adaptation of cloud, cyber-physical and data-intensive systems. The goal of my work is twofold; first, to create multi-goal predictive algorithms for self-adaptive web applications and, second, to develop a platform for developers to specify these adaptation strategies for their applications. With respect to the first goal, I am working towards defining efficiency models that incorporate technical, economic, business and energy consumption aspects. Optimizing these models, while satisfying heterogeneous conditions, will lead to efficient and robust adaptation strategies. For the second goal, I am working to extend the Openstack services for cloud infrastructures and, in particular, the Heat orchestration service and use the Heat Orchestration Templates as the means to easily deploy self-adaptive applications on the cloud. Openstack, and other cloud providers like Amazon or IBM, currently provide only reactive adaptation but not predictive models, they only support adaptation on the infrastructure level but not on the application itself and they don’t have any consideration for economic and business goals.

Through my research engagement at York University and my most recent collaboration with the IBM Toronto lab, I have gained considerable experience in distributed, cyber-physical and cloud systems, having also worked with state-of-the-art platforms like Openstack, Amazon EC2 and IBM Bluemix. In addition, I had the chance to expand my toolkit of interdisciplinary methods, having worked towards applying control theory in software engineering problems. Finally, I had the opportunity to acquire deeper knowledge around Big Data technologies and, more specifically, I have worked with Apache HBase, Hadoop and Spark for big data storage and analytics. I have a long-standing collaboration with IBM, since the beginning of my graduate studies. More recently, I am working closely with the City of Toronto through the Connected Vehicles and Smart Transportations (CVST) project. I am also a participant of the NSERC Strategic Network on Smart Applications on Virtual Infrastructure (SAVI).

Research Philosophy

In my research, I have always tried to use methods and techniques from a variety of fields on Software Engineering problems. Most prominently, I have used machine learning techniques in my undergraduate and Master’s research, Game Theory in my PhD research and Control Theory in my postdoc research. Furthermore, I am keen in viewing the problems from an interdisciplinary perspective and this is the reason why I address the service evolution and cloud adaptation problems as a strategic and economic decisions. This increases the probability of my research having more practical use and assisting not only developers but other software stakeholders as well. Having said that, I believe that software engineering research is fundamental, since nowadays software can offer solutions on almost every aspect of the everyday life. Therefore, by supporting software developers, we also enable solutions on other fields as well.

I firmly believe that research should be founded on solid and sound theoretic background. However, I also believe that research ought to have a practical impact and actually support practitioners and their work. To this end, a great part of my research methodology is the development of tools that will implement the methods and techniques as products of research. All of my major research works have resulted in automated tools, JDeodorant and WSDarwin, or contribution to open source systems, like Openstack. Both of the first tools that I have personally developed follow the “one-click” approach, meaning that they provide as simple an interface as possible, while at the same time they provide complete solutions, from the identification of problematic cases to the application of the appropriate solution. Additionally, contributing to existing open source platforms increases the probability of research products being widely adopted fast.

Future Directions and Interests

In the short term, I intend to examine the problems of evolution and change management on the domains of cloud, cyber-physical, mobile, and data-intensive computing. Apart from the fact that these domains have gained considerable popularity both in business and in technology, they are also multibillion businesses, implying that almost every decision, especially around the evolution of the involved software systems, becomes of critical importance. I believe my previous and current research have helped me to build the necessary skills and knowledge to further pursue my new research goals. More specifically, I plan to study and tackle the technical and business issues around such problems as web software evolution, real-time self-adaptive systems, client adaptation and migration between versions or platforms. Since this kind of systems heavily rely on abstract and standardized interfaces, they can benefit from the automation and systematization that take advantage of these interfaces and that I propose in my work. Automation can be provided for tasks like adaptation, configuration, (re)deployment, code generation and so on. Additionally, evolution and adaptation rely heavily on a bulk of past and current data, which makes the problems inherently big data problems. To this end, I intend to continue exploring the application of Big Data techniques in Software Engineering problems, such as monitoring and analyzing the performance and cost of cloud systems.

In the longer term, I want to study and develop techniques and tools around the economic, business, social and environmental sustainability of software and data intensive systems and software-enabled processes. I believe that new technologies, including web services, cloud systems and mobile development, remain largely unexplored and we have yet to realize their full potential, not only in technology, but also in everyday life. I am interested in exploring how decisions are made around the development, delivery and maintenance of services and software products, how prices and new features for new versions are defined and how competition, production processes and customer needs are taken into account to formulate these decisions. Given my previous experience with these questions, I have identified a lack of systematic and formal methodology in addressing them, which may result in instabilities of the technical, social, business and environmental ecosystem of the product. My goal is to develop such methods and in effect bridge the gap between the technical and business dimensions, while maximizing the economic and social welfare of the system’s stakeholders and optimizing the system’s energy efficiency.

I strongly believe that Game Theory and Big Data technologies can play a crucial role in the development of such methods. It is important to have a strong arsenal of models that capture the economic position of a stakeholder and connect it with the technical performance and energy efficiency of the software system. However, such a model will be incomplete, if it is not designed within the business ecosystem of the software. Game Theory provides the tools to design the business model that captures the different, and in many cases conflicting, interests and relationships between stakeholders. This will enable and support decisions around economic, technical or energy-related aspects, which would guarantee the stability and equilibrium of the ecosystem. On the other hand, Big Data technologies given the amount and variety of data produced by software systems. The ability to analyze and store this data efficiently in real time is vital in making punctual and optimal decisions on the discussed problems. An interesting property of Big Data tools and technologies is that they can serve both as tools to support decision-making, but also as use cases for decision-support systems. To this end, I intend to actively pursue research on Big Data to enable my research on decision-making processes, but also to optimize these processes on the development, delivery and maintenance of Big Data tools and platforms.

Sustainability of software systems and their ecosystems in the event of evolution has consistently been an interesting and active topic in Software Engineering research. The reason is that sustainability covers a number of dimensions, including technical, economic and environmental, and it is relevant for all software technologies, including new ones. This line of research is, therefore, bound to remain topical and interesting, which will provide a long-term research agenda with important products and publications to the field. Through my previous research, I have demonstrated the ability to employ a variety of theories and methods from different domains to develop novel and practical methods and tools, which resulted in top-tier publications. It is my belief that these methods and tools will bridge the previously mentioned gap between business and technology by developing systematic methods to aid the decision-making process.

Group formation and Student recruitment

My intention is to form a research group that will have three goals. The first is to conduct research on the problems of software evolution and the economics and decisions around the development, evolution and maintenance of software. The output of this research will include abstract methods and models to address these problems in spite of the underlying technologies. Additionally, the group will develop tools to target specific types of software, focusing initially on distributed and web systems, and facilitate practitioners to address software evolution and relevant decisions. Hopefully, this research methodology will provide students with the experience and skills to make both theoretical and practical contributions and eventually pursue successful careers either in academia or in industry.

The second goal is for the lab to have a multidisciplinary nature. My intention is to continue to employ methods borrowed and inspired by other fields and disciplines and apply them on software engineering problems. Among others, I have already used and plan to use in my research methods from Data Mining and Machine Learning, Artificial Intelligence and Games, Business Administration and Sociology, Economics and Finances, Mathematics and Operations Research. For this purpose I intend to forge collaborations with a variety of research groups, tap in their expertise and broaden the skills and knowledge imparted by my group. Ideally, I would like to recruit students that have a broad background and are experienced in at least one or two additional fields or disciplines, other than Software Engineering. At the very least, I am interested in students that will demonstrate the willingness and eagerness to delve into new and unexplored fields.

Naturally, the multidisciplinary goal will not be achieved at the expense of having a primarily software-oriented group. A very important goal will be to train students in developing software and acquiring the necessary technical, organizational and managerial skills to complete such projects. To achieve that I will seek collaboration with local organizations, like software and technical incubators, startup foundations and others. The purpose of this collaboration will be dual; first, to have access to software projects, where my students will be able to work on, and second, to give my students the opportunity to work on a real project and provide them with opportunities for future employment. Desirably, the projects will cover a variety of domains, which will expose students to a broad palette of topics, from which, apart from completing the project, they will also appreciate the acquired knowledge and skills, which they can later apply on the group’s projects or their future career. To this end, I would like to recruit students, who will be skillful at software development and will be keen to learn new tools, programming languages and development paradigms.

Copyright © 2019 Marios Fokaefs's Home Page. All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.