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

Материал из SEWiki
Перейти к: навигация, поиск
(Лекции)
(Лекции)
 
(не показаны 3 промежуточные версии этого же участника)
Строка 54: Строка 54:
 
[https://docs.google.com/presentation/d/1we6EPfcVWsdkchMWHxsNi07bT26mNMvUo71CUsE70BU Презентация]
 
[https://docs.google.com/presentation/d/1we6EPfcVWsdkchMWHxsNi07bT26mNMvUo71CUsE70BU Презентация]
 
[https://docs.google.com/document/d/1fFV1-G2ukCL2XGfKk9ZoiJ_DsDWKGcWuXv57zXglC1Y Конспект]
 
[https://docs.google.com/document/d/1fFV1-G2ukCL2XGfKk9ZoiJ_DsDWKGcWuXv57zXglC1Y Конспект]
 +
 +
11. Рефакторинг: что, когда и зачем. Понятие и основные code smells. Примеры рефакторингов.
 +
 +
[https://docs.google.com/presentation/d/1CeY2XHD3N6cZd4DCrrBhQQn6MhD1yVumL5FtoaNL5eA Презентация]
 +
[https://docs.google.com/document/d/166pC8d7QDeppLs0TzSIgjf_Ky3jN0dxvTI-2d5ZACzc Конспект]
 +
 +
12. Задача сетевого взаимодействия. Архитектурные элементы распределённых систем: основные сущности, виды взаимодействия, роли и обязанности, варианты размещения. Основные архитектурные шаблоны (Layered Architecture, Tiered Architecture, Тонкий клиент). Межпроцессное сетевое взаимодействие: семиуровневая модель OSI, модель TCP/IP, сокеты. Взаимодействие через удалённые вызовы (протоколы запрос-ответ, RPC, RMI). Web-сервисы.
 +
 +
[https://docs.google.com/presentation/d/1Sml8ZbuXjdVgRIG70ZogSf_JqnGbJ0EnT68p0-hojyk Презентация]
 +
[https://docs.google.com/document/d/1K_gyM8fen4-d_LkWepYP0z2zcMU1LNXwN3vTWcYD8nk Конспект]
 +
 +
13. Архитектурный стиль REST. Микросервисная архитектура. Примеры Peer-to-Peer архитектур (Napster, Gnutella, Skype, BitTorrent). Репликация данных: пассивная и активная модель. Критерии корректности: линеаризуемость и последовательная согласованность. Алгоритмы голосования: Ring-based algorithm, Bully algorithm. Проблемы соглашения в синхронных системах: задача консенсуса, задача о византийских генералах.
 +
 +
[https://docs.google.com/presentation/d/1Bid7eyKaZknPmPycVOniPiyUd2qFJ10BlTd1WEcLJfs Презентация]
 +
[https://docs.google.com/document/d/1OEplQyXcD9kyQoZ6hnU5B2ZGsLHSC2ticiPKuxJ8ZRA Конспект]
 +
 +
 +
[https://docs.google.com/document/d/1DSHEWHwlfvuva91DmJ_MwA6mNKUVzGV2tVt_Pypfavc Вопросы к экзамену]
 +
 +
[https://docs.google.com/document/d/1n2AT_3s6hNjb9UKzd-RF4-LjjrMkdYEu6fChDRi8qVI Рекомендуемая литература]
  
 
== Практика ==
 
== Практика ==
 
Страница курса на HwProj: [http://hwproj.me/courses/21]
 
Страница курса на HwProj: [http://hwproj.me/courses/21]

Текущая версия на 22:30, 8 июня 2017

Лектор — Тимофей Брыксин (timofey.bryksin @ gmail . com)

Практика — Юрий Литвинов

Лекции

1. Программа и программное обеспечение (ПО). Разработка ПО и Строительство. Понятие архитектуры. Роль проектирования и архитектора в производстве ПО. Функции архитектора. Архитектура и жизненный цикл ПО.

Презентация Конспект

2. Декомпозиция. Базовые принципы проектирования. Восходящее и нисходящее проектирование. Объектно-ориентированный подход. Состояние, поведение и идентичность объекта. Принципы объектно-ориентированного проектирования. Наследование vs. композиция. SOLID. Закон Деметры.

Презентация Конспект

3. Проектирование GUI. Понятие User Experience. User-centered design, Activity-centred design. Персонажи и сценарии. Подходы к прототипированию пользовательских интерфейсов: storytelling, бумажные прототипы, bodystorming, макеты, дизайн-макеты, интерактивные прототипы. Подходы к исследованию удобства использования продукта, юзабилити-исследования.

Презентация Конспект

4. Модели в различных областях человеческой деятельности. Роль моделирования в процессе разработки. UML и его назначение. Функциональные требования и диаграммы использования. Система, действующие лица и варианты использования. Включение и расширение. Диаграммы активностей.

Презентация Конспект

5. Диаграммы классов и моделирование предметной области. Моделирование взаимодействия объектов. Способы моделирования свойств. Ассоциации, обобщение, зависимости. Диаграммы компонент и диаграммы размещения. Моделирование данных: ER, ORM, UML диаграммы.

Презентация Конспект

6. Диаграммы состояний и их применение для описания поведения реактивных систем. Диаграммы последовательности и взаимодействия, коммуникационные диаграммы. Моделирование бизнес-процессов: IDEF0 и BPMN.

Презентация Конспект

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. Рефакторинг: что, когда и зачем. Понятие и основные code smells. Примеры рефакторингов.

Презентация Конспект

12. Задача сетевого взаимодействия. Архитектурные элементы распределённых систем: основные сущности, виды взаимодействия, роли и обязанности, варианты размещения. Основные архитектурные шаблоны (Layered Architecture, Tiered Architecture, Тонкий клиент). Межпроцессное сетевое взаимодействие: семиуровневая модель OSI, модель TCP/IP, сокеты. Взаимодействие через удалённые вызовы (протоколы запрос-ответ, RPC, RMI). Web-сервисы.

Презентация Конспект

13. Архитектурный стиль REST. Микросервисная архитектура. Примеры Peer-to-Peer архитектур (Napster, Gnutella, Skype, BitTorrent). Репликация данных: пассивная и активная модель. Критерии корректности: линеаризуемость и последовательная согласованность. Алгоритмы голосования: Ring-based algorithm, Bully algorithm. Проблемы соглашения в синхронных системах: задача консенсуса, задача о византийских генералах.

Презентация Конспект


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

Рекомендуемая литература

Практика

Страница курса на HwProj: [1]