SlideShare a Scribd company logo
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.

More Related Content

PPTX
Как пишутся и поддерживаются Enterprise системы
PPTX
SOLID – принципы объектно-ориентированного дизайна
PPT
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...
PDF
Проектирование Программных Систем. Лекция 01
PPTX
Что нового в Android M Developer Preview 1
PPTX
Service oriented architecture, Oracle Service Bus
PDF
Общие темы. Тема 01.
PDF
Проектирование программных систем. Занятие 4
Как пишутся и поддерживаются Enterprise системы
SOLID – принципы объектно-ориентированного дизайна
CodeFest 2011. Андреев C. — Эффективные методики автоматизированного тестиров...
Проектирование Программных Систем. Лекция 01
Что нового в Android M Developer Preview 1
Service oriented architecture, Oracle Service Bus
Общие темы. Тема 01.
Проектирование программных систем. Занятие 4

Similar to Mad Stream: Software Architecture 101. (15)

PPTX
Большие проекты, архитектура и фреймворки.
PDF
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
PPTX
Архитектура ПО: управляя самым важным
PPTX
02 Архитектура информационных систем. Основы
PPTX
ПиАПС, Лекция №1б - Представление архитектуры
PDF
Дизайн больших приложений в ФП
PPTX
ПиАПС, Лекция №1а - Роль архитектора, гибкая архитектура
PPT
Архитектура в Agile проекте
PPTX
Архитектура - это что?
PPT
2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
PPTX
Архитектура - что это?
PPTX
METRO. Дизайн для Windows Phone
PDF
Архитектура в IT: философия и практика
PPTX
Архитектурные стили и шаблоны
PDF
Бизнес весна 2014 лекция 3
Большие проекты, архитектура и фреймворки.
Архитектура для мобильных игр - с чего начать и популярные решения / Евгений ...
Архитектура ПО: управляя самым важным
02 Архитектура информационных систем. Основы
ПиАПС, Лекция №1б - Представление архитектуры
Дизайн больших приложений в ФП
ПиАПС, Лекция №1а - Роль архитектора, гибкая архитектура
Архитектура в Agile проекте
Архитектура - это что?
2013-04-06 01 Максим Юнусов. Архитектура в agile-проекте
Архитектура - что это?
METRO. Дизайн для Windows Phone
Архитектура в IT: философия и практика
Архитектурные стили и шаблоны
Бизнес весна 2014 лекция 3
Ad

More from Mad Devs (20)

PPTX
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
PPTX
Дружелюбнй онбординг: как с увеличением количества не потерять качество
PPTX
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
PDF
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
PDF
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
PDF
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
PDF
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
PDF
Mad Talks. Astashov_splitbrain
PPTX
Flutter vs Native App Development
PDF
Mad Talks. Marketing tips for tech companies
PDF
The paradox of choice in design
PDF
Git and Github for Beginners
PDF
How to hire freelancers
PDF
Ethereum blockchain
PDF
"Outside In". Web application testing.
PDF
Asynchrony in python exists and why should you use it
PDF
Ethereum: аспекты разработки смарт-контрактов
PDF
Why we sleep. Michael Ivashenko
PDF
Удаленное управление приложением и его аналитика
PDF
Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Дружелюбнй онбординг: как с увеличением количества не потерять качество
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
Mad Talks. Astashov_splitbrain
Flutter vs Native App Development
Mad Talks. Marketing tips for tech companies
The paradox of choice in design
Git and Github for Beginners
How to hire freelancers
Ethereum blockchain
"Outside In". Web application testing.
Asynchrony in python exists and why should you use it
Ethereum: аспекты разработки смарт-контрактов
Why we sleep. Michael Ivashenko
Удаленное управление приложением и его аналитика
Автоматизация рабочих процессов и повышение лояльности заказчиков в ремоут к...
Ad

Mad Stream: Software Architecture 101.