Введение в программную инженерию

Отдельные занятия в рамках курса доц. Кознова Д. В.

(III семестр у направлений 010300Б и 231000Б)

Системы автоматизации сборки

Задачи (вариант для cmd.exe):

  1. Сделать solution в Visual Studio на C# из двух проектов, один из которых использует другой.
  2. Выложить проект в систему контроля версий.
  3. Научиться работать с клиентом системы контроля версий из командной оболочки.
  4. Научиться собирать солюшн из командной строки.
  5. Скомбинировать 3 и 4.
  6. Научиться получать и сохранять логи взятия из репозитория и сборки.
  7. Скомбинировать 5 и 6.
  8. Сделать в командных файлах guard’ы (защиту от запуска не-главных батников, if exist, goto :EOF)
  9. Научиться удалять старый каталог с предыдущими результатами сборки, создавать новый, брать исходники туда и собирать
  10. Научиться проверять успешность сборки по захардкоженным именам библиотек.
  11. То же, но по списку из файла (освоить for)
  12. Написать или использовать готовую программу, шлющую Email, научиться использовать её из командной оболочки.
  13. Из билдера слать почту об успешности билда.
  14. При анализе успешности учитывать результаты модульного тестирования (см. раздел "Модульное тестирование").

В итоге билдер должен:

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

Билдер не должен содержать настроек в середине файлов с "логикой".

Задачи по аналитической геометрии

  1. пересекаются ли прямоугольники (стороны параллельны осям координат);
  2. пересекаются ли круги (заданы координаты центров и радиусы);
  3. лежит (с заранее оговоренным допущением) ли точка на заданной прямой (прямая задаётся координатами концов любого своего отрезка);
  4. пересекаются ли два отрезка;
  5. лежит ли точка в треугольнике;
  6. попадает ли точка в эллипс;
  7. является ли треугольник равносторонним (с заранее оговоренным допущением);
  8. является ли треугольник прямоугольным (с заранее оговоренным допущением);
  9. является ли четырёхугольник параллелограммом;
  10. является ли четырёхугольник выпуклым;
  11. пересекаются ли отрезок и окружность;
  12. задача про множества точек + GUI к ней.

Модули проекта

Проект должен состоять из следующих программных модулей:

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

Модульное тестирование

Модульные тесты, в зависимости от формулировки задания, могут требоваться или нет.

Отправка Email

Неплохой инструмент отправки почты: https://github.com/muquit/mailsend/releases

Как его использовать: https://github.com/muquit/mailsend/blob/master/doc/examples.mediawiki

Пример

mailsend -to user@some.server -from user@another.server -ssl -port 465 -auth -smtp smtp.another.server -sub "test subject" +cc +bc -v -user some_user -pass "*****************" <email_body.txt

Распределение практических заданий и результаты их проверки