Ответ 1
Преимущества подключаемой системы:
- расширяемость: приложение может динамически расширяться для включения новых функций.
- параллельная разработка: поскольку функции могут быть реализованы как отдельные компоненты, они могут разрабатываться параллельно разными командами.
- четкое направление разработки: поскольку плагиновая структура идеально обеспечивает четко определенный интерфейс и документацию для плагинов, разработчики имеют четкую дорожную карту для разработки.
- простота: плагин обычно имеет одну функцию, поэтому разработчики имеют один фокус
Но некоторые из этих сильных сторон также являются слабыми местами:
- расширяемость: поддерживает ли интерфейс плагина способы создания плагинов, чтобы расширить приложение или ограничивает расширение. Разработка расширяемости для удовлетворения всех случаев использования часто требует нескольких итераций или чрезвычайно хорошего анализа требований.
- : поставщик плагинов не только должен удостовериться, что интерфейс плагина удовлетворяет требованиям с отступом, ясен и хорошо документирован, но также и может развиваться. Управление версиями и обратная совместимость с существующими плагинами может быть очень сложным. Достаточно сложно, что многие практические реализации не беспокоят, и нажимать onus на плагинов, чтобы обновлять свои плагины с каждой версией.
- сложность: хотя каждый плагин работает только при тестировании, взаимодействие между плагинами может вызвать новые проблемы, причем ошибки появляются только с некоторыми комбинациями плагинов.
- Тестирование: тестирование плагинов может быть затруднено, если система плагинов не предоставляет некоторую форму макетного плагина для тестирования, что иногда невозможно, а тестирование доступно только при запуске плагина для реального, что замедляет разработку.
- искусственное разделение: плагин, как правило, имеет один фокус, но то, что составляет один фокус, задается провайдером плагинов api. Если писатель-плагин считает, что ему нужен плагин, который может разумно сделать 2 вещи (как определено плагином api) в тесном тандеме, ему может потребоваться реализовать два плагина и найти способы обеспечения связи между ними, которые в настоящее время не предоставляются апи. Затем он должен работать или против рамки плагина.
У разработки хорошей среды плагинов есть те же проблемы, что и проектирование хорошей библиотеки. Если вы сами создаете среду и плагины, то это не так уж плохо, поскольку вы можете обновлять все плагины по мере развития среды, но если плагин api открыт для всех, тогда он требует тщательного планирования и выполнения, чтобы получить дизайн чтобы избежать слишком большого количества перезаписываемых плагинов по мере развития среды.
" синдром второй системы", описанный Фредом Бруксом, утверждает, что вторая разрабатываемая система часто является чрезмерно общей, нацеливаясь на максимальную гибкость, иногда производя "платформа внутри платформы" / " эффект внутренней платформы". Сменный дизайн часто рассматривается как выход, когда требования отсутствуют или не указаны. Чтобы компенсировать это, программное обеспечение сделано максимально гибким, чтобы попытаться справиться с "тем, что приходит".
Заявления, если это рисует скучную картину - подключаемые системы могут быть фантастическими и иметь много преимуществ, но они приходят по высокой цене. Прежде чем погрузиться в подключаемую систему, разумно составить требования ко всем плагинам, которые вам понадобятся для покрытия требуемой функциональности. Затем это поможет вам решить, стоит ли встраиваемый дизайн, или какой-то более простой подход будет служить одинаково хорошо.