Software Design, 3 курс, 5 семестр, 2016/17

Материал из SEWiki
Перейти к: навигация, поиск

Сайт с информацией и домашками: 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