Принципы проектирования архитектуры
При разработке архитектуры надо учитывать, что требования к системе будут эволюционировать со временем и совершенно невозможно наперед знать все то, что необходимо для проектирования системы. Поэтому нужно создавать архитектуру так, чтобы иметь возможность адаптировать их к требованиям, которые в начале процесса проектирования известны не в полном объеме.
При разработке архитектуры используйте итеративный подход. Начинайте с базовой архитектуры, проектируйте основные абстракции, а затем детализируйте в ходе итеративного тестирования и доработки архитектуры. Не пытайтесь сделать все сразу, проектируйте настолько, насколько это необходимо для начала тестирования вашей первой задачи на соответствие требованиям. Усложняйте архитектуру постепенно, в процессе многократных пересмотров, чтобы убедиться, прежде всего, в правильности принятых крупных решений и лишь затем сосредотачиваться на деталях. Общей ошибкой является быстрый переход к деталям при ошибочном представлении о правильности крупных решений из-за неверных допущений или неспособности эффективно оценить свою архитектуру.
Разделите приложение на отдельные компоненты. Та или иная необходимая функциональность должна быть реализована только в одном компоненте и не должна дублироваться ни в одном другом компоненте. Разделяйте функциональность на функциональные области. Например, пользовательский интерфейс, сервис сообщений, бизнес-логика, доступ к данным – все это разные функциональные области. Компоненты в каждой из этих областей должны реализовывать данную конкретную функциональность и не должны смешивать в себе код разных функциональных областей. Так в компонентах пользовательского интерфейса не должно быть кода прямого доступа к источнику данных. Для этого нужно организовать послойную передачу данных, через компоненты доступа к данным, далее через бизнес-логику, с передачей через контролирующие сервисы. Такой подход упрощает понимание и облегчает управление сложными взаимосвязанными системами.