Программа лекций и презентации по курсу «Введение в программную инженерию»

Темы проектов

Ниже приводятся проекты, которые могут использоваться в качестве практических работ по предмету. Существует три категории проектов:

  1. Программа«Импорт-».
  2. Общие проекты. Список общих проектов приводится ниже.
  3. Запасные проекты. Если не удалось выбрать проект из предложенных в первых двух категориях, то можно взять любой API с сайта Rapid API и сделать для него клиент. Для бакалавров предпочтительным способом является библиотека Java, построенная по разумным архитектурным принципам. Для магистрантов является допустимым минимальное консольное приложение на Python или Node.js.

Общие проекты

  1. Высоконагруженный локальный брокер сообщений фиксированной длины для систем GNU/Linux. Необходимо обслуживать одну или несколько шин для передачи сообщений. Публикация сообщения на шине подразумевает доступность этого сообщения другим процессам-подписчикам. Задача сложная, поэтому условия её реализации приравниваются к условиям программы «Импорт-», но команда не более четырёх человек. Язык реализации C++.
  2. Клиент для автоматизированного доступа к метапоисковой системе Searx. Список функционирующих копий можно получить в обновляемом JSON-файле. Необходимо производить поисковый запрос к любой копии системы с передачей параметров и парсить результат. Язык реализации Java.
  3. Клиент для автоматизированного доступа к социальной сети Mastodon .Язык реализации Java.
  4. Утилита для сравнения комплектов файлов. Требуется проверять два комплекта файлов и выводить списки различий: каких файлов нет в первом комплекте, каких во втором. Файлы необходимо сравнивать по хеш-суммам (т. е. файлы могут быть сохранены под разными именами, но если это один и тот же файл, то он считается включённым). Язык реализации Python.
  5. Распознавание QR-кодов. Библиотека и приложение на её основе должно производить сканирование QR-кода и сообщать, когда он обнаружен. Необходимо разделить библиотеку-движок и оконный интерфейс. Предполагается, что изображение поступает от внешней утилиты, команда которой задаётся пользователем. Тестироваться будет на Linux, хотя писать можно на чём угодно (хотя для Windows команду для получения изображения следует придумать самому). Обработчик QR-кодов, конечно, надо брать готовый. Язык реализации Java.
  6. Интерактивный медиаплеер для веб. Требуется сделать веб-страницу, на которой есть десять кнопок. Каждая кнопка должна проигрывать указанный музыкальный файл в некотором фрагменте. Разумно задействовать тег <audio>. Язык реализации HTML+JS.
  7. Грамматика ANTLR для музыкальных файлов в формате Lilypond. Язык реализации Javaa.
  8. Конвертер PPTX файлов в текстовые документы с использованием библиотеки Apache POI. Язык реализации Java.
  9. Разработка маркировки документов TeX для автоматизированного создания на их основе аудиокниг. Язык реализации по выбору из Node.js, Python или Java.
  10. Декларативный формат создания анимированных презентаций на основе утилиты ffmpeg. Язык реализации по выбору из Node.js, Python или Java.

Рекомендуемая литература

  1. Якобсон А., Буч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. – СПб.: Питер, 2002.
  2. Арлоу Дж., Нейштадт А. UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование, 2-е изд. – СПб.: Символ-Плюс, 2013.
  3. Ларман К. Применение UML и шаблонов проектирования. (второе издание) – М.: Вильямс, 2002. Или 3-е издание, 2019.
  4. Крачтен Ф. Введение в Rational Unified Process (второе издание) – М.: Вильямс, 2002.
  5. Поллис Г., Огастин Л., Лоу К., Мадхар Д. Разработка программных проектов: на основе Rational Unified Process (RUP) – М.: ООО «Бином-Пресс», 2005.
  6. Ауэр К., Миллер Р. Экстремальное программирование: постановка процесса. С первых шагов и до победного конца. – СПб.: Питер, 2004.
  7. Мацяшек Л.А. Анализ требований и проектирование систем. Разработка информационных систем с использованием UML. – М: Изд. Дом «Вильямс», 2002.
  8. Kniberg H. Scrum and XP from the Trenches (2nd Edition). 2015.