XLII Международная научно-практическая конференция «Актуальные проблемы современной науки», 27.06.2019 (Совместная конференция с Международным научным центром развития науки и технологий)
V Международная научная конференция "Science and Global Studies", 30 декабря 2020 (Прага, Чехия)

V Международная научная конференция «Научные исследования: парадигма инновационного развития» (Прага, Чехия), «28» декабря 2020 года

IV Международная научная конференция "Science and Global Studies", 30 ноября 2020 (Прага, Чехия)

IV Международная научная конференция «Научные исследования: парадигма инновационного развития» (Прага, Чехия), «27» ноября 2020 года

ІІІ Международная научная конференция "Science and Global Studies", 30 октября 2020 (г. Прага, Чехия)

ІIІ Международная научная конференция «Научные исследования: парадигма инновационного развития» (Братислава - Вена), «26» мая 2020 года

ІІ Международная научная конференция «Научные исследования: парадигма инновационного развития» (Братислава - Вена), «27» апреля 2020 года

Science and Global Studies, 31 марта 2020 (г. Братислава, Словакия)

Международная научная конференция «Научные исследования: парадигма инновационного развития» (Братислава - Вена), «25» марта 2020 года

Science and Global Studies, 30 декабря 2019 (г. Братислава, Словакия)

XLV Международная научно-практическая конференция «Актуальные проблемы современной науки», 28.11.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XLIV Международная научно-практическая конференция «Актуальные проблемы современной науки», 30.10.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XLIІI Международная научно-практическая конференция «Актуальные проблемы современной науки», 29.08.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XLIІI Международная научно-практическая конференция «Актуальные проблемы современной науки», 30.07.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XLII Международная научно-практическая конференция «Актуальные проблемы современной науки», 27.06.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XLI Международная научно-практическая конференция «Актуальные проблемы современной науки», 30.05.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XL Международная научно-практическая конференция «Актуальные проблемы современной науки», 28.03.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

МНПК "Цифровая трансформация и инновации в экономике, праве, государственном управлении, науке и образовательных процессах", 18-21.03.2019

XXXIX Международная научно-практическая конференция «Актуальные проблемы современной науки», 27.02.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XIII Международная научно-практическая конференция «Научный диспут: вопросы экономики и финансов», 31.01.2019 (Совместная конференция с Финансово-экономическим научным советом)

XXXVIII Международная научно-практическая конференция «Актуальные проблемы современной науки», 30.01.2019 (Совместная конференция с Международным научным центром развития науки и технологий)

XXXVІI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.12.2018 (Совместная конференция с Международным научным центром)

XXXVI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.11.2018 (Совместная конференция с Международным научным центром)

XIII Международная научно-практическая конференция «Актуальные проблемы экономики и финансов», 31.10.2018 (Совместная конференция с Финансово-экономическим научным советом)

XXXV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.10.2018 (Совместная конференция с Международным научным центром)

XXXIV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.09.2018 (Совместная конференция с Международным научным центром)

ХXXIII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.08.2018 (Совместная конференция с Международным научным центром)

ХXXII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 31.07.2018 (Совместная конференция с Международным научным центром)

XII Международная научно-практическая конференция «Актуальные проблемы экономики и финансов», 31.07.2018 (Совместная конференция с Финансово-экономическим научным советом)

ХXXI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.06.2018 (Совместная конференция с Международным научным центром)

ХІ Международная научно-практическая конференция «Глобальные проблемы экономики и финансов», 31.05.2018 (Совместная конференция с Финансово-экономическим научным советом)

XXХ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.05.2018 (Совместная конференция с Международным научным центром)

XXIХ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.04.2018 (Совместная конференция с Международным научным центром)

ХХVIІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.03.2018 (Совместная конференция с Международным научным центром)

ІІІ МНПК "Экономика, финансы и управление в XXI веке: анализ тенденций и перспективы развития", 19-22.03.2018 (Совместная конференция с Финансово-экономическим научным советом)

X Международная научно-практическая конференция «Глобальные проблемы экономики и финансов», 28.02.2018 (Совместная конференция с Финансово-экономическим научным советом)

ХХVІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 27.02.2018 (Совместная конференция с Международным научным центром)

ХХVІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.01.2018 (Совместная конференция с Международным научным центром)

XІІ Международная научно-практическая конференция «Научный диспут: вопросы экономики и финансов», 29.12.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХХV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.12.2017 (Совместная конференция с Международным научным центром)

ХХІV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.11.2017 (Совместная конференция с Международным научным центром)

XI Международная научно-практическая конференция «Актуальные проблемы экономики и финансов», 31.10.2017 (Совместная конференция с Финансово-экономическим научным советом)

XІ Международная научно-практическая конференция «Научный диспут: вопросы экономики и финансов», 29.09.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХХIІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.09.2017 (Совместная конференция с Международным научным центром)

