Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pps-new [2021/08/30 16:58] user |
pps-new [2025/09/15 11:27] (current) user old revision restored (2025/09/02 08:59) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Курс Проектирование программных систем (осень | + | ====== Курс Проектирование программных систем (осень |
- | На курсе вы узнаете как использовать язык моделирования UML2 в разработке распределенных приложений в микросервисной архитектуре (MSA) с применением метода предметно-ориентированного проектирования (Domain-Driven Design). | + | **Обновлено |
- | А также, как анализировать и проверять требования, | + | На курсе вы узнаете: |
- | Практика предполагает выполнение и защиту двух заданий по командному курсовому проекту. | + | - как проводить анализ требований с применением гибких методов и UseCase 2.0, основы разработки технических заданий |
+ | - основы языка моделирования UML2 и станете разбираться в продвинутых вопросах его применения | ||
+ | - методы предметного-ориентированного проектирования (Domain-Driven Design, DDD) и их применение для создания микросервисных приложений (MSA) | ||
+ | - фундаментальные методы разработки архитектуры программных систем, | ||
+ | - паттерны и приемы разработки облачных приложений (cloud-native applications), | ||
+ | |||
+ | |||
+ | Практика предполагает | ||
Для разработчиков, | Для разработчиков, | ||
+ | **Содержание** | ||
+ | |||
+ | * [[# | ||
+ | * [[# | ||
+ | * [[# | ||
+ | * [[# | ||
+ | * [[# | ||
+ | * [[# | ||
===== Примерный план ===== | ===== Примерный план ===== | ||
^ Неделя ^ Раздел ^ Тема ^ | ^ Неделя ^ Раздел ^ Тема ^ | ||
- | | 01/09 | INTRO+REQ | Введение | + | | 04/09 | INTRO+REQ | Введение, |
- | | 08/09 | DDD | Объектно-ориентированное моделирование. Системы типов. Абстрактные типы данных (ADT). Понятие о классах. Статическое представление | + | | 11/09 | REQ | Потоки данных DFD. Разработка требований к продуктам. Элементы customer development. Персоны. Метод JTBD. Путешествия. Истории пользователей и истории задач. Процесс разработки требований. | |
- | | 15/09 | DDD | Выделение классов и построение моделей | + | | | REQ | Вариативная тема: Структура и содержание технического задания по ГОСТ 19. | |
- | | 22/09 | DDD+UML2 | Моделирование | + | | 18/09 | DDD+UML2 | Моделирование |
- | | 29/09 | UML2 | Динамическое представление | + | | 25/09 | DDD | Методы объектно-ориентированного анализа. |
- | | 06/10 | UML2 | Динамическое представление модели. Схемы состояний. Представление деятельности. | + | | 02/10 | DDD+UML2 | Моделирование |
- | | 13/10 | UML2+PROC | Построение согласованных моделей. Big Picture UML2. Процесс гибкого моделирования по требованиям (на основе ICONIX+AM+DDD) | | + | | 09/10 | UML2 | Моделирование динамики. Конечные автоматы и схемы состояний. Управление сложностью, пакеты |
- | | 20/10 | ARCH | Методы структурного проектирования | + | | 16/10 | UML2 | Моделирование процессов и алгоритмов. Сети Петри и модели деятельности |
- | | 27/10 | ARCH+UML2 | Функциональная декомпозиция. Потоки данных DFD. UML 2. Диаграммы компонентов и размещения | | + | | 23/10 | UML2+PROC | Построение согласованных моделей. Big Picture UML2. Процесс гибкого моделирования по требованиям (на основе ICONIX+AM+DDD) | |
- | | 03/11 | MSA | Введение в микросервисную архитектуру. Ресурсы. Распределенные системы. Декомпозиция на окрестности и на сервисы. Гексагональная архитектура. Паттерны API и коммуникаций. Представление на диаграмме компонентов. | | + | | 30/10 | EXAM | **Коллоквиум. Сдача теоретического минимума по моделированию и анализу требований.** | |
- | | 10/11 | MSA | Паттерны, | + | | 06/11 | ARCH | Методы структурного проектирования, метрики связности |
- | | 17/11 | MSA | Объектно-ориентированное | + | | 13/11 | ARCH+UML2 | Введение в микросервисную архитектуру. Ресурсы. Решетки типов. Задача совместимости. Декомпозиция |
- | | 24/11 | ARCH+MSA | Измерения в проектировании. Метрики сложности программ, | + | | 20/11 | MSA | Синхронизация и согласованность данных в распределенных системах. Модели вычислений и алгоритмы согласования. Паттерны SAGA и 2PC. | |
- | | 01/12 | MSA+PROC | + | | 27/11 | MSA | Приемы и паттерны объектно-ориентированного проектирование для облачных приложений. Паттерны API и коммуникаций. Представление на диаграмме компонентов. | |
- | | 08/12 | EXAM | Контрольная работа по курсу | | + | | 04/12 | MSA | Паттерны, |
+ | | 11/12 | MSA+DATA | Проектирование данных. Реляционная, размерностные, нереляционные модели. Применение | ||
+ | | | ARCH | Вариативная | ||
+ | | | ||
+ | | 18/12 | EXAM | **Дифференцированный зачет, контрольная | ||
Line 36: | Line 55: | ||
Выполнение учебного проекта по интересной теме позволит упорядочить знания и умения в проектировании и разработке ПО, жизненно необходимые для старших разработчиков, | Выполнение учебного проекта по интересной теме позволит упорядочить знания и умения в проектировании и разработке ПО, жизненно необходимые для старших разработчиков, | ||
+ | |||
+ | Примерная таблица этапов проекта и применяемых методов проектирования. | ||
+ | |||
+ | ^# | ||
+ | | 1 | Анализ требований к продукту | Customer Development, | ||
+ | | 2 | Разработка модели анализа | Use Case model, Use case text, Candidate classes, SIAOUT checklist, Abbot' | ||
+ | | 3 | Разработка динамической модели | Responsibility-driven design, CRC, UML2 Collaborations model and implementation, | ||
+ | | 4 | Декомпозиция на микросервисы | Data consistency I, Ресурсы и алгоритмы / решетки типов, CRDT, Event storming, Domain-Driven Design, UML2 Components and Deployments models, Physical Data-flow model | Разделить модель предметной области на агрегаты и сформировать микросервисы. Разработать модель событий и процессов. Разработать модель компонентов в UML2 или Physical DFD. Разработать модель размещения | | ||
+ | | 5 | Техническое проектирование | Microservices applications, | ||
+ | | 6 | Проектирование данных и прототип | Polyglot persistence, | ||
==== Задание 1 ===== | ==== Задание 1 ===== | ||
Первое задание посвящено проработке требований применению DDD к предметной области, | Первое задание посвящено проработке требований применению DDD к предметной области, | ||
+ | |||
+ | В таблице выше это задание включает этапы 1-3. | ||
Что можно будет освоить: | Что можно будет освоить: | ||
Line 49: | Line 80: | ||
В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, | В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, | ||
+ | |||
+ | В таблице выше это задание включает этапы 4-6. | ||
Что можно будет освоить: | Что можно будет освоить: | ||
Line 57: | Line 90: | ||
- | ==== Результаты проекта ==== | + | ==== Результаты |
Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, | Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, | ||
- | Задания по проекту выполняются на семинарах, | + | Общие критерии оценивания приведены в методичке {{uml-verification-proc.pdf|Критерии оценивания проектов}} |
- | * согласованность | + | |
- | * правильность применения | + | Задания по проекту, по возможности, |
- | * вклад участников | + | |
+ | Если кратко, | ||
+ | * Согласованность | ||
+ | * Правильность применения | ||
+ | * Полнота выполнения проекта и следование рекомендациям | ||
+ | * Обоснованность | ||
+ | * Ошибки и недочеты | ||
+ | * Вклад участников в общий результат | ||
==== Примеры тем проектов ==== | ==== Примеры тем проектов ==== | ||
Line 80: | Line 120: | ||
|8.| [[design: | |8.| [[design: | ||
- | **Использование проектов инновационного практикума** | ||
- | Можно по согласованию с семинаристом и ментором проекта инновационного практикума. | ||
- | См. также [[design: | + | ===== Коллоквиум, контрольная работа и устный ответ ===== |
- | ===== Контрольная работа | + | Коллоквиум проводится в середине курса и служит для |
+ | - Одна задача на анализ и проектирование | ||
+ | - Одна из пройденных тем по курсу по билетам для ответа устно | ||
- | Для закрепления материала | + | Контрольная работа при сдаче дифференцированного зачета может быть |
- | - Тест на UML, вопросы похожи на те, что в экзамене OCUP-Fundamental. (см. google.com/ | + | - Две задачи на анализ |
- | - Задача на проектирование с применением UML2, ER, DFD. | + | - Две темы |
- | - Вопросы по методам проектирования. | + | |
- | ===== Формирование оценки по курсу ===== | + | Примерные критерии |
+ | |||
+ | * Правильность и количество решенных задач | ||
+ | * Полнота и правильность ответа на вопросы по методам проектирования | ||
+ | * Ответы на дополнительные вопросы по теме | ||
+ | * Владение терминологией и методами проектирования | ||
+ | * Способность принимать и обосновывать проектировочные решения | ||
+ | * Способность находить и устранять ошибки в применении методов | ||
+ | ===== Оценки по курсу ===== | ||
Критерии оценивания, | Критерии оценивания, | ||
- | ИБ = 0,2 * ПЗ + 0,3 * ПР + 0,5 * КЗ + 0,25 * КР | + | ИБ = 0,2 * (ПЗ или ЛЗ)+ 0,3 * КЛК |
+ | |||
+ | ЛЗ + ПЗ - посещения лекций и работа на семинаре | ||
- | ПЗ - посещения лекций и семинаров (допускается 2 пропуска) | + | КЛК |
- | ПР - работа на семинарах (активность на занятиях) | + | ЭКЗ |
- | КЗ - оба задания | + | ПРЭ |
- | КР - контрольная работа | ||
===== Литература ===== | ===== Литература ===== | ||
+ | - Martina Seidl, Marion Scholz, Christian Huemer, Gerti Kappel. UML @ Classroom | ||
+ | - C. Larman. Applying UML and Patterns | ||
- Vaughn Vernon. Implementing Domain-Driven Design, (любое издание) | - Vaughn Vernon. Implementing Domain-Driven Design, (любое издание) | ||
- Sam Newman. Building Microservices | - Sam Newman. Building Microservices | ||
Line 117: | Line 167: | ||
- [[pps-book|UML. Сборник задач]] | - [[pps-book|UML. Сборник задач]] | ||
- | ===== Инструменты моделирования | + | ==== Инструменты моделирования ==== |
**Modelio Community** | **Modelio Community** | ||
Line 141: | Line 191: | ||
При выборе инструмента для моделирования обратите внимание на удобство UI, поддержку стандартов UML2 и др, функций экспорта и импорта, | При выборе инструмента для моделирования обратите внимание на удобство UI, поддержку стандартов UML2 и др, функций экспорта и импорта, | ||
- | ===== Еще релевантные источники и дополнительные ссылки | + | ==== Еще релевантные источники и дополнительные ссылки ==== |
Дополнительная литература: | Дополнительная литература: | ||
Line 195: | Line 245: | ||
**Хританков Антон Сергеевич**, | **Хританков Антон Сергеевич**, | ||
- | **Межуев Игорь Юрьевич**, | + | < |
+ | </ | ||
- | **Андрианов Андрей Иванович**, ведет | + | В прошлом семинары |
+ | **Межуев Игорь Юрьевич** | ||
+ | |||
+ | **Андрианов Андрей Иванович** | ||
- | В прошлом семинары по курсу вели | ||
**Ахтямов Павел Ибрагимович** | **Ахтямов Павел Ибрагимович** |