Конспект по видео "Архитектура и проектирование ПО"
(
https://www.youtube.com/watch?v=YLf_zWZ3hZ0)
Термин "Архитектура ПО" много определений:
-наиболее абстрактное описание системы
-то, что сложно изменить в дальнейшем
-то, что кажется архитектору важным
-конкретный набор документов
Описание архитектуры:
-компоненты системы и их взаимодействие
-самые важные классы и функции
-организация данных
-структура пользовательского интерфейса
-обработка исключительный ситуаций и сбоев <== важная часть, о которой часто забывают
-безопасность
-использование технологий и стороннего ПО
-использование ресурсы (люди/машины)
-способы развития системы
-способы тестирования системы
Что нужно архитектору:
-опыт
-умение работать с абстракциями (мета-навык? книга "Структура и интерпретация компьютерных программ" Абельсон,
Сассман)
-знание типовых решений/паттернов/шаблонов
Типовые решения:
-архитектурные шаблоны
-низкоуровневые шаблоны
-алгоритмы
костыли встречаются в каждом из этих трех пунктов
Архитектурные шаблоны.
Концепция слоев - абстрактное деление программы на три части:
-представление (presentation!) - интерфейс
-домен/бизнес-логика (domain) - основная функциональность
-источник данных (data source) - часть системы, которая отвечает за работу с СУБД
Концепция слоев дает изоляцию, можно менять одну часть почти не затрагивая остальные
Шаблоны домена:
-сценарий транзакции (transaction script)
-модель предметной области (domain model)
-слой служб (service layer)
Сценарий транзакции использует императивный подход. Плюсы: простота в реализации, интуитивно понятен.
Минусы: тяжело описывать сложную логику, трудно следить за дублированием кода,плохая изоляция представления
от источника.
Модель предметной области - воплощение ООП. Плюсы: хорошо описывает сложную бизнес-логику, обеспечивает
хорошую изоляцию. Минусы: сложна в реализации, возможны проблемы с эффективностью.
Слой служб - "склеивание" двух пред.паттернов - модель предметной области и сценарий транзакций.
Плюсы и минусы - выше.
Шаблоны источника данных (ORM):
-шлюз таблицы данных (table data gateway)
-шлюз записи данных (row data gateway)
-преобразователь данных (data mapper)
Шаблоны представления (view! not presentation!):
Модель-Представление-Контроллер
Контроллеры:
-контроллер страниц - "на такой url - вот такая страница"
-контроллер запросов
*потерялсо, почему он постоянно говорит про Django?*
книга М.Фаулер "Архитектура корпоративных программных приложений"
Алгоритмы
книга Д.Кнут "Искусство програмирования"
книга Н.Вирт "Алгоритмы и структуры данных"
книга А.Шень "Программирование. Теоремы и задачи"
Шаблоны проектирования ООП
книга "Приёмы объктно-ориентированного проектирования. Паттерны проектирования"
Шаблоны проектирования ФП
*конец*