Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pps-new [2021/08/30 17:12]
user
pps-new [2023/12/08 05:00] (current)
user [Примерный план]
Line 1: Line 1:
-====== Курс Проектирование программных систем (осень 2021) ====== +====== Курс Проектирование программных систем (осень 2023) ====== 
-<html> + 
-<style> +**Обновлено 17.11.2023**
-div.table-responsive { +
-    width: 80%; +
-+
-</style> +
-</html>+
  
 На курсе вы узнаете как использовать язык моделирования UML2 в разработке распределенных приложений в микросервисной архитектуре (MSA) с применением метода предметно-ориентированного проектирования (Domain-Driven Design).  На курсе вы узнаете как использовать язык моделирования UML2 в разработке распределенных приложений в микросервисной архитектуре (MSA) с применением метода предметно-ориентированного проектирования (Domain-Driven Design). 
Line 28: 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 | Выделение классов и построение моделей в Методы именных групп и Аббота, контрольные списки. Переход к статической модели UML. Повсеместный язык, сущности, агрегаты. Окрестности, предметные области. | +| 22/09 | DDD+UML2 | Объектно-ориентированное моделирование. Системы типов. Абстрактные типы данных (ADT). Понятие о классах. Статическое представление модели UML2. Сравнение с моделями данных ER | 
-22/09 | DDD+UML2 | Моделирование поведения. Согласованность моделей. Проектирование на основе обязанностей (метод CRC, RDD). |  +29/09 | DDD | Выделение классов и построение моделей в Методы именных групп и Аббота, контрольные списки. Переход к статической модели UML. Повсеместный язык, сущности, агрегаты. Окрестности, предметные области. | 
-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 | Паттерны, принципы SOLID в реализации микросервисов. Фреймворки. | +16/11 | MSA | Введение в микросервисную архитектуру. Ресурсы. Распределенные системы. Декомпозиция на окрестности и на сервисы. Гексагональная архитектура. Паттерны API и коммуникаций. Представление на диаграмме компонентов. | 
-17/11 | MSA | Объектно-ориентированное проектирование. Применение паттернов проектирования. | +23/11 | MSA | Паттерны, принципы SOLID в реализации микросервисов. Фреймворки. | 
-24/11 | ARCH+MSA | Измерения в проектировании. Метрики сложности программ, оценка качества дизайна для ООП, для MSA | +30/11 | MSA | Объектно-ориентированное проектирование. Применение паттернов проектирования. | 
-01/12 | MSA+PROC Процесс продуктовой разработки от потребности к дизайну REQ+DDD+MSA. Повторение и подготовка к контрольной работе. | +07/12 | MSA+DATA | Проектирование данных. Реляционная, размерностные, нереляционные модели. Применение для MSA | 
-| 08/12 | EXAM | Контрольная работа по курсу |+| 14/12 | ARCH+MSA | Измерения в проектировании. Метрики сложности программ, оценка качества дизайна для ООП, для MSA | 
 +21/12 | EXAM Защита проектов по курсу |
  
  
Line 51: Line 47:
  
 Выполнение учебного проекта по интересной теме позволит упорядочить знания и умения в проектировании и разработке ПО, жизненно необходимые для старших разработчиков, тим лидов и руководителей проектов. Выполнение учебного проекта по интересной теме позволит упорядочить знания и умения в проектировании и разработке ПО, жизненно необходимые для старших разработчиков, тим лидов и руководителей проектов.
 +
 +Примерная таблица этапов проекта и применяемых методов проектирования.
 +
 +^#^Этап^Методы и результаты^Задачи^
 +| 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. Разработать модель размещения |
 +| 5 | Техническое проектирование | Microservices applications, Reference architecture, Technology stacks, RESTful API, HTTP(S)/URL/HATEOAS, API Design patterns | Выбрать и обосновать эталонную архитектуру для приложения. Подобрать библиотеки и каркасы, инструменты разработки, сравнить и обосновать выбор. Разработать API сервисов применив RESTful API и паттерны проектирования API. Представить в виде OpenAPIv3 схемы. |
 +| 6 | Проектирование данных и прототип | Polyglot persistence, Relational schema, NoSQL, Data consistency II: Saga and CRDT and 2PC, Develop prototype with source code, SOLID and GoF patterns, MSA Metrics | Перейти от логической модели к физической схеме хранения данных. Разработать модели процессов взаимодействия микросервисов. Реализовать прототип системы в коде и автоматические интеграционные тесты к нему. Применить и обосновать приципы SOLID или GoF паттерны. Посчитать метрики сложности MSA |
  
 ==== Задание 1 ===== ==== Задание 1 =====
  
 Первое задание посвящено проработке требований применению DDD к предметной области, в которой проектируете систему. Прорабатываете и уточняете требования и рамки проекта. В итоге для дальнейшего моделирования с помощью Domain Driven Design нужны 3-4 вариантв использования или 5-6 историй пользователей. Первое задание посвящено проработке требований применению DDD к предметной области, в которой проектируете систему. Прорабатываете и уточняете требования и рамки проекта. В итоге для дальнейшего моделирования с помощью Domain Driven Design нужны 3-4 вариантв использования или 5-6 историй пользователей.
 +
 +В таблице выше это задание включает этапы 1-3.
  
 Что можно будет освоить: Что можно будет освоить:
Line 64: Line 72:
  
 В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, применить паттерны ООП для реализации микросервисов. В результате у вас получится модель реализации (design model) микросервисного приложения, реализующего требования из первого задания. В проекте нужно спроектировать 3-5 связанных микросервисов, совместно решающих задачи первого задания. В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, применить паттерны ООП для реализации микросервисов. В результате у вас получится модель реализации (design model) микросервисного приложения, реализующего требования из первого задания. В проекте нужно спроектировать 3-5 связанных микросервисов, совместно решающих задачи первого задания.
 +
 +В таблице выше это задание включает этапы 4-6.
  
 Что можно будет освоить: Что можно будет освоить:
Line 72: Line 82:
  
  
-==== Результаты проекта ====+==== Результаты и оценивание проекта ====
  
 Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, релевантный опыт в применении методов проектирования. Понравившиеся методы можно забрать к себе на работу или вспомнить к собеседованию. Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, релевантный опыт в применении методов проектирования. Понравившиеся методы можно забрать к себе на работу или вспомнить к собеседованию.
  
-Задания по проекту выполняются на семинарах, защита проходит в виде доклада. Оценивается: +Общие критерии оценивания приведены в методичке {{uml-verification-proc.pdf|Критерии оценивания проектов}} 
-  * согласованность и непротиворечивость требований и модели реализации + 
-  * правильность применения и понимание изученных методовобоснованность решения +Задания по проекту, по возможности, выполняются на семинарах, защита проходит в виде доклада, материалы по проекту высылаются на проверку не позднее, чем за 1 неделю до даты доклада.  
-  * вклад участников проекта в обший результат+ 
 +Если кратко, то оцениваются следующие харатеристики выполненного проекта 
 +  * Согласованность разных представлений в составе проекта между собой 
 +  * Правильность применения методов проектирования 
 +  * Полнота выполнения проекта и следование рекомендациям 
 +  * Обоснованность и целесообразность принятых проектировочных решений 
 +  * Ошибки и недочеты в применении языков моделирования 
 +  * Вклад участников в общий результат
  
 ==== Примеры тем проектов ==== ==== Примеры тем проектов ====
Line 101: Line 118:
 См. также [[design:OldCases|задачи прошлых лет]] См. также [[design:OldCases|задачи прошлых лет]]
  
-===== Контрольная работа =====+===== Контрольная работа и устный ответ =====
  
-Для закрепления материала предлагается решить контрольную работу. Проводится на лекции **08.12.2021** и включает три части: +Контрольная работа может быть предложена тем студентам, кто не набрал достаточно баллов для получения оценки автоматом. В составе письменной контрольной работы на лекции будут предложены примерные задания.  
-  - Тест на UMLвопросы похожи на те, что в экзамене OCUP-Fundamental. (см. google.com/search?q=zertifizierung.testfragen.fundamental.pdf) +  - Задача на проектирование с применением UML2ER, DFD, MSA, GoF, SOLID. 
-  - Задача на проектирование с применением UML2, ER, DFD. +  - Вопросы по методам проектирования по билетам для ответа устно 
-  - Вопросы по методам проектирования.+ 
 +Примерные критерии оценивания 
 + 
 +  * Правильность и количество решенных задач 
 +  * Полнота и правильность ответа на вопросы по методам проектирования 
 +  * Ответы на дополнительные вопросы по теме 
 +  * Владение терминологией и методами проектирования 
 +  * Способность принимать и обосновывать проектировочные решения 
 +  * Способность находить и устранять ошибки в применении методов
  
 ===== Оценки по курсу ===== ===== Оценки по курсу =====
Line 112: Line 137:
 Критерии оценивания, итоговый балл Критерии оценивания, итоговый балл
  
-ИБ = 0,2 * ПЗ + 0,3 * ПР + 0,* КЗ + 0,25 * КР +ИБ = 0,2 * (ПЗ или ЛЗ)+ 0,3 * КЛК + 0,(ПРЭ или ЭКЗ) 
 + 
 +ЛЗ + ПЗ - посещения лекций и работа на семинаре
  
-ПЗ посещения лекций и семинаров (допускается 2 пропуска)+КЛК - оценка за коллоквиум
  
-ПР работа на семинарах (активность на занятиях)+ЭКЗ устно-письменный экзамен в конце семестра
  
-КЗ - оба задания+ПРЭ курсовой проект
  
-КР - контрольная работа 
  
  
Line 209: Line 235:
  
 **Хританков Антон Сергеевич**, автор курса, course [at] objectoriented.ru **Хританков Антон Сергеевич**, автор курса, course [at] objectoriented.ru
- 
-**Межуев Игорь Юрьевич**, ведет семинары 
- 
-**Андрианов Андрей Иванович**, ведет семинары 
  
 <html><br/><br/> <html><br/><br/>
 </html> </html>
 +
 В прошлом семинары по курсу вели В прошлом семинары по курсу вели
 +
 +**Межуев Игорь Юрьевич**
 +
 +**Андрианов Андрей Иванович**
 +
  
 **Ахтямов Павел Ибрагимович** **Ахтямов Павел Ибрагимович**