18 research outputs found

    Pushout: A mathematical model of architectural merger

    Full text link

    Novel Techniques For Model-Code Synchronization

    Get PDF
    The orientation of the current software development practice requires efficient model-based iterative solutions. The high costs of maintenance and evolution during the life cycle of the software can be reduced by using tool-aided iterative development. This paper presents how model-based iterative software development can be supported through efficient model-code change propagation. The presented approach facilitates bi-directional synchronization between the modified source code and the refined initial models. The backgrounds of the synchronization technique are three-way abstract syntax tree (AST) differencing and merging. The AST-based solution enables syntactically correct merge operations. OMG's Model-Driven Architecture describes a proposal for platform-specific model creation and source code generation. We extend this vision with the synchronization feature to assist the iterative development. Furthermore, a case study is also provided

    Visually Supporting Source Code Changes Integration: the Torch Dashboard

    Get PDF
    International audienceAutomatic and advanced merging algorithms help programmers to merge their modifications in main development repositories. However, there is little support to help release masters (integrators) to take decisions about the integration of published merged changes into the system release. Most of the time, the release master has to read all the changed code, check the diffs to build an idea of a change, and read unchanged code to understand the context of some changes. Such a task can be overwhelming. In this paper we present a dashboard to support integrators getting an overview of proposed changes in the context of object-oriented programming. Our approach named Torch characterizes changes based on structural information, authors and symbolic information. It mixes text-based diff information with visual representation and metrics characterizing the changes. We describe our experiment applying it to Pharo, a large open-source system, and report on the evaluation of our approach by release masters of several open-source projects

    Visually Characterizing Source Code Changes

    Get PDF
    International audienceRevision Control Systems (e.g., SVN, Git, Mercurial) include automatic and advanced merging algorithms that help developers to merge their modifications with development repositories. While these systems can help to textually detect conflicts, they do not help to identify the semantic consequences of a change. Unfortunately, there is little support to help release masters (integrators) to take decisions about the integration of changes into the system release. Most of the time, the release master needs to read all the modified code, check the diffs to build an idea of a change, and dig for details from related unchanged code to understand the context and potential impact of some changes. As a result, such a task can be overwhelming. In this article we present a visualization tool to support integrators of object-oriented programs in comprehending changes. Our approach named Torch characterizes changes based on structural informa- tion, authors and symbolic information. It mixes text-based diff information with visual representation and metrics characterizing the changes. The current implementation of our approach analyses Smalltalk programs, and thus we de- scribe our experiments applying it to Pharo, a large open-source system. We also report on the evaluations of our approach by release masters and developers of several open-source projects

    Семантичний спосіб поєднання версій програмного коду при одночасній розробці програм для підмножини мови Python

    Get PDF
    Актуальність теми. В даний час програмні продукти створюються групами розробників. Зазвичай, кожному розробнику видається своє окреме завдання, результатом якого є видозмінений програмний продукт. Розробники працюють незалежно і одночасно, а тому можуть вносити суперечливі зміни. Ці зміни унеможливлюють автоматичну інтеграцію незалежно від створених модифікацій в функціональність програмного продукту. Попередні дослідження показали, що такі конфлікти трапляються часто і погіршують продуктивність розробки, оскільки їх розуміння та вирішення є складним і нудним завданням, причому неякісне виконання якого може внести дефекти в продукт. Тому розробка спеціальних способів поєднання версій програмного коду при одночасній розробці програм для підмножини мови Python та застосування їх на практиці є актуальною і важливою задачею, як з наукової, так і з практичної точки зору. Об’єктом дослідження є методика поєднання версій програмного коду при одночасній розробці програм. Предметом дослідження є семантичні способи поєднання версій програмного коду при одночасній розробці програм для підмножини мови Python. Мета роботи: створення семантичний спосіб поєднання версій програмного коду при одночасній розробці програм для підмножини мови Python на основі циклічного алгоритму доведення еквівалентності програм та алгоритму виведення семантичного ефекту модифікації програми; перевірка результатів створеного інструмента поєднання на реальних проєктах, написаних на мові Python. Наукова новизна полягає в наступному: вперше запропоновано спосіб поєднання версій програм, написаних на підмножині мови Python на основі циклічного алгоритму доведення еквівалентності програм та алгоритму виведення семантичного ефекту модифікації програми. Практична цінність отриманих в роботі результатів полягає в тому, що запропоновані методи дають змогу автоматично поєднувати програми, написані на підмножині мови Python, звільняючи таким чином розробників від розуміння та вирішення складного і нудного поєднання версій програм, неякісне виконання якого може внести дефекти в продукт. Розроблений автоматичний інструмент поєднання програм, написаних на підмножині мови Python перевірено на реальних проєктах. Отриманий результат дозволяє знизити кількість затраченого розробниками часу на процес поєднання версій програм. Апробація роботи. 1. Постановка задачі була представлена і обговорена VIІІ Міжнародній науково-технічній Internet-конференції присвяченій актуальним проблемам керування складними об’єктами та підготовки фахівців з автоматизації виробництва і використання інформаційних технологій 2. Основні положення і результати роботи були представлені та обговорювались на XІV науковій конференції магістрантів та аспірантів «Прикладна математика та комп’ютинг» ПМК-2021 (Київ, 15-17 листопада 2021 р.). Структура та обсяг роботи. Магістерська дисертація складається з вступу, чотирьох розділів та висновків. У вступі подано загальну характеристику роботи, зроблено оцінку сучасного стану проблеми, обґрунтовано актуальність напряму досліджень, сформульовано мету і задачі досліджень, показано наукову новизну отриманих результатів і практичну цінність роботи, наведено відомості про апробацію результатів і їхнє впровадження. У першому розділі розглянуто існуючі методики поєднання версій програмного коду при одночасній розробці програм, а також проведений аналіз, який дає змогу визначити основні переваги та недоліки цих методик. У другому розділі коротко описуються аспекти використання циклічного алгоритму доведення еквівалентності програм та алгоритму виведення семантичного ефекту модифікації програми. У третьому розділі наведено опис реалізації спосіб поєднання версій програм, написаних на підмножині мови Python на основі циклічного алгоритму доведення еквівалентності програм та алгоритму виведення семантичного ефекту модифікації програми. У четвертому розділі описуються теоретичні та експериментальні результати застосування способу на реальних проєктах. У висновках представлені результати проведеної роботи. Робота представлена на 81 аркушах, містить 14 джерел, 63 рисунків, 4 додатки.Actuality of theme. Currently, software products are created by teams of developers. Usually, each developer is given a separate task, the result of which is a modified software product. Developers work independently and simultaneously, and therefore can make contradictory changes. These changes make it impossible to automatically integrate, regardless of the modifications created into the functionality of the software product. Previous research has shown that such conflicts occur frequently and impair development performance, as understanding and resolving them is a complex and tedious task, and poor performance can lead to product defects. Therefore, the development of special ways to combine versions of software code while developing programs for a subset of Python and their application in practice is an urgent and important task, both from a scientific and practical point of view. The object of research is the method of combining versions of program code while developing programs. The subject of the study is semantic ways of combining versions of program code while developing programs for a subset of the Python language. Purpose: to create for the first time a semantic way to combine versions of program code while developing programs for a subset of Python based on a cyclic algorithm for proving the equivalence of programs and an algorithm for deriving the semantic effect of program modification; check the results of the created combination tool on real projects written in Python. The scientific novelty is as follows: for the first time a method of combining versions of programs written in a subset of Python based on a cyclic algorithm for proving the equivalence of programs and an algorithm for deriving the semantic effect of program modification. The practical value of the results is that the proposed methods allow you to automatically combine programs written in a subset of Python, thus freeing developers from understanding and solving complex and tedious combination of software versions, poor performance of which can cause defects in the product. The developed automatic tool for combining programs written in a subset of the Python language has been tested on real projects. The result allows you to reduce the amount of time spent by developers on the process of combining versions of programs. Approbation of work. 1. The statement of the problem was presented and discussed by the VIII International scientific and technical Internet-conference devoted to actual problems of management of difficult objects and preparation of experts in automation of production and use of information technologies 2. The main provisions and results of the work were presented and discussed at the XIV scientific conference of undergraduates and graduate students "Applied Mathematics and Computing" PMK-2021 (Kyiv, November 15-17, 2021). Structure and scope of work. The master’s dissertation consists of an introduction, four chapters and conclusions. The introduction presents a general description of the work, assesses the current state of the problem, substantiates the relevance of research, formulates the purpose and objectives of research, shows the scientific novelty of the results and practical value of the work, provides information on approbation of results and their implementation. The first section discusses the existing methods of combining versions of software code while developing programs, as well as an analysis that identifies the main advantages and disadvantages of these methods. The second section briefly describes the aspects of using the cyclic algorithm for proving the equivalence of programs and the algorithm for deriving the semantic effect of program modification. The third section describes the implementation of a method of combining versions of programs written in a subset of the Python language based on a cyclic algorithm for proving the equivalence of programs and an algorithm for deriving the semantic effect of program modification. The fourth section describes the theoretical and experimental results of the method on real projects. The conclusions present the results of the work. The work is presented on 81 sheets, contains 14 references, 4 appendices

    Consolidation of Customized Product Copies into Software Product Lines

    Get PDF
    In software development, project constraints lead to customer-specific variants by copying and adapting the product. During this process, modifications are scattered all over the code. Although this is flexible and efficient in the short term, a Software Product Line (SPL) offers better results in the long term, regarding cost reduction, time-to-market, and quality attributes. This book presents a novel approach named SPLevo, which consolidates customized product copies into an SPL

    Inverse software configuration management

    Get PDF
    Software systems are playing an increasingly important role in almost every aspect of today’s society such that they impact on our businesses, industry, leisure, health and safety. Many of these systems are extremely large and complex and depend upon the correct interaction of many hundreds or even thousands of heterogeneous components. Commensurate with this increased reliance on software is the need for high quality products that meet customer expectations, perform reliably and which can be cost-effectively and safely maintained. Techniques such as software configuration management have proved to be invaluable during the development process to ensure that this is the case. However, there are a very large number of legacy systems which were not developed under controlled conditions, but which still, need to be maintained due to the heavy investment incorporated within them. Such systems are characterised by extremely high program comprehension overheads and the probability that new errors will be introduced during the maintenance process often with serious consequences. To address the issues concerning maintenance of legacy systems this thesis has defined and developed a new process and associated maintenance model, Inverse Software Configuration Management (ISCM). This model centres on a layered approach to the program comprehension process through the definition of a number of software configuration abstractions. This information together with the set of rules for reclaiming the information is stored within an Extensible System Information Base (ESIB) via, die definition of a Programming-in-the- Environment (PITE) language, the Inverse Configuration Description Language (ICDL). In order to assist the application of the ISCM process across a wide range of software applications and system architectures, die PISCES (Proforma Identification Scheme for Configurations of Existing Systems) method has been developed as a series of defined procedures and guidelines. To underpin the method and to offer a user-friendly interface to the process a series of templates, the Proforma Increasing Complexity Series (PICS) has been developed. To enable the useful employment of these techniques on large-scale systems, the subject of automation has been addressed through the development of a flexible meta-CASE environment, the PISCES M4 (MultiMedia Maintenance Manager) system. Of particular interest within this environment is the provision of a multimedia user interface (MUI) to die maintenance process. As a means of evaluating the PISCES method and to provide feedback into die ISCM process a number of practical applications have been modelled. In summary, this research has considered a number of concepts some of which are innovative in themselves, others of which are used in an innovative manner. In combination these concepts may be considered to considerably advance the knowledge and understanding of die comprehension process during the maintenance of legacy software systems. A number of publications have already resulted from the research and several more are in preparation. Additionally a number of areas for further study have been identified some of which are already underway as funded research and development projects
    corecore