X Международная научно-практическая конференция «Актуальные проблемы экономики и финансов», 31.07.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХXII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.07.2017 (Совместная конференция с Международным научным центром)

ХXI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.06.2017 (Совместная конференция с Международным научным центром)

IX Международная научно-практическая конференция «Глобальные проблемы экономики и финансов», 31.05.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХX Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.05.2017 (Совместная конференция с Международным научным центром)

"Тенденции развития национальных экономик: экономическое и правовое измерение" 18-19.05.2017 (Совместная конференция с Финансово-экономическим научным советом и ККИБиП)

ХIX Международная научно-практическая конференция: "Актуальные проблемы современной науки", 27.04.2017 (Совместная конференция с Международным научным центром)

IX Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 31.03.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХVIII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.03.2017 (Совместная конференция с Международным научным центром)

МНПК "Экономика, финансы и управление в XXI веке: анализ тенденций и перспективы развития", 20–23.03.2017 (Совместная конференция с Финансово-экономическим научным советом)

VIII Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 28.02.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХVII Международная научно-практическая конференция: "Актуальные проблемы современной науки", 27.02.2017 (Совместная конференция с Международным научным центром)

VIII Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 31.01.2017 (Совместная конференция с Финансово-экономическим научным советом)

ХVI Международная научно-практическая конференция: "Актуальные проблемы современной науки", 30.01.2017 (Совместная конференция с Международным научным центром)

ХV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.12.2016 (Совместная конференция с Международным научным центром)

VIII Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 28.12.2016 (Совместная конференция с Финансово-экономическим научным советом)

VII Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 30.11.2016 (Совместная конференция с Финансово-экономическим научным советом)

ХІV Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.11.2016 (Совместная конференция с Международным научным центром)

VII Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 31.10.2016 (Совместная конференция с Финансово-экономическим научным советом)

ХІІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 28.10.2016 (Совместная конференция с Международным научным центром)

VII Международная научно-практическая конф. «Научный диспут: вопросы экономики и финансов», 30.09.2016 (Совместная конференция с Финансово-экономическим научным советом)

ХІІ Международная научно-практическая конференция: "Актуальные проблемы современной науки", 29.09.2016 (Совместная конференция с Международным научным центром)

XI Международная научно-практическая конференция «Актуальные проблемы современной науки», 30.08.2016 (Совместная конференция с Международным научным центром)

ІV Международная научно-практическая конф. "Экономика и управление в XXI веке: анализ тенденций и перспектив развития", 29.07.2016 (Совместная конференция с Финансово-экономическим научным советом)

X Международная научно-практическая конференция "Актуальные проблемы современной науки", 28.07.2016 (Совместная конференция с Международным научным центром)

VІ Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 30.06.2016 (Совместная конференция с Финансово-экономическим научным советом)

ІX Международная научно-практическая конференция "Актуальные проблемы современной науки", 29.06.2016 (Совместная конференция с Международным научным центром)

VI Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 31.05.2016 (Совместная конференция с Финансово-экономическим научным советом)

VIIІ Международная научно-практическая конференция "Актуальные проблемы современной науки", 30.05.2016 (Совместная конференция с Международным научным центром)

V Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 29.04.2016 (Совместная конференция с Финансово-экономическим научным советом)

VIІ Международная научно-практическая конференция "Актуальные проблемы современной науки", 28.04.2016 (Совместная конференция с Международным научным центром)

VІ Международная научно-практическая конференция "Актуальные проблемы современной науки", 31.03.2016 (Совместная конференция с Международным научным центром)

ІI Международная научно-практическая конф. "Экономика и управление в XXI веке: анализ тенденций и перспектив развития", 30.03.2016 (Совместная конференция с Финансово-экономическим научным советом)

V Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 21-24.03.2016 (Совместная конференция с Финансово-экономическим научным советом)

V Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 26.02.2016 (Совместная конференция с Финансово-экономическим научным советом)

II Международная научно-практическая конференция: "Научный диспут: актуальные вопросы медицины" 20.02.2016 (Совместная конференция с Международным научным центром)

ІV Международная научно-практическая конференция "Актуальные проблемы современной науки", 29.12.2015 (Совместная конференция с Международным научным центром)

IV Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 28.12.2015 (Совместная конференция с Финансово-экономическим научным советом)

IV Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 30.11.2015 (Совместная конференция с Финансово-экономическим научным советом)

IV Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 29.10.2015 (Совместная конференция с Финансово-экономическим научным советом)

Международная научно-практическая конференция: "Научный диспут: актуальные вопросы медицины" 28.10.2015 (Совместная конференция с Международным научным центром)

III Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 30.09.2015 (Совместная конференция с Финансово-экономическим научным советом)

