Nuradil Alymkulov. MadDevs. November 12, 2020
Software Architecture 101
Как строить приложения
О себе
Нурадил Алымкулов
nuradil@maddevs.io
• Senior Backend Developer
/ Principal Architect at
MadDevs
• 5+ лет опыта разработки
Зачем нам готовить
архитектуру приложения?
Зачем нам готовить архитектуру?
Вопросы, на которые надо ответить
• На какие основные компоненты (модули) можно поделить приложение?
• Как поделить ответственность между компонентами?
• Как подготовить приложение к будущим изменениям?
• Сколько будет стоить разработка?
На какие основные компоненты
(модули) можно и нужно
поделить приложение?
Приложение
Зачем делить?
• уменьшить взаимозависимость частей кода, чтобы в будущем можно было
гарантировать надежность кода
• обеспечить тестируемость кода (для юнит-тестов)
• четко разграничить область ответственности каждого компонента
• выявить часто используемые компоненты и сделать их общими (с помощью
полиморфизма, в частности)
• Определить какой паттерн можно применить (какую абстракцию
использовать)
Диаграмма
последовательностей
Диаграмма
последовательностей
(оптимизированная)
Компонентная
диаграмма
Как поделить ответственность
между компонентами?
Facade
Это структурный паттерн
проектированиям , который
предоставляет простой
интерфейс к сложной системе
компонентов (классов, библиотек
и т.д.)
Strategy
Это поведенческий паттерн
проектирования, который
определяет семейство схожих
алгоритмов и помещает каждый
из них в собственный класс,
после чего алгоритмы можно
взаимозаменять прямо во время
исполнения программы.
Inversion of Control
Это архитектурный принцип, при
котором поток управления
программы контролируется
фреймворком, а кастомный код
встраивается в определённые
точки выполнения.
Примеры
• React
• Java Spring Framework
• Microsoft ASP.Net
Как подготовить приложение к
будущим изменениям?
Сколько будет стоить
разработка?
Кто должен этим заниматься?
Оптимизация
с помощью
блок-схем
После рисования всё
кончается?
Конечно
Же
Нет.
Архитектура приложения - живой
организм и в наших силах
поддерживать её
Спасибо за внимание! 😊
fin.

Mad Stream: Software Architecture 101.