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 [2023/09/23 22:18]
user [Контрольная работа]
pps-new [2023/12/08 05:00] (current)
user [Примерный план]
Line 1: Line 1:
 ====== Курс Проектирование программных систем (осень 2023) ====== ====== Курс Проектирование программных систем (осень 2023) ======
  
-**Обновлено 23.09.2023**+**Обновлено 17.11.2023**
  
 На курсе вы узнаете как использовать язык моделирования UML2 в разработке распределенных приложений в микросервисной архитектуре (MSA) с применением метода предметно-ориентированного проектирования (Domain-Driven Design).  На курсе вы узнаете как использовать язык моделирования UML2 в разработке распределенных приложений в микросервисной архитектуре (MSA) с применением метода предметно-ориентированного проектирования (Domain-Driven Design). 
Line 36: Line 36:
 | 23/11 | MSA | Паттерны, принципы SOLID в реализации микросервисов. Фреймворки. | | 23/11 | MSA | Паттерны, принципы SOLID в реализации микросервисов. Фреймворки. |
 | 30/11 | MSA | Объектно-ориентированное проектирование. Применение паттернов проектирования. | | 30/11 | MSA | Объектно-ориентированное проектирование. Применение паттернов проектирования. |
-| 07/12 | ARCH+MSA | Измерения в проектировании. Метрики сложности программ, оценка качества дизайна для ООП, для MSA +| 07/12 | MSA+DATA | Проектирование данных. Реляционная, размерностные, нереляционные модели. Применение для MSA | 
-| 14/12 | MSA+PROC | Процесс продуктовой разработки от потребности к дизайну REQ+DDD+MSA. Повторение и подготовка к контрольной работе. |+| 14/12 | ARCH+MSA | Измерения в проектировании. Метрики сложности программ, оценка качества дизайна для ООП, для MSA |
 | 21/12 | EXAM | Защита проектов по курсу | | 21/12 | EXAM | Защита проектов по курсу |
  
Line 47: 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 60: Line 72:
  
 В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, применить паттерны ООП для реализации микросервисов. В результате у вас получится модель реализации (design model) микросервисного приложения, реализующего требования из первого задания. В проекте нужно спроектировать 3-5 связанных микросервисов, совместно решающих задачи первого задания. В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, применить паттерны ООП для реализации микросервисов. В результате у вас получится модель реализации (design model) микросервисного приложения, реализующего требования из первого задания. В проекте нужно спроектировать 3-5 связанных микросервисов, совместно решающих задачи первого задания.
 +
 +В таблице выше это задание включает этапы 4-6.
  
 Что можно будет освоить: Что можно будет освоить:
Line 68: Line 82:
  
  
-==== Результаты проекта ====+==== Результаты и оценивание проекта ====
  
 Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, релевантный опыт в применении методов проектирования. Понравившиеся методы можно забрать к себе на работу или вспомнить к собеседованию. Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, релевантный опыт в применении методов проектирования. Понравившиеся методы можно забрать к себе на работу или вспомнить к собеседованию.
  
-Задания по проекту выполняются на семинарах, защита проходит в виде доклада. Оценивается: +Общие критерии оценивания приведены в методичке {{uml-verification-proc.pdf|Критерии оценивания проектов}} 
-  * согласованность и непротиворечивость требований и модели реализации + 
-  * правильность применения и понимание изученных методовобоснованность решения +Задания по проекту, по возможности, выполняются на семинарах, защита проходит в виде доклада, материалы по проекту высылаются на проверку не позднее, чем за 1 неделю до даты доклада.  
-  * вклад участников проекта в обший результат+ 
 +Если кратко, то оцениваются следующие харатеристики выполненного проекта 
 +  * Согласованность разных представлений в составе проекта между собой 
 +  * Правильность применения методов проектирования 
 +  * Полнота выполнения проекта и следование рекомендациям 
 +  * Обоснованность и целесообразность принятых проектировочных решений 
 +  * Ошибки и недочеты в применении языков моделирования 
 +  * Вклад участников в общий результат
  
 ==== Примеры тем проектов ==== ==== Примеры тем проектов ====
Line 97: Line 118:
 См. также [[design:OldCases|задачи прошлых лет]] См. также [[design:OldCases|задачи прошлых лет]]
  
-===== Контрольная работа =====+===== Контрольная работа и устный ответ =====
  
 Контрольная работа может быть предложена тем студентам, кто не набрал достаточно баллов для получения оценки автоматом. В составе письменной контрольной работы на лекции будут предложены примерные задания.  Контрольная работа может быть предложена тем студентам, кто не набрал достаточно баллов для получения оценки автоматом. В составе письменной контрольной работы на лекции будут предложены примерные задания. 
-  - Задача на проектирование с применением UML2, ER, DFD, MSA, GoF, SOLID +  - Задача на проектирование с применением UML2, ER, DFD, MSA, GoF, SOLID. 
-  - Вопросы по методам проектирования.+  - Вопросы по методам проектирования по билетам для ответа устно
  
-Дата проведения контрольной работы будет уточнена позднее.+Примерные критерии оценивания 
 + 
 +  * Правильность и количество решенных задач 
 +  * Полнота и правильность ответа на вопросы по методам проектирования 
 +  * Ответы на дополнительные вопросы по теме 
 +  * Владение терминологией и методами проектирования 
 +  * Способность принимать и обосновывать проектировочные решения 
 +  * Способность находить и устранять ошибки в применении методов
  
 ===== Оценки по курсу ===== ===== Оценки по курсу =====
Line 109: Line 137:
 Критерии оценивания, итоговый балл Критерии оценивания, итоговый балл
  
-ИБ = 0,2 * ПЗ + 0,3 * ПР + 0,* КЗ+ИБ = 0,2 * (ПЗ или ЛЗ)+ 0,3 * КЛК + 0,(ПРЭ или ЭКЗ)
  
-ПЗ - посещения лекций и семинаров (допускается 2 пропуска)+ЛЗ + ПЗ - посещения лекций и работа на семинаре
  
-ПР работа на семинарах (активность на занятиях)+КЛК - оценка за коллоквиум
  
-КЗ - оба задания+ЭКЗ - устно-письменный экзамен в конце семестра 
 + 
 +ПРЭ - курсовой проект
  
  
Line 205: Line 235:
  
 **Хританков Антон Сергеевич**, автор курса, course [at] objectoriented.ru **Хританков Антон Сергеевич**, автор курса, course [at] objectoriented.ru
- 
-**Межуев Игорь Юрьевич**, ведет семинары 
- 
-**Андрианов Андрей Иванович**, ведет семинары 
  
 <html><br/><br/> <html><br/><br/>
 </html> </html>
 +
 В прошлом семинары по курсу вели В прошлом семинары по курсу вели
 +
 +**Межуев Игорь Юрьевич**
 +
 +**Андрианов Андрей Иванович**
 +
  
 **Ахтямов Павел Ибрагимович** **Ахтямов Павел Ибрагимович**