Методологические антипаттерны.
§ Программирование методом копирования-вставки (Copy and paste programming) ‑ копирование (и лёгкая модификация) существующего кода вместо создания общих решений. Симптом этого антипаттерна: после внесения изменений программа в некоторых случаях ведёт себя также, как и раньше. Для устранения антипаттерна требуется выделить повторяющийся код в отдельный метод. § Дефакторинг (De-Factoring) ‑ процесс уничтожения функциональности и замены её документацией. § Золотой молоток (Golden hammer) ‑ сильная уверенность в том, что любимое решение универсально применимо. Название происходит от английской поговорки «когда в руках молоток, все проблемы кажутся гвоздями». § Фактор невероятности (Improbability factor) ‑ предположение о невозможности того, что сработает известная ошибка. § Преждевременная оптимизация (Premature optimization) ‑ оптимизация на основе недостаточной информации. § Изобретение колеса (Reinventing the wheel) ‑ ошибка адаптации существующего решения. § Изобретение квадратного колеса (Reinventing the square wheel) ‑ создание плохого решения, когда существует хорошее. 3.14. АРХИТЕКТУРА ПРОГРаммного Обеспечения Архитектура программного обеспечения – это представление, которое дает информацию о компонентах ПО, обязанностях отдельных компонент и правилах организации взаимосвязей между компонентами. Необходимость архитектуры обоснована сложностью программного обеспечения. Продуманная архитектура облегчает разработку и дальнейшее развитие ПО. Она служит базисом, каркасом создаваемой системы, интегрируя отдельные компоненты и создавая высокоуровневую модель системы. Набор принципов, используемых в архитектуре, формирует архитектурный стиль. Применение архитектурного стиля сродни употреблению шаблона проектирования, но не на уровне компонента (модуля или класса), а на уровне всей создаваемой системы ПО. Как и шаблоны проектирования, архитектурные стили упрощают коммуникацию разработчиков и предлагают готовые решения целого класса абстрактных проблем. В таблице 2 представлено короткое описание основных архитектурных стилей. Таблица 2 Основные архитектурные стили
Важно понимать, что стили не исключают совместное применение, особенно при проектировании сложных систем. По сути, архитектурные стили допускают группировку согласно направлению решаемых ими задач. Например, «шина сообщений» и «архитектура, ориентированная на сервисы» ‑ это коммуникационные стили (т.е. их задача – способ организации коммуникации между отдельными компонентами). Далее отдельные архитектурные стили будут рассмотрены подробнее. «Клиент-сервер» Архитектурный стиль «клиент-сервер» (client/server) описывает отношение между двумя компьютерными программами, в котором одна программа – клиент – выполняет запросы к другой программе – серверу. Этот стиль решает, в основном, задачу развёртывания приложения. На модели «клиент-сервер» созданы приложения для работы с базами данных, электронной почтой и для доступа к веб-ресурсам. Принципы данного архитектурного стиля: · Клиент инициирует один или несколько запросов, ожидает ответа на них и затем обрабатывает ответы. · В определенный момент времени клиент подключен к одному серверу для обработки запросов (реже – к небольшой группе серверов). · Клиент работает с пользователем напрямую, обычно используя графический интерфейс. · Сервер не инициирует запросов. · Обычно для выполнения запросов клиенты проходят аутентификацию на сервере. Главными преимуществами стиля «клиент-сервер» являются: § Высокая безопасность. Все данные хранятся на сервере, обеспечивающем больший уровень безопасность, нежели отдельный клиент. § Централизованный доступ к данным. Так как данные хранятся только на сервере, ими легко управлять (например, обеспечить обновление). § Легкость сопровождения. Роль сервера могут выполнять несколько физических компьютеров, объединенных в сеть. Благодаря этому клиент не замечает сбоев или замены отдельного серверного компьютера. Отметим некоторые вариации стиля «клиент-сервер». В системах клиент-очередь-клиент сервер исполняет роль очереди для данных клиентов. То есть, клиенты использую сервер для обмена данными между собой. Пиринговые приложения (peer-to-peer) – это вариант системы «клиент-очередь-клиент», в котором любой клиент может играть роль сервера. Сервера приложений служат для размещения и выполнения программ, которыми управляет клиент.
|