III Международная научно-практическая конференция "Актуальные проблемы экономики и финансов", 31.08.2015 (Совместная конференция с Финансово-экономическим научным советом)

ІІІ Международная научно-практическая конференция "Научный диспут: вопросы экономики и финансов", 30.06.2015 (Совместная конференция с Финансово-экономическим научным советом)

ІІ Международная научно-практическая конференция "Актуальные проблемы современной науки", 29.06.2015 (Совместная конференция с Международным научным центром)

II Международная научно-практическая конференция "Глобальные проблемы экономики и финансов", 28.05.2015 (Совместная конференция с Финансово-экономическим научным советом)

Актуальные проблемы экономики и финансов, 29.04.2015 (Совместная конференция с Финансово-экономическим научным советом)

Научный диспут: вопросы экономики и финансов, 31.03.2015 (Совместная конференция с Финансово-экономическим научным советом)

Актуальные проблемы современной науки, 27.03.2015 (Совместная конференция с Международным научным центром)

Глобальные проблемы экономики и финансов, 27.02.2015 (Совместная конференция с финансово-экономическим научным советом)



Актуальные проблемы современной науки: тезисы докладов XLIІ Международной научно-практической конференции (Санкт-Петербург – Астана – Киев – Вена, 27 июня 2019)


Отрасль науки: Технические науки
Скачать статью (pdf)

Секція: Технічні науки

Булах Богдан Вікторович

кандидат технічних наук,

доцент кафедри системного проектування

Національний технічний університет України

“Київський політехнічний інститут імені Ігоря Сікорського”

м. Київ, Україна

Лашко Олена Вікторівна

викладач кафедри приладів та систем неруйнівного контролю

Національний технічний університет України

“Київський політехнічний інститут імені Ігоря Сікорського”

м. Київ, Україна

АНАЛІЗ ТА РЕФАКТОРИНГ ПРОГРАМНОГО КОДУ ДЛЯ ПОТРЕБ ВИКЛАДАЧА ПРОГРАМУВАННЯ

Аналіз та рефакторинг програмного коду - не лише суто “промислова” задача, що постає перед професійними розробниками програмного забезпечення. Застосування подібних технологій може бути виправданим і у навчальному процесі. Засоби аналізу програмного коду слугуватимуть у цьому випадку не задачі контролю якості програмного продукту, а будуть інструментом для оцінювання якості засвоєння студентами матеріалу та оцінки їх компетентності. В той же час рефакторинг (“оптимізація” коду для підвищення якості продукту) може бути зручним засобом для швидкого виправлення допущених студентом помилок. Окрема задача для інструментів аналізу коду - виявлення плагіату у програмних кодах студентів.

Мабуть, перший і найпростіший вибір викладача - розвинуте інтегроване середовище розробки (англ. IDE). Нині більшість інтегрованих середовищ розробки (Eclipse, Visual Studio, IntelliJ IDEA та багато інших, включаючи хмарні середовища з веб-інтерфейсом), та і просто редакторів коду пропонують певний набір інструментів для аналізу коду та здійснення його рефакторингу. Причому для викладача корисними можуть бути як прості, не прив’язані до мови програмування засоби пошуку та заміни фрагментів у коді (за допомогою регулярних виразів), так і засоби, що використовують особливості конкретної мови програмування (такі як швидкий пошук коду методу класу прямо у місці його виклику - в об’єктно-орієнтованих мовах). Наприклад, це дозволить викладачу швидше зорієнтуватись у часто дуже недосконалому та заплутаному коді студентів та провести швидке коригування коду (скажімо, приведення стилю написання коду до вимог певної конвенції), а також дозволить швидше відшукати подібні фрагменти у роботах різних студентів.

Однак цих базових інструментів часто недостатньо для нетривіальних операцій з виявлення складних конструкцій коду (певних “шаблонів”). Причина в тому, що пошук з використанням регулярних виразів не враховує семантики мови (результати пошуку потребують подальшого уточнення), а семантично-орієнтовані засоби IDE досить обмежені. Тобто, існує проблема “автоматизації процесу розуміння смислу коду”. Для вирішення цієї проблеми пропонується скористатися технологіями семантичного веб. Опис семантики коду для його аналізу сам по собі не є новим підходом, й існує ряд публікацій на цю тематику [1,2]. Вже пропонувалося застосувати ці технології для аналізу програмного коду в промисловій розробці програмного забезпечення [3]. Метою даної публікації є синтез підходу, що, після певної підготовки, дозволить спростити роботу викладача програмування щодо оцінювання коду та виявлення плагіату в студентських роботах.

