Design and development of an aesthetics quality evaluation system of web applications based on structural analysisGraphical User Interfaces (GUI) form a communication channel between man and machine and they aim to offer an effective and easy way to serve the functional requirements of software. Typical examples of machine software are web applications, which constantly grow in both number and popularity. As a result, web application providers strive to build user interfaces that offer attractive aesthetical design and ease of navigation and access to the information that users are looking for.
The question raised, which constitutes the basic research field of this diploma thesis, is the
How can the aesthetic design of a webpage GUI be evaluated?
The above question dictates the design and development of a reliable mechanism for
evaluating and modeling the design of the GUIs of web applications.
This diploma thesis aims to contribute to the aforementioned question by identifying design patterns related to the aesthetic characteristics of the GUIs, as well as specialized patterns which are implemented on webpages of specified content. The process of finding the aforementioned design patterns is based on the way end-users perceive aesthetics (user-
perceived aesthetics), indirectly reflected on web application popularity.
Towards this end, a data collection and processing system was developed, that led to the development of an evaluation model of the aesthetic design quality of the webpages. The training data comprises 75 popular webpages of three different domains (e-shopping, news, search engines). Static analysis was performed on these webpages in order to collect useful information regarding the GUI components (i.e. the number of elements in each webpage and the way they are distributed among the layers of view), as well as the calculation of a series of metrics used widely in bibliography.
Classification and clustering techniques were applied on the collected data which resulted in
the development of a combined aesthetics evaluation model. Results successfully
incorporate the notion of aesthetics, as it is perceived by the end users, and therefore it can
be a useful tool for programmers.
Automatic user - perceived usability evaluation of web applications through the identification of dominant design patterns in user interface elementsIn recent years, the rapid development of the internet has become apparent, resulting in a plethora of web applications that have become source of information for millions of users. People, regardless of the age group they belong to, their economic and social status, use the web on daily basis for multiple purposes such as information retrieval, entertainment, communication, business etc. The continually increasing trend of web applications, in conjunction with the existence of multiple tools which automate the design of user interfaces, necessitate the development of methods that asses user perceived usability. The current diploma thesis aims to contribute towards the improvement of web applications graphic interface design, by suggesting an automated evaluation model for user interfaces based on crowdsourcing information regrading the way usability is perceived by end-users. Towards this direction, the proposed system applies static analysis techniques into a number of popular websites in order to calculate a series of metrics closely related to UI aesthetics and visual complexity. Those metrics constitute the information basis upon which design patterns are extracted using artificial intelligence and data mining techniques. The identified design patterns are used to create a rule-based system for the evaluation of user interfaces. Preliminary results regarding the usage of the proposed system indicate that it can be a useful tool for developers and interface designers.
Meta-modeling of Non Functional Software Requirements for RESTful ServicesThe REST design pattern was first introduced in Roy Fielding’s dissertation in 2000. This pattern is in fact a set of well-defined rules and constraints, which, when applied to a given web service, they make it more ap- pealing by improving performance, enabling scalability, modifiability and easy grasping of the functionality of the service. The basic idea of REST is that every object of the service is a resource that can be easily created and destroyed, using Uniform Resource Identifiers (URIs), namely web links. These resources can be modified by a well-defined set of actions, the HTTP verbs, and they can be shared between clients and servers using strict representation forms and protocols. Due to its simplicity, REST became so popular that more and more services are built guided by its architectural style. Thus, an increasing need for tools that automate the process of building RESTful web services is evident. Many such tools are easy to use, but lack in some aspects. Some of them achieve to meet more constraints that REST demands, while others manage better automation process. However, what is common in all existing tools is that they aim to fulfill only functional requirements whereas they disregard the importance of non-functional re- quirements. The aim of this thesis is the design and the development of a tool that automates the production of a RESTful API, while taking into account nonfunctional requirements apart from the functional ones. This tool is an extension of the S-CASE MDE Engine that semi-automatically produces RESTful APIs by employing model driven. The implemented extension uses the MDA process, a model driven engineering process that the OMG (Object Management Group) introduced for the purposes of model driven engineering. The generated code conforms to the MVC architecture using JAVA EE. It also complies with all the rules that the S-CASE tool introduces, thus conforms to Richardson’s Maturity Model. The nonfunctional requirements are satisfied by modeling design patterns and integrating them into the S-CASE MDE engine, hence by the inte- gration of those patterns into the produced code.
Deep auto-encoders for source code retrieval and visualization
RESTful Web API Development using the Gherkin language and the OpenAPI SpecificationThe problem of the effective satisfaction of customer requirements in the typical software de- velopment lifecycle has been of major concern, not only to the software industry, but also to the academic world. Thus, new software development methodologies like Behavior-Driven Develop- ment and the Agile manifesto are introduced, dictating continuous and detailed communications between the software engineer and the customer. At the same time the World Wide Web is ma- turing. The concept “The Web as an Application Platform” is greatly adopted. Inevitably, Web developers and industry specialists are discussing methods of effectively designing and devel- oping Web applications. The current state of the industry shows that technologies like REST, might be the answer to those discussions. This thesis sets two major goals: a) To design a methodology where RESTful Web API functional requirements are described in a customer friendly format and in natural language, b) To develop a software tool that will transform the described requirements to technical information. For these goals to be met we employ Gherkin -a user requirements language-, the OpenAPI Spec- ification -a specification for REST Web APIs- and finally Natural Language Processing (NLP) mechanisms. At first, it was examined how would the REST specifications be mapped to Gherkin. For that reason, Agile and BDD company members were contacted, API company blogs and seminars were examined and the available bibliography was thoroughly studied. Based on this research, the methodology Resource Driven Development (RDD) was designed. Per RDD, the functional requirements of a Web application are organized in resources. Thus, the original way of writing Gherkin feature files was revised. The steps ‘When’ and ‘Then’ are now used to model the HTTP protocol. The scenarios are used to describe resource and application state changes, as implied by REST. The RDD methodology is described in detail with specific examples of Gherkin files. The next step was to develop a software tool, which was named Gherkin2OAS and which is responsible of converting Gherkin requirements to the OpenAPI Specification. The software is written in python 3.5. It’s functionality, it’s functions and the NLP mechanisms it uses are thoroughly described. Gherkin2OAS can detect in natural language text HTTP verbs, parameter names, types (like string, int, float, bool, array, file, date, password and more) and properties (like required, min/max, descriptions and formats), resource linking through the HATEOAS concept, roles/users, HTTP status codes and more. It also has a separate functionality, where it organizes those technical properties to an OpenAPI Specification document. Furthermore, Gherkin2OAS has built in messages that try to guide the user in writing Gherkin requirements, the way a programming language compiler would help programming software.
Development of a Source Code Visualization System using Information Retrieval techniquesThe internet has completely revolutionized the way we communicate and exchange informa- tion. It has provided the necessary infrastructure for the creation of software repositories, that offer access to large collections of open source software, including software applications and libraries. Libraries provide the building blocks for the creation of larger, more complex, software, by implementing useful algorithms, that effectively confront specific problems.. This functiona- lity, though, comes at a price, due to the considerable time and effort required to understand and/or extend a library. Several applications have been created to analyze the structure and the documentation of a given library and present them to the developer. Even though these tools can be quite effective in some cases, the documentation for a library is often limited or even non-existent, while the structure of the code is not sufficient for deducing its functionality. As a result, there is a growing need for tools that harness the semantic contents of source code, left behind by developers in identifier names and comments, in order to provide a semantic description of the functionality of an application, as well as an analysis for the cohesion of its package structure. By utilizing state of the art information processing techniques we have implemented a system that analyzes the source code of a given library, extracts useful information from variable/method names and comments, and identifies semantic topics. Our system supports a set of vectorizers (count, tf-idf) and clusterers (k-means, LDA) and automatically evaluates their performance based on the purity score of the extracted topics. Furthermore, an online search is performed in order to find tags related to the top terms of each topic, and thus offers a more abstract description of the topic. Our system also provides visualization of the distribution of packages to topics. Finally, it identifies similar topics, and clusters them into semantic categories. Based on the results of a case study on Weka, as well as the application of our methodology on 5 other libraries of different sizes, we assess that the purity metric is at least 60% and in most cases over 75 − 80%. Furthermore, examining the retrieved tags for the topics indicates that their semantic content is described accurately. Finally, we provide a comparison between the clustering algorithms of our system, and further assess their effectiveness with respect to the selected vectorization techniques.
Extracting API usage examples from software repositoriesIn the era of the Internet, information sharing is an everyday phenomenon. The big amount of data shared deems their effective usage mandatory. Software, as a form of information, exists in abundance online mainly in software repositories. However, the vastness of this information usually makes searching for code usage examples hard, while the usage of software libraries is further obscured by the lack of sufficient documentation. These library usage examples consist mainly of Application Programming Interface (API) usages, of which documentation is not always available and even when it is, no guarantees are provided regarding their quality. More precisely, conducting such a search through common search engines proves cumbersome and time consuming. This problem is addressed by Code Search Engines (CSEs) that mine useful code information to provide relevant results. However, they also fail to solve this search problem effectively. Recommendation Systems in Software Engineering (RSSEs), especially those regarding API usage mining, offer a more specialized solution to the aforementioned problem. These systems provide relevant usage examples that match the queries given by the user. Still, most of them do not perform any checks whatsoever on the quality of the results returned and produce redundant examples or cover a small part of the API under examination. The need to systematically confront the problem of API usage mining leads us to design and implement an RSSE system in order to effectively search for usage examples for a given API. Our system checks whether the retrieved code is compilable and employs a Frequent Closed Sequence mining algorithm in order to ensure that the produced results are of high quality and the API is covered effectively. Moreover, the rejection of redundant information at the stage of mining makes our results cohesive. As output, our system can summarize an API by providing general examples for its methods as well as process queries regarding specific methods. We evaluate our system with respect to the percentage of API methods that are covered by the produced examples and further assess the quality of these examples by calculating their variety and cohesion. In addition, we conduct a case study for the Machine Learning and Data Mining library weka where our system is tested in a real life scenario. The results of the evaluation are quite encouraging, indicating sufficient coverage of API methods while producing cohesive examples in a timely manner.
Software Engineer Profile Recognition Through Application of Data Mining Techniques on GitHub Repository Source Code and CommentsSoftware development methodologies, or process models, attempt to describe the steps that should be followed along the way from conception to deployment of software. There are traditional approaches that focus on the sequence of discrete and well defined steps, like the Waterfall model, where communication channels are realized by passing documents, and others, like the Agile model, which emphasizes on the need for flexibility and constant, direct communication between team members. These newer models are very popular with software teams of varying sizes. Due to the importance and the means of communications described by these models, it is desired to recruit people that possess both technical and communicational skills. The problem, though, that arises when looking for people like these, lies in the difficulty of assessing these skills. Within the context of this diploma thesis we focus on this issue. To do so we employ data mining techniques for identifying different team roles and also assess the activities of team members within the software development and operations process. The implemented system draws user activity data from the GitHub web platform and uses them as input to cluster team members. This way we attempt to provide insight into the different team member roles that appear in open source projects, like the ones at GitHub, and the performance of the users that act under these roles. After extensive experimentation with different combinations of datasets and evaluation features, the results that are presented as final are considered to offer critical insight into those matters.
Design and Development of a Refactoring-Based Quality Enhancement System
Automated Test Case Generation using Source Code RepositoriesRecently, programmers and software engineers have started trying to take advantage of the abundance of information on the internet, to be able to reuse code snippets which fit in their projects, thus saving up time and effort. To do so, Code Search Engines (CSEs) were developed, which acquire code snippets from various software repositories and by using data mining algorithms attempt to present the user with results as relevant to his/her needs as possible. The process of relevant code search is facilitated by the use of the so-called Recommendation Systems in Software Engineering (RSSEs), which cooperate with CSEs, respond in more complex queries than CSEs do, take into consideration the developed project and apply complicated data mining techniques, in order to present results to the end user. Despite the contribution of CSEs and RSSE systems to the field of code reuse, they are unable to solve the problem that is the subject of current thesis. That is, the searching for reusable test methods and the automated test case generation. This thesis aims to demonstrate an RSSE system which receives user’s source code and constructs appropriate queries, in order to search for test cases in online source code repositories, such as GitHub and AGORA. By using sophisticated techniques, which will be presented in detail in later chapters, our system mines data from the retrieved code snippets, evaluates them based on their relevance to the query and checks whether they compile and run successfully. For each method that a user requests, the retrieved test methods are presented to the user, ranked in descending order. The user may select those test methods he/she prefers, so that he/she can construct his/her own test case. Furthermore, if he/she chooses so, he/she can select one from the proposed test cases, that occur from all the possible combinations of compilable test methods. After submitting a set of queries to our system and after evaluating its performance, we believe that it produces satisfactory results, since the retrieved and relevant results are more than one in most cases, whether the user searches for single test methods or for complete test cases.
Design and Development of a Web Analytics System Based on Monitoring and Analyzing Users' BehaviorΣhe continuous outspread of the Internet is accompanied by its active presence in all areas of human activity. Information pages, e-commerce platforms, social media and other websites are an integral part of modern reality. Everyone interacts with them, more or less, which depends on the age, familiarity and particular needs of each. This new reality feeds the ever-growing trend for new websites and web applications that aspire to attract as many users as possible. Developing webpages and web applications that meet the ever-increasing demands of users is not an easy task: rather it is a multifaceted problem. Its difficulty lies in the fact that different user categories imply different requirements. In addition, existing tools and recommendation systems that provide suggestions on optimal design have the disadvantage that they provide general assumptions, without taking into account the scope of each website. Thus, the following question arises: \"How can a personalized assessment methodology be developed to design a website?\" The answer to the above question lies in the use of information that originate from the end users themselves. Thus, this diploma thesis aims to contribute to the above research question through the development of a system for recording and analyzing the behavior of website users in order to come up with useful conclusions regarding the user-perceived optimal design. Recording user behavior can be achieved through the collection of data that reflects how users interact with the website. Typical examples are data related to mouse movements, clicks, subsections of the website they are accessing, and more. The collected data can then be analyzed to draw conclusions on understanding how users are browsing the website and how the user experience could be improved. The system implemented in the context of this diploma thesis is called \"Synopsis\" and is responsible for the recording and modeling of user interaction within web pages. \"Synopsis\" was developed as an online application and tested in a real environment where it was used to track the behavior of e-shop users. The results indicate that it can provide valuable information and contribute into the optimization of web pages design.
Automated Data ScientistThe science of machine learning has achieved, based on solid mathematical tools, to transform the current data deluge into the understanding of underlying social, economical and natural mechanisms and the generation of related predictive models. However, the presence of computa- tionally demanding problems and the current inability to automatically transfer the knowledge on how to apply machine learning on new applications and new problems, delays the evolution of knowledge itself. The necessity of discovering paths that lead to a deeper understanding of the machine learning mechanisms is evident, bearing the ambition of training models that optimize the very process of learning, instead of individual applications. AutoML, that has recently emer- ged, attempts to automate the application of machine learning. Its most apparent manifestations include software systems that serve as productivity tools, instruments to make experts more efficient and effective, but not eliminate them. A common feature of these systems is the embed- ding of meta-knowledge, namely knowledge produced by the application of machine learning in past experiments, a trait that adds experience and adaptability to the system. This diploma thesis aims at implementing a software tool to facilitate the AutoML process. Exploiting current technologies, such as the rich CRAN repository, we explored opportunities offered by machine learning techniques and have attempted to push forward the state of the art by embedding meta- learning for optimal hyperparameter selection and forward model selection ensembles to our system. Main aspiration of our work consisted in designing and implementing an experienced, intuitive and expandable automated data analyst. The experiments seem promising, and we argue that the implemented tool could constitute an informative contribution to the area of AutoML.
Automatic generation of user interfaces for RESTful web servicesOver the last decade, the architectural style that has prevailed for the development of web applications is the one introduced in Roy Fielding\'s Thesis in 2000, the REST architectural style. Since then, thanks to its simplicity and power, the REST architectural style has conquered the field of web applications and is practically dominant as far as web service development is concerned. For this reason, the growing demand and use of REST APIs is accompanied by the tendency to create automated processes that can produce an application that consumes RESTful web services, minimizing the time and cost needed for their development. Many automation tools have been created in recent years, however, many of them are unable to produce ready-to-run applications, and require software developer intervention. This diploma thesis aspires to make the first steps towards the process of automating the development of fully functional and ready-to-run web client applications. In order to automate the process of generating web client applications, in this diploma thesis, MDA architecture (Model Driven Architecture) is employed. MDA defines a set of clearly defined templates and tools, and describes a development process where, once an initial abstract model has been defined, a series of transformations take place, resulting in a fully functional application. This is intended to speed up the process of software development and to generate more reliable software. My diploma thesis, CREATE (Client for RESTful Api Automated Engine), implements an automated graphical user interface development tool. It automatically produces web client applications that consume RESTful web services as generated by the S-CASE , manage CRUD (Create, Read, Update, and Delete) requests and receive, process, and present their responses. These web client applications provide features such as database search, user authentication and communication with external services. Also, graphical interface features are provided such as pop-ups for confirming or updating user movements, navigation menus, image integration, etc. Finally, documentation is produced to better explain the code. The application CREATE is implemented using the AngularJS framework.
Aspa Karanasiou, Chrisa Gouniotou
Interactive detection, tracking and localization of QR tags employing the NAO humanoid robotNowadays, robotics is one of the most progressive technological industries. Using an automatic robotic vehicle, a plenty of processes are now feasible to be achieved. One of the most desirable characteristics, which a robotic vehicle should dispose in order to complete a process, is the ability of autonomous navigation interior. The issue, which is being considered in this bachelor’s thesis, is the calculation of the most effective path, between two points, and its secure navigation. Specifically, its implementation is focused on interiors, which are known in advance and contain static and dynamic obstacles. A designing method for the most effective path developed, while this path is designed in order to avoid any possible conflicts with the obstacles. Furthermore, a pinpointing method developed targeting to the robot’s place to be known in a dynamic environment. In order to achieve that method, firstly, it should be determined the way which could separate the obstacle’s kind. Moreover, the method, which is used for the redefining of the starter path, is analyzed whenever a dynamic obstacle is being observed, so the robotic vehicle would be able to avoid such a conflict. Finally, in order to be checked and evaluated these methods, a series of experiments took place.
A restification methology for client-server architectures. Application on the PowerTAC platformThe REST design pattern (Representational State Transfer) is a set of principles and rules for designing web services that was first introduced in Roy Fielding\'s dissertation «Architectural Styles and the Design of Network-based Software Architectures» in 2000. These principles are in fact a set of rules and constraints that, when applied in the process of designing a web service, they make it more appealing and enable scalability. The basic consept of REST is the representation of information and objects as resources. Every object is in fact a resource and it can be easily created or deleted through URI\'s (Uniform Resource Identifier). Through a well defined set of HTTP actions a client is able to access and modify information through a strict set of represantation forms and protocols. The ever-increasing demand for web services that are governed by a RESTful architecture is accompanied by a tendency to evolve their creation and operation techniques. Client-server architectures based on outdated architectural patterns tend to be replaced by RESTful architectures and approaches. This diploma thesis deals with the study of a real transformation problem of a client-server architecture to REST. Specifically, the transformation of the PowerTAC platform is considered, a platform that constitutes a competitive simulation of an energy stock where competing entities called brokers offer energy services to customers through contracts and are then asked to maximize their profit by buying and selling energy in order to satisfy their customers. The diploma thesis presents the main problems encountered in the Restification process of the platform as well as the solutions given, aiming at the general presentation of solutions for design problems encountered during the Restification.
Autodiscovery of Web services utilizing the Semantic WebThe Web is adapting in order to handle the magnitude of the ever increasing data. The semantic web, as envisioned by Tim Berners Lee, is emerging slowly, although the required methods and technologies are already there to be applied at large scale. The current thesis is focused on automating the discovery and usage of Web services. We argue that in a dialogue between participants whether they are human or machines, there has to be a common context between them. This context guarantees the soundness of their communication. This fundamental context is described through technologies offered by the Semantic Web toolchain. We use the Resource Description Framework (RDF) for our data format. Additionally, a variety of vocabularies is provided, in order to assign meaning to data models and services. A network of servers offering Web services is implemented. Their content is described with terms from the HYDRA vocabulary. The data model is built upon schema.org terms rather than being simply annotated. The generic client is able to understand those terms and communicate with the servers with the aid of RDF graphs, instead of direct calls to their URL. In the middle of this communication lies the API-Resolver, a server equipped with an RDF parser and a SPARQL endpoint aspiring to resolve and match the requests from the client to the desired server. The goal of the current thesis is twofold. The evaluation of this proof of concept implementation and the exhibition of the Semantic Web potential. However, only with its adoption in large scale, the automation of many processes and the extension of the functionality of the current Web will become feasible.
Design and implementation of a ChatOps Bot using the Hubot Framework The technology, communications and information industry has been evolving rapidly in the recent years. This is due to the fact that meeting most of the natural needs depends mainly on technological achievements. Even the main sectors of health, industry, nutrition, mass transportation and communication are based on advanced technology products, which in order to operate properly designed software is required. The development and maintenance of software is a versatile and complex process, especially when it comes to large-scale software that requires the collaboration of many people and the combination of various services, tools and technologies that are relevant to its development. Collaboration between teams, constantly updating work progress and automating everyday processes is a success-key to software development. This diploma thesis deals with the implementation of a chatOps Bot for the chat-driven software development within the group chat tool, Slack. Its main goal is to provide the development teams with the ability to automate tasks and cooperate in an easier manner. The Bot provides users the ability to manage the services of GitHub, Trello and Jenkins, and update and exchange information with the rest of the group in common Slack channels about the progress of work undertaken without leaving Slack.
Development of a web recorder for automating tests in web applicationsNowadays, spending time on the internet is a daily task and is related to almost every area of human activity. People of all ages, different educational, social, and economic backgrounds, visit a wide range of websites daily for information, entertainment communication, conciliation at different levels, and the evolvement of their business activities. As a result, the formation of this new reality has resulted in the increasing creation of webpages and web applications that aim to attract as many users as possible. The creation of web applications, as well as their continuous maintenance, is a strenuous process, which requires constant monitoring of changes that take place on them. In order to achieve this, it is necessary to develop a fairly large number of tests, which will constantly validate the proper functioning of the website. However, this manual process proves to be extremely time-consuming, since for each service of the application, the developer has to create his/her own tests, which should also be changed, whenever any of the website’s elements are changed. This diploma thesis aims to contribute to the automation of test creation and the testing process. To this end, a Chrome Extension has been developed, which is responsible for “filming” a user’s actions on a website, recording all the available information that he encounters, such as HTML, CSS, JS code, API calls, content, as well as photos of web pages. In addition, a web application was created, which is responsible for the presentation and programing of the various tests results. Both the extension and application were tested on real-world websites, and the results showed it to be a very useful tool for developers, saving them valuable time.
Design and development of a Conversational Bot for a User personalized web Internet has become nowadays an integral part of people’s lives. On a daily basis, users consume the services provided by the Internet for professional, recreational and other reasons. Users interact with computers via appropriately designed interfaces (user interfaces), in order to satisfy their needs. User experience (UX) is the most fundamental metric utilized to assess the human-computer interaction. UX is defined as \"a person\'s perceptions and responses that result from the use or anticipated use of a product, system or service\". The notion of UX is directly associated with the user him/herself and every user individually. However, each user is characterized by a different level of knowledge and experience, as far as the use of internet is concerned. The user has his/her own interests and preferences that match his/her personality. With a focus on improving UX and better satisfying the user’s needs the exploitation of information -gathered from the user- is deemed necessary. Information such as gender, age, demographic characteristics and the content of websites visited by the user could be used to identify the user’s interests and create a corresponding internet profile. The main goal of this diploma thesis is to design a system which allows the identification of user’s interests and provide a mechanism in order dynamically re-assess these interests. Initially, information is gathered from the user’s internet history -via a Chrome extension- and the interaction of the user with a Messenger Bot. This information is used in order to identify the user’s interests and create an internet profile. Subsequently, a personalized news feed provided by the Messenger bot enables us to dynamically re-assess the user’s internet profile. Within the context of this thesis we present relevant applications and describe the implemented system and its components in detail. In addition, we present results of the system’s utilization by a real user.
Design and development of a software quality optimization system using automated correction of coding violationsThe ever-growing penetration of the internet into our lives could not leave the software development process unaffected. Broad and easy access to all kinds of information has provided an opportunity for software developers around the world to create a collaborative community for building new software projects, also known as the \"open source community\". It is now a fact that software development requires systematic source code reuse in order to help create better quality software faster and at a lower cost. However, most of the source code which is located in open source repositories and is available for reuse does not necessarily meet specific quality standards, fact that makes the development of mechanisms for quality monitoring necessary. Towards this direction, in an effort to model quality, a set of standards have been proposed that analyze software quality in a number of features. Similarly, in an attempt to find a common ground between software developers, a number of best coding practices have been proposed to supervise quality at the source code level. For this purpose, static source code analysis tools have been developed that detect and report coding violations; however, they do not offer the ability of automatic correction. In the context of the above we propose the development of an automated code quality improvement system through automatic correction of code quality violations, whose primary objective is to be a reliable and useful tool for developers. The first results the systems implementation in a series of open source projects lead to the conclusion that our approach can correct a large number of violations and thereby substantially contribute to improving the software’s quality.
Applying reinforcement learning for structured predictionDuring the last few years, the increased popularity of the internet, the proliferation of integrated computers and the continuously growing research community have generated an explosive increase in the number and size of the various available data collections. At the same time, the increase in available computing power and storage and the huge interest in fields that demand a large amount of data, has made the analysis of such datasets possible. In practice, though, the exploitation and integration of data from a large number of sources has proved to be a very hard and time-consuming process. Even when working only with data collections that contain similar data, these are seldom in common formats. On the contrary, the bigger the variety of data we wish to use, the more effort does it require to modify the data to a common structure. Furthermore, a huge category of data that cannot be utilized easily is that of semi-structured data. This category includes data collections that exhibit a loose structure, such as HTML trees (websites). The exploitation of those data is often prohibitively complicated or even impossible if manual data processing is used. The above reasons render clear the need for development of flexible algorithms capable of handling data processing and manipulation with limited or even no human help. Even though a variety of artificial intelligence methods have been used to solve the above problem with promising results, there still exists a large margin of improvement in those results. Algorithms that belong in the field of reinforcement learning are especially interesting, since we believe that the structure of those algorithms makes them ideal for the task of processing data of various structures. In this diploma thesis we elaborate on the performance of reinforcement learning algorithms in a variety of problems focused on structured prediction.
Design and development of an automatic mechanism for Continuous IntegrationThe progress of cloud computing in the recent years has been rapid. Given the advantages that cloud computing offers, it is being used more and more by businesses and, accordingly, there are many providers that offer cloud computing services. Together with the advantages of cloud computing, there are several challenges, for example related to data security. These challenges vary depending on each provider\'s implementations. An important part of the software development process is Continuous Integration (CI). CI aspires to minimize errors and accelerate the progress of software project development and evolution. Testing is automatically performed through CI systems and, upon successfully running the automated tests, CI delivers the latest version of the code in a production or pre-production (staging) environment automatically through Continuous Deployment (CD) and Continuous Delivery (CDE), which are an extension to CI systems. Numerous cloud-based CI implementations are available as-a-Service, but there is a differentiation between the services provided, depending on whether the software project is closed or open source, while data (code) security challenges arise, especially for closed source projects. Moreover, the adaptability of the systems to users’ requirements is limited. The process of implementing an integrated, customizable, automated CI + CD/CDE system, using cloud infrastructure, is time-consuming and requires know-how. The subject of this thesis is, after comparing cloud providers, to develop a service for automating the installation, configuration and running of a CI + CD/CDE system. Our approach also integrates static code analysis and evaluation. CI is implemented through Jenkins, an open source software, while static analysis is performed through SonarQube. Automation of the CI creation workflow as well as the CD/ CDE processes are performed through the Ansible software configuration management tool. The outcome of the thesis is a user-friendly web interface that enables, after inserting the appropriate variables, the creation of a CI system, which is compatible with the cloud infrastructure of multiple providers, as well as with the use of local servers. The product can be used by companies or individual application developers.
Design and Development of a Recommendation System for Extracting Source Code Snippets from Online SourcesThe outspread of the Internet has facilitated the search for useful code from online software repositories, therefore fundamentally changing the way software is developed and maintained. Software engineers focus their effort on combining the best examples and interfaces in order to achieve the optimal solutions. Nevertheless, even with a huge variety of available choices, the developer is often forced to leave his programming environment and resort to search engines in order to find useful code and examples. In the aftermath, his productivity and concentration are reduced. Lately, the research area of Recommendation Systems in Software Engineering has been developed in an attempt to confront these challenges. These are systems that receive queries from the developer, and through data mining techniques, aspire to provide ready-to-use solutions, such as reusable code. In current literature, there are several systems that receive some form of query and return ready-to-use code snippets. Nevertheless, most of these systems use complex query languages, thus requiring significant effort for properly constructing a query. Furthermore, the presentation of the results is often limited, as the developer is only given a list of snippets, without any grouping and without any further information regarding their quality. In this work, we design and develop a new recommendation system in order to confront the aforementioned challenges. Our system receives queries in natural language and searches for useful snippets in multiple online sources. After that, data mining and machine learning techniques are employed in order to assess and cluster the snippets. The results are assessed both for their usefulness and their quality (readability), while their presentation allows the developer to easily distinguish among the implementation that is most desired. Finally, we evaluate our system in a set of queries to confirm its proper functionality.
Automatic Build and Deployment of Robotic Microservices at CloudGenerated data volumes are constantly increasing, dictating the need for more sophisticated algorithms and mathematical models to achieve faster and more accurate processing of this data volume. The execution requirements of these algorithms/models often require increased computational resources which entails increased energy and costs. It is evident that, as data continue to grow, performing such processing algorithms on robotic vehicles that do not have the computational power and the energy autonomy will be impossible. This diploma thesis focuses on the implementation of a system that aims to offload some robotic vehicle operations into a computer cluster. This way, robots can execute algorithms that, due to computational resource and energy requirements, would be impossible. The proposed system allows developers that do not have robotic programming skills, to treat robotic systems under a software as a service prism.
Providing robotic web services through a hardware node and interfacing with IoT platformsThe rapid development of technology over the last decade has greatly influenced peoples’ daily habits. Nowadays, due to the development of robotics and the Internet, we enter the 4th Industrial Revolution (Industry 4.0). The communication and collaboration of Cyber-Physical Systems, including machines and robots, among themselves and with humans, is expected to attract researchers\' interest for at least the next decades. A key element of the 4th Industrial Revolution is the Internet of Things (IoT). The idea of IoT initially appeared at Carnegie Mellon University in 1982, where a network of smart objects was envisioned in an effort to connect a soft drink vending machine to the network. Nowadays, IoT begins a period of acne, with scientists having good evidence that by 2020 smart objects will reach the number of 50 billion. This diploma thesis presents the development of an IoT system, through which various devices and smart objects come into contact, either with each other or with people. The most important part of the system consists of a router, crossbar, which allows the connection of smart objects, robots and people to the system. Communication is accomplished using Remote Procedure Calls (RPCs) and Publish / Subscribe (PubSub). The first refers to remote calls offered by the device, while using PubSub protocol, asynchronous messaging between independent nodes on an IoT network is achieved. Specifically, the WAMP and REST over HTTP protocols were used. In the current thesis, connectivity to a NAO robot, a Raspberry Pi (RPi), the REMEDES system and an Arduino embedded device was achieved. An equally important part of the overall system is the implementation of a hardware node which served robotic-oriented web services. This node was implemented on a Raspberry Pi and hosts a server that was created with the help of the Swagger framework tools. The server provides RESTful web services for utilization by robots. Raspberry Pi is connected to the IOT system, allowing robots to indirectly contact the service. Of course, direct communication of robots with RPi is also possible. Also, a large number of experiments have been carried out demonstrating the satisfactory operation of the system and drawing useful conclusions. Finally, some applications have been implemented that show the potential of the system.