Отчёт о прохождении учебной (технологической (проектно-технологической)) практики

(2022/2023 учебный год)

Махров Антон Анатольевич

Направление подготовки 09.04.01 «Информатика и вычислительная техника»

Наименование профиля подготовки «Прикладной искусственный интеллект»

Форма обучения – очная Срок обучения в соответствии с ФГОС – 2 года

Год обучения 1 семестр 2

Период прохождения практики с 26.06.2023 по 08.07.2023

Кафедра «Вычислительная техника»

 

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

Магистр Митрофанов М. П. ____________ "___" ___________ 2023 г.

 

Руководитель Карамышева Н.С. ____________ "___" ___________ 2023 г.

практики

 

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ

ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

ОТЗЫВ
О ПРОХОЖДЕНИИ УЧЕБНОЙ (ТЕХНОЛОГИЧЕСКОЙ
(ПРОЕКТНО-ТЕХНОЛОГИЧЕСКОЙ)) ПРАКТИКИ

(2022/2023 учебный год)

Махров Антон Анатольевич

Направление подготовки 09.04.01 «Информатика и вычислительная техника»

Наименование профиля подготовки «Прикладной искусственный интеллект»

Форма обучения – очная Срок обучения в соответствии с ФГОС – 2 года

Год обучения 1 семестр 2

Период прохождения практики с 26.06.2023 по 08.07.2023

Кафедра «Вычислительная техника»

В процессе прохождения практики Махров А.А. закрепил и расширил теоретические знания в сфере информатики и вычислительной техники.

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

Практика Махрова А.А. заслуживает оценки «отлично».

Научный

руководитель к.т.н., доцент, Карамышева Н.С. « » 2023 г.

Оглавление

 

Введение. 7

1. Постановка задачи. 9

2. Учебное здание. 10

3. Методология организации командной деятельности. 14

4.Организация дитсанционного учебного пространства. 18

5.Выполнение работы.. 20

Заключение. 22

Список литературы.. 23

Приложение № 1. 24

Приложение № 2. 25

Приложение №3…………………………………………………………………….27

 

 

 

 

 

 

Введение

Разработка программного обеспечения – это процесс создания и улучшения программного продукта. Этот процесс включает в себя анализ требований, проектирование, кодирование, тестирование, отладку, развертывание и сопровождение программного обеспечения. Разработка программного обеспечения как правило ведется большими распределенными командами, где у каждого специалиста своя роль – разработчик, тестировщик, девопс, руководитель проекта и тд. Разработка ПО ведется по различным методологиям, к примеру: гибкая методология “Agile”, методология “Waterfall”, методология “Kanban” и другие.

Прохождению учебной практики должно предшествовать изучение студентами дисциплин: «Технология разработки программного обеспечения», «Мировые тенденции раз­вития вычислительной техники и информационных технологий».

Для успешного прохождения учебной практики студент должен:

знать:

- основные технологии разработки программного обеспечения;

- технические и программные средства реализации взаимодействия программного обеспечения;

уметь:

- разрабатывать программное обеспечение на языках высокого уровня;

- работать с информацией в глобальных компьютерных сетях;

владеть:

- методикой решения прикладных задач по профилю своей специальности;

- методами и средствами разработки и оформления технической документации.

В ходе прохождения данной практики была проведена организация дистанционного учебного процесса для бакалавриата 1 курса с использования современных технологий коммуникаций, методологий и инструментов.

 

1. ПОСТАНОВКА ЗАДАЧИ

Целями учебной (технологической (проектно-технологической)) практики являются за­крепление и углубление теоретической подготовки обучающегося, практические задания, схожие с реальными задачами в профессиональной деятельности, а также получение опыта в работе с системой учета задач и оценки времени, в системах контроля версий для изучения принципов формирования коллективной команды программистов и особенностей командной работы.

Задачами учебной (проектно-технологической) практики являются:

- получение умений по объединению нескольких программных модулей в области решения профессиональных задач с применением систем контроля версий;

- углубление навыков по сбору, обработке, анализу и систематизации информации по теме задания;

- углубление навыков по формированию отчетности и документации программных средств;

- получение навыка работы с инструментами управления проектами, который помогает оптимизировать работу команды;

- получение навыков работы с современными программными и аппаратными средст­вами информационных технологий.

Теоретической и методологической основой выполненной работы являются существующие материалы, используемые при организации учебной (ознакомительной) практики бакалавриата 1 курса, а также описания базовых алгоритмов обработки данных, находящиеся в публичном доступе и не имеющие ограничений на использование.

При выполнении данной работы учитывается индивидуальный опыт, полученный в ходе выполнения группового задания и анализа учебно-методического материала в течение практики.

 

2. УЧЕБНОЕ ЗАДАНИЕ

