Требования к выполнению работ

В курсе предусмотрены лабораторные работы и курсовой проект.

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

  • Система контроля версий (git)

  • Системы сборки на примере make

  • Разработка модульных тестов

  • Непрерывная интеграция

Цель курсовой работы — разработка законченного программного продукта. При этом важно отличать программу от программного продукта.

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

Программный продукт — программа, которую любой человек может запускать, тестировать, исправлять и развивать 1. Такая программа должна быть написана в обобщенном стиле. В частности, диапазон и вид входных данных должны быть настолько обобщенными, насколько это допускается базовым алгоритмом 2. Затем программа должна быть тщательно протестирована. Это означает, что должно быть подготовлено достаточное количество тестовых данных. Тесты должны быть зафиксированы, а их запуск автоматизирован. Наконец, развитие программы в программный продукт требует создания подробной документации.

1

Ф. Брукс — Мифический человеко-месяц

2

Пример кода, непригодного для передачи другим пользователям: FILE *dict = fopen("/home/v.pupkin/myproject/dict.txt", "r");

Общие требования

  1. Приложения в рамках лабораторных работ разрабатываются на языке C в операционной системе GNU/Linux.

  2. Исходный код оформляется в соответствии с принятыми в курсе соглашениями: Code Style

    Допускается использование других распространенных соглашений:

    Независимо от выбранных соглашений необходимо соблюдать консистентность в рамках проекта.

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

Источники

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

Основные источники, используемые в курсе:

  1. Pro Git https://git-scm.com/book/en/v2

  2. Git Reference https://git-scm.com/docs

  3. A simple git branching model https://gist.github.com/jbenet/ee6c9ac48068889b0912

  4. GNU Make Manual https://www.gnu.org/software/make/manual/

  5. Lee Copeland — A Practitioner’s Guide to Software Test Design