9 research outputs found
Software Product Line Engineering via Software Transplantation
For companies producing related products, a Software Product Line (SPL) is a
software reuse method that improves time-to-market and software quality,
achieving substantial cost reductions.These benefits do not come for free. It
often takes years to re-architect and re-engineer a codebase to support SPL
and, once adopted, it must be maintained. Current SPL practice relies on a
collection of tools, tailored for different reengineering phases, whose output
developers must coordinate and integrate. We present Foundry, a general
automated approach for leveraging software transplantation to speed conversion
to and maintenance of SPL. Foundry facilitates feature extraction and
migration. It can efficiently, repeatedly, transplant a sequence of features,
implemented in multiple files. We used Foundry to create two valid product
lines that integrate features from three real-world systems in an automated
way. Moreover, we conducted an experiment comparing Foundry's feature migration
with manual effort. We show that Foundry automatically migrated features across
codebases 4.8 times faster, on average, than the average time a group of SPL
experts took to accomplish the task
Easing IoT Development for Novice Programmers Through Code Recipes
The co-existence of various kinds of devices, protocols, architectures, and programming languages make Internet of Things (IoT) systems complex to develop, even for experienced programmers. Perforce, Software Engineering challenges are even more difficult to address by novice programmers. Previous research focused on identifying the most challenging issues that novice programmers experience when developing IoT systems. The results suggested that the integration of heterogeneous software components resulted one of the most painful issues, mainly due to the lack of documentation understandable by inexperienced developers, from both conceptual and technical perspectives. In fact, novice programmers devote a significant effort looking for documentation and code samples willing to understand them conceptually, or in the worst case, at least to make them work. Driven by the research question: "How do the lessons learned by IoT novice programmers can be captured, so they become an asset for other novice developers?", in this paper, we introduce Code Recipes. They consist of summarized and well-defined documentation modules, independent from programming languages or run-time environments, by which non-expert programmers can smoothly become familiar with source code, written by other developers that faced similar issues. Through a use case, we show how Code Recipes are a feasible mechanism to support novice IoT programmers in building their IoT system
The Three Pillars of Machine Programming
In this position paper, we describe our vision of the future of machine programming through a categorical examination of three pillars of research. Those pillars are:(i) intention,(ii) invention, and (iii) adaptation. Intention emphasizes advancements in the human-to-computer and computer-to-machine-learning interfaces. Invention emphasizes the creation or refinement of algorithms or core hardware and software building blocks through machine learning (ML). Adaptation emphasizes advances in the use of ML-based constructs to autonomously evolve software
Метод оптимізації обчислювальних ресурсів на основі спеціалізованих гібридних рішень
Робота складається із вступу та чотирьох розділів. Загальний обсяг
роботи: 76 аркуші основного тексту, 20 ілюстрації, 10 таблиць. При
підготовці використовувалася література з 18 різних джерел.
Актуальність. Великою проблемою сучасного світу є проблема
розширення та оновлення додатків різної направленості. Швидкість
розвитку сучасного світу перевищує людську можливості до передбачення
напрямку цього розвитку. Саме для цього необхідно поліпшити процес
міграції на новіші, більш швидкі рішення існуючих проблем. Частковим
рішенням було використання архітектурних шаблонів. Але це тільки
частині рішення для ситуацій в якій присутня сувора ієрархія. Тому
сучасний підхід шукає ще більш гнучкі рішення.
Мета і завдання дослідження. Метою магістерської роботи є
спрощення системного підходу до розробки програмного забезпечення та
вирішення питання міграції до без серверного рішення
Для досягнення мети дослідження поставлено і вирішено такі
завдання:
● дослідження структури та принципів побудови мікросервісних та без серверних архітектури
● Пошук найоптимальнішого набору інструментів для реалізації
цих архітектур
● розробка програмної моделі гібридного без серверного додатку
● ілюстрація роботи моделі та аналіз отриманих результатів
Об’єкт дослідження – процес роботи додатків в гібридній без серверній системі
Предмет дослідження – взаємодія програмних компонентів в системі
яка базується на мікро сервісній архітектурі та використовує без серверний
підхід
Методи досліджень. Для досягнення поставлених в магістерській
роботі задач, використано знання з курсів - технологія хмарних обчислень,
технологія розподілених обчислень, проектування комп'ютерних систем, та
основи ООП.
Наукова новизна одержаних результатів роботи полягає у
наступному:
● запропоновано спосіб аналізу існуючої системи та
використання модульної структури додатку для оптимізації
обчислень
● розроблено програмний продукт для аналізу роботи
побудованої гібридної системи
Проведене дослідження дає змогу оптимізувати роботу існуючих
програмних систем які базуються на мікро сервісній архітектурі та
потребують додаткові разові обчислення.
Особистий внесок здобувача. Магістерське дослідження є
самостійно виконаною роботою, в якій зображено особистий авторський
підхід та особисто отримані теоретичні та прикладні результати, що
відносяться до вирішення задачі оптимізації серверних обчислень.
Формулювання мети та завдань дослідження проводилось спільно з
науковим керівником.
Практична цінність. Отримані результати можуть
використовуватися у майбутніх дослідженнях за напрямками:
● вдосконалення системи додатків
● аналіз проектування мікро-сервісних рішень
Апробація результатів. В рамках досліджень, що були виконані для магістерської дисертації було зроблено доповідь в студентській науковопрактичній конференції:
1. Kostyantyn Tykhonov, Yurii Gordienko. Method for optimization
computing resources on the basis of specialized hybrid solutions. “The
International Conference on Security, Fault Tolerance, Intelligence”
(ICSFTI2020).
Основні положення, що виносяться на захист:
Метод оптимізації обчислювальних ресурсів програмними методами
з використанням, різних архітектурних рішень до побудови додатку.The urgency of the problem. The big problem of the modern world is the
problem of expanding and updating applications of various directions. The speed
of development of the modern world exceeds the human capacity to predict the
direction of this development. That is why it is necessary to improve the migration
process to newer, faster solutions to existing problems. A partial solution was to
use architectural templates. But this is only part of the solution for situations in
which there is a strict hierarchy. Therefore, the modern approach is looking for
even more flexible solutions.
Purpose and tasks of the research. To achieve the objectives set in the
master's thesis, used knowledge from the courses - cloud computing technology,
distributed computing technology, computer systems design, and the basics of
OOP.
To achieve the goal of the study, the following tasks were set and solved:
● Research of structure and principles of construction of microservice and
serverless architecture
● Finding the best set of tools to implement these architectures
● Development of a software model of a hybrid without a server application
● Illustration of the model and analysis of the results
Object of study. The object of research is the process of application
operation in a hybrid without a server system The subject of research - the
interaction of software components in a system based on microservice
architecture and uses a server-free approach
Subject of study. Game theories are used to achieve the goals set in the
master's thesis.The scientific novelty of the obtained results is as follows:
● The method of analyzing the existing system and using the modular
structure of the application to optimize calculations is proposed
● Developed a software product for the analysis of the constructed hybrid
system
● The study allows to optimize the operation of existing software systems
based on microservices
The novelty of the results. The master's research is an independently
performed work, which reflects the personal author's approach and personally
obtained theoretical and applied results related to solving the problem of server
computation optimization. The formulation of the purpose and objectives of the
study was carried out jointly with the supervisor.
The practical significance of the results of the work.
The obtained results can be used in future research in the following areas:
● Improvement of existing systems
● Analysis of designing micro service solutions
Approbation of results. As part of the research that was performed for the
master's dissertation, a report was made at the student scientific-practical
conference:
1. Kostyantyn Tykhonov, Yurii Gordienko. Method for optimization
computing resources on the basis of specialized hybrid solutions. “The
International Conference on Security, Fault Tolerance, Intelligence”
(ICSFTI2020). The main provisions to be defended:
A method of optimizing computing resources by software methods using
various architectural solutions to build an web application
NLG-Metricverse: An End-to-End Library for Evaluating Natural Language Generation
Driven by recent deep learning breakthroughs, natural language generation (NLG) models have been at the center of steady progress in the last few years. However, since our ability to generate human-indistinguishable artificial text
lags behind our capacity to assess it, it is paramount to develop and apply even better automatic evaluation metrics. To facilitate researchers to judge the effectiveness of their models broadly, we suggest NLG-Metricverse—an end-to-end open-source library for NLG evaluation based on Python. This framework provides a living collection of NLG metrics in a unified and easy- to-use environment, supplying tools to efficiently apply, analyze, compare, and visualize them. This includes (i) the extensive support of heterogeneous automatic metrics with n-arity management, (ii) the meta-evaluation upon individual performance, metric-metric and metric-human correlations, (iii) graphical interpretations for helping humans better gain score intuitions, (iv) formal categorization and convenient documentation to accelerate metrics understanding. NLG-Metricverse aims to increase the comparability and replicability of NLG research, hopefully stimulating new contributions in the area
Automated Software Transplantation
Automated program repair has excited researchers for more than a decade, yet it has yet to find full scale deployment in industry. We report our experience with SAPFIX: the first deployment of automated end-to-end fault fixing, from test case design through to deployed repairs in production code. We have used SAPFIX at Facebook to repair 6 production systems, each consisting of tens of millions of lines of code, and which are collectively used by hundreds of millions of people worldwide. In its first three months of operation, SAPFIX produced 55 repair candidates for 57 crashes reported to SAPFIX, of which 27 have been deem as correct by developers and 14 have been landed into production automatically by SAPFIX. SAPFIX has thus demonstrated the potential of the search-based repair research agenda by deploying, to hundreds of millions of users worldwide, software systems that have been automatically tested and repaired. Automated software transplantation (autotransplantation) is a form of automated software engineering, where we use search based software engineering to be able to automatically move a functionality of interest from a ‘donor‘ program that implements it into a ‘host‘ program that lacks it. Autotransplantation is a kind of automated program repair where we repair the ‘host‘ program by augmenting it with the missing functionality. Automated software transplantation would open many exciting avenues for software development: suppose we could autotransplant code from one system into another, entirely unrelated, system, potentially written in a different programming language. Being able to do so might greatly enhance the software engineering practice, while reducing the costs. Automated software transplantation manifests in two different flavors: monolingual, when the languages of the host and donor programs is the same, or multilingual when the languages differ. This thesis introduces a theory of automated software transplantation, and two algorithms implemented in two tools that achieve this: µSCALPEL for monolingual software transplantation and τSCALPEL for multilingual software transplantation. Leveraging lightweight annotation, program analysis identifies an organ (interesting behavior to transplant); testing validates that the organ exhibits the desired behavior during its extraction and after its implantation into a host. We report encouraging results: in 14 of 17 monolingual transplantation experiments involving 6 donors and 4 hosts, popular real-world systems, we successfully autotransplanted 6 new functionalities; and in 10 out of 10 multlingual transplantation experiments involving 10 donors and 10 hosts, popular real-world systems written in 4 different programming languages, we successfully autotransplanted 10 new functionalities. That is, we have passed all the test suites that validates the new functionalities behaviour and the fact that the initial program behaviour is preserved. Additionally, we have manually checked the behaviour exercised by the organ. Autotransplantation is also very useful: in just 26 hours computation time we successfully autotransplanted the H.264 video encoding functionality from the x264 system to the VLC media player, a task that is currently done manually by the developers of VLC, since 12 years ago. We autotransplanted call graph generation and indentation for C programs into Kate, (a popular KDE based test editor used as an IDE by a lot of C developers) two features currently missing from Kate, but requested by the users of Kate. Autotransplantation is also efficient: the total runtime across 15 monolingual transplants is 5 hours and a half; the total runtime across 10 multilingual transplants is 33 hours
CodeCarbonCopy
We present CodeCarbonCopy (CCC), a system for transferring code from a donor application into a recipient application. CCC starts with functionality identified by the developer to transfer into an insertion point (again identified by the developer) in the recipient. CCC uses paired executions of the donor and recipient on the same input file to obtain a translation between the data representation and name space of the recipient and the data representation and name space of the donor. It also implements a static analysis that identifies and removes irrelevant functionality useful in the donor but not in the recipient.We evaluate CCC on eight transfers between six applications. Our results show that CCC can successfully transfer donor functionality into recipient applications.DARPA (Grant FA8750-14-2-0242