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/09/20 09:32] user |
pps-new [2024/10/20 13:55] (current) user |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Курс Проектирование программных систем (осень | + | ====== Курс Проектирование программных систем (осень |
+ | |||
+ | **Обновлено 17.11.2023** | ||
На курсе вы узнаете как использовать язык моделирования UML2 в разработке распределенных приложений в микросервисной архитектуре (MSA) с применением метода предметно-ориентированного проектирования (Domain-Driven Design). | На курсе вы узнаете как использовать язык моделирования UML2 в разработке распределенных приложений в микросервисной архитектуре (MSA) с применением метода предметно-ориентированного проектирования (Domain-Driven Design). | ||
Line 21: | Line 23: | ||
^ Неделя ^ Раздел ^ Тема ^ | ^ Неделя ^ Раздел ^ Тема ^ | ||
- | | 01/09 | INTRO+REQ | Введение в курс (качество ПО, цели курса). Кратко о требованиях. Сценарии. Фичи. Варианты использования (динамич. представл.) | | + | | 07/09 | INTRO+REQ | Введение в курс (качество ПО, цели курса). Кратко о требованиях. Сценарии. Фичи. Варианты использования (динамич. представл.) | |
- | | 08/09 | DDD | Объектно-ориентированное моделирование. Системы типов. Абстрактные типы данных (ADT). Понятие о классах. Статическое представление модели UML2. Сравнение с моделями данных ER | | + | | 15/09 | REQ | Потоки данных DFD. Разработка требований к продуктам. Элементы customer development. Персоны. Метод JTBD. Путешествия. Истории пользователей и истории задач. Процесс разработки требований. | |
- | | 15/09 | DDD | Выделение классов и построение моделей в Методы именных групп и Аббота, | + | | 22/09 | DDD+UML2 | Объектно-ориентированное моделирование. Системы типов. Абстрактные типы данных (ADT). Понятие о классах. Статическое представление модели UML2. Сравнение с моделями данных ER | |
- | | 22/09 | DDD+UML2 | Моделирование поведения. Согласованность моделей. Проектирование на основе обязанностей (метод CRC, RDD). | | + | | 29/09 | DDD | Выделение классов и построение моделей в Методы именных групп и Аббота, |
- | | 29/09 | UML2 | Динамическое представление модели (кооперации, | + | | 06/10 | DDD+UML2 | Моделирование поведения. Согласованность моделей. Проектирование на основе обязанностей (метод CRC, RDD). | |
- | | 06/10 | UML2 | Динамическое представление модели. Схемы состояний. Представление деятельности. Action Language | | + | | 13/10 | UML2 | Динамическое представление модели (кооперации, |
- | | 13/10 | UML2+PROC | Построение согласованных моделей. Big Picture UML2. Процесс гибкого моделирования по требованиям (на основе ICONIX+AM+DDD) | | + | | 20/10 | UML2 | Динамическое представление модели. Схемы состояний. Представление деятельности. Action Language | |
- | | 20/10 | ARCH | Методы структурного проектирования (история, | + | | 27/10 | UML2+PROC | Построение согласованных моделей. Big Picture UML2. Процесс гибкого моделирования по требованиям (на основе ICONIX+AM+DDD) | |
- | | 27/10 | ARCH+UML2 | Функциональная декомпозиция. Потоки данных DFD. UML 2. Диаграммы компонентов и размещения | | + | | 02/11 | ARCH | Методы структурного проектирования (история, |
- | | 03/11 | MSA | Введение в микросервисную архитектуру. Ресурсы. Распределенные системы. Декомпозиция на окрестности и на сервисы. Гексагональная архитектура. Паттерны API и коммуникаций. Представление на диаграмме компонентов. | | + | | 09/11 | ARCH+UML2 | Функциональная декомпозиция. UML 2. Диаграммы компонентов и размещения | |
- | | 10/11 | MSA | Паттерны, | + | | 16/11 | MSA | Введение в микросервисную архитектуру. Ресурсы. Распределенные системы. Декомпозиция на окрестности и на сервисы. Гексагональная архитектура. Паттерны API и коммуникаций. Представление на диаграмме компонентов. | |
- | | 17/11 | MSA | Объектно-ориентированное проектирование. Применение паттернов проектирования. | | + | | 23/11 | MSA | Паттерны, |
- | | 24/11 | ARCH+MSA | Измерения в проектировании. Метрики сложности программ, | + | | 30/11 | MSA | Объектно-ориентированное проектирование. Применение паттернов проектирования. | |
- | | 01/12 | MSA+PROC | + | | 07/12 | MSA+DATA | Проектирование данных. Реляционная, |
- | | 08/12 | EXAM | Контрольная работа | + | | 14/12 | ARCH+MSA | Измерения в проектировании. Метрики сложности программ, |
+ | | 21/12 | EXAM | Защита проектов по курсу | | ||
Line 44: | Line 47: | ||
Выполнение учебного проекта по интересной теме позволит упорядочить знания и умения в проектировании и разработке ПО, жизненно необходимые для старших разработчиков, | Выполнение учебного проекта по интересной теме позволит упорядочить знания и умения в проектировании и разработке ПО, жизненно необходимые для старших разработчиков, | ||
+ | |||
+ | Примерная таблица этапов проекта и применяемых методов проектирования. | ||
+ | |||
+ | ^# | ||
+ | | 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 57: | Line 72: | ||
В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, | В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, | ||
+ | |||
+ | В таблице выше это задание включает этапы 4-6. | ||
Что можно будет освоить: | Что можно будет освоить: | ||
Line 65: | Line 82: | ||
- | ==== Результаты проекта ==== | + | ==== Результаты |
Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, | Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, | ||
- | Задания по проекту выполняются на семинарах, | + | Общие критерии оценивания приведены в методичке {{uml-verification-proc.pdf|Критерии оценивания проектов}} |
- | * согласованность | + | |
- | * правильность применения | + | Задания по проекту, по возможности, |
- | * вклад участников | + | |
+ | Если кратко, | ||
+ | * Согласованность | ||
+ | * Правильность применения | ||
+ | * Полнота выполнения проекта и следование рекомендациям | ||
+ | * Обоснованность | ||
+ | * Ошибки и недочеты | ||
+ | * Вклад участников в общий результат | ||
==== Примеры тем проектов ==== | ==== Примеры тем проектов ==== | ||
Line 94: | Line 118: | ||
См. также [[design: | См. также [[design: | ||
- | ===== Контрольная работа ===== | + | ===== Контрольная работа |
- | Для закрепления материала | + | Контрольная работа может быть |
- | - Тест на UML, вопросы похожи на те, что в экзамене | + | - Задача на проектирование с применением UML2, ER, DFD, MSA, GoF, SOLID. |
- | | + | - Вопросы по методам проектирования по билетам для |
- | - Вопросы по методам проектирования. | + | |
+ | Примерные критерии оценивания | ||
+ | |||
+ | | ||
+ | * Полнота и правильность ответа на вопросы по методам | ||
+ | * Ответы на дополнительные вопросы по теме | ||
+ | * Владение терминологией и методами проектирования | ||
+ | * Способность принимать и обосновывать проектировочные решения | ||
+ | * Способность находить и устранять ошибки в применении методов | ||
===== Оценки по курсу ===== | ===== Оценки по курсу ===== | ||
Line 105: | Line 137: | ||
Критерии оценивания, | Критерии оценивания, | ||
- | ИБ = 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 202: | Line 237: | ||
**Хританков Антон Сергеевич**, | **Хританков Антон Сергеевич**, | ||
- | |||
- | **Межуев Игорь Юрьевич**, | ||
- | |||
- | **Андрианов Андрей Иванович**, | ||
< | < | ||
</ | </ | ||
+ | |||
В прошлом семинары по курсу вели | В прошлом семинары по курсу вели | ||
+ | |||
+ | **Межуев Игорь Юрьевич** | ||
+ | |||
+ | **Андрианов Андрей Иванович** | ||
+ | |||
**Ахтямов Павел Ибрагимович** | **Ахтямов Павел Ибрагимович** |