Курсовой проект по дисциплине «Программирование» позволяет получить, закрепить и продемонстрировать навыки создания и разработки программного продукта, позволяющего решать определенные задачи: планирование работ, анализ функциональных требований к проекту, составление технического задания, проектирование программного комплекса, разработка программы, ее тестирование методами черного и белого ящиков и документирование разработанного программного продукта.
Специалисту в области программной инженерии необходимо обладать навыками работы в команде. Так как разработка программного продукта делится на несколько этапов (планирование, анализ, разработка с учетом выбора технологий, тестирование и документирование), то курсовой проект выполняется в команде совместно с другими студентами. Каждый участник команды берет на себя определенный этап создания проекта. Данные виды деятельности соответствуют перечню компетенций, которые должны получить специалисты в области программной инженерии по окончании учебного заведения [1].
Рассмотрим более подробно каждый этап разработки курсового проекта. Для примера темой работы выбрана разработка компьютерных игр, поскольку анализ функциональных требований к ним наиболее сложен, а разработка позволяет в полном объеме продемонстрировать навыки и умения в программировании и алгоритмизации.
Планирование
Первый этап разработки. Включает в себя распределение ролей в команде и сроки на каждую стадию разработки в зависимости от объема, специфики поставленной в курсовом проекте задачи, а также от опыта, возможностей и компетенции участников команды. Некачественно выполненное планирование может оказать негативное воздействие на качество разрабатываемого продукта и на условия его разработки.
Анализ
На данную стадию разработки обычно отводится от 10 до 15 % от всего времени разработки. Явные требования позволяют определить функциональность системы еще до начала программирования. Кроме того, качественно составленные требования позволяют свести к минимуму изменения системы после начала разработки. Даже если имеется правильное представление общей проблемы, не имея грамотно определенных требований, можно упустить из виду ее специфические аспекты.
Техническое задание — это документ на проектирование технического продукта. Он устанавливает основное назначение разрабатываемого объекта, его технические и тактико-технические характеристики, показатели качества и технико-экономические требования, предписание по выполнению необходимых стадий создания документации и ее состав, а также специальные требования. Основное назначение технического задания — установление взаимопонимания между постановщиком задачи, лидером и разработчиками проекта. Помимо этого, техническое задание лежит в основе определения временных и материальных затрат на разработку [2].
В техническом задании для игрового проекта при написании курсовой очень важно уточнять правила игры, все числовые характеристики, особенности сюжета, если таковой присутствует, расположение игровых объектов на уровнях и их взаимодействие, взаимодействие пользователя с компьютером и т. д. В общем — все, что, так или иначе, будет оказывать влияние на игровой процесс и индивидуализировать игровой проект.
Проектирование
Проектирование, или моделирование, — процесс определения архитектуры, компонентов, интерфейсов и других характеристик программного продукта или его части. Как правило, на проектирование отводится от 10 до 15 % от всего времени разработки. Цель проектирования — продемонстрировать, как каждый процесс преобразует свои входные данные в выходные, а также выявить отношения между этими процессами. При написании курсовой работы студенты используют следующие средства: DFD-диаграммы и UML [3].
DFD-диаграммы являются декомпозитными, т. е. детализируют моделируемый процесс и отражают его внутреннюю структуру, путем декомпозиции на более элементарные процессы, а также отражают процессы и потоки данных, циркулирующие между ними.
UML — унифицированный язык моделирования, представляет собой графическую нотацию, которая предназначена для моделирования, проектирования и описания всех процессов, протекающих в процессе разработки. UML-диаграммы различаются по типам и предназначены для моделирования различных аспектов разработки. Все диаграммы условно делятся на поведенческие и структурные. Поведенческие диаграммы — отображают процессы, протекающие в моделируемой среде. Структурные диаграммы — отображают элементы системы. При этом один и тот же тип диаграммы может использоваться как для моделирования бизнес-процессов, так и непосредственно для проектирования архитектуры.
Пример DFD-диаграммы курсового проекта представлен на рис.1.
Рис. 1. DFD-диаграмма курсового проекта
Разработка
Здесь происходит непосредственная работа с кодом с опорой на планирование в процессе подготовки. Описывать особенности и тонкости самого трудоемкого и сложного этапа не стоит, достаточно сказать, что успех реализации любого проекта напрямую зависит от качества предварительного анализа. Кодирование может происходить параллельно со следующим этапом разработки — тестированием, что помогает вносить изменения непосредственно по ходу написания кода. Уровень и эффективность взаимодействия всех элементов, задействованных для выполнения сформулированных в курсовой работе задач, на текущем этапе является самым важным.
Тестирование
Цель этого этапа — выявить и исправить ошибки в работе программы, ее несоответствия техническому заданию. Для этого тестировщику необходимо приготовить тесты, которые представляют собой конечные наборы входных данных или ситуаций, в которых могут встретиться неполадки. Составление тестов желательно начинать одновременно с началом разработки. После этого можно приступать к самому процессу тестирования. В результате будет получен отчет, в который записывают ожидаемый результат и действительно полученный при запуске программы. Тестирование разделяют на функциональное (черный ящик) и структурное (белый ящик) [4]. При функциональном тестировании у тестировщика есть доступ только к интерфейсу пользователя. При структурном — к исходному коду.
Тестирование черным ящиком подразумевает проверку всех функциональных требований, заявленных в техническом задании. Фрагмент таблицы с результами тестирования представлен на рис.2.
Рис. 2. Тестирование черным ящиком
Тестирование белым ящиком выполняется на основе составления тестовых наборов для прохождения всех путей тестируемого фрагмента программы на основе потокового графа (см. рис. 3)
Рис. 3. Потоковый граф функции программы
Выбор игры в качестве курсового проекта вносит свои особенности в процесс тестирования. Задача усложняется по сравнению с такими программами как калькулятор и другими математическими проектами, в которых легко создать тест на пограничные значения и проверить значения, полученные при работе программы на правильность. Цель игры состоит не в выполнении какой-то конкретной функции, а в предоставлении увлекательного досуга для пользователя. Для этого важно быстродействие и бесперебойная работа системы, поэтому одной из стратегий тестирования является создание ситуации, которая потребует нагрузки на систему. Производить тест можно и по субъективным параметрам, таким как баланс игры. Тестирование помогает повысить надежность программы и ее качество.
Документирование
Заключительный этап создания курсового проекта. Он состоит в обобщении всей проделанной работы и оформления ее в виде отчета. Документацию можно разделить на внутреннюю и внешнюю. Внутренняя документация содержит в себе описание всех процессов создания ПО. Она недоступна пользователю. Внешняя документация представляет собой руководство пользователя. Для игрового проекта оно может включать правила игры, горячие клавиши и управление, помощь при ошибках.
Выводы
Подводя итоги, можно сделать выводы о том, что написание курсового проекта — сложный и трудоемкий процесс, требующий времени, сил и слаженной работы в команде. При написании курсового проекта студент, принимающий участие в различных этапах разработки программного комплекса, начинает лучше понимать, как на самом деле происходит процесс разработки ПО в IT — компаниях.
Работа в команде позволяет получить навыки групповой разработки программного обеспечения, развить лидерские качества, а также повысить ответственное отношения к выполняемым задачам.
Литература:
- ФГОС ВО по направлению подготовки 09.03.04 Программная инженерия.
- ГОСТ 19.201–78 Техническое задание, требования к содержанию и оформлению.
- Иванов К. К. Проектирование информационных систем // Молодой ученый. — 2017. — № 19. — С. 22–24. — URL https://moluch.ru/archive/153/43309/ (дата обращения: 03.01.2019).
- Кучманова Е. Г., Воронова С. В., Дмитренко Ю. М., Маслова И. В., Карпова И. Н. Тестирование как одна из форм технологии оценивания планируемых результатов [Текст] // Аспекты и тенденции педагогической науки: материалы I Междунар. науч. конф. (г. Санкт-Петербург, декабрь 2016 г.). — СПб.: Свое издательство, 2016. — С. 121–123. — URL https://moluch.ru/conf/ped/archive/209/11358/ (дата обращения: 03.01.2019).