В чем разница между архитектурным дизайном и высокоуровневым дизайном

#design-patterns #design-documents

#шаблоны проектирования #дизайн-документы

Вопрос:

Может ли кто-нибудь объяснить мне, в чем разница между архитектурным дизайном и высокоуровневым дизайном.

Мне будет полезно, если вы объясните на примере: Допустим, я хочу создать простое приложение для онлайн-покупок для Android, в таком случае, что я должен включить в свой архитектурный дизайн и высокоуровневый дизайн?

У меня есть следующие высокоуровневые требования:

 Login
Settings
Search
Cart
Billing
  

Комментарии:

1. @JohnKugelman Спасибо за ответ, не могли бы вы, пожалуйста, ознакомиться с моими обновлениями.

Ответ №1:

Кажется, вы задаете 2 вопроса:-

  1. Разница между терминами архитектурный дизайн и высокоуровневый дизайн
  2. Как бы выглядел дизайн моего приложения для покупок на Android

Я отвечу на первый, но вы вряд ли попросите кого-нибудь дать вам второй. Идеи лучше искать в Google.

Архитектурный дизайн

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

  • Архитектура предприятия
  • Архитектура решения
  • Архитектура приложения
  • Сетевая архитектура
  • Архитектура безопасности
  • … их больше…

Высокоуровневый дизайн

Это очень широкий термин, для которого вы могли бы получить бесконечное количество определений, но общим был бы дизайн, который просто показывает компоненты в системе (система может быть очень большой или очень маленькой). Поскольку кажется, что вы спрашиваете об архитектуре приложения в приложении «Корзина покупок», это означает, что у вас может быть диаграмма, на которой показаны вещи, подобные приведенным ниже, но не подробности о том, как каждый из них реализован:-

  • Основные классы / интерфейсы в коде
  • Какое-то хранилище сохраняемости
  • Кэш
  • Удаленные системы, с которыми взаимодействует ваше приложение

Ответ №2:

Высокоуровневый дизайн (HLD) более специфичен, чем архитектура.

Архитектура заключается в рассмотрении различных ограничений и принятии обоснованных решений, таких как:

  • Какую технологию использовать.
  • Атрибуты качества системы (например, производительность, доступность, безопасность, удобство использования и так далее) и каков их относительный приоритет (связан с нефункциональными требованиями).
  • Обеспечение надежной поддержки решения после его ввода в эксплуатацию.
  • Приведение решения в соответствие с технологической стратегией организации или архитектурой предприятия и т.д.

Высокоуровневый дизайн — это начало воплощения архитектуры в реальность:

  • Логическое определение компонентов системы, каковы их роли и как они взаимосвязаны.
  • Ссылка на именованную технологию, например, вызов определенных частей выбранного вами стека технологий, которые необходимо использовать, какие конкретные фреймворки или сторонние библиотеки вы будете использовать.
  • Определение конкретной линейки бизнес-систем и их специфических API, с которыми вам необходимо интегрироваться.

Итак, чтобы взять ваш пример, архитектура может определять:

  • Вы создаете приложение для Android для совершения покупок.
  • Данные, которые он будет отображать, будут поступать из некоторых онлайн-сервисов.
  • Какие данные хранятся на устройстве, если таковые имеются — например, пользовательские настройки.
  • Пользователи могут проходить аутентификацию с помощью социальных сетей, например, Google.

… поэтому HLD должен определять:

  • Конкретная версия Android, на которую вы будете ориентироваться / поддерживать, конкретные зависимости и т.д.
  • Где именно расположены службы передачи данных, какие именно, какие объекты данных и значения они будут предоставлять.
  • Логический дизайн данных (возможно, на уровне полей) для любых данных, которые вам нужно сохранить на устройстве.
  • Особенности, касающиеся того, как вы будете выполнять аутентификацию с поставщиками социальных сетей, используемых библиотек кода и т.д.