Модель С4 позволяет построить совместную работу в команде, путем выделения единого "языка" общения. Это не единственный способ описания архитектуры проекта, существуют другие варианты, например UML.

Преимущества:

- гибкость, за счет того, что это не готовая архитектура, а набор правил и подходов;
- возможность работать на разных уровнях построения архитектуры;
- единый язык для работы в команде;
- может совмещаться с конечными архитектурами, например с "чистой архитектурой"

В основе любой системы лежит потребитель, потребителем может быть как человек (пользователь), так и другая система. Особенностью С4 является разделение архитектуры на четыре уровня, на самом верху размещается потребитель.

Уровни, которые часто используются:

- уровень системы;
- уровень приложения;
- уровень кода;

Деление на уровни С4:

- Контекст;
- Система;
- Контейнер;
- Компонент;

Функциональные требования лежат на уровне системы, а нефункциональные требования могут быть на уровнях контейнера и компонент.

В рамках каждого уровня строятся "диаграммы". Диаграмму можно назвать "архитектурным представлением", диаграмма - это рассмотрение одного конкретного вопроса с разных стороны в рамках каждого уровня. Вопросы, которые должны быть рассмотрены определяются на уровне функциональных требований.

Стандартные диаграммы (обязательные):

- Системная диаграмма;
- Контейнерная диаграмма;
- Компонентная диаграмма;
- Диаграмма кода

Необязательные диаграммы:

- Landscape диаграмма (архитектурный ландшафт)
- Динамичная диаграмма (порядок выполняемых действий)
- Диаграмма развертывания

Диаграмма строится в контексте определенных требований, их может быть несколько для каждого уровня диаграмм.

Обязательные атрибуты диаграммы:

- Название
- Уровень
- Легенда
- Акронимы и аббревиатуры

Элементы - это геометрические формы и их окраска. В рамках С4 внутри элементов указывается уровнь, описание и имя.

Отношения указываются стрелочками, пунктирная линия для "слабых" связей, а сплошная для "сильных" связей. Стрелки должны быть дополнены текстовым названием используемого отношения.

В качестве примера спроектируем систему донатов, которая включает в себя следующую функциональность: