Курс Инженерия требований к ПО (осень 2025)
На курсе вы узнаете:
- основы теории качества программных систем, познакомитесь со стандартами ГОСТ Р ИСО/МЭК 250хх (SQuARE)
- как проводить анализ требований к продуктам с применением гибких методов, методики историй пользователей и задач, и UseCase 2.0
- познакомитесь с требованиями ГОСТ 19 в части разработки технических заданий
- основы языка моделирования UML2 и станете разбираться в продвинутых вопросах его применения
- методы предметного-ориентированного проектирования (Domain-Driven Design, DDD) и их применение для создания микросервисных приложений (MSA)
Примерный план
Неделя | Раздел | Тема |
---|---|---|
16/09 | INTRO+REQ | Введение, цели и содержание курса. Кратко о требованиях. Понятие о качестве ПО. Модели качества. Стандарты серии ГОСТ Р ИСО/МЭК 250хх |
23/09 | UML2 | UML2. Варианты использования. Сценарии. Use Case 2.0. Управление рамками системы. Заинтересованные стороны. Полезные функции (Фичи). |
30/09 | REQ | Диаграммы потоков данных DFD. Примеры. Разработка требований к продуктам. Элементы customer development. Персоны. |
07/10 | REQ | Метод JTBD. Путешествия и карта путешествий. Истории пользователей и истории задач. Процесс гибкой разработки требований. |
14/10 | REQ | Порядок разработки программ по ГОСТ 19. Структура и содержание технического задания по ГОСТ 19. |
21/10 | DDD | Моделирование в ООП. Системы типов. Абстрактные типы данных (ADT). Понятие о классах. |
28/10 | UML2 | Элементы метамодели UML2. Моделирование структуры программы в UML2. Сравнение с моделями данных сущность-связь (ER). |
04/11 | DDD | Методы объектно-ориентированного анализа. Методы именных групп и Аббота, контрольные списки. Основные понятия и приемы предметно-ориентированного проектирования (DDD). Повсеместный язык, сущности, агрегаты. Окрестности, предметные области. |
11/11 | DDD+UML2 | Моделирование сценариев в системе. Структура в динамике. Взаимодействия, кооперации, последовательности в UML2. Проектирование на основе обязанностей (метод CRC, RDD). Согласованность моделей. |
18/11 | UML2 | Моделирование динамики. Конечные автоматы и схемы состояний. Управление сложностью, пакеты и профили. |
25/11 | UML2 | Моделирование процессов и алгоритмов. Сети Петри и модели деятельности (activity). Язык действий в UML2. |
02/12 | UML2+PROC | Построение согласованных моделей. Big Picture UML2. Процесс гибкого моделирования по требованиям (на основе ICONIX+AM+DDD) |
09/12 | ARCH+MSA | Введение в микросервисную архитектуру. Ресурсы. Декомпозиция на окрестности и на сервисы через DDD. Правило Конвея. Логические и физические DFD. Диаграммы компонентов в UML2. |
16/12 | EXAM | Дифференцированный зачет, контрольная и защита проектов по курсу |
Практика предполагает решение задач на семинарах, выполнение и защиту задания по командному курсовому проекту.
Для разработчиков, системных аналитиков и будущих архитекторов программного обеспечения.
Учебный проект
Учебный проект - это ваш полигон, где вы практикуетесь в применении DDD к разработке микросервисных приложений. Заданием по проекту может быть упрощенный аналог существующей системы, или ваш собственный проект, или часть квалификационной работы.
Задание посвящено проработке требований применению DDD к предметной области, в которой проектируете систему. Прорабатываете и уточняете требования и рамки проекта. В итоге для дальнейшего моделирования с помощью Domain Driven Design нужны 3-4 вариантв использования или 5-6 историй пользователей.
Примерная таблица этапов и применяемых методов.
# | Этап | Методы и результаты | Задачи |
---|---|---|---|
1 | Анализ требований к продукту | Customer Development, JTBD, JTBD Interview, Personas, User story, Job story, Story Map, Customer Journey Map*, Value Proposition Canvas*, Jobs Map*, UI Wireframes, Product features | Предложить и описать образ продукта и решаемые задачи. Определить аудиторию и провести интервью с пользователями. Сформулировать полезные функции и ограничить его рамки. Прояснить элементарные сценарии для полезных функций. Составить словарь данных. |
2 | Разработка модели анализа | Use Case model, Use case text, Candidate classes, SIAOUT checklist, Abbot's method/Noun phrases, Entity-Relationship model | По описанию продукта разработать модель использования. Выделить кандидаты классов, построить модель предметной области в UML2 или ERD. Выписать важные требования к атрибутам качества по стандарту. |
3 | Разработка динамической модели | Responsibility-driven design, CRC, UML2 Collaborations model and implementation, UML2 Structured classes, UML2 Activity and Statechart and Interactions models, Logical Data-flow model. | Разделить сценарии по обязанностям и назначить ролям классов. Разработать модель деятельности или псевдокод для исполняемого поведения, схемы состояний или конечных автоматов для интерактивного и реактивного, модели взаимодействий или потоков данных для эмерджентного поведения. Обновить модель классов / данных. |
4 | Декомпозиция на микросервисы | Data consistency I, Ресурсы и алгоритмы / решетки типов, CRDT, Event storming, Domain-Driven Design, UML2 Components and Deployments models, Physical Data-flow model | Разделить модель предметной области на агрегаты и сформировать микросервисы. Разработать модель событий и процессов. Разработать модель компонентов в UML2 или Physical DFD. |
Результаты и оценивание проекта
Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, релевантный опыт в применении методов проектирования. Понравившиеся методы можно забрать к себе на работу или вспомнить к собеседованию.
Общие критерии оценивания приведены в методичке Критерии оценивания проектов
Задания по проекту, по возможности, выполняются на семинарах, защита проходит в виде доклада, материалы по проекту высылаются на проверку не позднее, чем за 1 неделю до даты доклада.
Если кратко, то оцениваются следующие харатеристики выполненного проекта
- Согласованность разных представлений в составе проекта между собой
- Правильность применения методов проектирования
- Полнота выполнения проекта и следование рекомендациям
- Обоснованность и целесообразность принятых проектировочных решений
- Ошибки и недочеты в применении языков моделирования
- Вклад участников в общий результат
Коллоквиум, контрольная работа и устный ответ
Коллоквиум проводится в середине курса и служит для определения дальнейшей траектории участия в курсе. При успешной сдаче коллоквиума вознкиает возможность сдавать итоговый проект по курсу вместо контрольной работы и устного ответа.
- Одна задача на анализ и моделирование
- Одна из пройденных тем по курсу по билетам для ответа устно
Итоговая контрольная работа может быть предложена тем слушателям, кто не набрал достаточно баллов для получения оценки автоматом. В составе письменной контрольной работы на лекции будут предложены примерные задания.
- Две задачи на анализ проектирование с применением REQ, UML2, ER, DFD.
- Две темы по курсу по билетам для ответа устно.
Примерные критерии оценивания
- Правильность и количество решенных задач
- Полнота и правильность ответа на вопросы по методам проектирования
- Ответы на дополнительные вопросы по теме
- Владение терминологией и методами проектирования
- Способность принимать и обосновывать проектировочные решения
- Способность находить и устранять ошибки в применении методов
Оценки по курсу
Критерии оценивания, итоговый балл
ИБ = 0,2 * (ПЗ или ЛЗ)+ 0,3 * КЛК + 0,7 * (ПРЭ или ЭКЗ)
ЛЗ + ПЗ - посещения лекций и работа на семинаре
КЛК - оценка за коллоквиум
ЭКЗ - устно-письменный экзамен в конце семестра
ПРЭ - курсовой проект
Литература
- Martina Seidl, Marion Scholz, Christian Huemer, Gerti Kappel. UML @ Classroom
- C. Larman. Applying UML and Patterns
- Vaughn Vernon. Implementing Domain-Driven Design, (любое издание)
- Sam Newman. Building Microservices
- Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra. Head First Design Patterns
- Ian Sommerville. Software Engineering 10th Ed или Roger Pressman. Software Engineering: A Practitioner's Approach 8th Ed.
- UML diagrams reference, https://www.uml-diagrams.org