Software Design, 3 курс, 5 семестр, 2016/17 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Лекции)
(Лекции)
 
(не показана одна промежуточная версия этого же участника)
Строка 23: Строка 23:
  
 
[https://docs.google.com/document/d/1qyD61DqqBKSgNsrvEmqjwiijRC_ufb4PWaEdtxyvEOA/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 Вопросы к экзамену]
  
 
== Практика==
 
== Практика==
 
Преподаватель: Литвинов Юрий, [mailto:yurii.litvinov@gmail.com yurii.litvinov@gmail.com]
 
Преподаватель: Литвинов Юрий, [mailto:yurii.litvinov@gmail.com yurii.litvinov@gmail.com]

Текущая версия на 13:52, 21 декабря 2016

Сайт с информацией и домашками: hwproj.me

Лекции

Преподаватель: Тимофей Брыксин, 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. Контекст, требования, основные архитектурные решения и особенности реализации.

Презентация

Конспект


Литература

Вопросы к экзамену

Практика

Преподаватель: Литвинов Юрий, yurii.litvinov@gmail.com