Software Design 5SE весна 2018 — различия между версиями
(→Лекции) |
(→Лекции) |
||
(не показано 5 промежуточных версий 2 участников) | |||
Строка 7: | Строка 7: | ||
[https://docs.google.com/presentation/d/1s48LnxKaCAi67r6hc67PJmUmYjSlaLyAGJ6jK4kJ6go/edit?usp=sharing Презентация] | [https://docs.google.com/presentation/d/1s48LnxKaCAi67r6hc67PJmUmYjSlaLyAGJ6jK4kJ6go/edit?usp=sharing Презентация] | ||
[https://docs.google.com/document/d/1vIsjpK50DLRaVoNAKOT9Ku6lJfATtPO8KKHucHB1oF4/edit?usp=sharing Конспект] | [https://docs.google.com/document/d/1vIsjpK50DLRaVoNAKOT9Ku6lJfATtPO8KKHucHB1oF4/edit?usp=sharing Конспект] | ||
+ | |||
+ | 2. Декомпозиция. Базовые принципы проектирования. Восходящее и нисходящее проектирование. Объектно-ориентированный подход. Состояние, поведение и идентичность объекта. Принципы объектно-ориентированного проектирования. Наследование vs. композиция. SOLID. Закон Деметры. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1OYBdw8sHfg3LdTmRk-OrmNlN7UBBLuzJNhEO5FJ33nI/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1yS6EzgDN4ZQYchBdZSr44d_MWQxqsvRtCEwFU8yZXdQ/edit?usp=sharing Конспект] | ||
+ | |||
+ | 3. Проектирование GUI. Понятие User Experience. User-centered design, Activity-centred design. Персонажи и сценарии. Подходы к прототипированию пользовательских интерфейсов: storytelling, бумажные прототипы, bodystorming, макеты, дизайн-макеты, интерактивные прототипы. Подходы к исследованию удобства использования продукта, юзабилити-исследования. | ||
+ | |||
+ | [https://drive.google.com/open?id=1ep4yA49A7DWeTkDhXI-C_lLBGHzld_-JZJNVN9yyaB8 Презентация] | ||
+ | [https://drive.google.com/open?id=1VsxIzI8CGPSdWt-WFei5f516lP-1gVbPnOXVMXap51A Конспект] | ||
+ | |||
+ | 4. Модели в различных областях человеческой деятельности. Роль моделирования в процессе разработки. UML и его назначение. Функциональные требования и диаграммы использования. Система, действующие лица и варианты использования. Включение и расширение. Диаграммы активностей. Моделирование бизнес-процессов: диаграммы BPMN и IDEF0. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1sOURB5E9DPv9rbjZH2AwzmEABHPcGOraj49kaaNRC_Y/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1qMsIKynkXfdGjIiQdwUixlOK8faGbXCJq_KmdDqcIw4/edit?usp=sharing Конспект] | ||
+ | |||
+ | 5. Диаграммы классов и моделирование предметной области. Моделирование взаимодействия объектов. Способы моделирования свойств. Ассоциации, обобщение, зависимости. Диаграммы компонент и диаграммы размещения. Моделирование данных: ER, ORM, UML диаграммы. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/19V-yen4DcqFHLcoAGqIF94JsfbtWSzWeSuLnZh-l3Qw/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1kmQK4tZ6PAhVXCQu02DzRwgw_ZtTSFAA2KbjryMdkh4/edit?usp=sharing Конспект] | ||
+ | |||
+ | 6. Диаграммы состояний и их применение для описания поведения реактивных систем. Диаграммы последовательности и взаимодействия, коммуникационные диаграммы. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1BBRBe7BiKPSQ_w9C8AxDX_fiHuj5shF67N1pr3FWh2Y/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1pykRuceM_NQlnHqfJCErfp_YKc0LERtn6Zsy8X-cwBo/edit?usp=sharing Конспект] | ||
+ | |||
+ | 7. Понятие архитектурного шаблона и стиля. Многоуровневая архитектура. Pipes and filters. Интерпретатор. Blackboard. Publish-Subscribe. Событийно-ориентированные системы. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1a0400Q9nUNipkfz4PgFhfizzsiDtGsk37Ry8aAAesTY/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1KuGALL0KfaHohClMAfzzxPehV4scPYCdVVxgF0mjUkM/edit?usp=sharing Конспект] | ||
+ | |||
+ | 8. Структурные шаблоны. Рекурсивная композиция, использование полиморфизма и композиции при едином базовом интерфейсе. Шаблоны Composite и Decorator. Выделение алгоритма в объект, шаблон Strategy. Сокрытие реализации, шаблоны Wrapper и Adapter. Проектирование удаленного и отложенного выполнения. Шаблон Proxy. Шаблон Facade. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/18OIHCth5ND5_IuJXt2G4bAxd7Ciz8vnW8tUrdNWbSRU/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1sXJfwBHqLsyXm8ljvIbwoe9oFTHPbidrVhnwKANU2rk/edit?usp=sharing Конспект] | ||
+ | |||
+ | 9. Порождающие шаблоны. “Ленивая” инициализация, шаблон Singleton. Клонирование объектов, шаблон Prototype. Фабрика, шаблоны Abstract Factory и Factory Method. Поэтапное конструирование объекта, шаблон Builder. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1dLN7Hf-66kuAkm7Q1F3WtQfU-GO4KvV5nTc1CaoyuT4/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/148fqowOMV79uwT8SVKJDLhmz9eUWI51eQxPXLCWrLbg/edit?usp=sharing Конспект] | ||
+ | |||
+ | 10. Поведенческие шаблоны. Шаблон “Chain of Responsibility”. Шаблон “Context”. Архитектуры, управляемые событиями. Шаблон “Listener”. Отложенное выполнение. Шаблон “Command”. Инкапсуляция поведения. Шаблон “Strategy”. Подходы к реализации поведения, основанного на модели конечного автомата. Шаблон “State”. Шаблон “Visitor”. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/11l_absn4W0F8jKStqUmm-oJrUcR29zb8c8o8rmgS6p0/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1-Qcp-ASBmxBnSPJ2YTvoXkKizFAnUXpdcuQgbnIDirg/edit?usp=sharing Конспект] | ||
+ | |||
+ | 11. Задача сетевого взаимодействия. Архитектурные элементы распределённых систем: основные сущности, виды взаимодействия, роли и обязанности, варианты размещения. Основные архитектурные шаблоны (Layered Architecture, Tiered Architecture, Тонкий клиент). Межпроцессное сетевое взаимодействие: семиуровневая модель OSI, модель TCP/IP, сокеты. Взаимодействие через удалённые вызовы (протоколы запрос-ответ, RPC, RMI). Web-сервисы. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1vgfSH3AIA0QNVoCVmg9dPmiYVEN3YFjWrQG6Ik_MzNE/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1BYpwc0mTaHsF-HM-QV4CUtkaNM3vAftpGVOxluS8OxI/edit?usp=sharing Конспект] | ||
+ | |||
+ | 12. Архитектурный стиль REST. Микросервисная архитектура. Примеры Peer-to-Peer архитектур (Napster, Gnutella, Skype, BitTorrent/DHT). | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1w1tv5TxTfkQPehmmyLqjhuvt2FXnYwerDWKVWs3Lhk0/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1yv0q0XRmzmw-yz1io7InmJVqruQSSMHL2r4AKomyQW0/edit?usp=sharing Конспект] | ||
+ | |||
+ | 13. Репликация данных: пассивная и активная модель. Критерии корректности: линеаризуемость и последовательная согласованность. Алгоритмы голосования: Ring-based algorithm, Bully algorithm. Проблемы соглашения в синхронных системах: задача консенсуса, задача о византийских генералах. Алгоритм RAFT. CAP-теорема. ACID и BASE. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/18deYI5XW5g6iIOrFl88gjbWd27XAgGXD-RZ4g1G7Kak/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1kKdejlGtyf7sS8kDyAwUqo0Ra3aulSSawf63QQUKbB0/edit?usp=sharing Конспект] | ||
+ | |||
+ | 14. Case study: инфраструктура Google. Коммуникационный слой. Распределённая файловая система Google File System: структура данных, поддержка целостности, механизмы репликации. Распределённый сервис блокировок Chubby: архитектура, задача консенсуса, применимость. СУБД BigTable: особенности структуры таблиц, механизм хранения в GFS, средства мониторинга. Модель вычислений MapReduce. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1pL_6aW4JFAa5dgZXCltprhfvWwX9kG1f5YzW_xzrBrQ/edit?usp=sharing Презентация] | ||
+ | [https://docs.google.com/document/d/1CI6duHoVKw8PvxpDYTL-ArMktWd2wFnFW1nop3goLOo/edit?usp=sharing Конспект] | ||
+ | |||
+ | |||
+ | |||
+ | [https://docs.google.com/document/d/1dYHXxEVNmK_y_HG3vyoTqyEWCZKy3Y63USQnq_eXiIM/edit?usp=sharing Вопросы к экзамену] | ||
+ | |||
+ | [https://docs.google.com/document/d/1n2AT_3s6hNjb9UKzd-RF4-LjjrMkdYEu6fChDRi8qVI/edit?usp=sharing Рекомендуемая литература] | ||
== Практика Литвинов == | == Практика Литвинов == | ||
Преподаватель: Литвинов Юрий ('''Yurii.Litvinov@gmail.com''') | Преподаватель: Литвинов Юрий ('''Yurii.Litvinov@gmail.com''') | ||
+ | |||
+ | [http://hwproj.me/courses/33 Курс на hwproj] |
Текущая версия на 08:58, 25 мая 2018
Лекции
Преподаватель: Брыксин Тимофей Александрович (timofey.bryksin@gmail.com)
1. Программа и программное обеспечение (ПО). Разработка ПО и Строительство. Понятие архитектуры. Роль проектирования и архитектора в производстве ПО. Функции архитектора. Архитектура и жизненный цикл ПО.
2. Декомпозиция. Базовые принципы проектирования. Восходящее и нисходящее проектирование. Объектно-ориентированный подход. Состояние, поведение и идентичность объекта. Принципы объектно-ориентированного проектирования. Наследование vs. композиция. SOLID. Закон Деметры.
3. Проектирование GUI. Понятие User Experience. User-centered design, Activity-centred design. Персонажи и сценарии. Подходы к прототипированию пользовательских интерфейсов: storytelling, бумажные прототипы, bodystorming, макеты, дизайн-макеты, интерактивные прототипы. Подходы к исследованию удобства использования продукта, юзабилити-исследования.
4. Модели в различных областях человеческой деятельности. Роль моделирования в процессе разработки. UML и его назначение. Функциональные требования и диаграммы использования. Система, действующие лица и варианты использования. Включение и расширение. Диаграммы активностей. Моделирование бизнес-процессов: диаграммы BPMN и IDEF0.
5. Диаграммы классов и моделирование предметной области. Моделирование взаимодействия объектов. Способы моделирования свойств. Ассоциации, обобщение, зависимости. Диаграммы компонент и диаграммы размещения. Моделирование данных: ER, ORM, UML диаграммы.
6. Диаграммы состояний и их применение для описания поведения реактивных систем. Диаграммы последовательности и взаимодействия, коммуникационные диаграммы.
7. Понятие архитектурного шаблона и стиля. Многоуровневая архитектура. Pipes and filters. Интерпретатор. Blackboard. Publish-Subscribe. Событийно-ориентированные системы.
8. Структурные шаблоны. Рекурсивная композиция, использование полиморфизма и композиции при едином базовом интерфейсе. Шаблоны Composite и Decorator. Выделение алгоритма в объект, шаблон Strategy. Сокрытие реализации, шаблоны Wrapper и Adapter. Проектирование удаленного и отложенного выполнения. Шаблон Proxy. Шаблон Facade.
9. Порождающие шаблоны. “Ленивая” инициализация, шаблон Singleton. Клонирование объектов, шаблон Prototype. Фабрика, шаблоны Abstract Factory и Factory Method. Поэтапное конструирование объекта, шаблон Builder.
10. Поведенческие шаблоны. Шаблон “Chain of Responsibility”. Шаблон “Context”. Архитектуры, управляемые событиями. Шаблон “Listener”. Отложенное выполнение. Шаблон “Command”. Инкапсуляция поведения. Шаблон “Strategy”. Подходы к реализации поведения, основанного на модели конечного автомата. Шаблон “State”. Шаблон “Visitor”.
11. Задача сетевого взаимодействия. Архитектурные элементы распределённых систем: основные сущности, виды взаимодействия, роли и обязанности, варианты размещения. Основные архитектурные шаблоны (Layered Architecture, Tiered Architecture, Тонкий клиент). Межпроцессное сетевое взаимодействие: семиуровневая модель OSI, модель TCP/IP, сокеты. Взаимодействие через удалённые вызовы (протоколы запрос-ответ, RPC, RMI). Web-сервисы.
12. Архитектурный стиль REST. Микросервисная архитектура. Примеры Peer-to-Peer архитектур (Napster, Gnutella, Skype, BitTorrent/DHT).
13. Репликация данных: пассивная и активная модель. Критерии корректности: линеаризуемость и последовательная согласованность. Алгоритмы голосования: Ring-based algorithm, Bully algorithm. Проблемы соглашения в синхронных системах: задача консенсуса, задача о византийских генералах. Алгоритм RAFT. CAP-теорема. ACID и BASE.
14. Case study: инфраструктура Google. Коммуникационный слой. Распределённая файловая система Google File System: структура данных, поддержка целостности, механизмы репликации. Распределённый сервис блокировок Chubby: архитектура, задача консенсуса, применимость. СУБД BigTable: особенности структуры таблиц, механизм хранения в GFS, средства мониторинга. Модель вычислений MapReduce.
Практика Литвинов
Преподаватель: Литвинов Юрий (Yurii.Litvinov@gmail.com)