Модульное ПО. Плагины, модули, расширения.
От: Alllie  
Дата: 01.05.13 13:22
Оценка:
Определения:
Компонент (Component). Предоставляет интерфейс. Реализует собственную или расширяет (изменяет) имеющуюся предметную область. Полностью зависит от окружения. Может зависеть от других компонентов.
Окружение (Environment). Разновидность компонента. Система, реализующая определенную предметную область и позволяющая интегрировать в нее компоненты. Обеспечивает взаимодействие компонентов. Примеры: OS, Framework, Application.
Зависимость (Dependence). Отсутствие возможности использовать компонент без компонента, от которого он зависит.
Взаимодействие (Communication). Вызов одного компонента другим.
Интерфейс (Interface). Декларация взаимодействия.
Протокол (Protocol). Разновидность интерфейса, через который взаимодействуют компоненты.
Предметная область (Domain). Определяет совокупность данных и действий над данными, объединенных определенным признаком.
Данные компонента (Component data). Данные, которыми оперирует компонент.
Типы компонентов:
Плагин (Plugin). http://en.wikipedia.org/wiki/Plug-in_(computing) Не имеет своей предметной области. Расширяет предметную область окружения. От него не зависят другие компоненты. Оперирует данными окружения.
Модуль (Module). ://en.wikipedia.org/wiki/Software_extension Имеет свою предметную область, инкапсулирует ее данные в себя. Может зависеть от других модулей, может взаимодействовать с другими модулями.
Примеры разделения системы на компоненты:
OS. OS – окружение. Приложение – компонент.
Application layers. На сайте msdn предлагается разделять приложение на компоненты по слоям (функциональным предметным областям). Компонент доступа к БД Data Access Layer, Компонент пользовательского интерфейса User Interface Layer и т.п. В данном случае UIL жестко завязан на DAL.
Joomla.
Components: The largest and most complex extensions of them all; they can be seen as mini-applications. Most components have two parts: a site part and an administrator part. Every time a Joomla page loads, one component is called to render the main page body. Components are the major portion of a page because a component is driven by a menu item and every menu item runs a component.
Plugins: These are more advanced extensions and are, in essence, event handlers. In the execution of any part of Joomla, a module or a component, an event can be triggered. When an event is triggered, plugins that are registered with the application to handle that event execute. For example, a plugin could be used to block user-submitted articles and filter out bad words.
Templates: Describe the main design of the Joomla website and are the extensions that allow users to change the look of the site. Users will see modules and components on a template. They are customizable and flexible. Templates determine the “style” of a website.
Modules: Rendering pages flexibly in Joomla requires a module extension, which is then linked to Joomla components to display new content or new images. Joomla modules look like boxes – like the “search” or “login” module. However, they don’t require html to Joomla to work.
Languages: Very simple extensions that can either be used as a core part or as an extension. Language and font information can also be used for PDF or PSD to Joomla conversions.

SOA. Cервисы – модули, компоненты с независимыми предметными областями. Взаимодействие через шину, в которую публикуются сообщения.
Вопрос №1: в каком случае можно разделить связанные предметные области, на отдельные компоненты инкапсулирующие части всей предметной области, без сильных зависимостей. Что бы в дальнейшем можно было убрать компонент, но ПО продолжало функционировать.
Вопрос №2: Покритикуете следующие архитектуры ПО и предложите свои. Плагинная архитектура: вся предметная область реализована в окружении, плагины изменяют существующий функционал. Пример: ПО для работы с прайс-листами, является окружением, позволяет создавать плагины для экспорта/ импорта информации, плагин реализует импорт/экспорт в определенный формат файла. Модульная архитектура: часть предметной области реализована в окружении, так же в окружении реализовано взаимодействие модулей, есть обязательные модули, есть не обязательные. Приведите пример.
Вопрос №3: приведите примеры архитектуры с расширяемой предметной областью.
Вопрос №4: приведите примеры способов слабого связывания и взаимодействия компонентов, реализующих связанные предметные области.
module plugin. modular software extension плагин расширение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.