База знань шаблонів коду. Типовий набір засобів для реалізації семантичних програмних систем включає:

  • опис онтологій (понять певної предметної області та їх взаємозв’язків) на мовах родини OWL2,
  • зберігання аксіом та фактів у вигляді триплетів “суб’єкт - предикат - об’єкт” у форматі RDF,
  • взаємодія з базою знань за посередництвом мови SPARQL,
  • використання логічних правил на мові SWRL для доповнення онтологій,
  • використання OWL/SWRL-різонерів (програм логічного виведення фактів з онтологій) для пошуку усіх можливих прихованих взаємозв’язків для усіх сутностей в онтології також є частиною подібних програм.

Для вирішення проблеми пошуку фрагментів коду за їх абстрактним описом через певні поняття та їх зв’язки слід, відповідно, побудувати онтологію для предметної області конкретної мови програмування [3]. Так для об’єктно-орієнтованих мов слід визначити поняття класу, підкласу, об’єкту, області видимості, оператору та складеного оператору, інтерфейсу, методу, поля, наслідування та багато іншого для того, щоб мати змогу описати код та шукати у ньому фрагменти, описані на високому рівні абстракції.

Шаблони у навчальних кодах. Розглянемо лише деякі приклади шаблонів чи фрагментів у студентських кодах, що потребують уваги викладача об’єктно-орієнтованого програмування, і можуть бути реалізовані з використанням бази знань.

  1. Консольне введення-виведення у класах логіки. Часто студенти нехтують принципом розділення бізнес-логіки та організації інтерфейсу з користувачем, що ускладньює повторне використання класів бізнес-логіки. Шаблон полягає у наявності викликів методів роботи з консоллю всередині методів окремих класів.
  2. Глобальні змінні. Часто студенти зловживають їх використанням, посилюючи зв’язність програми, і, автоматично, ускладнюючи собі та іншим пошук помилок у ній. Шаблон: оголошення змінних поза класом (у тих мовах, де це дозволено).
  3. Занадто “довгі”, переобтяжені класи та методи. Студенти часто мають проблеми з об’єктною декомпозицією задач, тобто мінімізують кількість класів, створюючи “монстр-класи”, відповідальні за багато різних задач одночасно. У класах же часто мають місце занадто довгі методи, що важко читати (особливо, якщо студенти попередньо вчили процедурне програмування). Шаблон: кількість рядків коду всередині методів та кількість методів у класі більше певної межі.
  4. Дотримання конвенцій написання коду. Тут семантичне навантаження мінімальне, але теж є, наприклад у випадках, коли назви методів та класів починаються то з великої, то з малої літери, або коли для закритих членів класу прийнята окрема конвенція щодо іменування, а студенти цим нехтують. Звичайно, дотримання конвенцій - не головне в навчанні програмуванню, але воно дисциплінує студентів та спрощує їх перехід до професійної діяльності.
  5. Порушення інкапсуляції. Опосередковано на це вказує наявність великої кількості відкритих полів класу, особливо, якщо ці поля використовуються у внутрішній логіці класу.
  6. Наявність поліморфізму. Один з відносно складних прикладів: необхідно упевнитись, що студент реалізував поліморфну поведінку. Шаблон: ієрархія наслідування класів, перевизначення віртуальних методів, виклик цих методів, посилаючись на базовий клас.
  7. Наявність чи коректність застосованих патернів проектування (“одинак”, “фабрика”, “стратегія” тощо) .

Звичайно, результати пошуку таких шаблонів потребують подальшої експертної оцінки викладача, але викладачу набагато легше працювати вже з підготовленими фактами, які було автоматично виявлено. Таким чином, поруч з тривіальним автоматичним виявленням синтаксичних помилок та нетривіальною перевіркою на плагіат (з використанням поширених шаблонів), пошук подібних фрагментів у кодах студентів буде корисним доповненням до інструментарію викладача.

Склад семантичного інструментарію аналізу коду. Загальна програмна інфраструктура для аналізу коду пропонується на основі [3]. Код проходить етап синтаксичного розбору, результатом якого є абстрактне дерево синтаксису (AST, за допомогою генератору аналізаторів формальних мов ANTLR). Далі модуль “генератору знань” приймає на вхід AST та описує усі вжиті елементи мови та відношення між ними як факти у формі триплетів з урахуванням понять OWL-онтології для конкретної мови програмування. Пошук шаблонів відбувається як пошук пов’язаних фактів у базі знань.

Література

  1. Mattia Atzeni and Maurizio Atzori. CodeOntology: RDF-ization of Source Code. The semantic web - ISWC 2017 : 16th International Semantic Web Conference, Vienna, Austria, October 21-25, 2017, Proceedings. Part II. P. 20-28.
  2. Tappolet, Jonas & Kiefer, Christoph & Bernstein, Abraham. Semantic web enabled software analysis. Web Semantics: Science, Services and Agents on the World Wide Web. 8.2010. P. 225-240.
  3. Булах Б. В. Застосування семантичних технологій для аналізу та рефакторингу програмного коду // Міжнародний науковий журнал "Інтернаука". №12. 2018.