Необходимо реализовать и продемонстрировать работу алгоритма сортировки слиянием. Программа должна реализовывать алгоритм сортировки, выполнять считывание входных данных из файла и запись результатов в файл и отображать все данные в графическом интерфейсе.

Программа должна обрабатывать данные, предоставленные в корректно сформированных входных файлах.

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

Решение задачи сортировки слиянием разделяется на три этапа:

· Сортируемый массив разбивается на две части примерно одинакового размера;

· Каждая из получившихся частей сортируется отдельно, например — тем же самым алгоритмом;

· Два упорядоченных массива половинного размера соединяются в один.

Достоинствами алгоритма являются:

- Работает даже на структурах данных последовательного доступа.

- Хорошо сочетается с подкачкой и кэшированием памяти.

- Неплохо работает в параллельном варианте: легко разбить задачи между процессорами поровну, но трудно сделать так, чтобы другие процессоры взяли на себя работу, в случае если один процессор задержится.

- Не имеет «трудных» входных данных.

- Устойчивая - сохраняет порядок равных элементов (принадлежащих одному классу эквивалентности по сравнению).

 

Недостатками алгоритма являются:

- На «почти отсортированных» массивах работает столь же долго, как на хаотичных. Существует вариант сортировки слиянием, который работает быстрее на частично отсортированных данных, но он требует дополнительной памяти, в дополнении ко временному буферу, который используется непосредственно для сортировки.

- Требует дополнительной памяти по размеру исходного массива.

Сортировка слиянием обычно реализуется таким образом, что она осуществляет последовательный доступ к данным. Поэтому данный метод сортировки применяется к структурам данных, доступ к элементам которых может осуществляться только последовательно, например, к спискам, потокам и так далее.

По тем же причинам слияние часто используется в качестве основы для сортировки на специализированных и высокопроизводительных машинах, поскольку именно последовательный доступ в подобного рода системах обработки данных является самым быстрым.

Отчет должен содержать следующие элементы:

- краткое описание алгоритма;

- блок-схема алгоритма;

- преимущества и недостатки алгоритма;

- типичные сценарии применения;

- непосредственная реализация алгоритма без использования стандартных или сторонних библиотек;

- блок-схема программы;

- анализ работы алгоритма, включая количество базовых операций (для алгоритмов сортировки – число перестановок), производительность для наилучшего и наихудшего сценариев в секундах (для алгоритмов сортировки – предварительно отсортированный, инвертированный и случайный наборы данных, для алгоритмов поиска – поиск элементов, заведомо находящихся вначале или конце набора данных, включая случай, когда набор данных состоит из многократно повторяющихся элементов);

- анализ и реализация графического интерфейса;

- раздел тестирования готовой программы.

В качестве результатов выполнения работы предоставляются: отчет с описанием реализованного алгоритма и сферы его применения, исполняемая программа, включая ее исходный код, наборы тестовых данных (в зависимости от варианта).

Анализ работы алгоритма должен выполняться на нескольких различных наборах данных.

В ходе определения бригад в группах, в моей бригаде было 3 студента. Бакалавры должны были реализовать следующие задачи:

1. Студенты выполняют анализ работы алгоритма, знакомятся с документацией и требованиями к практике;

2. Заведение проекта в системе управления проектами и создают список задач, дают оценку и распределяют нагрузку;

3. Один студент разрабатывает алгоритм работы программы и реализует его на любом языке программирования.

4. Второй студент разрабатывает интерфейс, для отображения всех возможностей реализованной программы первого студента.

5. Если есть третий студент в подгруппе, то он сопоставляет всё вместе и производит тестирование для проверки корректности работы готовой программы (иначе это выполняет второй студент), а также выполняет функции менеджера проектов.

Для выполнения предложенных заданий учебной практики необходимы навыки, полученные в ходе изучения курса «Программирование», а также базовые знания по алгоритмизации. Для реализации программ допустимо использовать любые доступные языки программирования, за исключением случаев использования готовых или стандартных библиотек. Предпочтительным является использование языка Си.

Также необходимо выполнить реализацию программы с интерфейсом пользователя, позволяющим отображать входные и выходные данные программы.

При проверке качества реализации программы необходимо учитывать корректность реализации основного алгоритма, а также реакцию программы на «граничные» наборы данных, при которых возможно выявление ошибок реализации основного алгоритма или кода ввода и вывода данных.

Вариант задания для бакалавров:

Сортировка слияния.

 

3. Методология организации командной деятельности

До началa разработки было проведено организационное собрание со студентами, со следующими целями:

- Определение ролей в команде;

- Определение срока выполнения проекта целиком (программа и отчет);

- Определение списка задач, их создание в системе управления проектом;

- Определение оценки задач, исполнителя, вводная информация для каждой задачи, ее описание.

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

После организационного собрания были достигнуты следующие цели:

