Научная статья на тему 'ЕКСПЕРИМЕНТАЛЬНІ ДОСЛІДЖЕННЯ ПРОЦЕСІВ НАЛАГОДЖЕННЯ КОМП'ЮТЕРНИХ ПРОГРАМ СТУДЕНТАМИ З ВИКОРИСТАННЯМ PROCESS MINING'

ЕКСПЕРИМЕНТАЛЬНІ ДОСЛІДЖЕННЯ ПРОЦЕСІВ НАЛАГОДЖЕННЯ КОМП'ЮТЕРНИХ ПРОГРАМ СТУДЕНТАМИ З ВИКОРИСТАННЯМ PROCESS MINING Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
3
1
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
Process Mining / налагодження / Visual Studio / експеримент / шаблон налагодження / навчання програмуванню / Process Mining / отладка / Visual Studio / эксперимент / шаблон отладки / обучение программированию / Process Mining / debugging / Visual Studio / experiment / debugging pattern / programming learnin

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — В.І. Шинкаренко, О.О. Жеваго

Розуміння того, як студенти налагоджують програми та з якими проблемами вони стикаються, має велике значення для підвищення якості навчання програмуванню. Аналізуються процеси налагодження комп'ютерних програм з метою підвищення якості навчання студентів програмуванню. Наведено приклад оцінки поведінки й навичок налагодження студентів. Процес налагодження тексту програми розглядається як послідовність дій при роботі з інструментами в середовищі розробки. Для виявлення навичок налагодження застосовано метод підсіву помилок. Розроблено програми з типовими логічними помилками. Виконано експеримент в якому проведено оцінку дій 41 розробника, що виконує налагодження. В рамках експерименту студенти повинні були виправити типові логічні помилки, використовуючи інтегроване середовище розробки Visual Studio. Відстежувалися дії кожного розробника при виконанні поставлених завдань. Формування моделей процесів налагодження виконано методами Process Mining. На основі отриманих моделей процесів налагодження та найбільш часто повторювальних сесій вдалося виявити 4 шаблони поведінки учасників експерименту. Результати демонструють ефективність Process Mining для кращого розуміння того, як розробники виконують налагодження програм. Виявлено, що функції налагоджувача Visual Studio використовуються незадовільно. Учасники, які не використовували засоби налагодження натомість використовували метод спроб і помилок, а також використовували виведення значень на екран. Ці результати закликають посилити практичний досвід налагодження в навчальних програмах. Потребує подальший розвиток інструментальних та організаційних засобів навчання студентів налагодженню в курсах з програмної інженерії.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

ЭКСПЕРИМЕНТАЛЬНЫЕ ИССЛЕДОВАНИЯ ПРОЦЕССОВ ОТЛАДКИ КОМПЬЮТЕРНЫХ ПРОГРАММ СТУДЕНТАМИ С ИСПОЛЬЗОВАНИЕМ PROCESS MINING

Понимание того, как студенты отлаживают программы и с какими проблемами они сталкиваются, имеет большое значение для повышения качества обучения программированию. Анализируются процессы отладки компьютерных программ с целью повышения качества обучения студентов программированию. Описывается пример оценки поведения и навыков отладки у студентов. Процесс отладки текста программы рассматривается как последовательность действий при работе с инструментами в среде разработки. Для выявления навыков отладки применен метод подсева ошибок. Разработаны программы с типичными логическими ошибками. Проведен эксперимент, в котором оценили действия 41 разработчика, выполняющего отладку. В рамках эксперимента студенты должны были решить типичные логические ошибки, используя интегрированное средство разработки Visual Studio. Отслеживались действия каждого разработчика при выполнении поставленных задач. Формирование моделей процессов отладки выполнено методами Process Mining. На основе полученных моделей процессов отладки и наиболее часто повторяющихся сессий удалось обнаружить 4 шаблоны поведения участников эксперимента. Результаты демонстрируют эффективность Process Mining для лучшего понимания того, как разработчики подходят к решению задачи отладки. Выявлено, что функции отладчика Visual Studio используются, неудовлетворительно. Участники, которые не использовали средства отладки, вместо этого использовали метод проб и ошибок, а также использовали вывод значений на экран. Эти результаты призывают усилить практический опыт отладки в учебных программах. Требуют дальнейшего развития инструментальные и организационные средства обучения студентов отладке в курсах по программной инженерии.

Текст научной работы на тему «ЕКСПЕРИМЕНТАЛЬНІ ДОСЛІДЖЕННЯ ПРОЦЕСІВ НАЛАГОДЖЕННЯ КОМП'ЮТЕРНИХ ПРОГРАМ СТУДЕНТАМИ З ВИКОРИСТАННЯМ PROCESS MINING»

ШФОРМАЦШШ ТЕХНОЛОГИ

УДК 004.9 https://doi.Org/10.35546/kntu2078-4481.2021.3.9

В.1. ШИНКАРЕНКО

Дншровський нацiональний ушверситет залiзничного транспорту iMeHi академiка В. Лазаряна

ORCID: 0000-0001-8738-7225 О.О. ЖЕВАГО

Днiпровський нацiональний унiверситет залiзничного транспорту iMeHi академка В. Лазаряна

ORCID: 0000-0003-0019-8320

ЕКСПЕРИМЕНТАЛЬН1 ДОСЛ1ДЖЕННЯ ПРОЦЕС1В НАЛАГОДЖЕННЯ КОМП'ЮТЕРНИХ ПРОГРАМ СТУДЕНТАМИ З ВИКОРИСТАННЯМ PROCESS

MINING

Розумтня того, як студенти налагоджують програми та з якими проблемами вони стикаються, мае велике значення для тдвищення якостi навчання програмуванню. Анал1зуються процеси налагодження комп'ютерних программ з метою тдвищення якостi навчання студентiв програмуванню. Наведено приклад оцтки поведтки й навичок налагодження студентiв. Процес налагодження тексту програми розглядаеться як послiдовнiсть дт при роботi з тструментами в середовищi розробки. Для виявлення навичок налагодження застосовано метод тдиву помилок. Розроблено програми з типовими логiчними помилками. Виконано експеримент в якому проведено оцтку дт 41 розробника, що виконуе налагодження. В рамках експерименту студенти повиннi були виправити типовi логiчнi помилки, використовуючи ттегроване середовище розробки Visual Studio. Вiдстежувалися дН кожного розробника при виконанш поставлених завдань. Формування моделей проце^в налагодження виконано методами Process Mining. На основi отриманих моделей проце^в налагодження та найбшьш часто повторювальних сест вдалося виявити 4 шаблони поведтки учаснитв експерименту. Результати демонструють ефективтсть Process Mining для кращого розумтня того, як розробники виконують налагодження програм. Виявлено, що функцИ налагоджувача Visual Studio використовуються незадовшьно. Учасники, як не використовували засоби налагодження натомкть використовували метод спроб i помилок, а також використовували виведення значень на екран. Ц результати закликають посилити практичний досвiд налагодження в навчальних програмах. Потребуе подальший розвиток тструментальних та органiзацiйних засобiв навчання студентiв налагодженню в курсах з програмно'1 тженерп.

Ключовi слова: Process Mining, налагодження, Visual Studio, експеримент, шаблон налагодження, навчання програмуванню.

В. И. ШИНКАРЕНКО

Днепровский национальный университет железнодорожного транспортаимени академика В. Лазаряна

ORCID: 0000-0001-8738-7225 А. А. ЖЕВАГО

Днепровский национальный университет железнодорожного транспорта имени академика В. Лазаряна

ORCID: 0000-0003-0019-8320

ЭКСПЕРИМЕНТАЛЬНЫЕ ИССЛЕДОВАНИЯ ПРОЦЕССОВ ОТЛАДКИ КОМПЬЮТЕРНЫХ ПРОГРАММ СТУДЕНТАМИ С ИСПОЛЬЗОВАНИЕМ PROCESS MINING

Понимание того, как студенты отлаживают программы и с какими проблемами они сталкиваются, имеет большое значение для повышения качества обучения программированию. Анализируются процессы отладки компьютерных программ с целью повышения качества обучения студентов программированию. Описывается пример оценки поведения и навыков отладки у студентов. Процесс отладки текста программы рассматривается как последовательность действий при работе с инструментами в среде разработки. Для выявления навыков отладки применен метод подсева ошибок. Разработаны программы с типичными логическими ошибками. Проведен эксперимент, в котором оценили действия 41 разработчика, выполняющего отладку. В рамках эксперимента студенты должны были решить типичные логические ошибки, используя интегрированное средство разработки Visual Studio. Отслеживались действия каждого разработчика при выполнении поставленных задач. Формирование моделей процессов отладки выполнено методами Process Mining. На основе полученных моделей процессов отладки и наиболее часто повторяющихся сессий удалось обнаружить 4 шаблоны поведения участников эксперимента. Результаты демонстрируют эффективность Process Mining для

лучшего понимания того, как разработчики подходят к решению задачи отладки. Выявлено, что функции отладчика Visual Studio используются, неудовлетворительно. Участники, которые не использовали средства отладки, вместо этого использовали метод проб и ошибок, а также использовали вывод значений на экран. Эти результаты призывают усилить практический опыт отладки в учебных программах. Требуют дальнейшего развития инструментальные и организационные средства обучения студентов отладке в курсах по программной инженерии.

Ключевые слова: Process Mining, отладка, Visual Studio, эксперимент, шаблон отладки, обучение программированию.

V. I. SHYNKARENKO

Dnipro National University of Railway Transport named after Academician V. Lazaryan

ORCID: 0000-0001-8738-7225 О. О. ZHEVAHO

Dnipro National University of Railway Transport named after Academician V. Lazaryan

ORCID: 0000-0003-0019-8320

EXPERIMENTAL STUDIES OF DEBUGGING PROCESSES OF COMPUTER PROGRAMS BY

STUDENTS USING PROCESS MINING

Understanding how students debug programs and what problems they encounter is important for improving the quality of programming instruction. The processes of debugging computer programs are analyzed in order to improve the quality of students' programming instruction. An example of assessing students' debugging behavior and skills is described. The process of debugging program text is considered as a sequence of actions when working with tools in the development environment. To identify the debugging skills, the method of error-sowing is applied. Programs with typical logical errors were developed. An experiment was conducted in which the actions of 41 developers performing debugging were evaluated. As part of the experiment, students had to solve typical logical errors using the Visual Studio integrated development environment. The actions of each developer in completing the tasks were tracked. Debugging process models were generated using Process Mining methods. Based on the obtained models of debugging processes and most frequent sessions it was possible to identify 4 patterns of behavior of the experiment's participants. The results demonstrate the effectiveness of Process Mining for a better understanding of how developers approach the debugging task. The Visual Studio debugger features were found to be used, unsatisfactorily. Participants who did not use the debugging tools instead used trial and error and used the display of values on the screen. These results call for more hands-on debugging experiences in the training programs. The instrumental and organizational tools for teaching students to debug in software engineering courses require further development.

Keywords: Process Mining, debugging, Visual Studio, experiment, debugging pattern, programming

learning.

Постановка проблеми

Налагодження - одне з найважливших, складних i трудомктких завдань при розробщ програмного забезпечення. Налагодження та програмування йдуть рука об руку, оскшьки малоймовiрно, що будь-який програмют напише щеальну програму з першого разу. Проблеми, з якими новачок стикаеться вперше, швидше за все, будуть виникати знову i знову, в рiзних середовищах i на рiзних мовах програмування. Дуже важливо, щоб студент навчився дослщжувати помилки. Розробники знають, що налагодження може забрати довп години роботи, iнодi тшьки для змши одного рядка коду. Це особливо актуально для програмкпв початювщв, яю часто виявляються в розгубленосп, коли програма працюе не так, як оч^валося. Розробники зазвичай витрачають не менше 30 % свого часу на налагодження i використовують для цього середовище розробки [1].

В основi дослщження лежить щея про те, що шструменти, яю збирають даш про використання середовища розробки, дають бшьш детальне розумшня роботи розробниюв. Аналiзуючи, як програмюти використовують середовище розробки, можна виявити закономiрностi поведшки та визначити проблеми, з якими вони стикаються. Процес налагодження тексту програми розглядаеться як послщовнють дш при робот з шструментами в середовищi розробки. Шдхщ, спочатку запропонований в [2], фшсуе поди, пов'язаш з налагодженням, яке виконуеться в середовищi розробки. Розширення середовища розробки для збору даних про використання забезпечуе бшьш тонке розумшня роботи розробниюв.

Шдвищення якосп налагодження програмного забезпечення серед студенпв представляе великий штерес в обласп комп'ютерно! освгги. Цього можна досягти шляхом застосування пiдходiв аналпики навчання для вивчення поведшки рiзних людей при налагодженш програмного забезпечення. Щоб зрозумгги, як насправдi виконувався процес, використовуються методи Process Mining. Process Mining - це амейство методiв, спрямованих на аналiз даних про виконання бiзнес-процесiв, записаних в журналах подш [3]. В якосп вхщних даних для методiв Process Mining використовуються поди, зiбранi в

середовищi розробки тд час сесш налагодження. Покажемо ефективнiсть Process Mining для кращого розумiння того, як розробники тдходять до налагодження програмного забезпечення.

Для пiдвищення якостi навчання студентiв програмуванню дослiджено i виршено актуальну науково-практичну задачу аналiзу процеав налагодження комп'ютерних програм. Розумiння того, як студенти розробляють та налагоджують програмне забезпечення, i проблем, з якими вони стикаються, мае велике значення для тдвищення якостi навчання програмування.

Аналiз останшх досл1джень i публжацш

Методи Process Mining вже використовувалися для вивчення процесiв розробки програмного забезпечення, починаючи з журналiв, отриманих з систем контролю версш [4] i засобiв розробки [5]. Але залишилися невирiшеними питання, пов'язаш з процесом налагодження комп'ютерних програм. Метою Process Mining е виявлення, мониторинг i полiпшення процесiв за допомогою даних з журналу подш шформацшно! системи. Process Mining застосовуе спецiалiзованi алгоритми iнтелектуального аналiзу даних до журналу подш [3]. Поточне дослщження застосовуе методи Process Mining в обласп програмно! шженерп для виявлення навичок налагодження програмного забезпечення. Грунтуючись на методах Process Mining, аналiзуючи дат про використання середовища розробки, отримуемо шаблони поведiнки програмкпв.

Проводилося дослiдження в якому для вiзуалiзацil процесу розробки програмного забезпечення використовувалися засоби розширення середовища розробки Visual Studio [6]. Розроблене розширення складаеться з трьох модулiв: збертання кторп написання програми; обчислення рiзницi мiж версiями програми та вiзуалiзацil кторп розробки. В [7] запропоновано використовувати сучасний огляд коду для оцшки робгт студентiв. Сучасний огляд коду повинен включати не тшьки перегляд коду, але i огляд процесу розробки програмного забезпечення. Для цього необхщно фксувати взаемодiю програмкта iз засобом розробки для отримання даних про процеси розробки та налагодження. 1нструменти для збору даних про використання середовища розробки забезпечують бшьш детальне розумшня роботи програмкпв, шж це було можливо рашше [8]. Наразi представляеться новий погляд на аналiз процесу налагодження з використанням Process Mining, який дозволяе виявити фактичш процеси, яким слщують програмкти на основi отриманих даних взаемодп з середовищем розробки.

Ряд дослщниюв в галузi освiти вивчали звички студенпв в розробцi програм в процес роботи над завданнями з програмування. Вивчали поведшку студенлв, рееструючи компшяцп та пов'язанi з ними даш [9]. В результата змогли визначити, яю типи помилок студенти найчастше допускають i як часто вони !х роблять. Збiр даних здiйснювався за допомогою розширення штерактивного середовища розробки, яке було встановлено на машинах студенпв. Вивчеш вiсiм найбiльш поширених помилок початювщв [10]. Написано вiсiм коротких програм, кожна з яких представляла один тип помилки, а учасники експерименту повинш були зютавити програму з типом виявлено! помилки. В експерименп брали участь 59 студенпв другого курсу Кентського державного ушверситету (США). Експеримент був розроблений таким чином, щоб вщстежувати порядок, в якому учасник виправляв помилки, а також час, витрачений на кожну з помилок. Отримаш результати дозволяють виявити складш для налагодження помилки. Однак вони не дають можливосп ощнити рiвень навичок студентiв i не визначають, яю методи та шструменти налагодження були використанi. На основi цих дослiджень про найбiльш поширеш помилки початкiвцiв були розробленi програми для проведення експерименту з виявлення навичок налагодження.

Вивчали практику розробниюв налагодження професшного програмного забезпечення, шляхом вщстеження дш восьми розробникiв в чотирьох рiзних компанiях протягом дня, спостершаючи за !х методами, даючи !м подумати вголос i вiдповiсти на кшька запитань [11]. Результати показали, що жоден з розробникiв не мав спещально! освiти або тдготовки в областi налагодження. Також виявили, що жоден з розробниюв не знав про бшьш функцюнальш можливосп, такi як умовнi точки зупину. Разом з тим майже немае кореляцп мiж використовуваною мовою програмування та шструментами налагодження. Попри те, що нашi дослiдження значно вiдрiзняються за чисельнiстю, та методологiею, вдалося повторити бiльшiсть ключових результатiв: широке використання операторiв виведення на екран, дуже рiдке використання просунутих шструменпв i функцiй налагодження.

Дослiдники розробили систематичш описи процесу налагодження i рекомендацй щодо скорочення часу, який програмктам доводиться витрачати на пошук i усунення дефекту, що викликае збiй програми [12, 13]. Шд час аналiзу експерименту дослiджуеться чи використовують студенти стратеги налагодження.

Систематизащя результапв дослiджень свiдчить про нестачу знань про те, як програмюти насправдi налагоджують та усувають проблеми в процеа розробки та налагодження програмного забезпечення. Тому для щентифшацп та розумшня поведшки розробникiв тд час налагодження програм пропонуеться застосовувати методи Process Mining.

Все це дае тдстави стверджувати, що доцшьним е проведення дослiдження, присвяченого вивченню процеав налагодження студентiв для виявлення шаблошв поведiнки. Розумiння того, як

студенти налагоджують програми та з якими проблемами вони стикаються, мае велике значення для тдвищення якосп навчання програмуванню.

Мета дослiдження

Мета роботи експериментально дослiдити процес налагодження студентами поширених логiчних помилок. Щоб виявити шаблони процeсiв налагодження, яю сприяють розумiнню повeдiнки програмiста тд час налагодження в сeрeдовищi розробки. За допомогою цього вдасться вдосконалити процес навчання студенлв основам програмування, шляхом пiдвищeння контролю за процесом виконання робiт та внаслiдок тдтримки iндивiдуального пiдходу до навчання.

Для досягнення мети були поставлен там завдання:

- розробити програми iз заздалепдь визначеними помилками на основi дослiджeнь про найбiльш поширeнi помилки початювщв [9, 10, 14];

- провести експеримент з налагодження, тд час якого за допомогою розроблених шструменлв [2] вщстежувати та фксувати д^ учасникiв в сeрeдовищi розробки Visual Studio та формувати журнали подш;

- на основi журналiв подiй сформувати за допомогою мeтодiв Process Mining модeлi процeсiв налагодження;

- виявити шаблони дш тд час налагодження.

Викладення основного MaTepi&fty дослiдження

Засоби та методи до^дження

Виконано експериментальне дослiджeння процeсiв налагодження програм студентами рiзних курсiв спещальностей 121 «Програмна iнжeнeрiя» та 123 «Комп'ютерна iнжeнeрiя».

Експеримент проведено у вигавд олiмпiади з налагодження у Дтпровському нацiональному унiвeрситeтi залiзничного транспорту iмeнi акадeмiка В. Лазаряна (Дтпро, Укра1на).

Для виявлення навичок налагодження застосовано метод тдаву помилок.

Експериментально дослщжувався процес налагодження студентами поширених лопчних помилок. Логiчна помилка виникае, коли код синтаксично правильний, але програма виконуеться неправильно. Цей тип помилок, як правило, досить складний i студентам важче знайти та виправити його.

Для проведення експерименту розроблено тридцять коротких програм на мовi програмування C++, кожна з яких включае один з 15 найбшьш розповсюджених титв на основi попередтх дослщжень [9, 10, 14]. Уже з першого курсу студенти мають навички програмування та налагодження на мовi C++, тому саме вона була обрана. Для кожно! програми лопчна помилка проявляеться одним рядком коду. Тобто помилка може бути виправлена шляхом змши тшьки одного рядка коду. Ва програми синтаксично коректт, але виконання кожно! з них призводить до некоректного результату. Щоб допомогти виявити всi помилки, студентам надаеться зразок вхщних та вихщних даних.

Процес налагодження тексту програми розглядаеться як послiдовнiсть дш при роботi з iнструмeнтами в сeрeдовищi розробки. Для збору та аналiзу повeдiнки пiд час налагодження розроблено розширення до Visual Studio, яке вщстежуе всi дп при робот з середовищем розробки [2] та фксуе !х в журналах подш.

Формування модeлi процесу дозволяе отримати споаб i порядок виконання процесу. Для виявлення модeлi процесу налагодження з журналу подш використовуеться ProM. ProM - це широко поширений фреймворк з вiдкритим кодом, який е де-факто стандартом, для рeалiзацil Process Mining [3]. Використовуеться шдхщ заснований на побудовi Directly Follow Graph (DFG) з журналiв подш. DFG представляе кожну подш у виглядi прямокутника i з'еднуе двi поди, якщо одна з них безпосередньо слщуе за шшою. Бiльш того, кожне ребро мае вагу, яка вказуе на кшьюсть його входжень в журнал. Даний тдхщ гарантуе, що виявлена модель е коректною.

Систематичне знайомство студенлв з рiзними типами помилок може значно полшшити навички налагодження. Крiм того, iзольованe виявлення окремих помилок спрощуе пошук i усунення проблеми. Студентам пропонуеться визначити помилку та усунути !! в установлений термш. Аналiзуючи стратеги усунення помилок, виявлялися шаблони, яю впливають або пояснюють поведшку при налагоджeннi i яю нeобхiдно враховувати при навчаннi.

Розроблеш програми i3 rn3dmezidb визначеними помилками

Розроблено програми з типовими лопчними помилками. Для експерименту обрано п'ятнадцять рiзних титв помилок, наведених у табл. 1.

Таблиця 1

Типи лопчних помилок використаних в експеримент

Номер Тип Опис

1 Спроба встановити значення змшнш бшьше за максимально допустиме значения для вщповщного типу Виникае коли програма намагаеться записати до змшно! значення, яке бiльше за максимальне значення визначеного типу

2 Дшення цшого числа на цше число, тому результат округляеться Виникае коли обидва операнда е цшими числами та результат дшення дае дробовий результат, але без оператора приведення до типу з плаваючою комою, тому дробова частина буде вщкинута

3 1нкремент не значення, а вказiвника Виникае коли програма намагаеться збшьшити змшну, на яку посилаеться вказiвник (*counter++;), так як прюритет операцп «++» вище, нiж в операцп «*» (розiменування вказiвника)

4 Неправильне використання функцп sizeof Виникае коли намагаються використовувати sizeof для масиву переданого у якосп параметра функцп, адже в такому випадку отримуемо розмiр вказiвника, а не кшьшсть елементiв масиву

5 Помилка в написаннi Виникае коли помиляються в написаннi операторiв, наприклад «=+» замiсть «+=»

6 Помилка при перестановщ значень Виникае коли пропускають використання тимчасово1 змшно1 для замши значень двох змшних, або роблять це неправильно

7 Помилка паралелiзму Виникае коли мшяють мюцями твердження програми

8 Неправильне використання оператора switch, вiдсутнiсть оператора break Виникае коли забувають оператор break в операторi switch, що призводить до некоректного виконання програми

9 Зайва крапка з комою Виникае коли додають зайву крапку з комою, наприклад, крапка з комою тсля оператору циклу, в такому випадку цикл не мае тша i викликае неправильне функцюнування програми

10 Неправильна послщовнють арифметичних операцiй Виникае коли програмют не розумiе прюритети операцiй i в результатi отримуе помилковi значення обчислень

11 Biдсутнiсть ф^рних дужок Виникае коли забувають вказати ф^рш дужки

12 Нерозумiння областi дп змшних Виникае коли створюють декшька змiнних з одшею назвою в рамках одше! функцil

13 Biдсутнiсть iнiцiалiзацil Виникае коли забувають iнiцiалiзувати змiн^ перед тим як 11 використовувати, що призводить до виключних ситуацш пiд час виконання

14 Використання одинарного знаку рiвностi Виникае при використанш одинарного знаку рiвностi «=» для перевiрки рiвностi в умовах замють подвiйного знаку рiвностi «==»

15 Помилка з граничними умовами Виникае коли програмiст виконуе iтерацiю циклу бiльшу або меншу кiлькiсть разiв, нiж очiкуеться

Типи обраш тому, що вони часто зустрiчаються серед студенлв та е особливо важкими для виявлення програмктами початювцями на основi попереднiх дослiджень [9, 10, 14].

Результати експерименту з налагодження програм

У експерименп взяв участь 41 студент з першого по п'ятий курси. Вс вони мали попереднiй досвiд розробки на С подiбних мовах програмування i використання середовища розробки Visual Studio. Всього студентам треба було виконати п'ятнадцять завдань за 4 години.

На основi кшькосп правильно виконаних завдань учасники були класифшоваш як "High", "Middle", "Low". Студенти вщносяться до класу "Low", якщо вони виконали менше половини завдань, таких - 9. Студенти з "Middle" класу виконали бшьше половини завдань, але не ва, таких - 23. Студенти з "High" класу виконали ва завдання, таких - 9.

Тридцять два (~78 %) студента змогли виршити половиц або бшьше завдань. Дев'ять студенпв виправили вс помилки. В середньому 1м на це знадобилося трохи бшьше 2 годин. Жодна з категорш

помилок не е повнютю нерозв'язаною yciMa студентами. Помилки з категорш 2, 8 та 14 виршили yci студенти. Немае жодно! категорп, яка б мiстила бiльше неправильних вщповщей, нiж правильних.

Щодо того, яю помилки е найбiльш складними для студентiв, результати показують, що бiльшiсть учасникiв здатнi правильно вщповюти на половину або бiльше завдань. Виходячи з кiлькостi правильних вщповщей, бiльшiсть помилок потрапляли в дiапазон вiд 75 % правильних. Результати свщчать про те, що студенти мають помiрнi труднощi з категорiями помилок 4 (неправильне використання функцп sizeof) та 12 (нерозумiння обласп дп змiнних). 25 % завдань з цих категорш були виршет неправильно.

В табл. 2 наведено перелш найбшьш часто використовуваних команд середовища розробки Visual Studio учасниками експерименту.

Таблиця 2

Частота використання команд пщ час експерименту

Номер Команда Частота Вщсоток використання серед учасниюв

High Middle Low

1 DebugStart 2415 15.368 % 14.426 % 14.059 %

2 DebugEnd 2415 15.368 % 14.426 % 14.059 %

3 BuildDone 2415 15.368 % 14.426 % 14.059 %

4 BuildBegin 1433 8.893 % 8.195 % 9.855 %

5 CodeChanged 1291 7.86 % 7.074 % 10.096 %

6 BreakpointHitted 323 0.821 % 2.433 % 2.068 %

7 DocumentOpened 248 1.431 % 1.718 % 0.896 %

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

8 Edit.Undo 230 0.845 % 1.12 % 3.067 %

9 BreakpointAdd 168 0.375 % 1.472 % 0.482 %

10 BreakpointRemove 160 0.634 % 1.344 % 0.241 %

11 Edit.Paste 114 0.446 % 0.896 % 0.379 %

12 StepOver 101 0.211 % 0.704 % 0.896 %

13 ExceptionThrown 90 0.634 % 0.63 % 0.138 %

14 StepInto 85 0 % 0.587 % 1.034 %

15 Edit.Copy 74 0.352 % 0.566 % 0.207 %

Вщносно невеликий набiр команд зустрiчаeться майже у вах учасникiв, а саме дев'ять команд зустрiчаються у 90 % або бшьше студентiв. Це загальний набiр команд: запуск i зупинка налагоджувача, змiна коду, виконання програми, вiдкриття файлiв з текстом програми, а також копiювання та вставка. Бшьшють iнших команд зустрiчаються у меншого кола розробникiв. До них вщносяться команди такi як установка, видалення i зупинка на точках зупинки, покрокове виконання, вщмша зроблених змш, а також поди виключних ситуацiй. Бiльшiсть з цих команд мають широке застосування i повиннi бути рекомендованi iншим розробникам.

У табл. 3 наведено статистику практик налагодження, яю використовувалися студентами тд час експерименту.

Таблиця 3

Статистика використання практик налагодження

Практика Вщсоток сесш в яких застосовано практику

High Middle Low

Змша коду 43.82 % 37.13 % 57.84 %

Покрокове виконання 1.37 % 8.58 % 12.75 %

Точки зупину 5.34 % 17.31 % 14.71 %

Покрокове виконання серед сесш з точками зупину 25.71 % 49.57 % 86.67 %

Виведення на екран 4.83 % 7.33 % 17.41 %

Як можна побачити учасники з класу "Low" роблять набагато бшьше змш коду шж iншi при цьому у них значно менше сесш налагодження. Ще одна виразна особливкть учасниюв класу "Low" це частше використання практики виведення на екран значень змшних анiж встановлення точок зупину чи покрокове виконання.

Також в табл. 3 можна помиити два типи використання точок зупину. По-перше, для перевiрки чи виконуеться частина коду, а по-друге, для покрокового виконання програми. При цьому лише учасники класу "Low" в переважнш бшьшосл використовують точки зупину для покрокового виконання (86.67 %). Учасники з класу "High" навпаки лише у 25.71 % сесш використовували таким чином. Учасники з класу "High" взагалi майже не використовували практики встановлення точок зупину та

покрокового виконання. Це може вказувати на те, що 1х навичок розробника достатньо щоб одразу робити правильш гшотези, а шшим необхщно використовувати налагодження для вивчення поведшки програми.

Моделi процеыв налагодження засобами Process Mining

Щоб краще зрозумгги, як насправдi виконувався процес налагодження використовуються методи Process Mining. Вхщними даними для алгорюшв Process Mining е журнали подiй, сформованi тд час сесiй налагодження в штегрованому засобi розробки Visual Studio. Приклад такого журналу наведено на рис. 1.

<log xes.version = " 1.0" xes.features = "nested-attributes" openxes.version = " 1.0RC7"> <extension name="Time" prefix="time" uri = "http://www.xes-standard.org/time.xesext" /> <extension name="Lifecycle" prefix="lifecycle" uri="http://www.xes-standard.org/Hfecycle.xesext" /> <extension name="Concept" prefix="concept" uri="http://www.xes-standard.org/concept.xesext" />

Рис. 1. Приклад журналу подш в формат XES

Журнал подш структурований як набiр запиав, де кожна iз запиав е ланцюжком дiй, створених в результата одного виконання процесу. Журнал подш формуеться в формата IEEE extensible Event Stream (XES) [15], щоб застосувати методи Process Mining для автоматичного аналiзу. На основi таких журналiв подш методи Process Mining витягають корисну шформацю, яка дозволяе отримати уявлення

про процес, сформулювати i nepeBipnra гшотези. Результати Process Mining можуть бути починаючи вiд повно! моделi процесу, до опису основних (частих) шляхiв або його вiдхилень.

Шд час експерименту було сформовано 487 файлiв журналiв подiй для 41 учасника. Загалом журнали подiй складаються з 2415 сесш налагодження та 16536 подш.

Щоб зрозумiти, що сталося в кожному класi учасниюв, сформували вiдповiднi моделi процесiв на основi журналiв подiй (фаза виявлення процесу). Зокрема, Directly Follow Graph плагш фреймворку ProM (метод Process Mining) приймае на вхiд журнали учасниюв з "High", "Middle", "Low" клаав та створюе вiдповiднi моделi процесiв, у виглядi DFG.

На рис. 2 зображено загальну модель процесу налагодження комп'ютерних програм учасниками експерименту.

Сформовано один загальний файл журналу подш на основi уах сесш налагодження. Задля того щоб модель була шформативною було проведено фшьтращю засобами РгоМ. В результата модель сформовано на основi файлу журналу подш, який складаеться з 90 % подш, яю були вщстежеш з

середовища розробки Visual Studio тд час експерименту. Модель вщображае команди, яК були використанi пiд час налагодження та зв'язки мiж ними.

Виявлет шаблони налагодження

На основi отриманих моделей процеав налагодження та найбшьш часто повторювальних сесiй вдалося виявити 4 шаблони поведшки учасниюв експерименту.

Шаблон #1 - виконання програми в режимi налагодження без будь-яких змш та налагоджувальних дш. Використовуеться, щоб перевiрити поведiнку програми.

Шаблон #2 - це змша тексту програми й виконання в режимi налагодження без будь-яких змш та налагоджувальних дш. Цей шаблон вщповщае застосуванню методу спроб та помилок.

Шаблон #3 - це виконання програми в режимi налагодження з встановленими точками зупину. Використовуеться, щоб дослщити поведшку програми, а саме яю ii частини виконуються. А також використовуеться для покрокового виконання.

Шаблон #4 - це змша тексту програми, встановлення точок зупину й виконання в режимi налагодження. Цей шаблон вщповщае застосуванню методу припущення про помилку. Коли робиться припущення про помилку, в цьому мiсцi виконуеться змiна коду i встановлюються точки зупину для перевiрки, що помилка виправлена.

На рис. 3 наведено частоту використання шаблошв рiзними класами учасникiв експерименту.

a б в

Рис. 3. Статистика використання шаблошв учасниками: а - клас "High"; б - клас "Middle"; в -

клас "Low"

Як можна побачити на рис. 3 у вах класах учасниюв переважае використання перших двох шаблошв, та дуже незначне використання шаблошв #3 та #4. Вагома рiзниця лише в тому, що в учасниюв з класу "Low" значно переважае використання методу спроб та помилок, а учасники класу "High" використовують шаблони #3 та #4 лише в 5.4 % сесш налагодження.

На рис. 4-7 наведено, як виявлеш шаблони вщображаються на отриманих засобами Process Mining моделях процеав налагодження.

I

I

DebugStart

т

DebugEnd

Рис. 4. Модель процесу налагодження i3 застосуванням методу спроб та помилок

Рис. 4 вiдображае модель застосування методу спроб та помилок, яке здшснюеться через внесення змш (CodeChanged) та виконання програми без будь-яких налагоджувальних дiй. Такий процес повторюеться допоки не буде знайдено ршення або закiнчаться ще!. Такий метод застосовуеться уама класами учасниюв i рiзниця лише в тому що учасникам класу "Low" треба бшьше спроб i вони мають гiрший результат.

I

I

DebugStart

/ 4

Г BreakpointHitted

V 4

DebugEnd

I

Finish

J

Рис. 5. Модель процесу налагодження i3 застосуванням точок зупину, але без покрокового

виконання

Модель на рис. 5 вщображае застосування шаблону #3 при налагодженш, а саме послщовнють дiй по виконанню програми без будь-яких змiн з встановленими точками зупину. Коли точка зупину спрацюе е декiлька варiантiв подальших дiй. Перший, закiнчити налагодження, в такому випадку мета була переконатися, що частина коду виконуеться. Другий, продовжити налагодження шляхом покрокового виконання. Як показали результати експерименту другий варiант використовуеться переважною бшьшютю учасниюв з класу "Low". Учасники з класу "Middle" однаково використовують обидва методи, а учасники класу "High" надають перевагу першому, адже вони здатш без покрокового виконання зрозумгги поведiнку програми.

I

I

Рис. 6. Модель процесу налагодження застосовуючи шаблон #4

Модель на рис. 6 вщображае застосування методу припущення про помилку. Коли програмют висувае ппотезу, робить змiну тексту програми, щоб виправити помилку, пiсля чого виконуе програму з встановленими точками зупину i перевiряе шляхом покрокового виконання чи помилка виправлена.

I

Е

BreakpointReraove

т

StepOver

Steplnto

b

Рис. 7. Модель процесу налагодження i3 застосуванням одразу ycix шаблошв

На рис. 7 зображена модель одного з учасниюв експерименту, яка вщображае застосування одразу ycix шаблошв пiд час виршення завдання. Шаблон #1 - Start-BuildDone-DebugStart-DebugEnd-Finish. Шаблон #2 - Start-CodeChanged-BuildBegin-BuildDone-DebugStart-DebugEnd-Finish. Шаблон #3 - Start-BreakpointAdd-BuildDone-DebugStart-BreakpointHitted-DebugEnd-Finish. Шаблон #4 - Start-CodeChanged-BreakpointAdd-BuildBegin-BuildDone-DebugStart- BreakpointHitted- StepOver-DebugEnd-Finish.

Результати демонструють ефектившсть Process Mining для кращого розумшня того, як розробники налагоджують програми. Виходячи з резyльтатiв доcлiдження, адаптивнi методи навчання можна застосовувати для студенпв з рiзним ступенем ycпiшноcтi.

Обговорення результаты експериментального досл^ження процеыв налагодження комп 'ютерних програм студентами

Використання методiв Process Mining представляють новий шдхщ до вивчення процеав налагодження програм. В xодi експерименту проведено оцшку розробникiв, щоб видiлити тих, хто домшся найкращих резyльтатiв. Попм порiвняти поведiнкy, отриману вiд ще! групи розробникiв, з поведiнкою шших. Результати показують рiзнi моделi поведшки розробникiв з рiзними навичками.

Установка точок зупину i проходження по коду виконувалося бiльшicтю розробникiв за допомогою налагоджувача, iншi функцп налагодження використовуються набагато рiдше i набагато

меншою кшьюстю розробниюв. Лише 2 учасниюв використовували TaKi засоби як перегляд значень змшних. Учасники, яю не використовували засоби налагодження натомють використовували метод спроб i помилок, а також використовували виведення значень на екран. Цi результати закликають посилити практичний досвiд налагодження в навчальних програмах.

Хоча це не дивний результат, але експеримент наочно продемонстрував, що досвiд е ключовим фактором навичок налагодження. Адже ва студенти 4 та 5 курав виконали половиц або бiльше завдань. А серед студенлв першого курсу немае таких, яю б виконали ва завдання.

Анaлiз даних дозволив виявити студенпв, якi вирiшувaли завдання не самостшно. Одного учасника було дисквaлiфiковaно через те, що вс його завдання були вирiшенi шляхом вставки готового ршення. Окрiм того ще 5 учасникам було не зараховано правильно виконаш завдання через вщсутшсть процесу досягнення результату, що викликае велику пiдозру в не самостшностг Також тaкi рiшення ствпадали з рiшеннями iнших учaсникiв. Моделi процесiв таких учaсникiв складалися лише з декшькох сесiй налагодження, в кожнш з яких було не бшьше 5 дiй, одна з яких це команда Edit.Paste великого шматку коду.

Необхщно враховувати при штерпретацп результaтiв, що дaнi взяп з обмежено! вибiрки, що складаеться з 41 студента з першого по п'ятий курси Днiпровського нацюнального унiверситету зaлiзничного транспорту iменi академша В. Лазаряна (Днiпро, Укра!на). Тому учасники мають вiдносно вузьку i однорщну пiдготовку в облaстi розробки та налагодження програмного забезпечення.

В подальшому для бiльш глибокого вивчення було б слушно ускладнити завдання збшьшивши кiлькiсть помилок та рядюв коду, що потребують виправленню. З потреб покращення статистики слiд розширяти контингент студентiв з рiзних ушверситепв.

Висмовки

1. Розроблено програми з типовими лопчними помилками на основi дослiджень про нaйбiльш поширенi помилки початювщв.

2. Проведено експеримент з дослщження процесiв налагодження, пiд час якого за допомогою розроблених шструменпв вщстежувалися та фiксувaлися дп учаснимв в середовищi розробки. Для виявлення навичок налагодження застосовано метод тдаву помилок. Результати показали навички студенпв по налагодженню програм з типовими лопчними помилками. Вдалося виявити проблеми, якi е бiльш складними для локaлiзaцil та виправлення. Виходячи з результапв дослiдження, aдaптивнi методи навчання можна застосовувати для студентiв з рiзним ступенем успiшностi. Результати проведених дослiджень та впровадження запропонованих процеав та iнструментiв дозволять пiдвищити якють навчання студентiв внaслiдок монiторингу !х роботи.

3. Розробленi моделi процеав налагодження програм засобами Process Mining, що на вщмшу вiд юнуючих дають можливiсть автоматизувати aнaлiз цих процеав.

4. На основi сформованих моделей за допомогою шструменпв та методiв Process Mining вдалося виявити шаблони дiй пiд час налагодження. Результати дослщження показують, що методи Process Mining корисш для розумшня того, як прогрaмiсти виконують налагодження, яю методи використовують та з якими труднощами стикаються.

Список використаноТ лiтератури

1. LaToza, T. D., & Myers, B. A. (2010). Developers ask reachability questions. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - ICSE'10 (Vol. 1, pp. 185-194). https://doi.org/10.1145/1806799.1806829

2. Shynkarenko, V., & Zhevaho, O. (2020). Development of a toolkit for analyzing software debugging processes using the constructive approach. Eastern-european Journal of Enterprise Technologies, 5(2 (107)), 2938. https://doi.org/10.15587/1729-4061.2020.215090

3. van der Aalst, W. (2012). Process mining: Overview and opportunities. ACM Transactions on Management Information Systems, 3(2), 1-17. https://doi.org/10.1145/2229156.2229157

4. Rubin, V., Günther, C. W., van der Aalst, W. M. P., Kindler, E., van Dongen, B. F., & Schäfer, W. (2007). Process Mining Framework for Software Processes. In Software Process Dynamics and Agility (pp. 169-181). Springer Berlin Heidelberg. http://doi.org/10.1007/978-3-540-72426-1 15

5. Ardimento, P., Bernardi, M. L., Cimitile, M., & Maggi, F. M. (2019). Evaluating Coding Behavior in Software Development Processes: A Process Mining Approach. In 2019 IEEE/ACM International Conference on Software and System Processes (ICSSP). IEEE. http://doi.org/10.1109/icssp.2019.00020

6. Shynkarenko, V., & Zhevago, O. (2019). Visualization of program development process. In 2019 IEEE 14th International Conference on Computer Sciences and Information Technologies (CSIT). IEEE. http://doi.org/10.1109/stc-csit.2019.8929774

7. Shynkarenko, V., & Zhevaho, O. (2020). Constructive Modeling of the Software Development Process for Modern Code Review. In 2020 IEEE 15th International Conference on Computer Sciences and Information Technologies (CSIT). IEEE. http://doi.org/10.1109/csit49958.2020.9322002

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

