Дизайн модуля и компонентов

В чем разница между дизайном модулей и компонентов?

Спасибо

Ответы

Ответ 1

Я хотел бы поделиться своей идеей об этой разнице.

Оба компонента и модуль используются для обозначения группы функций или части функции. Модуль более логичен, например: модуль Finance, модуль HR, модуль Manufacturing... в системе ERP. С другой стороны, компонент более физический. В программном обеспечении это может быть dll, ocx, exe,...

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

Ответ 2

В OSGi есть ссылка, в которой я полагал, что объяснение различий очень хорошее.

Модули против компонентов Разве это не похоже на то, что модули и компоненты имеют много общего? Они оба обеспечивают вещи друг другу и потреблять вещи друг от друга. Они также упакованы как самостоятельные единицы развертывания. Разве эти два не могли считаться одним и тем же или, по крайней мере, быть объединены? Да, они могли, но компоненты и модули обслуживают разные цели и несколько ортогональны (они не полностью ортогональны, потому что компоненты сделаны из кода, который в конечном итоге может быть упакован в модули). Модули имеют дело с упаковкой кода и зависимостями между кодом. Компоненты иметь дело с внедрением функций более высокого уровня и зависимостей среди компонентов. Компонентам требуется управление зависимостями кода, но они технически не нужна модульная система для этого (часто его программисты делают это через путь класса). Хорошее изложение состоит в том, что вы можете думать о модулях как о статическом коде и зависимости от времени компиляции, тогда как компоненты имеют дело с экземплярами и временем выполнения зависимостей.

Ответ 3

Если вы имеете в виду модуль в смысле модульности, существует определение в стандартном терминологии IEEE по терминологии программного обеспечения:

"Модульность - это степень, в которой система или компьютерная программа состоит из дискретных компонентов, так что изменение одного компонента оказывает минимальное влияние на другие компоненты".

И Dr. Бертран Майер заявил о пяти критериях модульности:

  • Разложимость проблемы в подзадачи
  • Возможность создания модулей для создания новых систем
  • Понятность изолированного модуля
  • Непрерывность - небольшие изменения имеют локализованные эффекты.
  • Защита - защита от замыканий

Ответ 4

Компоненты и модули слишком часто смешиваются друг с другом. Oни однако, не одно и то же, а последствия одного - не обязательно для другого.

Модульность - это разбиение кода на модули связанных функциональность. Во многих языках программирования модуль - это просто исходный файл. Общепринято, что если исходный файл тоже растет большой, вы можете разбить его на два или более исходных файла и поместить их в новый каталог; в то время как каталог часто не называется модулем, этот вид разложения по-прежнему является модульным.

Компонент, с другой стороны, может быть составлен по-разному с помощью другие компоненты для формирования разных программ. То есть, есть отдельный этап композиции, где реальные люди решают, какие компоненты должны использоваться вместе.

Я видел, что компонентный дизайн используется для принудительного применения некоторых понятий жестких модульность. Этот подход нельзя рекомендовать из-за значительные накладные расходы на композицию: сложность композиции возрастает многочлен с числом компонент. И количество компоненты линейно растут с количеством функциональных групп, потому что, как только вы начнете с модульности по компоненту разложение, вы заставляете себя создавать новый компонент всякий раз вам в противном случае просто нужен новый модуль, потому что этот новый модуль в противном случае на самом деле не было бы нигде. На 100 компонентах составные накладные расходы стали полной занятостью, и каждая композиция итерация заняла бы пару недель, несмотря на многочисленные усилия по автоматизации. Это значительно затрудняло развитие.

Моя самая простая рекомендация - держаться подальше от компонентов, если вообще возможное; зная, что компоненты иногда могут быть необходимостью. Например, если несколько независимых организаций участвуют в проекта, один компонент для каждой организации представляется приемлемым.

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

Если я знаю имя функции, мой редактор найдет ее достаточно скоро. С другой стороны, если по какой-то причине я не знаю названия функция (или класс в этом отношении), модульность становится больше важный.

Я бы ожидал, что в последнем случае будет только проблема для функциональности, которая вы можете воспользоваться этой программой, поэтому постарайтесь сделать декомпозиция вашей программы в модули отражают интуитивно понятную декомпозиция поведения вашей программы в области функциональность.

Ответ 5

Для цифровой разработки и рассмотрения пользовательского интерфейса (HTML/CSS/JS) я использую этот подход для обеспечения того, чтобы я оставался организованным и думал, прежде чем делать. Доказано, что он создает более чистый, более организованный код, который прекрасно переносит работу с меньшими затратами.

В обычной таблице стилей я сейчас настраиваюсь следующим образом:

/* Style Guide – Mobile First
   1. =Setup
   2. =Modules as independent units made up of components
   3. =Components as group of reusable code containing more than one element
   4. =Classes
   5. =Responsive as enhancement
*/
  • Модули как самостоятельные блоки, состоящие из компонентов: Верхний колонтитул, Нижний колонтитул, Разделы, Статьи, Рядом и т.д. Дом состоит из многих комнат, со специальными стилями и функциями для создания независимого целого.
  • Компоненты как группа многоразового кода, содержащего более одного элемента: Unordered Lists, Quotes, Cards, Tables и т.д.

Я написал более полное объяснение, которое вы можете прочитать здесь.

Надеюсь, это поможет!

Ответ 6

Компонент - это среда выполнения (может состоять из модулей), независимый runnable unit

Модуль - это секционированная система в единицы реализации, независимое назначение задачи. Модули могут быть или не быть компонентом