Архитектура
Зачем
- Архитектура ~ architecture
- структура системы, включающая все ПО, оборудование и людей, из которых она состоит
- интерфейсы
- Требования для интерфейса внешнего устройства ~ external interface requirement — описание интерфейса между системой ПО и пользователем, другой системой ПО или оборудованием.
- взаимосвязи между этими компонентами и поведение компонентов, видимое другим компонентам
- технологическая база IT-продукта
- Архитектор знает
- когда полезно использовать определенную технологию
- самое главное – когда этого не нужно делать
- какие есть риски
- Стили архитектуры
- Качества архитектуры, архитектурные характеристики
- Технологии
- Приложения
- Критерии выбора решения
- Документирование архитектуры
Задачи IT-архитектора
- Обеспечить баланс между стоимостью разработки и гибкостью решения для быстрого внедрения будущих требований.
- We design software to reduce its cost. The cost of software is ≈ the cost of changing the software.
- The cost of changing the software is ≈ the cost of the expensive changes (power laws and all that).
- The cost of the expensive changes is generated by cascading changes — if I change this then I have to change that and that, and if I change that then.
- The cost of changing the software is ≈ the cost of the expensive changes (power laws and all that).
- Coupling between elements of a design is this propensity for a change to propagate.
- So, design ≈ cost ≈ change ≈ big change ≈ coupling. Transitively, software design ≈ managing coupling
- We design software to reduce its cost. The cost of software is ≈ the cost of changing the software.
- Контролировать реализацию: заложить каркас системы и провести архитектурный надзор.
- Архитектор декларирует общие концепции: аналитик, разработчик реализует их (пример шаблон API, ПЗ)
- императивное программирование — как сделать. Пример: Купить овощи, замешать, сварить борщ
- декларативное программирование — что сделать. Пример: Сделайте борщ.
- декларативное программирование по-прежнему использует императивное программирование под капотом, поэтому невозможно писать только декларативный код
- Фиксировать и распространять знания
- Преодолевать разрыв между предметной областью и технической командой
- Предоставлять методики проектирования решений
- Выстраивать матрицу ответственности за сервисы
- Обеспечивать предсказуемость и повторяемость результатов в последующих проектах
- Обеспечивать автономность команд
Процесс
Элементы архитектуры
- Сервис — это единица прикладного поведения, заключает полный сценарий
- Сервис может использовать другие сервисы как части своего сценария
- Система — иерархия сервисов, сгруппированных в домены
- Продукт — это совокупность сервисов, совместно реализующих некоторую ценность для конечного пользователя
- Границы продукта отражают некоторую предметную область бизнеса
- Продукты могут использовать общую платформ
- Платформа
- Платформа является частным случаем продукта для внутренних пользователей
- Платформы решают задачи обеспечения бизнес-процессов, используемых множеством продуктов
- Платформа предоставляет набор повторно используемых сервисов
- Платформа может стать самостоятельным продуктом