Software Design, 6 курс, 3 семестр, 2016/17 — различия между версиями
(Новая страница: «Преподаватель: Брыксин Т.А. == Лекции == == Практика==») |
(→Лекции) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | Преподаватель: Брыксин | + | Преподаватель: Тимофей Брыксин, [mailto:timofey.bryksin@gmail.com timofey.bryksin@gmail.com] |
+ | |||
== Лекции == | == Лекции == | ||
+ | |||
+ | Преподаватель: Тимофей Брыксин, [mailto:timofey.bryksin@gmail.com timofey.bryksin@gmail.com] | ||
+ | |||
+ | |||
+ | 1. Программа и программное обеспечение (ПО). Программирование vs Строительство. Понятие архитектуры. Роль проектирования и архитектора в производстве ПО. Архитектура и качество ПО. Архитектура и жизненный цикл ПО. | ||
+ | |||
+ | [https://drive.google.com/open?id=1T040ZqdYkHdu6bHahFIgoVVZ2l4JHbC849a7_atPn-w Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1aesJ61cqx5wrKrSHWePWvMcd9liucNFGKOt408l360Y Конспект] | ||
+ | |||
+ | 2. Архитектура и требования. Декомпозиция. Шаблон “Model-View-Controller”. Базовые принципы проектирования. Восходящее и нисходящее проектирование. | ||
+ | |||
+ | [https://drive.google.com/open?id=1VIjvMJET5c5JAka3fSbSsSqwefbTubdHakkcdUKnQXE Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=10cHr44o2TapxKOnci_4KENTwbXq-jr7oJp8XgdzVJT8 Конспект] | ||
+ | |||
+ | 3. Объектно-ориентированный подход. Состояние, поведение и идентичность объекта. Принципы объектно-ориентированного проектирования. Наследование vs. композиция. SOLID. Закон Деметры. | ||
+ | |||
+ | [https://docs.google.com/presentation/d/1mHY1_Y-vQEDjJk0O9OWKo_xrC3h-SfG4qvk1xnn1IV8/edit?usp=sharing Презентация] | ||
+ | |||
+ | [https://docs.google.com/document/d/1qyD61DqqBKSgNsrvEmqjwiijRC_ufb4PWaEdtxyvEOA/edit?usp=sharing Конспект] | ||
+ | |||
+ | 4. Модели в различных областях человеческой деятельности. Роль моделирования в процессе разработки. UML и его назначение. Функциональные требования и диаграммы использования. Система, действующие лица и варианты использования. Включение и расширение. Диаграммы активностей. | ||
+ | |||
+ | [https://drive.google.com/open?id=1KVm88aBOHM9QyM2cohcH0YH17K0lZV7C1PMtsA31aUA Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1HJaGJdqgLPXoHer-diNUJdO8EtKL2sFRWTrQWghATTQ Конспект] | ||
+ | |||
+ | 5. Диаграммы классов и моделирование предметной области. Моделирование взаимодействия объектов. Способы моделирования свойств. Ассоциации. Обобщение. Зависимости. Диаграммы компонент и диаграммы размещения. UML в процессе разработки. Моделирование данных. | ||
+ | |||
+ | [https://drive.google.com/open?id=16CRZ7eWaF5TjbkmMemN0Xq4PLKhO3STwyh9MwFVAO7Q Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1L7yTwXGGZdF7tim2mppQPpJmib3LFhwqjLTjGle_Bto Конспект] | ||
+ | |||
+ | 6. Диаграммы состояний и их применение для описания поведения реактивных систем. Диаграммы последовательности и взаимодействия, коммуникационные диаграммы. | ||
+ | |||
+ | [https://drive.google.com/open?id=1XFRqWvGEf8iNxoaoEH8tiuoU4SMHJaq9nAg1gBTAlbI Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1NQb4bt7cwuyX-ap3jc404cypIOaNeVksCoyA-d2V5yg Конспект] | ||
+ | |||
+ | 7. Проектирование GUI. Понятие User Experience, User-centered design, Activity-centred design. Персонажи и сценарии. Подходы к прототипированию пользовательских интерфейсов: storytelling, бумажные прототипы, bodystorming, макеты, дизайн-макеты, интерактивные прототипы. Подходы к исследованию удобства использования продукта, юзабилити-исследования. | ||
+ | |||
+ | [https://drive.google.com/open?id=1aHPlvzRufyXTRaRvQ7RB_Quno09ROGCVxDLU0Nd8p7g Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1l4lJP5Vkpt-0-mrciDvNwtP6H3TyHGil0WF87z3LV3I Конспект] | ||
+ | |||
+ | 8. Понятие архитектурного шаблона и стиля. Многоуровневая архитектура. Pipes and filters. Интерпретатор. Blackboard. Publish-Subscribe. Событийно-ориентированные системы. | ||
+ | |||
+ | [https://drive.google.com/open?id=1gpPF16bkn1gDCRTGHBrVHxRI6MvcaI_8U6bSI3H4eJ0 Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=19ILZfPFHeUP9JWXMKsRLmM_mY-GbpL43K7YrnHAkzc4 Конспект] | ||
+ | |||
+ | 9. Структурные шаблоны. Рекурсивная композиция, использование полиморфизма и композиции при едином базовом интерфейсе. Шаблоны Composite и Decorator. Выделение алгоритма в объект, шаблон Strategy. Сокрытие реализации, шаблоны Wrapper и Adapter. Проектирование удаленного и отложенного выполнения. Шаблон Proxy. Оптимизация числа объектов. Шаблон Flyweight. | ||
+ | |||
+ | [https://drive.google.com/open?id=10EIdXk939D-QplIs8JBQK2qOU3DFBLHxU4l8iUVfF8w Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=11IT5_b5c2PJirHdKAyif4m75IHQjJCM3Rm1MSSMfygY Конспект] | ||
+ | |||
+ | 10. Порождающие шаблоны. “Ленивая” инициализация, шаблон Singleton. Клонирование объектов, шаблон Prototype. Фабрика, шаблоны Abstract Factory и Factory Method. Поэтапное конструирование объекта, шаблон Builder. | ||
+ | |||
+ | [https://drive.google.com/open?id=1rxXoUHmd7MwKJBPlS2Fubh6BSGuecbPEjaL3SzY_L1w Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1J-BauNBZvohhOzF8rr4L4rww70FMpcylXAuFE_k7vcE Конспект] | ||
+ | |||
+ | 11. Поведенческие шаблоны. Шаблон “Chain of Responsibility”. Шаблон “Context”. Архитектуры, управляемые событиями. Шаблон “Listener”. Отложенное выполнение. Шаблон “Command”. Инкапсуляция поведения. Шаблон “Strategy”. Подходы к реализации поведения, основанного на модели конечного автомата. Шаблон “State”. Шаблон “Visitor”. | ||
+ | |||
+ | [https://drive.google.com/open?id=1NhiBXUGo2lMBYwDog4nUy1zfxG7xcg3j3v7cmheey8w Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1gk6ztxS_2UROvgNYQPItvCzMTy1K_uq3e9yQhh3DXxE Конспект] | ||
+ | |||
+ | 12. Особенности интеграционных решений. Способы интеграции приложений. Message-oriented middleware. Шаблоны интеграционных решений. | ||
+ | |||
+ | [https://drive.google.com/open?id=1lbMqyRx1l3FnGLdb9pB8u0DwI1Lta2aP_fiRUNM1F1M Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1YGgFp8JETLPIkREUaVjdfJZbQRR3koCTdcqG7WXB6R8 Конспект] | ||
+ | |||
+ | 13. Задача сетевого взаимодействия. Архитектурные элементы распределённых систем: основные сущности, виды взаимодействия, роли и обязанности, варианты размещения. Основные архитектурные шаблоны (Layered Architecture, Tiered Architecture, Тонкий клиент). Межпроцессное сетевое взаимодействие: семиуровневая модель OSI, модель TCP/IP, сокеты. Взаимодействие через удалённые вызовы (протоколы запрос-ответ, RPC, RMI). Web-сервисы. | ||
+ | |||
+ | [https://drive.google.com/open?id=1KGv7f_mFpSWY9UFQDCCTM26h17OjFOWzdiKkFcl0JeQ Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1vg7MKWA2rfNJQcXAYglXrBO2muhicBHCwvlFZwc95aQ Конспект] | ||
+ | |||
+ | 14. Архитектурный стиль REST. Микросервисная архитектура. Примеры Peer-to-Peer архитектур (Napster, Gnutella, Skype, BitTorrent). Репликация данных: пассивная и активная модель. Критерии корректности: линеаризуемость и последовательная согласованность. Алгоритмы голосования: Ring-based algorithm, Bully algorithm. Проблемы соглашения в синхронных системах: задача консенсуса, задача византийский генералов. | ||
+ | |||
+ | [https://drive.google.com/open?id=1gvx8e_-Sa82lUkg_d93csd9cewdplfJZocOzxw64Asw Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1qDfiTy0U5NMYSoEYRfJtjqCLwy7zPtuo5jR6e-mSGVs Конспект] | ||
+ | |||
+ | 15. Case study: инфраструктура Google. Коммуникационный слой. Распределённая файловая система Google File System: структура данных, поддержка целостности, механизмы репликации. Распределённый сервис блокировок Chubby: архитектура, задача консенсуса, применимость. СУБД BigTable: особенности структуры таблиц, механизм хранения в GFS, средства мониторинга. Модель вычислений MapReduce. | ||
+ | |||
+ | [https://drive.google.com/open?id=1iV4XMy6o9gqwMXN5t6lZ7kPA83bG97yP2aKuplPnIq0 Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1LHsnR1pwg2w9AAaTWrMQjqGlrI6QmiAZlerwUzbTYCc Конспект] | ||
+ | |||
+ | 16. Case study открытых проектов: CMake, Selenium, Mercurial, инструменты для Continious Integration. Контекст, требования, основные архитектурные решения и особенности реализации. | ||
+ | |||
+ | [https://drive.google.com/open?id=1bh9yKG8gHYfLMDo69DcMJrKXueAb4b600qBc6duR0k8 Презентация] | ||
+ | |||
+ | [https://drive.google.com/open?id=1HzPoRqk67lkG3NqpXmE5eaPvuuDTeP1CizpfA8Rb1sw Конспект] | ||
+ | |||
+ | |||
+ | [https://drive.google.com/open?id=1fTlOABGVUqLVIMrKfDDBqfYWU_7eNRaqKvt6cCYXMA0 Литература] | ||
+ | |||
+ | [https://drive.google.com/open?id=1XxjUh7owYH5hK1QVsuv1n-fsZDCYTAmMsiRZ5Nfl9KI Вопросы к экзамену] | ||
+ | |||
== Практика== | == Практика== |
Текущая версия на 13:58, 21 декабря 2016
Преподаватель: Тимофей Брыксин, timofey.bryksin@gmail.com
Лекции
Преподаватель: Тимофей Брыксин, timofey.bryksin@gmail.com
1. Программа и программное обеспечение (ПО). Программирование vs Строительство. Понятие архитектуры. Роль проектирования и архитектора в производстве ПО. Архитектура и качество ПО. Архитектура и жизненный цикл ПО.
2. Архитектура и требования. Декомпозиция. Шаблон “Model-View-Controller”. Базовые принципы проектирования. Восходящее и нисходящее проектирование.
3. Объектно-ориентированный подход. Состояние, поведение и идентичность объекта. Принципы объектно-ориентированного проектирования. Наследование vs. композиция. SOLID. Закон Деметры.
4. Модели в различных областях человеческой деятельности. Роль моделирования в процессе разработки. UML и его назначение. Функциональные требования и диаграммы использования. Система, действующие лица и варианты использования. Включение и расширение. Диаграммы активностей.
5. Диаграммы классов и моделирование предметной области. Моделирование взаимодействия объектов. Способы моделирования свойств. Ассоциации. Обобщение. Зависимости. Диаграммы компонент и диаграммы размещения. UML в процессе разработки. Моделирование данных.
6. Диаграммы состояний и их применение для описания поведения реактивных систем. Диаграммы последовательности и взаимодействия, коммуникационные диаграммы.
7. Проектирование GUI. Понятие User Experience, User-centered design, Activity-centred design. Персонажи и сценарии. Подходы к прототипированию пользовательских интерфейсов: storytelling, бумажные прототипы, bodystorming, макеты, дизайн-макеты, интерактивные прототипы. Подходы к исследованию удобства использования продукта, юзабилити-исследования.
8. Понятие архитектурного шаблона и стиля. Многоуровневая архитектура. Pipes and filters. Интерпретатор. Blackboard. Publish-Subscribe. Событийно-ориентированные системы.
9. Структурные шаблоны. Рекурсивная композиция, использование полиморфизма и композиции при едином базовом интерфейсе. Шаблоны Composite и Decorator. Выделение алгоритма в объект, шаблон Strategy. Сокрытие реализации, шаблоны Wrapper и Adapter. Проектирование удаленного и отложенного выполнения. Шаблон Proxy. Оптимизация числа объектов. Шаблон Flyweight.
10. Порождающие шаблоны. “Ленивая” инициализация, шаблон Singleton. Клонирование объектов, шаблон Prototype. Фабрика, шаблоны Abstract Factory и Factory Method. Поэтапное конструирование объекта, шаблон Builder.
11. Поведенческие шаблоны. Шаблон “Chain of Responsibility”. Шаблон “Context”. Архитектуры, управляемые событиями. Шаблон “Listener”. Отложенное выполнение. Шаблон “Command”. Инкапсуляция поведения. Шаблон “Strategy”. Подходы к реализации поведения, основанного на модели конечного автомата. Шаблон “State”. Шаблон “Visitor”.
12. Особенности интеграционных решений. Способы интеграции приложений. Message-oriented middleware. Шаблоны интеграционных решений.
13. Задача сетевого взаимодействия. Архитектурные элементы распределённых систем: основные сущности, виды взаимодействия, роли и обязанности, варианты размещения. Основные архитектурные шаблоны (Layered Architecture, Tiered Architecture, Тонкий клиент). Межпроцессное сетевое взаимодействие: семиуровневая модель OSI, модель TCP/IP, сокеты. Взаимодействие через удалённые вызовы (протоколы запрос-ответ, RPC, RMI). Web-сервисы.
14. Архитектурный стиль REST. Микросервисная архитектура. Примеры Peer-to-Peer архитектур (Napster, Gnutella, Skype, BitTorrent). Репликация данных: пассивная и активная модель. Критерии корректности: линеаризуемость и последовательная согласованность. Алгоритмы голосования: Ring-based algorithm, Bully algorithm. Проблемы соглашения в синхронных системах: задача консенсуса, задача византийский генералов.
15. Case study: инфраструктура Google. Коммуникационный слой. Распределённая файловая система Google File System: структура данных, поддержка целостности, механизмы репликации. Распределённый сервис блокировок Chubby: архитектура, задача консенсуса, применимость. СУБД BigTable: особенности структуры таблиц, механизм хранения в GFS, средства мониторинга. Модель вычислений MapReduce.
16. Case study открытых проектов: CMake, Selenium, Mercurial, инструменты для Continious Integration. Контекст, требования, основные архитектурные решения и особенности реализации.