pps-new

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:07] userpps-new [2026/08/29 08:43] (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 16: Line 11:
 Для разработчиков, системных аналитиков и будущих архитекторов программного обеспечения. Для разработчиков, системных аналитиков и будущих архитекторов программного обеспечения.
  
 +**Содержание**
 +
 +  * [[pps-new|Темы и план]]
 +  * [[pps-new|Учебный проект]]
 +  * [[pps-new|Контрольная работа]]
 +  * [[pps-new|Критерии оценки по курсу]]
 +  * [[pps-new|Литература и ссылки]]
 +  * [[pps-new|Контакты]]
  
 ===== Примерный план ===== ===== Примерный план =====
  
 ^ Неделя ^ Раздел ^ Тема ^ ^ Неделя ^ Раздел ^ Тема ^
-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 44: Line 47:
 Выполнение учебного проекта по интересной теме позволит упорядочить знания и умения в проектировании и разработке ПО, жизненно необходимые для старших разработчиков, тим лидов и руководителей проектов. Выполнение учебного проекта по интересной теме позволит упорядочить знания и умения в проектировании и разработке ПО, жизненно необходимые для старших разработчиков, тим лидов и руководителей проектов.
  
-==== Задание 1 =====+Примерная таблица этапов проекта и применяемых методов проектирования. 
 + 
 +^ # ^ Этап ^ Методы и результаты ^ Задачи ^ 
 +| 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 ====
  
 Первое задание посвящено проработке требований применению DDD к предметной области, в которой проектируете систему. Прорабатываете и уточняете требования и рамки проекта. В итоге для дальнейшего моделирования с помощью Domain Driven Design нужны 3-4 вариантв использования или 5-6 историй пользователей. Первое задание посвящено проработке требований применению DDD к предметной области, в которой проектируете систему. Прорабатываете и уточняете требования и рамки проекта. В итоге для дальнейшего моделирования с помощью Domain Driven Design нужны 3-4 вариантв использования или 5-6 историй пользователей.
 +
 +В таблице выше это задание включает этапы 1-3.
  
 Что можно будет освоить: Что можно будет освоить:
 +
   * анализ требований: use cases, job/user stories, модели потоков данных, структуры подсистем   * анализ требований: use cases, job/user stories, модели потоков данных, структуры подсистем
   * DDD: анализ повсеместного языка, выделение окрестностей, concept/noun phrase extraction, построение модели предметной области, анализ обязанностей и виды классов: service, entity, aggregate, value object, и т. д.   * DDD: анализ повсеместного языка, выделение окрестностей, concept/noun phrase extraction, построение модели предметной области, анализ обязанностей и виды классов: service, entity, aggregate, value object, и т. д.
Line 56: Line 72:
  
 В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, применить паттерны ООП для реализации микросервисов. В результате у вас получится модель реализации (design model) микросервисного приложения, реализующего требования из первого задания. В проекте нужно спроектировать 3-5 связанных микросервисов, совместно решающих задачи первого задания. В этом задании нужно декомпозировать систему на сервисы и продумать для них API, переложить на микросервисную архитектуру (MSA), применив архитектурные паттерны для API, работы с реляционными и нереляционными данными, применить паттерны ООП для реализации микросервисов. В результате у вас получится модель реализации (design model) микросервисного приложения, реализующего требования из первого задания. В проекте нужно спроектировать 3-5 связанных микросервисов, совместно решающих задачи первого задания.
 +
 +В таблице выше это задание включает этапы 4-6.
  
 Что можно будет освоить: Что можно будет освоить:
 +
   * DDD: декомпозиция и интеграция окрестностей (bounded context), моделирование сервисов и ресурсов   * DDD: декомпозиция и интеграция окрестностей (bounded context), моделирование сервисов и ресурсов
   * MSA: OpenAPI для RESTful web services, hexagonal architecture, SOLID, GoF паттерны проектирования, Backend-for-Frontend и др.   * MSA: OpenAPI для RESTful web services, hexagonal architecture, SOLID, GoF паттерны проектирования, Backend-for-Frontend и др.
Line 63: Line 82:
   * UML2: диаграммы компонентов, расширенные диаграммы классов   * UML2: диаграммы компонентов, расширенные диаграммы классов
  
- +==== Результаты и оценивание проекта ====
-==== Результаты проекта ====+
  
 Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, релевантный опыт в применении методов проектирования. Понравившиеся методы можно забрать к себе на работу или вспомнить к собеседованию. Хорошо сделанный проект - это круче, чем типовое тестовое задание на архитектора программных систем, релевантный опыт в применении методов проектирования. Понравившиеся методы можно забрать к себе на работу или вспомнить к собеседованию.
  
-Задания по проекту выполняются на семинарах, защита проходит в виде доклада. Оценивается: +Общие критерии оценивания приведены в методичке {{uml-verification-proc.pdf|Критерии оценивания проектов}} 
-  * согласованность и непротиворечивость требований и модели реализации + 
-  * правильность применения и понимание изученных методовобоснованность решения +Задания по проекту, по возможности, выполняются на семинарах, защита проходит в виде доклада, материалы по проекту высылаются на проверку не позднее, чем за 1 неделю до даты доклада.  
-  * вклад участников проекта в обший результат+ 
 +Если кратко, то оцениваются следующие харатеристики выполненного проекта 
 + 
 +  * Согласованность разных представлений в составе проекта между собой 
 +  * Правильность применения методов проектирования 
 +  * Полнота выполнения проекта и следование рекомендациям 
 +  * Обоснованность и целесообразность принятых проектировочных решений 
 +  * Ошибки и недочеты в применении языков моделирования 
 +  * Вклад участников в общий результат
  
 ==== Примеры тем проектов ==== ==== Примеры тем проектов ====
Line 77: Line 103:
 В таблице примеры тем проектов, предлагавшихся в прошлые годы.  В таблице примеры тем проектов, предлагавшихся в прошлые годы. 
  
-^#^Название^Описание^ +^ # ^ Название ^ Описание ^ 
-|1.| [[design:SmartContract|СмартРитейл]] | Интегрируем недоверчивых участников рынка ритейла с помощью блокчейна | +| 1. | [[design:smartcontract|СмартРитейл]] | Интегрируем недоверчивых участников рынка ритейла с помощью блокчейна | 
-|2.| [[design:OkFridge|Ok, Fridge]]  | Холодильник доставит к дивану соки и воды под настроение, дозакажет в магазине | +| 2. | [[design:okfridge|Ok, Fridge]] | Холодильник доставит к дивану соки и воды под настроение, дозакажет в магазине | 
-|3.| [[design:AutoFill|ЗалейсяIS]]  | Управляем сетью авто-автозаправок, работающих без персонала | +| 3. | [[design:autofill|ЗалейсяIS]] | Управляем сетью авто-автозаправок, работающих без персонала | 
-|4.| [[design:DocFree|БезВрача]]  | Контролируем соблюдение условий медицинского страхования, и вообще соблюдения правил ЗОЖ | +| 4. | [[design:docfree|БезВрача]] | Контролируем соблюдение условий медицинского страхования, и вообще соблюдения правил ЗОЖ | 
-|5.| [[design:ShareCar|Перетачка]]  | Едем вместе на чужой машине и везем посылки. Система обеспечивает работу сервиса | +| 5. | [[design:sharecar|Перетачка]] | Едем вместе на чужой машине и везем посылки. Система обеспечивает работу сервиса | 
-|6.| [[design:QACall|Как?Никак!]]  | Модернизированный CallЦентр, роботы отвечают на типовые вопросы и сами ведут FAQ | +| 6. | [[design:qacall|Как?Никак!]] | Модернизированный CallЦентр, роботы отвечают на типовые вопросы и сами ведут FAQ | 
-|7.| [[design:ShipAll|ДоставимВсе]] | Служба доставки формирует из товаров заказы и перемещает по маршрутам. Маршруты формируются вручную, автоматически как план, динамически. Учет веса и стоимости при планировании | +| 7. | [[design:shipall|ДоставимВсе]] | Служба доставки формирует из товаров заказы и перемещает по маршрутам. Маршруты формируются вручную, автоматически как план, динамически. Учет веса и стоимости при планировании | 
-|8.| [[design:PhystechTaxi|Физтех-Такси]]  | Агрегатор такси со скидкой на поездки в МФТИ |+| 8. | [[design:phystechtaxi|Физтех-Такси]] | Агрегатор такси со скидкой на поездки в МФТИ |
  
 **Использование проектов инновационного практикума** **Использование проектов инновационного практикума**
Line 91: Line 117:
 Можно по согласованию с семинаристом и ментором проекта инновационного практикума. Можно по согласованию с семинаристом и ментором проекта инновационного практикума.
  
-См. также [[design:OldCases|задачи прошлых лет]]+См. также [[design:oldcases|задачи прошлых лет]]
  
-===== Контрольная работа =====+===== Контрольная работа и устный ответ =====
  
-Для закрепления материала предлагается решить контрольную работу. Проводится на лекции **08.12.2021** и включает три части: +Контрольная работа может быть предложена тем студентам, кто не набрал достаточно баллов для получения оценки автоматом. В составе письменной контрольной работы на лекции будут предложены примерные задания.
-  - Тест на UML, вопросы похожи на те, что в экзамене OCUP-Fundamental. (см. google.com/search?q=zertifizierung.testfragen.fundamental.pdf) +
-  - Задача на проектирование с применением UML2, ER, DFD. +
-  - Вопросы по методам проектирования.+
  
-===== Формирование оценки по курсу =====+  - Задача на проектирование с применением UML2, ER, DFD, MSA, GoF, SOLID. 
 +  - Вопросы по методам проектирования по билетам для ответа устно
  
-Критерии оценивания, итоговый балл+Примерные критерии оценивания
  
-ИБ = 0,2 * ПЗ + 0,3 * ПР + 0,5 КЗ + 0,25 * КР +  * Правильность и количество решенных задач 
 +  * Полнота и правильность ответа на вопросы по методам проектирования 
 +  Ответы на дополнительные вопросы по теме 
 +  Владение терминологией и методами проектирования 
 +  * Способность принимать и обосновывать проектировочные решения 
 +  * Способность находить и устранять ошибки в применении методов 
 + 
 +===== Оценки по курсу ===== 
 + 
 +Критерии оценивания, итоговый балл
  
-ПЗ - посещения лекций и семинаров (допускается 2 пропуска)+ИБ = 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, (любое издание)   - Vaughn Vernon. Implementing Domain-Driven Design, (любое издание)
   - Sam Newman. Building Microservices   - Sam Newman. Building Microservices
   - Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra. Head First Design Patterns   - 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.   - Ian Sommerville. Software Engineering 10th Ed или Roger Pressman. Software Engineering: A Practitioner's Approach 8th Ed.
-  - UML diagrams reference, https://www.uml-diagrams.org+  - UML diagrams reference, [[https://www.uml-diagrams.org/|https://www.uml-diagrams.org]]
   - [[pps-book|UML. Сборник задач]]   - [[pps-book|UML. Сборник задач]]
  
-===== Инструменты моделирования =====+==== Инструменты моделирования ====
  
 **Modelio Community** **Modelio Community**
  
-https://www.modelio.org/downloads/download-modelio.html+[[https://www.modelio.org/downloads/download-modelio.html|https://www.modelio.org/downloads/download-modelio.html]]
  
 IDE для моделирования, с открытым исходным кодом, понимает UML2 и SysML в редакции Community Edition. Неплохой UI, в целом прост в использовании. Тем не менее, не полностью поддерживает все тонкости UML 2.4.1 или UML 2.5. Подходит для небольших и учебных проектов IDE для моделирования, с открытым исходным кодом, понимает UML2 и SysML в редакции Community Edition. Неплохой UI, в целом прост в использовании. Тем не менее, не полностью поддерживает все тонкости UML 2.4.1 или UML 2.5. Подходит для небольших и учебных проектов
Line 134: Line 170:
 **Visual Paradigm Community Ed** **Visual Paradigm Community Ed**
  
-https://www.visual-paradigm.com/download/community.jsp+[[https://www.visual-paradigm.com/download/community.jsp|https://www.visual-paradigm.com/download/community.jsp]]
  
 Бесплатная версия коммерческого IDE для моделирования ПО с помощью UML 2, помогает с ER-диаграммами и построением моделей по тексту. Требует регистрации при старте. Много фич и диаграммы, которые не спрятать и они требуют платной версии. Получается перегруженный интерфейс, сложнее в использовании. Бесплатная версия коммерческого IDE для моделирования ПО с помощью UML 2, помогает с ER-диаграммами и построением моделей по тексту. Требует регистрации при старте. Много фич и диаграммы, которые не спрятать и они требуют платной версии. Получается перегруженный интерфейс, сложнее в использовании.
Line 140: Line 176:
 **Draw.io + VS Code Plugin** **Draw.io + VS Code Plugin**
  
-https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio+[[https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio|https://marketplace.visualstudio.com/items?itemName=hediet.vscode-drawio]]
  
 Известный онлайн и офлайн инструмент для рисования диаграмм, поможет с UML2, ER диаграммами и пр. Дополнения помогут проверить согласованность моделей, но проверки и рефакторинги явно хуже чем у инструментов выше. Хорошо подходит для гибкого моделирования в правильных руках. Известный онлайн и офлайн инструмент для рисования диаграмм, поможет с UML2, ER диаграммами и пр. Дополнения помогут проверить согласованность моделей, но проверки и рефакторинги явно хуже чем у инструментов выше. Хорошо подходит для гибкого моделирования в правильных руках.
Line 148: Line 184:
 При выборе инструмента для моделирования обратите внимание на удобство UI, поддержку стандартов UML2 и др, функций экспорта и импорта,  а также ограничения лицензии. Для курса понадобятся минимум эти диаграммы: классов, вариантов использования, деятельности или состояний, компонентов. При выборе инструмента для моделирования обратите внимание на удобство UI, поддержку стандартов UML2 и др, функций экспорта и импорта,  а также ограничения лицензии. Для курса понадобятся минимум эти диаграммы: классов, вариантов использования, деятельности или состояний, компонентов.
  
-===== Еще релевантные источники и дополнительные ссылки ===== +==== Еще релевантные источники и дополнительные ссылки ====
  
 Дополнительная литература: Дополнительная литература:
  
-  - Нотация UML 2 {{design:uml2-notation.zip}}+  - Нотация UML 2 {{design:uml2-notation.zip|uml2-notation.zip}}
   - Б. Мейер, Объектно-ориентированное конструирование программных систем. - Русская Редакция, 2005   - Б. Мейер, Объектно-ориентированное конструирование программных систем. - Русская Редакция, 2005
-  - Microsoft. Руководство Майкрософт по проектированию архитектуры приложений для Azure, [https://docs.microsoft.com/en-us/azure/architecture/guide/| на сайте Майкрософт]]+  - Microsoft. Руководство Майкрософт по проектированию архитектуры приложений для Azure, [[https://docs.microsoft.com/en-us/azure/architecture/guide/| на сайте Майкрософт]] 
 Интернет-источники: Интернет-источники:
-  - Спецификация UML 2.5 на сайте OMG. (http://www.omg.org/spec/UML/2.2/)+ 
 +  [[http://www.omg.org/spec/UML/2.5.1/Спецификация UML 2.5 на сайте OMG]]
  
 Классические статьи методам проектирования: Классические статьи методам проектирования:
  
   - (discussion) P. Ralph, R. Mohanani. Is Requirements Engineering Inherently Counterproductive?   - (discussion) P. Ralph, R. Mohanani. Is Requirements Engineering Inherently Counterproductive?
-  - N. Wirth. Program Development by Stepwise Refinement. (http://www.inf.ethz.ch/personal/wirth/Articles/StepwiseRefinement.pdf) +  - [[http://www.inf.ethz.ch/personal/wirth/Articles/StepwiseRefinement.pdf| N. Wirth. Program Development by Stepwise Refinement.]] 
-  - D. Parnas. On the Criteria to be used in Decomposing System into Modules (http://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf+  - [[http://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf|D. ParnasOn the Criteria to be used in Decomposing System into Modules]] 
-  - D. Garlan, MShaw. An Introduction to Software Architecture (http://www.cs.cmu.edu/afs/cs/project/vit/ftp/pdf/intro_softarch.pdf) +  - [[http://www.cs.cmu.edu/afs/cs/project/vit/ftp/pdf/intro_softarch.pdf|D. Garlan, M. Shaw. An Introduction to Software Architecture]] 
-  - Kent Beck, Ward Cunningham. A Laboratory For Teaching Object-Oriented Thinking / OOPSLA89 (http://c2.com/doc/oopsla89/paper.html) +  - [[http://c2.com/doc/oopsla89/paper.html|Kent Beck, Ward Cunningham. A Laboratory For Teaching Object-Oriented Thinking / OOPSLA89]] 
-  - Doug Rosenberg, Kendall Scott, The ICONIX Process, (http://www.informit.com/articles/printerfriendly.aspx?p=167902)+  - [[http://www.informit.com/articles/printerfriendly.aspx?p=167902|Doug Rosenberg, Kendall Scott, The ICONIX Process]])
   - B. Liskov. Programming with abstract data types   - B. Liskov. Programming with abstract data types
   - Friedrich Steimann, Philip Mayer. Patterns of Interface-Based Programming   - Friedrich Steimann, Philip Mayer. Patterns of Interface-Based Programming
   - Rebecca Wirfs-Brock, Object-oriented design. A responsibility-driven approach   - Rebecca Wirfs-Brock, Object-oriented design. A responsibility-driven approach
   - Robert C. Sharblet, Samuel S. Cohen. The object-oriented brewery. A comparison of two object-oriented development methods   - Robert C. Sharblet, Samuel S. Cohen. The object-oriented brewery. A comparison of two object-oriented development methods
-  - P. Krutchen. Architectural Blueprints—The “4+1” View Model of Software Architecture, (http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf) +  - [[http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf|P. Krutchen. Architectural Blueprints—The “4+1” View Model of Software Architecture]] 
-  - IEEE Recommended practice for architectural description of software intensive systems, (http://www.win.tue.nl/~wsinmak/Education/2II45/software-architecture-std1471-2000.pdf) +  - [[http://www.win.tue.nl/~wsinmak/Education/2II45/software-architecture-std1471-2000.pdf|IEEE Recommended practice for architectural description of software intensive system]] 
-  - M. Fowler. Who need an Achitect?, http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf +  - [[http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf|M. Fowler. Who need an Achitect?]] 
-  - D. Greer, Interactive Application Architecture, http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/+  - [[http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/|D. Greer, Interactive Application Architecture]]
   - Frank DeRemer, Hans Kron. PROGRAMMING-IN-THE LARGE VERSUS PROGRAMMING-IN-THE-SMALL  (google it)   - Frank DeRemer, Hans Kron. PROGRAMMING-IN-THE LARGE VERSUS PROGRAMMING-IN-THE-SMALL  (google it)
   - The Agile Method and Other Fairy Tales (google it)   - The Agile Method and Other Fairy Tales (google it)
   - A RATIONAL DESIGN PROCESS: HOW AND WHY TO FAKE IT (google it)   - A RATIONAL DESIGN PROCESS: HOW AND WHY TO FAKE IT (google it)
-  - Edward V. Berard. Be Careful With "Use Cases"+  - Edward V. Berard. Be Careful With Use Cases
   - (beware!)Chidamber Kemerer Metrics Suite. A Measurement Theory Perspective   - (beware!)Chidamber Kemerer Metrics Suite. A Measurement Theory Perspective
   - McCabe. A complexity measure   - McCabe. A complexity measure
  
 Паттерны: Паттерны:
-  Antipatterns Wiki, http://c2.com/cgi/wiki?AntiPatternsCatalog + 
-  - Паттерны обработки ошибок, http://c2.com/cgi/wiki?ExceptionPatterns +  [[http://c2.com/cgi/wiki?AntiPatternsCatalog| Antipatterns Wiki]] 
-  - Microservices patterns, https://microservices.io+  - [[http://c2.com/cgi/wiki?ExceptionPatterns| Паттерны обработки ошибок]] 
 +  - [[https://microservices.io/| Microservices patterns]]
   - GoF. Design Patterns: elements of reusable object-oriented software   - GoF. Design Patterns: elements of reusable object-oriented software
-  - Статья на c2.com про DoubleDispatch и DoubleDispatchExample, +  - Статья на c2.com про DoubleDispatch и DoubleDispatchExample,
   - Jenifer Tidwell, Designing Interfaces   - Jenifer Tidwell, Designing Interfaces
   - Scott Ambler, Process Patterns   - Scott Ambler, Process Patterns
Line 192: Line 231:
   - Martin Fowler, Patterns of Enterprise Application Architecture   - Martin Fowler, Patterns of Enterprise Application Architecture
   - G. Hohpe, Enterprise Integration Patterns   - G. Hohpe, Enterprise Integration Patterns
-  - D. Greer, Interactive Application Architecture, http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/ +  - [[http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/| D. Greer, Interactive Application Architecture]] 
-  - Pattern-Oriented Software Architecture (несколько томов), http://www.cs.wustl.edu/~schmidt/POSA/ +  - [[http://www.cs.wustl.edu/~schmidt/POSA/Pattern-Oriented Software Architecture (несколько томов)]] 
-  - C++ Idioms, http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms +  - [[http://en.wikibooks.org/wiki/More_C++_Idioms| C++ Idioms]] 
-  - Linda Rising - Patterns Almanac 2000, http://www.smallmemory.com/almanac/+  - [[http://www.smallmemory.com/almanac/| Linda Rising - Patterns Almanac 2000]]
  
- +===== Контакты =====
-===== Контакты ======+
  
 **Хританков Антон Сергеевич**, автор курса, course [at] objectoriented.ru **Хританков Антон Сергеевич**, автор курса, course [at] objectoriented.ru
  
-**Межуев Игорь Юрьевич**, ведет семинары+В прошлом семинары по курсу вели
  
-**Андрианов Андрей Иванович**, ведет семинары+**Межуев Игорь Юрьевич**
  
-<html><br/><br/> +**Андрианов Андрей Иванович**
-</html> +
-В прошлом семинары по курсу вели+
  
 **Ахтямов Павел Ибрагимович** **Ахтямов Павел Ибрагимович**
Line 221: Line 257:
  
 **Ивахненко Андрей Александрович** **Ивахненко Андрей Александрович**
- 
- 
- 
  • pps-new.1630343225.txt.gz
  • Last modified: 2026/08/29 07:59
  • (external edit)