|
Лабораторная работа 2: разработка программного проекта
Цель работы: Освоение основ разработки программного обеспечения через проект.
2.1. Тематика программного проекта
Необходимо выбрать тематику программного проекта и согласовать с преподавателем по практике. Реализуемая программа должна содержать набор алгоритмов, реализуемых условными и циклическими операторами.
Рекомендуемая тематика: Roguelike игры, например лабиринт с ботами.
- Шаг 1. Зарегистрировать публичный репозиторий проекта на Github.com
-
Шаг 2. создать каталог "doc/" для проектной документации и в файле "doc/README.md" разместить следующую информацию:
- Название проекта
- Описание проекта (цель, мотивация, ...)
- Перечень функциональностей проекта с использованием шаблонных фраз "Пользователь должен иметь возможность ..." и "Приложение должно предоставлять возможность".
- Шаг 3. В соответствующее задание на курсе Moodle выложить ссылку на полученный файл.
2.2. Функциональные модели программного проекта
Необходимо спроектировать поведение программы в различных ситуациях.
- Шаг 1. Для каждой функциональной возможности сделать описание сценария использования в формате пинг-понга (пользователь делает ... - приложение делает ... - пользователь ... - приложение ...).
- Шаг 2. Для каждой функциональной возможности из более чем одного действия создать диаграмму активности (UML Activity diagram, не менее 3 шт.).
- Шаг 3. Для сложных алгоритмов сделать диаграмму состояний (State Machine diagram, не менее 1 шт.) и диаграмму последовательности (Sequence diagram, не менее 1 шт.).
- Шаг 4. Загрузить в репозиторий полученные диаграммы, в файле "doc/README.md" добавить раздел с описаниями сценариев и ссылками на диаграммы.
Рекомендуемые инструменты для отрисовки диаграмм:
- Dia
- https://lucid.app/
- https://miro.com
- https://app.creately.com
- https://online.visual-paradigm.com
2.3. Структурные модели программного проекта
Необходимо спроектировать внутреннее устройство программы на основе функциональных моделей.
- Шаг 1. Сделать описание внутренней структуры приложения с помощью диаграммы классов (Class diagram).
- Шаг 2. Сделать описание используемых структур/объектов данных с помощью диаграммы объектов и/или диаграммы компонентов.
- Шаг 3. Выполнить обновление функциональных моделей при необходимости для соответствия со структурными моделями.
- Шаг 4. Загрузить в репозиторий полученные диаграммы, в файле "doc/README.md" добавить раздел с описаниями сценариев и ссылками на диаграммы.
2.4. Реализация программного проекта
Выполнить реализацию программы на основе описания, функциональных и структурных моделей.
Исходный код должен быть оформлен в соответствии с выбранным стилем кодирования и снабжен комментариями.
Необходимо загружать исходный код по мере кодирования, т.е. не должно быть для каждого файла по одному коммиту.
В файле "doc/README.md" завести секцию "Реализация" в которой отразить несоответствия полученной реализации с функциональными и структурными моделями.
2.5. Тестирование программного проекта
Необходимо составить и провести тестирование программы.
- Составить перечень тестов (шаблон документа) проверяющую правильность работы функций (позитивные тесты) и его реакцию на возможные отклонения от стандартного поведения (негативные тесты).
- Реализовать запланированые тесты. Выполнить тестирование. В случае обнаружения ошибки сформировать протокол ошибки (шаблон протокола), выполнить отладку и повторное тестирование.
- Загрузить описание и реализацию тестов в репозиторий проекта.
- Подключить автоматический запуск тестов (Github actions),
оценку покрытия кода тестами (https://coveralls.io/) и
статический анализ кода (https://sonarcloud.io).
Добавить ссылки на отчеты о тестировании и оценке покрытия в файл README.md.
Дополнительные материалы и литература
|