Курс лекций по проектированию ПО. Видео

Курс лекций по проектированию ПО. Видео

https://t.me/humane_analyst

Представляю заслуживающий внимания курс лекций по проектированию программного обеспечения от учебного центра CSC. Курс состоит из 14 занятий, записанных и размещённых на YouTube. Читает Литвинов Ю.В.


Поскольку материал даётся в доступной форме и содержательно не уходит в малодоступные глубины архитектурных знаний, то данный курс будет полезен не только разработчикам, но и самому широкому кругу IT-специалистов.

Плейлист на YouTube с полным курсом лекций: ссылка, страница курса на сайте учебного центра: ссылка.

Для удобства просмотра и ознакомления с темами ниже представлены все 14 роликов отдельно, к каждому видео приложена оригинальная аннотация со ссылкой на первоисточник. По этой же ссылке доступен текст лекции и слайды.


1. Об архитектуре

Это вводная лекция, в ней кратко рассказывается о том, что будет в курсе, про отчётность и критерии оценивания, а также обсуждается:
● понятие архитектуры;
● роль архитектуры в жизненном цикле программного обеспечения;
● профессия архитектор и трудовые функции архитектора (что от вас будут ждать на работе);
● архитектурные стили и архитектурные виды;
● роль моделирования в разработке архитектуры;
● архитектура и эволюция программного обеспечения.

Источник

Примечание: содержательная часть лекции начинается с 24 минуты.


2. Декомпозиция, объектно-ориентированное проектирование

Эта лекция о:
● сложности, присущей программным системам, и способах управления ею;
● декомпозиции, модульности, сопряжении и связности;
● о том, что такое на самом деле объекты в ООП, к чему абстракция, инкапсуляция, наследование и полиморфизм;
● как, получив требования, начать строить объектно-ориентированную архитектуру — откуда, собственно, брать объекты, и откуда они иногда сами собой появляются;
● о принципах SOLID — ключевых принципах хорошего объектно-ориентированного кода

Источник


3. Моделирование. UML

Это лекция — первая в серии о моделировании в архитектуре и языке UML. В ней пойдёт речь о:
● моделировании вообще;
● о том, что модели — это не только UML-диаграммы, бывают неформальные или наоборот, формальные модели;
● о том, что такое UML, из каких подъязыков состоит, немного об истории языка;
● подробнее о моделировании статической структуры системы в UML:
‒ диаграммы классов;
‒ диаграммы пакетов;
‒ диаграммы объектов;
‒ диаграммы компонентов.

Источник


4. Моделирование и анализ

Эта лекция о:
● моделировании требований к программному обеспечению:
‒ диаграммы случаев использования UML, сценарии использования;
‒ диаграммы IDEF0;
‒ диаграммы характеристик;
‒ диаграммы требований в SysML;
● моделировании бизнес-процессов, в которые встраивается программное обеспечение:
‒ диаграммы активностей UML;
‒ диаграммы BPMN;
● моделировании окружения системы:
‒ диаграммы развёртывания UML;
● моделировании данных системы, моделировании предметной области:
‒ диаграммы Сущность-связь;
‒ ORM-диаграммы.

Источник


5. Моделирование поведения

Эта лекция — о моделировании поведения системы средствами визуальных языков, заключительная лекция про визуальное моделирование. Будут рассмотрены диаграммы UML:
● диаграммы состояний;
● диаграммы последовательностей;
● коммуникационные диаграммы;
● диаграммы составных структур;
● диаграммы коопераций;
● временные диаграммы;
● диаграммы обзора взаимодействия.

И несколько популярных визуальных нотаций помимо UML:
● диаграммы потоков данных (DFD);
● диаграммы IDEF0;
● сети Петри.

Источник


6. Структурные шаблоны

Первая лекция из серии о паттернах проектирования. На этой лекции рассмотрим, что такое вообще шаблоны проектирования и зачем они, рассмотрим структурные шаблоны:
● «Компоновщик»;
● «Декоратор»;
● «Стратегия»;
● «Адаптер»;
● «Заместитель»;
● «Фасад»;
● «Приспособленец».

Источник

Примечание: структурный паттерн «Мост» (Bridge) будет рассмотрен на следующем видео.


7. Порождающие шаблоны

Продолжение рассказа про основные паттерны объектно-ориентированного проектирования. Будет рассмотрен оставшийся структурный паттерн «Мост» (достаточно важный, чтобы ради него стоило нарушать принцип единственности ответственности в содержании лекции) и порождающие паттерны:
● «Фабричный метод»;
● «Абстрактная фабрика»;
● «Одиночка»;
● «Прототип».

И два неканоничных паттерна, которых нет в книжке Гаммы et al.: «Ленивая инициализация» и «Пул объектов».

Источник


8. Поведенческие шаблоны

Эта лекция завершает обзор паттернов проектирования рассмотрением поведенческих паттернов:
● «Строитель»;
● «Шаблонный метод»;
● «Посредник»;
● «Команда»;
● «Цепочка ответственности»;
● «Наблюдатель»;
● «Состояние»;
● «Посетитель»;
● «Хранитель»;
● «Интерпретатор»;
● «Итератор».

Источник


9. Антипаттерны

Практическое занятие в форме лекции. Описания на сайте курса не приводится, поэтому дополню от себя.

