====== Курс Инженерия требований к ПО (осень 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. | ==== Результаты и оценивание проекта ==== Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, релевантный опыт в применении методов проектирования. Понравившиеся методы можно забрать к себе на работу или вспомнить к собеседованию. Общие критерии оценивания приведены в методичке {{/uml-verification-proc.pdf|Критерии оценивания проектов}} Задания по проекту, по возможности, выполняются на семинарах, защита проходит в виде доклада, материалы по проекту высылаются на проверку не позднее, чем за 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 - [[pps-book|UML. Сборник задач]]