8. Snipes, W., Murphy-Hill, E., Fritz, T., Vakilian, M., Damevski, K., Nair, A. R., & Shepherd, D. (2015). A Practical Guide to Analyzing IDE Usage Data. In The Art and Science of Analyzing Software Data (pp. 85-138). Elsevier. http://doi.org/10.1016/b978-0-12-411519-4.00005-7

9. Edwards, S. H., Snyder, J., Pérez-Quiñones, M. A., Allevato, A., Kim, D., & Tretola, B. (2009). Comparing effective and ineffective behaviors of student programmers. In Proceedings of the fifth international workshop on Computing education research workshop - ICER '09. ACM Press. http://doi.org/10.1145/1584322.1584325

10. Alqadi, B. S., & Maletic, J. I. (2017). An Empirical Study of Debugging Patterns Among Novices Programmers. In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education. ACM. http://doi.org/10.1145/3017680.3017761

11. Perscheid, M., Siegmund, B., Taeumel, M., & Hirschfeld, R. (2016). Studying the advancement in debugging practice of professional software developers. Software Quality Journal, 25(1), 83-110. http://doi.org/10.1007/s11219-015-9294-2

12. Andreas Zeller (2009). Why Programs Fail, Second Edition: A Guide to Systematic Debugging. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2nd edition.

13. Ko, A. J., & Myers, B. A. (2008). Debugging reinvented. In Proceedings of the 13th international conference on Software engineering - ICSE '08. ACM Press. http://doi.org/10.1145/1368088.1368130

14. Bryce, R. C., Cooley, A., Hansen, A., & Hayrapetyan, N. (2010). A one year empirical study of student programming bugs. In 2010 IEEE Frontiers in Education Conference (FIE). IEEE. http://doi.org/10.1109/fie.2010.5673143

15. Verbeek, H. M. W., Buijs, J. C. A. M., van Dongen, B. F., & van der Aalst, W. M. P. (2011). XES, XESame, and ProM 6. In Progress in Pattern Recognition, Image Analysis, Computer Vision, and Applications (pp. 60-75). Springer International Publishing. http://doi.org/10.1007/978-3-642-17722-4 5

References

1. LaToza, T. D., & Myers, B. A. (2010). Developers ask reachability questions. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - ICSE'10 (Vol. 1, pp. 185-194). https://doi.org/10.1145/1806799.1806829

2. Shynkarenko, V., & Zhevaho, O. (2020). Development of a toolkit for analyzing software debugging processes using the constructive approach. Eastern-european Journal of Enterprise Technologies, 5(2 (107)), 2938. https://doi.org/10.15587/1729-4061.2020.215090

3. van der Aalst, W. (2012). Process mining: Overview and opportunities. ACM Transactions on Management Information Systems, 3(2), 1-17. https://doi.org/10.1145/2229156.2229157

4. Rubin, V., Günther, C. W., van der Aalst, W. M. P., Kindler, E., van Dongen, B. F., & Schäfer, W. (2007). Process Mining Framework for Software Processes. In Software Process Dynamics and Agility (pp. 169-181). Springer Berlin Heidelberg. http://doi.org/10.1007/978-3-540-72426-1 15

5. Ardimento, P., Bernardi, M. L., Cimitile, M., & Maggi, F. M. (2019). Evaluating Coding Behavior in Software Development Processes: A Process Mining Approach. In 2019 IEEE/ACM International Conference on Software and System Processes (ICSSP). IEEE. http://doi.org/10.1109/icssp.2019.00020

6. Shynkarenko, V., & Zhevago, O. (2019). Visualization of program development process. In 2019 IEEE 14th International Conference on Computer Sciences and Information Technologies (CSIT). IEEE. http://doi.org/10.1109/stc-csit.2019.8929774

7. Shynkarenko, V., & Zhevaho, O. (2020). Constructive Modeling of the Software Development Process for Modern Code Review. In 2020 IEEE 15th International Conference on Computer Sciences and Information Technologies (CSIT). IEEE. http://doi.org/10.1109/csit49958.2020.9322002

8. Snipes, W., Murphy-Hill, E., Fritz, T., Vakilian, M., Damevski, K., Nair, A. R., & Shepherd, D. (2015). A Practical Guide to Analyzing IDE Usage Data. In The Art and Science of Analyzing Software Data (pp. 85-138). Elsevier. http://doi.org/10.1016/b978-0-12-411519-4.00005-7

9. Edwards, S. H., Snyder, J., Pérez-Quiñones, M. A., Allevato, A., Kim, D., & Tretola, B. (2009). Comparing effective and ineffective behaviors of student programmers. In Proceedings of the fifth international workshop on Computing education research workshop - ICER '09. ACM Press. http://doi.org/10.1145/1584322.1584325

10. Alqadi, B. S., & Maletic, J. I. (2017). An Empirical Study of Debugging Patterns Among Novices Programmers. In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education. ACM. http://doi.org/10.1145/3017680.3017761

11. Perscheid, M., Siegmund, B., Taeumel, M., & Hirschfeld, R. (2016). Studying the advancement in debugging practice of professional software developers. Software Quality Journal, 25(1), 83-110. http://doi.org/10.1007/s11219-015-9294-2

12. Andreas Zeller (2009). Why Programs Fail, Second Edition: A Guide to Systematic Debugging. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2nd edition.

13. Ko, A. J., & Myers, B. A. (2008). Debugging reinvented. In Proceedings of the 13th international conference on Software engineering - ICSE '08. ACM Press. http://doi.org/10.1145/1368088.1368130

14. Bryce, R. C., Cooley, A., Hansen, A., & Hayrapetyan, N. (2010). A one year empirical study of student programming bugs. In 2010 IEEE Frontiers in Education Conference (FIE). IEEE. http://doi.org/10.1109/fie.2010.5673143

15. Verbeek, H. M. W., Buijs, J. C. A. M., van Dongen, B. F., & van der Aalst, W. M. P. (2011). XES, XESame, and ProM 6. In Progress in Pattern Recognition, Image Analysis, Computer Vision, and Applications (pp. 60-75). Springer International Publishing. http://doi.org/10.1007/978-3-642-17722-4 5

i Надоели баннеры? Вы всегда можете отключить рекламу.