Во вводной части видео рассматриваются вопросы: что такое антипаттерн в принципе, почему их нужно знать, в каких сферах они встречаются. После этого даётся характеристика антипаттернам реализации, архитектурным и организационным, однако в дальнейшем повествование будет строиться вокруг антипаттернов первых двух видов. Также говорится о том:
● где можно прочитать о теме подробно;
● какие существуют 7 причин появления антипаттернов ("смертных грехов"): спешка, апатия, недалёкость, лень, архитектурная жадность, неведение, гордость.

Разбираются следующие антипаттерны реализации:
● «Круговая зависимость» (Circular Dependency);
● «Последовательная связанность» (Sequential Coupling);
● «Вызов предка» (Call Super);
● «Проблема йо-йо» (Yo-yo Problem);
● «Крутящееся ожидание»/«Активное ожидание» (Busy Waiting);
● «Сокрытие ошибок» (Error Hiding);
● «Магические числа» (Magic Numbers) и «Магические строки» (Magic Strings).

Также разбираются следующие архитектурные антипаттерны:
● «Божественный объект» (God Object)/«Блоб» (The Blob);
● «Швейцарский нож» (Swiss Army Knife);
● «Поток лавы» (Lava Flow);
● «Золотой молоток» (Golden Hammer).

Здесь стоит оговориться, что отнесение антипаттернов к тому или иному виду — действие условное, и в литературе можно найти иные подходы; здесь главное — их суть.


10. Архитектурные стили

Самая архитектурная лекция в этом курсе, обзор известных архитектурных стилей (и, немного, архитектурных шаблонов). Речь пойдёт про:
● то, что такое архитектурные шаблоны и стили вообще;
● примеры архитектурных шаблонов: трёхзвенная архитектура, Model-View-Controller, Sense-Compute-Control;
● примеры архитектурных стилей, включая:
‒ сырой объектно-ориентированный стиль (и что на самом деле парадигма программирования обычно подразумевает и стиль архитектуры, хоть и слабо выраженный);
‒ слоистый стиль и его подвиды: чистый слоистый стиль, клиент-сервер;
‒ тоже на самом деле подвиды слоистого стиля, но более модные: гексагональная архитектура, луковая архитектура, чистая архитектура;
‒ стили, ориентированные на потоки данных: пакетная обработка, Pipes and Filters;
‒ стиль Blackboard;
‒ событийные стили и их подвиды: publish-subscribe, шины данных;
стиль Peer-to-peer.

Источник


11. Предметно-ориентированное проектирование

Эта лекция об очень популярной нынче методологии проектирования объектно-ориентированных систем — предметно-ориентированном проектировании (Domain-Driven Design, DDD). Будут рассмотрены ключевые принципы предметно-ориентированного моделирования:
● проектирование от предметной области, а не от конкретных приложений;
● модель предметной области;
● единый язык, моделирование вслух;
● изоляция предметной области, четырёхуровневая архитектура приложений.

Также будут рассмотрены основные структурные элементы модели предметной области по DDD:
● сущность;
● объект-значение;
● служба;
● модуль.

И основные паттерны проектирования модели:
● «Агрегат»;
● «Фабрика»;
● «Репозиторий»;
● «Спецификация».

DDD можно рассматривать как пример методологии, построенной вокруг слоистого и объектно-ориентированного стилей.

Книга, по сути кратким пересказом первой части которой является эта лекция: Эрик Эванс, «Предметно-ориентированное проектирование. Структуризация сложных программных систем». М., «Вильямс», 2010, 448 стр. Must read если не для каждого программиста, то для каждого, кто претендует на позицию архитектора в будущем.

Источник


12. Примеры архитектур

Практическое занятие в форме лекции. Описания на сайте курса не приводится, поэтому дополню от себя.

Название может ввести в заблуждение. На самом деле в видео рассказывается конкретно про архитектуру систем контроля версий. Сперва даётся краткая историческая справка, после чего идёт погружение в конкретные системы (Git, Mercurial, Subversion) с рассмотрением их архитектур и заложенной механики работы с репозиторием.


13. Проектирование распределённых приложений, часть первая: технические вопросы

В этой и в следующей лекциях пойдёт речь о приложениях, работающих по сети (а таких нынче большинство). Начнём мы с проблем проектирования распределённых систем и их принципиальных отличий от систем, исполняемых на одном компьютере, затем рассмотрим, на какие вопросы надо ответить при проектировании распределённой системы, из каких видов сущностей и способов взаимодействия между ними она состоит. Начнём мы с технических вопросов организации взаимодействия частей приложения и конкретных примеров технологий, которые это взаимодействие реализуют:
● Remote Procedure Calls (RPC), Remote Method Invocation (RMI);
● пример конкретной технологии: protobuf/gRPC.
● веб-сервисы:
‒ SOAP-ориентированные сервисы и фреймворк WCF как пример;
‒ REST-сервисы и ASP.NET Web APIs как пример;
● очереди сообщений и два примера: RabbitMQ и Apache Kafka.

Источник


14. Проектирование распределённых приложений, часть 2: архитектурные вопросы

Эта лекция продолжает предыдущую обсуждением общих вопросов проектирования больших распределённых приложений. Рассмотрим архитектурные стили распределённых систем:
● Big Compute;
● Big Data;
● Событийная шина;
● Web-queue-worker;
● N-звенная архитектура;
● Микросервисная архитектура.

Обсудим также прагматические соображения проектирования:
● Идеологически правильный дизайн REST API;
● Механизмы самовосстановления и устойчивости к ошибкам;
● Вопросы координации компонентов;
● Проектирование для обслуживания.

Источник

Report Page