#design-patterns #design-documents
#шаблоны проектирования #дизайн-документы
Вопрос:
Может ли кто-нибудь объяснить мне, в чем разница между архитектурным дизайном и высокоуровневым дизайном.
Мне будет полезно, если вы объясните на примере: Допустим, я хочу создать простое приложение для онлайн-покупок для Android, в таком случае, что я должен включить в свой архитектурный дизайн и высокоуровневый дизайн?
У меня есть следующие высокоуровневые требования:
Login
Settings
Search
Cart
Billing
Комментарии:
1. @JohnKugelman Спасибо за ответ, не могли бы вы, пожалуйста, ознакомиться с моими обновлениями.
Ответ №1:
Кажется, вы задаете 2 вопроса:-
- Разница между терминами архитектурный дизайн и высокоуровневый дизайн
- Как бы выглядел дизайн моего приложения для покупок на Android
Я отвечу на первый, но вы вряд ли попросите кого-нибудь дать вам второй. Идеи лучше искать в Google.
Архитектурный дизайн
Вам нужно получить базовое представление об этих различных типах архитектуры, и тогда вы поймете, почему этот вопрос слишком общий
- Архитектура предприятия
- Архитектура решения
- Архитектура приложения
- Сетевая архитектура
- Архитектура безопасности
- … их больше…
Высокоуровневый дизайн
Это очень широкий термин, для которого вы могли бы получить бесконечное количество определений, но общим был бы дизайн, который просто показывает компоненты в системе (система может быть очень большой или очень маленькой). Поскольку кажется, что вы спрашиваете об архитектуре приложения в приложении «Корзина покупок», это означает, что у вас может быть диаграмма, на которой показаны вещи, подобные приведенным ниже, но не подробности о том, как каждый из них реализован:-
- Основные классы / интерфейсы в коде
- Какое-то хранилище сохраняемости
- Кэш
- Удаленные системы, с которыми взаимодействует ваше приложение
Ответ №2:
Высокоуровневый дизайн (HLD) более специфичен, чем архитектура.
Архитектура заключается в рассмотрении различных ограничений и принятии обоснованных решений, таких как:
- Какую технологию использовать.
- Атрибуты качества системы (например, производительность, доступность, безопасность, удобство использования и так далее) и каков их относительный приоритет (связан с нефункциональными требованиями).
- Обеспечение надежной поддержки решения после его ввода в эксплуатацию.
- Приведение решения в соответствие с технологической стратегией организации или архитектурой предприятия и т.д.
Высокоуровневый дизайн — это начало воплощения архитектуры в реальность:
- Логическое определение компонентов системы, каковы их роли и как они взаимосвязаны.
- Ссылка на именованную технологию, например, вызов определенных частей выбранного вами стека технологий, которые необходимо использовать, какие конкретные фреймворки или сторонние библиотеки вы будете использовать.
- Определение конкретной линейки бизнес-систем и их специфических API, с которыми вам необходимо интегрироваться.
Итак, чтобы взять ваш пример, архитектура может определять:
- Вы создаете приложение для Android для совершения покупок.
- Данные, которые он будет отображать, будут поступать из некоторых онлайн-сервисов.
- Какие данные хранятся на устройстве, если таковые имеются — например, пользовательские настройки.
- Пользователи могут проходить аутентификацию с помощью социальных сетей, например, Google.
… поэтому HLD должен определять:
- Конкретная версия Android, на которую вы будете ориентироваться / поддерживать, конкретные зависимости и т.д.
- Где именно расположены службы передачи данных, какие именно, какие объекты данных и значения они будут предоставлять.
- Логический дизайн данных (возможно, на уровне полей) для любых данных, которые вам нужно сохранить на устройстве.
- Особенности, касающиеся того, как вы будете выполнять аутентификацию с поставщиками социальных сетей, используемых библиотек кода и т.д.