- распределены роли между участниками;

- достигнута договоренность о способах взаимодействия, а так же определены количество часов в неделю, выделяемых на работу над заданием каждым участником;

- Определен технологический стек проекта

Определена схема и частота проведения митингов команды. Для оперативного взаимодействия использовался мессенджер Telegram, а для плановых встреч использовался Google Meet. На встречах обсуждались и вырабатывались различные решения, касающиеся задания.

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

Методологией управления проекта выбрана Agile. Методология Agile является подходом к разработке программного обеспечения, который признан более гибким и адаптивным, чем традиционные методы разработки, такие как водопадная модель.

 

Основные принципы Agile включают:

1. Ориентация на индивидуумов и взаимодействие: Agile ставит основное внимание на командную работу и обмен информацией между членами команды разработчиков и заказчиками.

2. Работающее программное обеспечение в приоритете: Agile подразумевает частую итеративную разработку и доставку рабочих версий программного обеспечения с минимальным функционалом, но с возможностью демонстрации результата.

3. Постоянные изменения и адаптация: Agile предполагает гибкое итеративное планирование и изменение требований на основе обратной связи клиентов и реального опыта.

4. Сотрудничество с заказчиком: Agile подразумевает активное взаимодействие с заказчиком, включая участие в планировании, обсуждении приоритетов и обратной связи по результатам.

5. Простота и минималистичность: Agile подразумевает выполнение требований и проектирование программного обеспечения с упором на минимальное количество используемых ресурсов и простоту реализации.

Методология Agile также включает в себя различные рамки работы, такие как Scrum, Kanban и XP (экстремальное программирование), которые предлагают свои специфические подходы к разработке программного обеспечения.

В рамках нашей работы, было принято решение использовать фреймворк гибкой методологии Scrum.

Scrum - это одна из методологий Agile, которая используется для управления и организации процесса разработки программного обеспечения. Она основана на итеративном и инкрементальном подходе к разработке.

 

Основные принципы и практики Scrum включают:

1. Роли: в Scrum определены три основные роли - Product Owner (владелец продукта), Scrum Master и Development Team (команда разработки). Каждая роль имеет свои обязанности и ответственности в рамках проекта.

2. Продуктовый бэклог: это список требований, задач и функциональностей, которые должны быть реализованы в проекте. Product Owner управляет продуктовым бэклогом и определяет его приоритеты.

3. Спринт: это фиксированный промежуток времени (обычно от 1 до 4 недель), в течение которого команда разработки выполняет задачи из продуктового бэклога. На каждый спринт составляется план и цель, и после его завершения должен быть получен готовый инкремент продукта.

4. Утренний митинг (Daily Scrum): это ежедневное короткое собрание, на котором члены команды разработки делятся информацией о проделанной работе, планах и возникающих препятствиях.

5. Спринт-ревью (Sprint Review): это событие, на котором команда разработки представляет готовые работы заказчику и другим заинтересованным сторонам. Заказчик и Product Owner оценивают результаты спринта и обсуждают возможные изменения и улучшения.

6. Спринт-ретроспектива (Sprint Retrospective): это событие, на котором команда разработки анализирует прошлый спринт и обсуждает, что сработало хорошо и что можно улучшить в будущем.

 

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

 

 

4.ОРГАНИЗАЦИЯ ДИСТАНЦИОННОГО РАБОЧЕГО ПРОСТРАНСТВА

Для коммуникации в формате плановых звонков был выбран сервис Discord.

Discord - это платформа для общения, предназначенная в первую очередь для геймеров, но широко используется также и в других областях. Она предоставляет возможность голосового, текстового и видео-общения между пользователями через каналы и серверы.

На Discord можно создавать серверы, которые являются виртуальными сообществами, где пользователи могут общаться друг с другом в текстовых каналах или использовать голосовой и видеозвонки для более непосредственного общения. Серверы могут быть публичными или приватными, и их создание и управление происходит через специальное приложение Discord.

Discord также предоставляет различные функции и возможности, такие как интеграция с играми, настраиваемые роли и права доступа для участников сервера, использование ботов для автоматизации различных задач, а также инструменты для модерации и создания мероприятий.

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

 

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

Telegram - это мессенджер, позволяющий пользователям обмениваться сообщениями и файлами в режиме реального времени.

Telegram предлагает шифрованную коммуникацию и защищенное соединение для обеспечения конфиденциальности данных. Он доступен на различных платформах, включая мобильные устройства (Android, iOS) и компьютеры (Windows, macOS, Linux), а также имеет веб-версию.

Основные особенности Telegram включают:

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

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

3. Каналы: Telegram также предлагает возможность создания каналов, которые позволяют пользователям подписываться на определенные тематики и получать обновления и информацию от администраторов.

4. Возможность обмена файлами: пользователи могут обмениваться файлами различных форматов, включая фотографии, видео, аудио и документы.

5. Криптографическая безопасность: Telegram предлагает шифрование ваших сообщений и может предоставить опциональный режим «секретных чатов», который позволяет отправлять самоуничтожающиеся сообщения и поддерживает дополнительные уровни конфиденциальности.

6. Боты и API: Telegram предоставляет возможность разработки и использования ботов, которые могут выполнять различные задачи и предоставлять дополнительные функции.

Telegram является одной из самых популярных платформ мессенджеров во многих странах благодаря своей безопасности, скорости работы и широкому набору функций.

5.Выполнение работы

В первый день практики было проведено собрание, на котором были оговорены все основные организационные вопросы о прохождении практики и подготовить файл для будущего отчёта, представлены учебные материалы для ознакомления. До студентов была доведена важность понимания требований разработки, командной работы, работы в системе контроля версий, составления документации и отчетности.

На второй день практики были созданы и оценены задачи, заведены в систему управления проектами. Было проведено краткое руководство по работе в GitHub.

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

Бригада 8.

1.Студент Корнилов В. М. разработал интерфейс ПО, а также реализовал заставку, оформил проект в системе управления проектом.

2.Студентка Самофалова А. В. реализовала алгоритм сортировки слиянием на языке программирования C, настроила систему контроля версий.

3.Студент Перкин П. О. разработал функционал, отвечающий за работу с файлами, а также протестировал ПО.

Студенты проявили свои знания в предметных областях инженерных направлений, а также знания и навыки, полученные за первый год обучения в бакалавриате.

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

ЗАКЛЮЧЕНИЕ

В результате прохождения учебной практики было организовано дистанционное пространство для учебного процесса, проведено краткое обучение работы с GitHub, проведены необходимые организационные собрания и промежуточные аттестационные мероприятия.

При определении заданий учитывалась необходимость постановки групповой работы, чтобы в процессе ее решения студенты выполнили исследование требуемого к реализации алгоритма, его скоростные характеристики и требования к ресурсам, разработка и реализация корректного, «дружелюбного» интерфейса, и проверка корректности работы реализованного алгоритма с интерфейсом. В процесс выполнения этой объемной работы бакалавриата первого курса расширили познания в сфере анализа и реализации алгоритмов, разработки и построения интерфейса, а также получение навыков тестирования.

Использованные в ходе выполнения учебной практики подходы к групповому разделению задач и делегированию ролей потребовали высокой координации деятельности, особенно на этапе консолидации результатов и их анализа.

В результате прохождения практики команда магистров приобрела навыки:

- организация и руководство работой команды, вырабатывая командную стратегию для достижения поставленной цели, организация и корректировка работы команды, в том числе на основе коллегиальных решений;

- способность осуществлять эффективное управление разработкой программных средств и проектов, составления планов, распределения задач, тестирования и оценки качества программных средств.

Цели выполнения учебной практики считаем достигнутыми.

 

СПИСОК ЛИТЕРАТУРЫ

1. ГОСТ 7.32–2001 «Отчет о научно-исследовательской работе. Структура и правила оформления»;

2. ГОСТ 2.105–95 «Общие требования к текстовым документам»;

ГОСТ Р 7.0.5–2008 «Библиографическая ссылка. Общие требования и правила составления»;

3. ГОСТ 7.1–2003 «Библиографическая запись. Библиографическое описание. Общие требования и правила составления»;

4. ГОСТ 7.80–2000. «Библиографическая запись. Заголовок. Общие требования и правила составления».

5. Корячко В. П., Таганов А. И. Процессы и задачи управления проектами информационных систем. Учебное пособие [Электронный ресурс] : учебное пособие Корячко В. П., Таганов А. И. — М.: Гор. линия-Телеком, 2014. - 376 с

6. Андрианова, А.А. Алгоритмизация и программирование. Практикум [Электронный ресурс] : учебное пособие / А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова. — Электрон. дан. — Санкт-Петербург : Лань, 2019. — 240 с.

7. Обучение Git [Электронный ресурс] https://learngitbranching.js.org/

 

 

Приложение № 1

Работа с GitHub

 

Во время работы над данной практикой, бригадой бакалавров осуществлялась совместная работа в GitHub.

Алгоритм сортировки слиянием был написан Самофаловой А.В.. Проект был расположен в репозитории студента Корнилова В.М.

После написания программы, она была выгружена на удаленный репозиторий GitHub в отдельную ветку под названием main.

(См. Рисунок 4)

Рисунок 1 – ветка main

После этого, студенты Корнилов и Перкин загрузил данную программу себе на компьютер и добавил в нее работу с файлами, заставку, а также протестировали код.

Ссылка на удаленный репозиторий: https://github.com/yukicxz/practical-

Приложение № 2