Software Design 3MIT весна 2018 — различия между версиями
(→Лекции) |
Lobanov (обсуждение | вклад) (→Лекции) |
||
(не показано 5 промежуточных версий 1 участника) | |||
Строка 27: | Строка 27: | ||
[https://docs.google.com/presentation/d/11XXtrrxyl4te61MO_crWGCCX8F3UYbLozycD9_zVzRA/edit?usp=sharing Презентация] | [https://docs.google.com/presentation/d/11XXtrrxyl4te61MO_crWGCCX8F3UYbLozycD9_zVzRA/edit?usp=sharing Презентация] | ||
[https://docs.google.com/document/d/1kK7QMxxhfLecFizEG_jAj1N5LrbAOiTM25evGmEHxvM/edit?usp=sharing Конспект] | [https://docs.google.com/document/d/1kK7QMxxhfLecFizEG_jAj1N5LrbAOiTM25evGmEHxvM/edit?usp=sharing Конспект] | ||
+ | |||
+ | 6. Понятие архитектурного шаблона и стиля. Многоуровневая архитектура. Pipes and filters. Интерпретатор. Blackboard. Publish-Subscribe. Событийно-ориентированные системы. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1wTyIgZz_0Rosph0AxYxYyClCIuuEpHLhXNt5WHySCYg/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1r7XDKmnzCimCiO3iSAjMjwUWr_tqCUXA5IXCyN0tHEE/edit?usp=sharing Конспект] | ||
+ | |||
+ | 7. Структурные шаблоны. Рекурсивная композиция, использование полиморфизма и композиции при едином базовом интерфейсе. Шаблоны Composite и Decorator. Выделение алгоритма в объект, шаблон Strategy. Сокрытие реализации, шаблоны Wrapper и Adapter. Проектирование удаленного и отложенного выполнения. Шаблон Proxy. Шаблон Facade. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1Sp0Sou_wZ-7JokVb1gqVXgfbyCXCEccPoi2GdHx5j4Q/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1muKQ7smBVTI-5oYdnfejnk-3Kv__kO-3pA6BH6Vq2_I/edit?usp=sharing Конспект] | ||
+ | |||
+ | 8. Порождающие шаблоны. “Ленивая” инициализация, шаблон Singleton. Клонирование объектов, шаблон Prototype. Фабрика, шаблоны Abstract Factory и Factory Method. Поэтапное конструирование объекта, шаблон Builder. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/18H6aTv1CP8Tit5CeQomW3sRZFDfbLtT5zobdAGL6sGE/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1HsejLVrNUOAKStCvXkRNw0ci4qFJuq2PY4aOwh0h-U4/edit?usp=sharing Конспект] | ||
+ | |||
+ | 9. Поведенческие шаблоны. Шаблон “Chain of Responsibility”. Шаблон “Context”. Архитектуры, управляемые событиями. Шаблон “Listener”. Отложенное выполнение. Шаблон “Command”. Инкапсуляция поведения. Шаблон “Strategy”. Подходы к реализации поведения, основанного на модели конечного автомата. Шаблон “State”. Шаблон “Visitor”. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1MJjH8jclRUc8D-TeFqA9JegOuf2sqFdeU-KSNYRsSJg/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1diW2Q3IBK3b8kOlMrjW8zMrkTZ5zLqpc_-AaZHbjA2s/edit?usp=sharing Конспект] | ||
+ | |||
+ | 10. Задача сетевого взаимодействия. Архитектурные элементы распределённых систем: основные сущности, виды взаимодействия, роли и обязанности, варианты размещения. Основные архитектурные шаблоны (Layered Architecture, Tiered Architecture, Тонкий клиент). Межпроцессное сетевое взаимодействие: семиуровневая модель OSI, модель TCP/IP, сокеты. Взаимодействие через удалённые вызовы (протоколы запрос-ответ, RPC, RMI). Web-сервисы. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1vfCWiTheXOcj3Vd8p_XvbKUU_x6UsSCNVI5ZHenh75Q/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1adtVYjk3KiXHfs6A1eB8GMZlaqAMisP3OhH6F7XfdaI/edit?usp=sharing Конспект] | ||
+ | |||
+ | 11. Архитектурный стиль REST. Микросервисная архитектура. Примеры Peer-to-Peer архитектур (Napster, Gnutella, Skype, BitTorrent/DHT). | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1uL5sYbPu6kJ5Jk4IHvGJkrAlB9Gu6AnH6jaR30YMiTg/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1I3hhDIW2YU-bt99RlKERY5Qkvuxq1CkS9ptxIMN6hWU/edit?usp=sharing Конспект] | ||
+ | |||
+ | 12. Репликация данных: пассивная и активная модель. Критерии корректности: линеаризуемость и последовательная согласованность. Алгоритмы голосования: Ring-based algorithm, Bully algorithm. Проблемы соглашения в синхронных системах: задача консенсуса, задача о византийских генералах. Алгоритм RAFT. CAP-теорема. ACID и BASE. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1G1yruGk9fW1dJetAuJ6xkVpMDs9nRbUus3cA-2UNKFA/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1Z6_zol3GWB5CHvY-mPaHRUBWI4COzr4aZn_pxpBWOJ0/edit?usp=sharing Конспект] | ||
+ | |||
+ | 13. Case study: инфраструктура Google. Коммуникационный слой. Распределённая файловая система Google File System: структура данных, поддержка целостности, механизмы репликации. Распределённый сервис блокировок Chubby: архитектура, задача консенсуса, применимость. СУБД BigTable: особенности структуры таблиц, механизм хранения в GFS, средства мониторинга. Модель вычислений MapReduce. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1Dm_1AInt4CguPrsLKlAPZhET17y6ePZnokOmHZjwmaA/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1Gn573Z-LHnAem-JLDWB-ZkOYbXYQz4Z8Te5MD65M-lQ/edit?usp=sharing Конспект] | ||
+ | |||
+ | 14. Case study открытых проектов: CMake, Selenium, Mercurial. Контекст, требования, основные архитектурные решения и особенности реализации. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/19FtEl3rwEw95WGnx7OHocHcMVXleSSo7WPCnf_Bm5gg/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1Wuu9aG05Fm4LkR6JI3E2_XWi13wnnirnvn6KuWC6pw8/edit?usp=sharing Конспект] | ||
+ | |||
+ | |||
+ | [https://docs.google.com/document/d/1zTlJpo1hn8ZrQcdyNVXLxuSIkHi-iONuNmlHvP6kfag/edit?usp=sharing Вопросы к экзамену] | ||
+ | |||
+ | [https://docs.google.com/document/d/1n2AT_3s6hNjb9UKzd-RF4-LjjrMkdYEu6fChDRi8qVI/edit?usp=sharing Рекомендуемая литература] | ||
== Практика Литвинов == | == Практика Литвинов == | ||
Преподаватель: Литвинов Юрий ('''Yurii.Litvinov@gmail.com''') | Преподаватель: Литвинов Юрий ('''Yurii.Litvinov@gmail.com''') |
Текущая версия на 14:46, 21 июня 2018
Лекции
Преподаватель: Брыксин Тимофей Александрович (timofey.bryksin@gmail.com)
1. Программа и программное обеспечение (ПО). Разработка ПО и Строительство. Понятие архитектуры. Роль проектирования и архитектора в производстве ПО. Функции архитектора. Архитектура и жизненный цикл ПО.
2. Декомпозиция. Базовые принципы проектирования. Восходящее и нисходящее проектирование. Объектно-ориентированный подход. Состояние, поведение и идентичность объекта. Принципы объектно-ориентированного проектирования. Наследование vs. композиция. SOLID. Закон Деметры.
3. Модели в различных областях человеческой деятельности. Роль моделирования в процессе разработки. UML и его назначение. Функциональные требования и диаграммы использования. Система, действующие лица и варианты использования. Включение и расширение. Диаграммы активностей. Моделирование бизнес-процессов: диаграммы BPMN и IDEF0.
4. Диаграммы классов и моделирование предметной области. Моделирование взаимодействия объектов. Способы моделирования свойств. Ассоциации, обобщение, зависимости. Диаграммы компонент и диаграммы размещения. Моделирование данных: ER, ORM, UML диаграммы.
5. Диаграммы состояний и их применение для описания поведения реактивных систем. Диаграммы последовательности и взаимодействия, коммуникационные диаграммы.
6. Понятие архитектурного шаблона и стиля. Многоуровневая архитектура. Pipes and filters. Интерпретатор. Blackboard. Publish-Subscribe. Событийно-ориентированные системы.
7. Структурные шаблоны. Рекурсивная композиция, использование полиморфизма и композиции при едином базовом интерфейсе. Шаблоны Composite и Decorator. Выделение алгоритма в объект, шаблон Strategy. Сокрытие реализации, шаблоны Wrapper и Adapter. Проектирование удаленного и отложенного выполнения. Шаблон Proxy. Шаблон Facade.
8. Порождающие шаблоны. “Ленивая” инициализация, шаблон Singleton. Клонирование объектов, шаблон Prototype. Фабрика, шаблоны Abstract Factory и Factory Method. Поэтапное конструирование объекта, шаблон Builder.
9. Поведенческие шаблоны. Шаблон “Chain of Responsibility”. Шаблон “Context”. Архитектуры, управляемые событиями. Шаблон “Listener”. Отложенное выполнение. Шаблон “Command”. Инкапсуляция поведения. Шаблон “Strategy”. Подходы к реализации поведения, основанного на модели конечного автомата. Шаблон “State”. Шаблон “Visitor”.
10. Задача сетевого взаимодействия. Архитектурные элементы распределённых систем: основные сущности, виды взаимодействия, роли и обязанности, варианты размещения. Основные архитектурные шаблоны (Layered Architecture, Tiered Architecture, Тонкий клиент). Межпроцессное сетевое взаимодействие: семиуровневая модель OSI, модель TCP/IP, сокеты. Взаимодействие через удалённые вызовы (протоколы запрос-ответ, RPC, RMI). Web-сервисы.
11. Архитектурный стиль REST. Микросервисная архитектура. Примеры Peer-to-Peer архитектур (Napster, Gnutella, Skype, BitTorrent/DHT).
12. Репликация данных: пассивная и активная модель. Критерии корректности: линеаризуемость и последовательная согласованность. Алгоритмы голосования: Ring-based algorithm, Bully algorithm. Проблемы соглашения в синхронных системах: задача консенсуса, задача о византийских генералах. Алгоритм RAFT. CAP-теорема. ACID и BASE.
13. Case study: инфраструктура Google. Коммуникационный слой. Распределённая файловая система Google File System: структура данных, поддержка целостности, механизмы репликации. Распределённый сервис блокировок Chubby: архитектура, задача консенсуса, применимость. СУБД BigTable: особенности структуры таблиц, механизм хранения в GFS, средства мониторинга. Модель вычислений MapReduce.
14. Case study открытых проектов: CMake, Selenium, Mercurial. Контекст, требования, основные архитектурные решения и особенности реализации.
Практика Литвинов
Преподаватель: Литвинов Юрий (Yurii.Litvinov@gmail.com)