Abstract
Purpose.The main article purpose is to develop and implement the method for identifying the correspondence between the text and the program algorithm represented in the form of a flowchart. As part of the method work conversion of the input data in the graph representation is performed by means of constructive-synthesizing modelling. Methodology. To compare the program text and flowchart, we constructed a mathematical model for converting the program code into a graphical representation on the basis of control structures. To build the model, the apparatus of constructive-synthesizing modeling and its methods were used: specialization, concretization, interpretation and implementation. The graph representation of the text is created taking into account the control operators; the flowcharts are created using a json file containing the description of the diagram elements and their links. To compare the graphs we use the breadth-first search algorithm with the number of identical vertices being counted. To obtain the software implementation of the developed method and models we used the technology of object-oriented programming and CASE-technologies, which are based on the unified modeling language UML. Findings A method is proposed to present the text and the flowchart of the program in a uniform format of the directed graph (control graph) and to evaluate their correspondence by the number of identical vertices. For its formalization and automated usage, we developed constructive-synthesizing models of input data transformers. The program application was developed based on the models and the method. Originality. The methods of constructive-synthesizing modeling in the tasks of processing texts written in artificial languages were further developed. We developed the system of constructors, which transforms text program in C++ into a control graph. Practical value. The results are significant for solving such tasks as assembling program texts for borrowings detection, determining the correspondence of the program algorithms and their software implementations to improve coding skills. The graph representation produced by the developed system of constructors can be used for investigation of influence of optimization and code refactoring on the program complexity using McCabe's metrics.
Highlights
Невід’ємною частиною навчального процесу студентів спеціальності «Інженерія програмного забезпечення» є вивчення, побудова та реалізація алгоритмів
Яке продукує розроблена система конструкторів, може бути застосоване для дослідження впливу оптимізації та рефакторингу коду на складність програм із використанням метрик МакКейба
As part of the method work conversion of the input data in the graph representation is performed by means of constructive-synthesizing modelling
Summary
Конструктор I,CA CT містить алгоритми виконання операцій:. Результатом реалізації конструктора (9) є множина конструкцій списків, які є проміжним представлення тексту програми та відповідного йому графа керування. Спеціалізований конструктор для побудови графа керування програми за її проміжним представлення у вигляді списку керуючих операторів буде таким:. Де si , si – відношення підстановки для роботи зі списком і побудови конструкції графа відповідно; gi , gi – операції над атрибутами списку та графа, його вершин і дуг відповідно. Далі наведемо правила для додавання вершин до конструкції stack _ temp :. (index current G, stack _ root ; Правила для обробки вершини конструкції stack _ break : s22 G G ;. Правило для обробки вершини конструкції stack _ має вигляд: s24 Gα G,G* α ; (38). Graph::BuildGraphFromCode(), вони дозволяють послідовно побудувати граф; A6 – умовне виконання списку операцій – присутній у всіх методах; A7 – присвоєння операндів – присутній у всіх методах; A8 – пошук вершини графа за індексом – реалізовано у методі. Модель реалізовує побудову графів програми, алгоритму та їх порівняння, тобто повністю виконує кроки запропонованого методу
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.