(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Проекты | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация (English)

Лабораторная работа 2: разработка программного проекта

Цель работы: Освоение основ разработки программного обеспечения через проект.

2.1. Тематика программного проекта

Необходимо выбрать тематику программного проекта и согласовать с преподавателем по практике. Реализуемая программа должна содержать набор алгоритмов, реализуемых условными и циклическими операторами. Рекомендуемая тематика: Roguelike игры, например лабиринт с ботами.
  1. Шаг 1. Зарегистрировать публичный репозиторий проекта на Github.com
  2. Шаг 2. создать каталог "doc/" для проектной документации и в файле "doc/README.md" разместить следующую информацию:
    • Название проекта
    • Описание проекта (цель, мотивация, ...)
    • Перечень функциональностей проекта с использованием шаблонных фраз "Пользователь должен иметь возможность ..." и "Приложение должно предоставлять возможность".
  3. Шаг 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.

Дополнительные материалы и литература