Программа лекций и презентации по курсу «Введение в программную инженерию»
- Лекция 1. Введение (презентация)
- Цель и задачи программной инженерии.
- Понятия проекта, реализации проекта, методологии и метода.
- Историческая классификация методологий разработки ПО.
- Лекция 2. Унифицированный процесс (презентация)
- История Унифицированного процесса.
- Понятия варианта использования.
- Понятие архитектуры.
- Итеративность и инкрементность.
- Фазы Унифицированного процесса.
- Лекция 3. Четыре «П», требования и риски (презентация)
- Персонал, проект, продукт, процесс.
- Требования и пути их определения.
- Оценка и классификация рисков.
- Лекция 4. Варианты использования (презентация)
- Определение и назначение вариантов использования.
- Понятия актантов и ролей.
- Варианты использования в трёх моделях: вариантов использования, анализа и проектирования.
- Классы и их типы.
- Стереотипы классов и подсистемы.
- Лекция 5. Архитектура (презентация)
- Архитектурные блоки и образцы.
- Порядок разработки архитектуры.
- Входящие в архитектуру модели.
- Лекция 6. Архитектурные образцы (презентация)
- Клиент-серверная архитектура.
- Микросервисная архитектура.
- Асинхронный ввод/вывод.
- Распределённые системы.
- Одноранговая архитектура.
- Распределённые хеш-таблицы.
- Лекция 7. Реализация + тестирование (презентация)
- Модель реализации.
- Билды и итерации.
- Модель тестирования и тестовые примеры.
- Перспективные практики тестирования.
- Лекция 8. Введение в Agile, бизнес-модель (презентация)
- История гибких методологий разработки.
- Ценности и принципы Agile.
- Идея бизнес-модели заказчика.
- Построение бизнес-модели.
- Лекция 9. XP, RAD, FDD и DSDM (презентация)
- Extreme Programming.
- Rapid Application Development.
- Feature Driven Development.
- Dynamic Systems Development Method.
- Лекция 10. BDD и итерации (презентация)
- Behaviour-Driven Development.
- PlantUML и Behave.
- Правила планирования итераций.
- Лекция 11. Критические характеристики и диаграммы (презентация)
- Специализированные сферы применения программного обеспечения.
- Системы реального времени, неконтролируемое поведение и контролируемый отказ.
- Идея UML, достоинства и недостатки.
- Диаграммы UML: вариантов использования, компонентов, классов, последовательности и активности.
- Другие типы диаграмм: Ганга, IDEF0 и DFD.
- Лекция 12. Развитие стартапа (презентация)
- История зарождения технологического предпринимательства.
- Правовой статус и жизненный цикл стартапа.
- Типы финансирования и логика инвестора.
- Особенности развития научных проектов и проектов СПО.
Темы проектов
Ниже приводятся проекты, которые могут использоваться в качестве практических работ по предмету.
Существует три категории проектов:
- Программа«Импорт-».
- Общие проекты. Список общих проектов приводится ниже.
- Запасные проекты. Если не удалось выбрать проект из предложенных в первых двух категориях, то можно взять любой API с сайта Rapid API и сделать для него клиент. Для бакалавров предпочтительным способом является библиотека Java, построенная по разумным архитектурным принципам. Для магистрантов является допустимым минимальное консольное приложение на Python или Node.js.
Общие проекты
- Высоконагруженный локальный брокер сообщений фиксированной длины для систем GNU/Linux. Необходимо обслуживать одну или несколько шин для передачи сообщений. Публикация сообщения на шине подразумевает доступность этого сообщения другим процессам-подписчикам. Задача сложная, поэтому условия её реализации приравниваются к условиям программы «Импорт-», но команда не более четырёх человек. Язык реализации C++.
- Клиент для автоматизированного доступа к метапоисковой системе Searx. Список функционирующих копий можно получить в обновляемом JSON-файле. Необходимо производить поисковый запрос к любой копии системы с передачей параметров и парсить результат. Язык реализации Java.
- Клиент для автоматизированного доступа к социальной сети Mastodon .Язык реализации Java.
- Утилита для сравнения комплектов файлов. Требуется проверять два комплекта файлов и выводить списки различий: каких файлов нет в первом комплекте, каких во втором. Файлы необходимо сравнивать по хеш-суммам (т. е. файлы могут быть сохранены под разными именами, но если это один и тот же файл, то он считается включённым). Язык реализации Python.
- Распознавание QR-кодов. Библиотека и приложение на её основе должно производить сканирование QR-кода и сообщать, когда он обнаружен. Необходимо разделить библиотеку-движок и оконный интерфейс. Предполагается, что изображение поступает от внешней утилиты, команда которой задаётся пользователем. Тестироваться будет на Linux, хотя писать можно на чём угодно (хотя для Windows команду для получения изображения следует придумать самому). Обработчик QR-кодов, конечно, надо брать готовый. Язык реализации Java.
- Интерактивный медиаплеер для веб. Требуется сделать веб-страницу, на которой есть десять кнопок. Каждая кнопка должна проигрывать указанный музыкальный файл в некотором фрагменте. Разумно задействовать тег
<audio>
. Язык реализации HTML+JS.
- Грамматика ANTLR для музыкальных файлов в формате Lilypond. Язык реализации Javaa.
- Конвертер PPTX файлов в текстовые документы с использованием библиотеки Apache POI. Язык реализации Java.
- Разработка маркировки документов TeX для автоматизированного создания на их основе аудиокниг. Язык реализации по выбору из Node.js, Python или Java.
- Декларативный формат создания анимированных презентаций на основе утилиты
ffmpeg
. Язык реализации по выбору из Node.js, Python или Java.
Рекомендуемая литература
- Якобсон А., Буч Г., Рамбо Дж. Унифицированный процесс разработки программного обеспечения. – СПб.: Питер, 2002.
- Арлоу Дж., Нейштадт А. UML 2 и Унифицированный процесс. Практический объектно-ориентированный анализ и проектирование, 2-е изд. – СПб.: Символ-Плюс, 2013.
- Ларман К. Применение UML и шаблонов проектирования. (второе издание) – М.: Вильямс, 2002. Или 3-е издание, 2019.
- Крачтен Ф. Введение в Rational Unified Process (второе издание) – М.: Вильямс, 2002.
- Поллис Г., Огастин Л., Лоу К., Мадхар Д. Разработка программных проектов: на основе Rational Unified Process (RUP) – М.: ООО «Бином-Пресс», 2005.
- Ауэр К., Миллер Р. Экстремальное программирование: постановка процесса. С первых шагов и до победного конца. – СПб.: Питер, 2004.
- Мацяшек Л.А. Анализ требований и проектирование систем. Разработка информационных систем с использованием UML. – М: Изд. Дом «Вильямс», 2002.
- Kniberg H. Scrum and XP from the Trenches (2nd Edition). 2015.